summaryrefslogtreecommitdiffstats
path: root/clang/test/Modules
diff options
context:
space:
mode:
authorBruno Cardoso Lopes <bruno.cardoso@gmail.com>2018-06-01 01:26:18 +0000
committerBruno Cardoso Lopes <bruno.cardoso@gmail.com>2018-06-01 01:26:18 +0000
commit9f6020bcc522c1a9613fafd2fd65ef6c915c388d (patch)
tree1060b8ba96993ef2488b894359526a97f0a544f0 /clang/test/Modules
parentdc5ba1e4957dd1211145300e65d9797599b3dba5 (diff)
downloadbcm5719-llvm-9f6020bcc522c1a9613fafd2fd65ef6c915c388d.tar.gz
bcm5719-llvm-9f6020bcc522c1a9613fafd2fd65ef6c915c388d.zip
[Modules] Warning for module declarations lacking 'framework' qualifier
When a module declaration for a framework lacks the 'framework' qualifier, the listed headers aren't found (because there's no trigger for the special framework style path lookup) and the module is silently not built. This leads to frameworks not being modularized by accident, which is pretty bad. Add a warning and suggest the user to add the 'framework' qualifier when we can prove that it's the case. rdar://problem/39193062 llvm-svn: 333718
Diffstat (limited to 'clang/test/Modules')
-rw-r--r--clang/test/Modules/Inputs/incomplete-framework-module/Foo.framework/Headers/Foo.h1
-rw-r--r--clang/test/Modules/Inputs/incomplete-framework-module/Foo.framework/Headers/FooB.h1
-rw-r--r--clang/test/Modules/Inputs/incomplete-framework-module/Foo.framework/Modules/module.modulemap4
-rw-r--r--clang/test/Modules/incomplete-framework-module.m11
4 files changed, 17 insertions, 0 deletions
diff --git a/clang/test/Modules/Inputs/incomplete-framework-module/Foo.framework/Headers/Foo.h b/clang/test/Modules/Inputs/incomplete-framework-module/Foo.framework/Headers/Foo.h
new file mode 100644
index 00000000000..547f1bc6b08
--- /dev/null
+++ b/clang/test/Modules/Inputs/incomplete-framework-module/Foo.framework/Headers/Foo.h
@@ -0,0 +1 @@
+// Inputs/incomplete-framework-module/Foo.framework/Headers/Foo.h
diff --git a/clang/test/Modules/Inputs/incomplete-framework-module/Foo.framework/Headers/FooB.h b/clang/test/Modules/Inputs/incomplete-framework-module/Foo.framework/Headers/FooB.h
new file mode 100644
index 00000000000..eda7c170700
--- /dev/null
+++ b/clang/test/Modules/Inputs/incomplete-framework-module/Foo.framework/Headers/FooB.h
@@ -0,0 +1 @@
+// FooB.h
diff --git a/clang/test/Modules/Inputs/incomplete-framework-module/Foo.framework/Modules/module.modulemap b/clang/test/Modules/Inputs/incomplete-framework-module/Foo.framework/Modules/module.modulemap
new file mode 100644
index 00000000000..d928a53efcd
--- /dev/null
+++ b/clang/test/Modules/Inputs/incomplete-framework-module/Foo.framework/Modules/module.modulemap
@@ -0,0 +1,4 @@
+module Foo {
+ umbrella header "Foo.h"
+ header "FooB.h"
+}
diff --git a/clang/test/Modules/incomplete-framework-module.m b/clang/test/Modules/incomplete-framework-module.m
new file mode 100644
index 00000000000..9034c1aab92
--- /dev/null
+++ b/clang/test/Modules/incomplete-framework-module.m
@@ -0,0 +1,11 @@
+// RUN: rm -rf %t
+// RUN: %clang_cc1 -fmodules -fimplicit-module-maps -fmodules-cache-path=%t \
+// RUN: -F%S/Inputs/incomplete-framework-module \
+// RUN: -fsyntax-only %s -verify
+
+#import <Foo/Foo.h>
+
+// expected-warning@Inputs/incomplete-framework-module/Foo.framework/Modules/module.modulemap:2{{skipping 'Foo.h' because module declaration}}
+// expected-warning@Inputs/incomplete-framework-module/Foo.framework/Modules/module.modulemap:3{{skipping 'FooB.h' because module declaration}}
+// expected-note@Inputs/incomplete-framework-module/Foo.framework/Modules/module.modulemap:1{{use 'framework module' to declare module 'Foo'}}
+// expected-note@Inputs/incomplete-framework-module/Foo.framework/Modules/module.modulemap:1{{use 'framework module' to declare module 'Foo'}}
OpenPOWER on IntegriCloud