If a #include finds a file relative to the current file, don't forget to check
whether it's part of a module.

llvm-svn: 203005
diff --git a/clang/test/Modules/Inputs/module.map b/clang/test/Modules/Inputs/module.map
index 362a175..67b3a5a 100644
--- a/clang/test/Modules/Inputs/module.map
+++ b/clang/test/Modules/Inputs/module.map
@@ -290,3 +290,9 @@
 module recursive_visibility_c {
   header "recursive_visibility_c.h"
 }
+module recursive1 {
+  header "recursive1.h"
+}
+module recursive2 {
+  header "recursive2.h"
+}
diff --git a/clang/test/Modules/Inputs/recursive1.h b/clang/test/Modules/Inputs/recursive1.h
new file mode 100644
index 0000000..8cb5917
--- /dev/null
+++ b/clang/test/Modules/Inputs/recursive1.h
@@ -0,0 +1 @@
+#include "recursive2.h"
diff --git a/clang/test/Modules/Inputs/recursive2.h b/clang/test/Modules/Inputs/recursive2.h
new file mode 100644
index 0000000..d9480aa
--- /dev/null
+++ b/clang/test/Modules/Inputs/recursive2.h
@@ -0,0 +1 @@
+#include "recursive1.h"
diff --git a/clang/test/Modules/recursive.c b/clang/test/Modules/recursive.c
new file mode 100644
index 0000000..668ba38
--- /dev/null
+++ b/clang/test/Modules/recursive.c
@@ -0,0 +1,11 @@
+// RUN: rm -rf %t
+// RUN: not %clang_cc1 -fmodules -x objective-c -fmodules-cache-path=%t -I %S/Inputs %s 2>&1 | FileCheck %s
+#include "recursive1.h"
+
+// FIXME: rm -rf %t
+// FIXME: not %clang_cc1 -fmodules -x objective-c -fmodules-cache-path=%t -emit-module -fmodule-name=recursive1 %S/Inputs/module.map 2>&1 | FileCheck %s
+
+// CHECK:      While building module 'recursive1'{{( imported from .*/recursive.c:3)?}}:
+// CHECK-NEXT: While building module 'recursive2' imported from {{.*}}Inputs/recursive1.h:1:
+// CHECK-NEXT: In file included from <module-includes>:1:
+// CHECK-NEXT: recursive2.h:1:10: fatal error: cyclic dependency in module 'recursive1': recursive1 -> recursive2 -> recursive1
diff --git a/clang/test/Modules/submodules.cpp b/clang/test/Modules/submodules.cpp
index 12bf87f..a18138c 100644
--- a/clang/test/Modules/submodules.cpp
+++ b/clang/test/Modules/submodules.cpp
@@ -31,9 +31,7 @@
 extern MyTypeA import_self_test_a; // expected-error {{must be imported from module 'import_self.a'}}
 // expected-note@import-self-a.h:1 {{here}}
 extern MyTypeC import_self_test_c;
-// FIXME: This should be valid; import_self.b re-exports import_self.d.
-extern MyTypeD import_self_test_d; // expected-error {{must be imported from module 'import_self.d'}}
-// expected-note@import-self-d.h:1 {{here}}
+extern MyTypeD import_self_test_d;
 
 // expected-error@Inputs/submodules/module.map:15{{header 'missing.h' not found}}
 @import missing_headers.missing;