diff options
Diffstat (limited to 'clang/test')
-rw-r--r-- | clang/test/Modules/Inputs/innerstructredef.h | 6 | ||||
-rw-r--r-- | clang/test/Modules/Inputs/module.map | 9 | ||||
-rw-r--r-- | clang/test/Modules/inner-struct-redefines-invisible.m | 12 |
3 files changed, 27 insertions, 0 deletions
diff --git a/clang/test/Modules/Inputs/innerstructredef.h b/clang/test/Modules/Inputs/innerstructredef.h new file mode 100644 index 00000000000..600f44e41cf --- /dev/null +++ b/clang/test/Modules/Inputs/innerstructredef.h @@ -0,0 +1,6 @@ +struct Outer { +// This definition is actually hidden since only submodule 'one' is imported. +struct Inner { + int x; +} field; +}; diff --git a/clang/test/Modules/Inputs/module.map b/clang/test/Modules/Inputs/module.map index 4cb3e8a0280..4788daa4316 100644 --- a/clang/test/Modules/Inputs/module.map +++ b/clang/test/Modules/Inputs/module.map @@ -451,3 +451,12 @@ module DebugNestedB { module objcAtKeywordMissingEnd { header "objcAtKeywordMissingEnd.h" } + +module innerstructredef { + module one { + header "empty.h" + } + module two { + header "innerstructredef.h" + } +} diff --git a/clang/test/Modules/inner-struct-redefines-invisible.m b/clang/test/Modules/inner-struct-redefines-invisible.m new file mode 100644 index 00000000000..ecf6d808df3 --- /dev/null +++ b/clang/test/Modules/inner-struct-redefines-invisible.m @@ -0,0 +1,12 @@ +// RUN: rm -rf %t +// RUN: %clang_cc1 -fsyntax-only -I%S/Inputs -fmodules -fimplicit-module-maps -fmodules-cache-path=%t -verify %s +// expected-no-diagnostics + +@import innerstructredef.one; + +struct Outer { +// Should set lexical context when parsing 'Inner' here, otherwise there's a crash: +struct Inner { + int x; +} field; +}; |