[modules] When diagnosing a missing module import, suggest adding a #include if
the current language doesn't have an import syntax and we can figure out a
suitable file to include.

llvm-svn: 267802
diff --git a/clang/test/Modules/Inputs/suggest-include/empty.h b/clang/test/Modules/Inputs/suggest-include/empty.h
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/clang/test/Modules/Inputs/suggest-include/empty.h
diff --git a/clang/test/Modules/Inputs/suggest-include/module.modulemap b/clang/test/Modules/Inputs/suggest-include/module.modulemap
new file mode 100644
index 0000000..46afd7b
--- /dev/null
+++ b/clang/test/Modules/Inputs/suggest-include/module.modulemap
@@ -0,0 +1,22 @@
+module X {
+  module Empty { header "empty.h" }
+
+  exclude header "textual1.h"
+  textual header "textual2.h"
+  textual header "textual3.h"
+
+  module A { header "usetextual1.h" }
+  module B { header "usetextual2.h" }
+  module C { header "usetextual3.h" }
+  module D { header "usetextual4.h" }
+  module E { header "usetextual5.h" }
+
+  module P { private header "private1.h" }
+  module Q { private header "private2.h" }
+  module R { private header "private3.h" }
+  module S { header "useprivate1.h" export * }
+  module T { header "useprivate3.h" }
+}
+
+module Other { textual header "textual4.h" }
+
diff --git a/clang/test/Modules/Inputs/suggest-include/private1.h b/clang/test/Modules/Inputs/suggest-include/private1.h
new file mode 100644
index 0000000..afc7ac7
--- /dev/null
+++ b/clang/test/Modules/Inputs/suggest-include/private1.h
@@ -0,0 +1 @@
+extern int private1;
diff --git a/clang/test/Modules/Inputs/suggest-include/private2.h b/clang/test/Modules/Inputs/suggest-include/private2.h
new file mode 100644
index 0000000..24a1893
--- /dev/null
+++ b/clang/test/Modules/Inputs/suggest-include/private2.h
@@ -0,0 +1 @@
+extern int private2;
diff --git a/clang/test/Modules/Inputs/suggest-include/private3.h b/clang/test/Modules/Inputs/suggest-include/private3.h
new file mode 100644
index 0000000..26852af
--- /dev/null
+++ b/clang/test/Modules/Inputs/suggest-include/private3.h
@@ -0,0 +1 @@
+extern int private3;
diff --git a/clang/test/Modules/Inputs/suggest-include/textual1.h b/clang/test/Modules/Inputs/suggest-include/textual1.h
new file mode 100644
index 0000000..5b18bfb
--- /dev/null
+++ b/clang/test/Modules/Inputs/suggest-include/textual1.h
@@ -0,0 +1 @@
+#define FOO(X) X
diff --git a/clang/test/Modules/Inputs/suggest-include/textual2.h b/clang/test/Modules/Inputs/suggest-include/textual2.h
new file mode 100644
index 0000000..0c06d4e
--- /dev/null
+++ b/clang/test/Modules/Inputs/suggest-include/textual2.h
@@ -0,0 +1 @@
+EXPAND_MACRO
diff --git a/clang/test/Modules/Inputs/suggest-include/textual3.h b/clang/test/Modules/Inputs/suggest-include/textual3.h
new file mode 100644
index 0000000..1e52521
--- /dev/null
+++ b/clang/test/Modules/Inputs/suggest-include/textual3.h
@@ -0,0 +1 @@
+extern int textual3;
diff --git a/clang/test/Modules/Inputs/suggest-include/textual4.h b/clang/test/Modules/Inputs/suggest-include/textual4.h
new file mode 100644
index 0000000..091e0c0
--- /dev/null
+++ b/clang/test/Modules/Inputs/suggest-include/textual4.h
@@ -0,0 +1 @@
+extern int textual4;
diff --git a/clang/test/Modules/Inputs/suggest-include/textual5.h b/clang/test/Modules/Inputs/suggest-include/textual5.h
new file mode 100644
index 0000000..d808617
--- /dev/null
+++ b/clang/test/Modules/Inputs/suggest-include/textual5.h
@@ -0,0 +1 @@
+extern int textual5;
diff --git a/clang/test/Modules/Inputs/suggest-include/useprivate1.h b/clang/test/Modules/Inputs/suggest-include/useprivate1.h
new file mode 100644
index 0000000..817b900
--- /dev/null
+++ b/clang/test/Modules/Inputs/suggest-include/useprivate1.h
@@ -0,0 +1 @@
+#include "private1.h"
diff --git a/clang/test/Modules/Inputs/suggest-include/useprivate3.h b/clang/test/Modules/Inputs/suggest-include/useprivate3.h
new file mode 100644
index 0000000..5d5d221
--- /dev/null
+++ b/clang/test/Modules/Inputs/suggest-include/useprivate3.h
@@ -0,0 +1 @@
+#include "private3.h"
diff --git a/clang/test/Modules/Inputs/suggest-include/usetextual1.h b/clang/test/Modules/Inputs/suggest-include/usetextual1.h
new file mode 100644
index 0000000..34ab1c7
--- /dev/null
+++ b/clang/test/Modules/Inputs/suggest-include/usetextual1.h
@@ -0,0 +1,2 @@
+#include "textual1.h"
+FOO(extern int usetextual1;)
diff --git a/clang/test/Modules/Inputs/suggest-include/usetextual2.h b/clang/test/Modules/Inputs/suggest-include/usetextual2.h
new file mode 100644
index 0000000..95b2445
--- /dev/null
+++ b/clang/test/Modules/Inputs/suggest-include/usetextual2.h
@@ -0,0 +1,2 @@
+#define EXPAND_MACRO extern int usetextual2;
+#include "textual2.h"
diff --git a/clang/test/Modules/Inputs/suggest-include/usetextual3.h b/clang/test/Modules/Inputs/suggest-include/usetextual3.h
new file mode 100644
index 0000000..15a75cc
--- /dev/null
+++ b/clang/test/Modules/Inputs/suggest-include/usetextual3.h
@@ -0,0 +1 @@
+#include "textual3.h"
diff --git a/clang/test/Modules/Inputs/suggest-include/usetextual4.h b/clang/test/Modules/Inputs/suggest-include/usetextual4.h
new file mode 100644
index 0000000..395bb6f
--- /dev/null
+++ b/clang/test/Modules/Inputs/suggest-include/usetextual4.h
@@ -0,0 +1 @@
+#include "textual4.h"
diff --git a/clang/test/Modules/Inputs/suggest-include/usetextual5.h b/clang/test/Modules/Inputs/suggest-include/usetextual5.h
new file mode 100644
index 0000000..a7335d3
--- /dev/null
+++ b/clang/test/Modules/Inputs/suggest-include/usetextual5.h
@@ -0,0 +1 @@
+#include "textual5.h"