(wangle) Fix a couple compilation issues
authorHans Fugal <fugalh@fb.com>
Tue, 21 Oct 2014 17:24:14 +0000 (10:24 -0700)
committerdcsommer <dcsommer@fb.com>
Wed, 29 Oct 2014 23:03:16 +0000 (16:03 -0700)
Summary: If you try to include files in a weird (but not incorrect) order you get compilation errors. No longer!

Test Plan: new dummy `cpp_binary` target

Reviewed By: davejwatson@fb.com

Subscribers: trunkagent, folly-diffs@, net-systems@, fugalh, exa, njormrod

FB internal diff: D1621083

folly/wangle/Future.h
folly/wangle/Promise.h
folly/wangle/Try.h
folly/wangle/test/ClientCompile.cpp [new file with mode: 0644]

index 4f0348ce3ff6119d7bd8d6bd19e9d5d9879c3027..f3d50ce020aedbf5bcd9b5cc5bc378d6ad718704 100644 (file)
 
 namespace folly { namespace wangle {
 
+namespace detail {
+  template <class> struct Core;
+  template <class...> struct VariadicContext;
+}
+template <class> struct Promise;
+
 template <typename T> struct isFuture;
 
 template <class T>
index 61bc069938327a6e37d4daee82f225391fbf2751..7442e4515caa86a98b5328d3f86bbfeb1964a066 100644 (file)
@@ -17,7 +17,6 @@
 #pragma once
 
 #include <folly/wangle/Try.h>
-#include <folly/wangle/Future.h>
 
 namespace folly { namespace wangle {
 
@@ -98,4 +97,5 @@ private:
 
 }}
 
+#include <folly/wangle/Future.h>
 #include <folly/wangle/Promise-inl.h>
index d13fffb58d96992f1d56e68f7b8c3763bc5724d3..68d3ef92184f1813a71d5808b63593900493232c 100644 (file)
 
 #pragma once
 
+#include <type_traits>
+#include <exception>
+#include <algorithm>
+
 namespace folly { namespace wangle {
 
 template <class T>
diff --git a/folly/wangle/test/ClientCompile.cpp b/folly/wangle/test/ClientCompile.cpp
new file mode 100644 (file)
index 0000000..45ad8cd
--- /dev/null
@@ -0,0 +1,22 @@
+/*
+ * Copyright 2014 Facebook, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// amazing what things can go wrong if you include things in an unexpected
+// order.
+#include <folly/wangle/Try.h>
+#include <folly/wangle/Promise.h>
+#include <folly/wangle/Future.h>
+int main() { return 0; }