Merged in r310902. Thanks, Hans
On Mon, Aug 14, 2017 at 4:03 AM, Alex L <arpha...@gmail.com> 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 <rich...@metafoo.co.uk> 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 >>> <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); >>> >>> 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