Re: r310706 - [modules] Set the lexical DC for dummy tag decls that refer to hidden
Merged in r310902. Thanks, Hans On Mon, Aug 14, 2017 at 4:03 AM, Alex L wrote: > Sure, I committed r310829 which moves the lexical decl adjustment. > > Hans, can you please merge r310706 with r310829. > > Cheers, > Alex > > On 12 August 2017 at 01:29, Richard Smith wrote: >> >> On 11 August 2017 at 17:20, Bruno Cardoso Lopes via cfe-commits >> wrote: >>> >>> Hi Alex, >>> >>> On Fri, Aug 11, 2017 at 9:06 AM, Alex Lorenz via cfe-commits >>> wrote: >>> > Author: arphaman >>> > Date: Fri Aug 11 05:06:52 2017 >>> > New Revision: 310706 >>> > >>> > URL: http://llvm.org/viewvc/llvm-project?rev=310706&view=rev >>> > Log: >>> > [modules] Set the lexical DC for dummy tag decls that refer to hidden >>> > declarations that are made visible after the dummy is parsed and ODR >>> > verified >>> > >>> > Prior to this commit the >>> > "(getContainingDC(DC) == CurContext && "The next DeclContext should be >>> > lexically contained in the current one.")," >>> > assertion failure was triggered during semantic analysis of the dummy >>> > tag declaration that was declared in another tag declaration because >>> > its >>> > lexical context did not point to the outer tag decl. >>> > >>> > rdar://32292196 >>> > >>> > Added: >>> > cfe/trunk/test/Modules/Inputs/innerstructredef.h >>> > cfe/trunk/test/Modules/inner-struct-redefines-invisible.m >>> > Modified: >>> > cfe/trunk/lib/Sema/SemaDecl.cpp >>> > cfe/trunk/test/Modules/Inputs/module.map >>> > >>> > Modified: cfe/trunk/lib/Sema/SemaDecl.cpp >>> > URL: >>> > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDecl.cpp?rev=310706&r1=310705&r2=310706&view=diff >>> > >>> > == >>> > --- cfe/trunk/lib/Sema/SemaDecl.cpp (original) >>> > +++ cfe/trunk/lib/Sema/SemaDecl.cpp Fri Aug 11 05:06:52 2017 >>> > @@ -13722,6 +13722,7 @@ Decl *Sema::ActOnTag(Scope *S, unsigned >>> >// comparison. >>> >SkipBody->CheckSameAsPrevious = true; >>> >SkipBody->New = createTagFromNewDecl(); >>> > + SkipBody->New->setLexicalDeclContext(CurContext); >>> >>> I think it would be cleaner to do this inside "createTagFromNewDecl" than >>> here. >> >> >> I agree. Either before or after that change, this seems sufficiently >> isolated and low-risk that it makes sense to take it for Clang 5. >> >>> >>> >SkipBody->Previous = Hidden; >>> > } else { >>> >SkipBody->ShouldSkip = true; >>> > >>> > Added: cfe/trunk/test/Modules/Inputs/innerstructredef.h >>> > URL: >>> > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/Inputs/innerstructredef.h?rev=310706&view=auto >>> > >>> > == >>> > --- cfe/trunk/test/Modules/Inputs/innerstructredef.h (added) >>> > +++ cfe/trunk/test/Modules/Inputs/innerstructredef.h Fri Aug 11 >>> > 05:06:52 2017 >>> > @@ -0,0 +1,6 @@ >>> > +struct Outer { >>> > +// This definition is actually hidden since only submodule 'one' is >>> > imported. >>> > +struct Inner { >>> > + int x; >>> > +} field; >>> > +}; >>> > >>> > Modified: cfe/trunk/test/Modules/Inputs/module.map >>> > URL: >>> > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/Inputs/module.map?rev=310706&r1=310705&r2=310706&view=diff >>> > >>> > == >>> > --- cfe/trunk/test/Modules/Inputs/module.map (original) >>> > +++ cfe/trunk/test/Modules/Inputs/module.map Fri Aug 11 05:06:52 2017 >>> > @@ -451,3 +451,12 @@ module DebugNestedB { >>> > module objcAtKeywordMissingEnd { >>> >header "objcAtKeywordMissingEnd.h" >>> > } >>> > + >>> > +module innerstructredef { >>> > + module one { >>> > +header "empty.h" >>> > + } >>> > + module two { >>> > + header "innerstructredef.h" >>> > + } >>> > +} >>> > >>> > Added: cfe/trunk/test/Modules/inner-struct-redefines-invisible.m >>> > URL: >>> > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/inner-struct-redefines-invisible.m?rev=310706&view=auto >>> > >>> > == >>> > --- cfe/trunk/test/Modules/inner-struct-redefines-invisible.m (added) >>> > +++ cfe/trunk/test/Modules/inner-struct-redefines-invisible.m Fri Aug >>> > 11 05:06:52 2017 >>> > @@ -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; >>> > +}; >>> > >>> > >>> > ___ >>> > cfe-commits mailing list >>> > cfe-commits@lists.llvm.org >>> > http:
Re: r310706 - [modules] Set the lexical DC for dummy tag decls that refer to hidden
Sure, I committed r310829 which moves the lexical decl adjustment. Hans, can you please merge r310706 with r310829. Cheers, Alex On 12 August 2017 at 01:29, Richard Smith wrote: > On 11 August 2017 at 17:20, Bruno Cardoso Lopes via cfe-commits < > cfe-commits@lists.llvm.org> wrote: > >> Hi Alex, >> >> On Fri, Aug 11, 2017 at 9:06 AM, Alex Lorenz via cfe-commits >> wrote: >> > Author: arphaman >> > Date: Fri Aug 11 05:06:52 2017 >> > New Revision: 310706 >> > >> > URL: http://llvm.org/viewvc/llvm-project?rev=310706&view=rev >> > Log: >> > [modules] Set the lexical DC for dummy tag decls that refer to hidden >> > declarations that are made visible after the dummy is parsed and ODR >> verified >> > >> > Prior to this commit the >> > "(getContainingDC(DC) == CurContext && "The next DeclContext should be >> lexically contained in the current one.")," >> > assertion failure was triggered during semantic analysis of the dummy >> > tag declaration that was declared in another tag declaration because its >> > lexical context did not point to the outer tag decl. >> > >> > rdar://32292196 >> > >> > Added: >> > cfe/trunk/test/Modules/Inputs/innerstructredef.h >> > cfe/trunk/test/Modules/inner-struct-redefines-invisible.m >> > Modified: >> > cfe/trunk/lib/Sema/SemaDecl.cpp >> > cfe/trunk/test/Modules/Inputs/module.map >> > >> > Modified: cfe/trunk/lib/Sema/SemaDecl.cpp >> > URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaD >> ecl.cpp?rev=310706&r1=310705&r2=310706&view=diff >> > >> == >> > --- cfe/trunk/lib/Sema/SemaDecl.cpp (original) >> > +++ cfe/trunk/lib/Sema/SemaDecl.cpp Fri Aug 11 05:06:52 2017 >> > @@ -13722,6 +13722,7 @@ Decl *Sema::ActOnTag(Scope *S, unsigned >> >// comparison. >> >SkipBody->CheckSameAsPrevious = true; >> >SkipBody->New = createTagFromNewDecl(); >> > + SkipBody->New->setLexicalDeclContext(CurContext); >> >> I think it would be cleaner to do this inside "createTagFromNewDecl" than >> here. > > > I agree. Either before or after that change, this seems sufficiently > isolated and low-risk that it makes sense to take it for Clang 5. > > >> >SkipBody->Previous = Hidden; >> > } else { >> >SkipBody->ShouldSkip = true; >> > >> > Added: cfe/trunk/test/Modules/Inputs/innerstructredef.h >> > URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/ >> Inputs/innerstructredef.h?rev=310706&view=auto >> > >> == >> > --- cfe/trunk/test/Modules/Inputs/innerstructredef.h (added) >> > +++ cfe/trunk/test/Modules/Inputs/innerstructredef.h Fri Aug 11 >> 05:06:52 2017 >> > @@ -0,0 +1,6 @@ >> > +struct Outer { >> > +// This definition is actually hidden since only submodule 'one' is >> imported. >> > +struct Inner { >> > + int x; >> > +} field; >> > +}; >> > >> > Modified: cfe/trunk/test/Modules/Inputs/module.map >> > URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/ >> Inputs/module.map?rev=310706&r1=310705&r2=310706&view=diff >> > >> == >> > --- cfe/trunk/test/Modules/Inputs/module.map (original) >> > +++ cfe/trunk/test/Modules/Inputs/module.map Fri Aug 11 05:06:52 2017 >> > @@ -451,3 +451,12 @@ module DebugNestedB { >> > module objcAtKeywordMissingEnd { >> >header "objcAtKeywordMissingEnd.h" >> > } >> > + >> > +module innerstructredef { >> > + module one { >> > +header "empty.h" >> > + } >> > + module two { >> > + header "innerstructredef.h" >> > + } >> > +} >> > >> > Added: cfe/trunk/test/Modules/inner-struct-redefines-invisible.m >> > URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/ >> inner-struct-redefines-invisible.m?rev=310706&view=auto >> > >> == >> > --- cfe/trunk/test/Modules/inner-struct-redefines-invisible.m (added) >> > +++ cfe/trunk/test/Modules/inner-struct-redefines-invisible.m Fri Aug >> 11 05:06:52 2017 >> > @@ -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; >> > +}; >> > >> > >> > ___ >> > cfe-commits mailing list >> > cfe-commits@lists.llvm.org >> > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >> >> >> >> -- >> Bruno Cardoso Lopes >> http://www.brunocardoso.cc >> ___ >> cfe-commits mailing list >> cfe-commits@lists.l
Re: r310706 - [modules] Set the lexical DC for dummy tag decls that refer to hidden
On 11 August 2017 at 17:20, Bruno Cardoso Lopes via cfe-commits < cfe-commits@lists.llvm.org> wrote: > Hi Alex, > > On Fri, Aug 11, 2017 at 9:06 AM, Alex Lorenz via cfe-commits > wrote: > > Author: arphaman > > Date: Fri Aug 11 05:06:52 2017 > > New Revision: 310706 > > > > URL: http://llvm.org/viewvc/llvm-project?rev=310706&view=rev > > Log: > > [modules] Set the lexical DC for dummy tag decls that refer to hidden > > declarations that are made visible after the dummy is parsed and ODR > verified > > > > Prior to this commit the > > "(getContainingDC(DC) == CurContext && "The next DeclContext should be > lexically contained in the current one.")," > > assertion failure was triggered during semantic analysis of the dummy > > tag declaration that was declared in another tag declaration because its > > lexical context did not point to the outer tag decl. > > > > rdar://32292196 > > > > Added: > > cfe/trunk/test/Modules/Inputs/innerstructredef.h > > cfe/trunk/test/Modules/inner-struct-redefines-invisible.m > > Modified: > > cfe/trunk/lib/Sema/SemaDecl.cpp > > cfe/trunk/test/Modules/Inputs/module.map > > > > Modified: cfe/trunk/lib/Sema/SemaDecl.cpp > > URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/ > SemaDecl.cpp?rev=310706&r1=310705&r2=310706&view=diff > > > == > > --- cfe/trunk/lib/Sema/SemaDecl.cpp (original) > > +++ cfe/trunk/lib/Sema/SemaDecl.cpp Fri Aug 11 05:06:52 2017 > > @@ -13722,6 +13722,7 @@ Decl *Sema::ActOnTag(Scope *S, unsigned > >// comparison. > >SkipBody->CheckSameAsPrevious = true; > >SkipBody->New = createTagFromNewDecl(); > > + SkipBody->New->setLexicalDeclContext(CurContext); > > I think it would be cleaner to do this inside "createTagFromNewDecl" than > here. I agree. Either before or after that change, this seems sufficiently isolated and low-risk that it makes sense to take it for Clang 5. > >SkipBody->Previous = Hidden; > > } else { > >SkipBody->ShouldSkip = true; > > > > Added: cfe/trunk/test/Modules/Inputs/innerstructredef.h > > URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/Inputs/ > innerstructredef.h?rev=310706&view=auto > > > == > > --- cfe/trunk/test/Modules/Inputs/innerstructredef.h (added) > > +++ cfe/trunk/test/Modules/Inputs/innerstructredef.h Fri Aug 11 > 05:06:52 2017 > > @@ -0,0 +1,6 @@ > > +struct Outer { > > +// This definition is actually hidden since only submodule 'one' is > imported. > > +struct Inner { > > + int x; > > +} field; > > +}; > > > > Modified: cfe/trunk/test/Modules/Inputs/module.map > > URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/ > Modules/Inputs/module.map?rev=310706&r1=310705&r2=310706&view=diff > > > == > > --- cfe/trunk/test/Modules/Inputs/module.map (original) > > +++ cfe/trunk/test/Modules/Inputs/module.map Fri Aug 11 05:06:52 2017 > > @@ -451,3 +451,12 @@ module DebugNestedB { > > module objcAtKeywordMissingEnd { > >header "objcAtKeywordMissingEnd.h" > > } > > + > > +module innerstructredef { > > + module one { > > +header "empty.h" > > + } > > + module two { > > + header "innerstructredef.h" > > + } > > +} > > > > Added: cfe/trunk/test/Modules/inner-struct-redefines-invisible.m > > URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/ > Modules/inner-struct-redefines-invisible.m?rev=310706&view=auto > > > == > > --- cfe/trunk/test/Modules/inner-struct-redefines-invisible.m (added) > > +++ cfe/trunk/test/Modules/inner-struct-redefines-invisible.m Fri Aug > 11 05:06:52 2017 > > @@ -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; > > +}; > > > > > > ___ > > cfe-commits mailing list > > cfe-commits@lists.llvm.org > > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits > > > > -- > Bruno Cardoso Lopes > http://www.brunocardoso.cc > ___ > cfe-commits mailing list > cfe-commits@lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits > ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: r310706 - [modules] Set the lexical DC for dummy tag decls that refer to hidden
Hi Alex, On Fri, Aug 11, 2017 at 9:06 AM, Alex Lorenz via cfe-commits wrote: > Author: arphaman > Date: Fri Aug 11 05:06:52 2017 > New Revision: 310706 > > URL: http://llvm.org/viewvc/llvm-project?rev=310706&view=rev > Log: > [modules] Set the lexical DC for dummy tag decls that refer to hidden > declarations that are made visible after the dummy is parsed and ODR verified > > Prior to this commit the > "(getContainingDC(DC) == CurContext && "The next DeclContext should be > lexically contained in the current one.")," > assertion failure was triggered during semantic analysis of the dummy > tag declaration that was declared in another tag declaration because its > lexical context did not point to the outer tag decl. > > rdar://32292196 > > Added: > cfe/trunk/test/Modules/Inputs/innerstructredef.h > cfe/trunk/test/Modules/inner-struct-redefines-invisible.m > Modified: > cfe/trunk/lib/Sema/SemaDecl.cpp > cfe/trunk/test/Modules/Inputs/module.map > > Modified: cfe/trunk/lib/Sema/SemaDecl.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDecl.cpp?rev=310706&r1=310705&r2=310706&view=diff > == > --- cfe/trunk/lib/Sema/SemaDecl.cpp (original) > +++ cfe/trunk/lib/Sema/SemaDecl.cpp Fri Aug 11 05:06:52 2017 > @@ -13722,6 +13722,7 @@ Decl *Sema::ActOnTag(Scope *S, unsigned >// comparison. >SkipBody->CheckSameAsPrevious = true; >SkipBody->New = createTagFromNewDecl(); > + SkipBody->New->setLexicalDeclContext(CurContext); I think it would be cleaner to do this inside "createTagFromNewDecl" than here. >SkipBody->Previous = Hidden; > } else { >SkipBody->ShouldSkip = true; > > Added: cfe/trunk/test/Modules/Inputs/innerstructredef.h > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/Inputs/innerstructredef.h?rev=310706&view=auto > == > --- cfe/trunk/test/Modules/Inputs/innerstructredef.h (added) > +++ cfe/trunk/test/Modules/Inputs/innerstructredef.h Fri Aug 11 05:06:52 2017 > @@ -0,0 +1,6 @@ > +struct Outer { > +// This definition is actually hidden since only submodule 'one' is imported. > +struct Inner { > + int x; > +} field; > +}; > > Modified: cfe/trunk/test/Modules/Inputs/module.map > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/Inputs/module.map?rev=310706&r1=310705&r2=310706&view=diff > == > --- cfe/trunk/test/Modules/Inputs/module.map (original) > +++ cfe/trunk/test/Modules/Inputs/module.map Fri Aug 11 05:06:52 2017 > @@ -451,3 +451,12 @@ module DebugNestedB { > module objcAtKeywordMissingEnd { >header "objcAtKeywordMissingEnd.h" > } > + > +module innerstructredef { > + module one { > +header "empty.h" > + } > + module two { > + header "innerstructredef.h" > + } > +} > > Added: cfe/trunk/test/Modules/inner-struct-redefines-invisible.m > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/inner-struct-redefines-invisible.m?rev=310706&view=auto > == > --- cfe/trunk/test/Modules/inner-struct-redefines-invisible.m (added) > +++ cfe/trunk/test/Modules/inner-struct-redefines-invisible.m Fri Aug 11 > 05:06:52 2017 > @@ -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; > +}; > > > ___ > cfe-commits mailing list > cfe-commits@lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits -- Bruno Cardoso Lopes http://www.brunocardoso.cc ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: r310706 - [modules] Set the lexical DC for dummy tag decls that refer to hidden
Hi Hans & Richard, Is it possible to get this merged into LLVM 5.0? Cheers, Alex On 11 August 2017 at 13:06, Alex Lorenz via cfe-commits < cfe-commits@lists.llvm.org> wrote: > Author: arphaman > Date: Fri Aug 11 05:06:52 2017 > New Revision: 310706 > > URL: http://llvm.org/viewvc/llvm-project?rev=310706&view=rev > Log: > [modules] Set the lexical DC for dummy tag decls that refer to hidden > declarations that are made visible after the dummy is parsed and ODR > verified > > Prior to this commit the > "(getContainingDC(DC) == CurContext && "The next DeclContext should be > lexically contained in the current one.")," > assertion failure was triggered during semantic analysis of the dummy > tag declaration that was declared in another tag declaration because its > lexical context did not point to the outer tag decl. > > rdar://32292196 > > Added: > cfe/trunk/test/Modules/Inputs/innerstructredef.h > cfe/trunk/test/Modules/inner-struct-redefines-invisible.m > Modified: > cfe/trunk/lib/Sema/SemaDecl.cpp > cfe/trunk/test/Modules/Inputs/module.map > > Modified: cfe/trunk/lib/Sema/SemaDecl.cpp > URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/ > SemaDecl.cpp?rev=310706&r1=310705&r2=310706&view=diff > > == > --- cfe/trunk/lib/Sema/SemaDecl.cpp (original) > +++ cfe/trunk/lib/Sema/SemaDecl.cpp Fri Aug 11 05:06:52 2017 > @@ -13722,6 +13722,7 @@ Decl *Sema::ActOnTag(Scope *S, unsigned >// comparison. >SkipBody->CheckSameAsPrevious = true; >SkipBody->New = createTagFromNewDecl(); > + SkipBody->New->setLexicalDeclContext(CurContext); >SkipBody->Previous = Hidden; > } else { >SkipBody->ShouldSkip = true; > > Added: cfe/trunk/test/Modules/Inputs/innerstructredef.h > URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/Inputs/ > innerstructredef.h?rev=310706&view=auto > > == > --- cfe/trunk/test/Modules/Inputs/innerstructredef.h (added) > +++ cfe/trunk/test/Modules/Inputs/innerstructredef.h Fri Aug 11 05:06:52 > 2017 > @@ -0,0 +1,6 @@ > +struct Outer { > +// This definition is actually hidden since only submodule 'one' is > imported. > +struct Inner { > + int x; > +} field; > +}; > > Modified: cfe/trunk/test/Modules/Inputs/module.map > URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/ > Modules/Inputs/module.map?rev=310706&r1=310705&r2=310706&view=diff > > == > --- cfe/trunk/test/Modules/Inputs/module.map (original) > +++ cfe/trunk/test/Modules/Inputs/module.map Fri Aug 11 05:06:52 2017 > @@ -451,3 +451,12 @@ module DebugNestedB { > module objcAtKeywordMissingEnd { >header "objcAtKeywordMissingEnd.h" > } > + > +module innerstructredef { > + module one { > +header "empty.h" > + } > + module two { > + header "innerstructredef.h" > + } > +} > > Added: cfe/trunk/test/Modules/inner-struct-redefines-invisible.m > URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/ > Modules/inner-struct-redefines-invisible.m?rev=310706&view=auto > > == > --- cfe/trunk/test/Modules/inner-struct-redefines-invisible.m (added) > +++ cfe/trunk/test/Modules/inner-struct-redefines-invisible.m Fri Aug 11 > 05:06:52 2017 > @@ -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; > +}; > > > ___ > cfe-commits mailing list > cfe-commits@lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits > ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits