Re: r310706 - [modules] Set the lexical DC for dummy tag decls that refer to hidden

2017-08-14 Thread Hans Wennborg via cfe-commits
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=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=310705=310706=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=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=310705=310706=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=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;
>>> > +};
>>> >
>>> >
>>> > ___
>>> > 

Re: r310706 - [modules] Set the lexical DC for dummy tag decls that refer to hidden

2017-08-14 Thread Alex L via cfe-commits
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=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=310705=310706=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=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=310705=310706=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=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
>> 

Re: r310706 - [modules] Set the lexical DC for dummy tag decls that refer to hidden

2017-08-11 Thread Richard Smith via cfe-commits
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=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=310705=310706=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=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=310705=310706=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=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

2017-08-11 Thread Bruno Cardoso Lopes via cfe-commits
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=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=310705=310706=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=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=310705=310706=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=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

2017-08-11 Thread Alex L via cfe-commits
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=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=310705=310706=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=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=310705=310706=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=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