Author: rsmith Date: Tue Jan 12 14:34:32 2016 New Revision: 257512 URL: http://llvm.org/viewvc/llvm-project?rev=257512&view=rev Log: [modules] Don't diagnose a conflict between two using-declarations that name equivalent internal linkage entities.
Added: cfe/trunk/test/Modules/Inputs/using-decl-redecl/d.h Modified: cfe/trunk/lib/Sema/SemaDeclCXX.cpp cfe/trunk/test/Modules/Inputs/using-decl-redecl/a.h cfe/trunk/test/Modules/Inputs/using-decl-redecl/module.modulemap cfe/trunk/test/Modules/using-decl-redecl.cpp Modified: cfe/trunk/lib/Sema/SemaDeclCXX.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclCXX.cpp?rev=257512&r1=257511&r2=257512&view=diff ============================================================================== --- cfe/trunk/lib/Sema/SemaDeclCXX.cpp (original) +++ cfe/trunk/lib/Sema/SemaDeclCXX.cpp Tue Jan 12 14:34:32 2016 @@ -7797,6 +7797,10 @@ bool Sema::CheckUsingShadowDecl(UsingDec if (UsingShadowDecl *Shadow = dyn_cast<UsingShadowDecl>(*I)) PrevShadow = Shadow; FoundEquivalentDecl = true; + } else if (isEquivalentInternalLinkageDeclaration(D, Target)) { + // We don't conflict with an existing using shadow decl of an equivalent + // declaration, but we're not a redeclaration of it. + FoundEquivalentDecl = true; } if (isVisible(D)) Modified: cfe/trunk/test/Modules/Inputs/using-decl-redecl/a.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/Inputs/using-decl-redecl/a.h?rev=257512&r1=257511&r2=257512&view=diff ============================================================================== --- cfe/trunk/test/Modules/Inputs/using-decl-redecl/a.h (original) +++ cfe/trunk/test/Modules/Inputs/using-decl-redecl/a.h Tue Jan 12 14:34:32 2016 @@ -1,2 +1,3 @@ struct string {}; -namespace N { typedef ::string clstring; } +const int n = 0; +namespace N { typedef ::string clstring; using ::n; } Added: cfe/trunk/test/Modules/Inputs/using-decl-redecl/d.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/Inputs/using-decl-redecl/d.h?rev=257512&view=auto ============================================================================== --- cfe/trunk/test/Modules/Inputs/using-decl-redecl/d.h (added) +++ cfe/trunk/test/Modules/Inputs/using-decl-redecl/d.h Tue Jan 12 14:34:32 2016 @@ -0,0 +1 @@ +#include "a.h" Modified: cfe/trunk/test/Modules/Inputs/using-decl-redecl/module.modulemap URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/Inputs/using-decl-redecl/module.modulemap?rev=257512&r1=257511&r2=257512&view=diff ============================================================================== --- cfe/trunk/test/Modules/Inputs/using-decl-redecl/module.modulemap (original) +++ cfe/trunk/test/Modules/Inputs/using-decl-redecl/module.modulemap Tue Jan 12 14:34:32 2016 @@ -1,3 +1,4 @@ module a { header "a.h" } -module b { header "b.h" export * } -module c { header "c.h" export * } +module b { header "b.h" export a } +module c { header "c.h" export a export b } +module d { header "d.h" } Modified: cfe/trunk/test/Modules/using-decl-redecl.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/using-decl-redecl.cpp?rev=257512&r1=257511&r2=257512&view=diff ============================================================================== --- cfe/trunk/test/Modules/using-decl-redecl.cpp (original) +++ cfe/trunk/test/Modules/using-decl-redecl.cpp Tue Jan 12 14:34:32 2016 @@ -2,10 +2,20 @@ // RUN: %clang_cc1 -fmodules -fmodules-cache-path=%t \ // RUN: -fmodule-map-file=%S/Inputs/using-decl-redecl/module.modulemap \ // RUN: -I%S/Inputs/using-decl-redecl \ +// RUN: -Wno-modules-ambiguous-internal-linkage \ // RUN: -verify %s + +#include "d.h" + +const int n = 0; +namespace M { using ::n; } + #include "c.h" + N::clstring y = b; // Use a typo to trigger import of all declarations in N. N::clstrinh s; // expected-error {{did you mean 'clstring'}} -// expected-note@a.h:2 {{here}} +// expected-note@a.h:3 {{here}} + +namespace M { using N::n; } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits