diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2015-07-10 22:27:17 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2015-07-10 22:27:17 +0000 |
commit | e70dadd67b0d1e7db10ef8d0cda711f10bfd7768 (patch) | |
tree | 2b6841fd5a385db0b371f05657247606f692ee8a /clang/test/Modules | |
parent | 0bb1fc410bf249ee9f8369e0219405804d68cba6 (diff) | |
download | bcm5719-llvm-e70dadd67b0d1e7db10ef8d0cda711f10bfd7768.tar.gz bcm5719-llvm-e70dadd67b0d1e7db10ef8d0cda711f10bfd7768.zip |
[modules] When checking the include guard for a header, check whether it's
visible in the module we're considering entering. Previously we assumed that if
we knew the include guard for a modular header, we'd already parsed it, but
that need not be the case if a header is present in the current module and one
of its dependencies; the result of getting this wrong was that the current
module's submodule for the header would end up empty.
llvm-svn: 241953
Diffstat (limited to 'clang/test/Modules')
-rw-r--r-- | clang/test/Modules/Inputs/multiple-include/a.h | 1 | ||||
-rw-r--r-- | clang/test/Modules/Inputs/multiple-include/b.h | 3 | ||||
-rw-r--r-- | clang/test/Modules/Inputs/multiple-include/c.h | 4 | ||||
-rw-r--r-- | clang/test/Modules/Inputs/multiple-include/module.modulemap | 2 | ||||
-rw-r--r-- | clang/test/Modules/Inputs/multiple-include/x.h | 0 | ||||
-rw-r--r-- | clang/test/Modules/multiple-include.cpp | 5 |
6 files changed, 15 insertions, 0 deletions
diff --git a/clang/test/Modules/Inputs/multiple-include/a.h b/clang/test/Modules/Inputs/multiple-include/a.h new file mode 100644 index 00000000000..82661908588 --- /dev/null +++ b/clang/test/Modules/Inputs/multiple-include/a.h @@ -0,0 +1 @@ +#include "x.h" diff --git a/clang/test/Modules/Inputs/multiple-include/b.h b/clang/test/Modules/Inputs/multiple-include/b.h new file mode 100644 index 00000000000..f56ab64da6b --- /dev/null +++ b/clang/test/Modules/Inputs/multiple-include/b.h @@ -0,0 +1,3 @@ +#pragma clang __debug macro C_H +#include "c.h" +inline int get() { return c; } diff --git a/clang/test/Modules/Inputs/multiple-include/c.h b/clang/test/Modules/Inputs/multiple-include/c.h new file mode 100644 index 00000000000..4e7d4b742dc --- /dev/null +++ b/clang/test/Modules/Inputs/multiple-include/c.h @@ -0,0 +1,4 @@ +#ifndef C_H +#define C_H +extern int c; +#endif diff --git a/clang/test/Modules/Inputs/multiple-include/module.modulemap b/clang/test/Modules/Inputs/multiple-include/module.modulemap new file mode 100644 index 00000000000..1228ae6cbb7 --- /dev/null +++ b/clang/test/Modules/Inputs/multiple-include/module.modulemap @@ -0,0 +1,2 @@ +module A { module a { header "a.h" } module b { header "b.h" } module c { header "c.h" } } +module X { module x { header "x.h" } module c { header "c.h" } } diff --git a/clang/test/Modules/Inputs/multiple-include/x.h b/clang/test/Modules/Inputs/multiple-include/x.h new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/clang/test/Modules/Inputs/multiple-include/x.h diff --git a/clang/test/Modules/multiple-include.cpp b/clang/test/Modules/multiple-include.cpp new file mode 100644 index 00000000000..7cbeefc8178 --- /dev/null +++ b/clang/test/Modules/multiple-include.cpp @@ -0,0 +1,5 @@ +// RUN: rm -rf %t +// RUN: %clang_cc1 -fmodules -I%S/Inputs/multiple-include -fmodules-cache-path=%t -fimplicit-module-maps -verify %s -fmodules-local-submodule-visibility +// expected-no-diagnostics +#include "b.h" +int c = get(); |