summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2014-09-03 23:11:22 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2014-09-03 23:11:22 +0000
commitf463436d9c02deb870f2ecbba4a69a96f6f9b3d7 (patch)
tree5810630f0ac6f5e0529de79d06c3179787871727 /clang/test
parentc6ab01eccae05aee4bae81a875a6eb88907247c5 (diff)
downloadbcm5719-llvm-f463436d9c02deb870f2ecbba4a69a96f6f9b3d7.tar.gz
bcm5719-llvm-f463436d9c02deb870f2ecbba4a69a96f6f9b3d7.zip
[modules] Make NamespaceAliasDecl redeclarable, as it should be. This fixes
merging of namespace aliases across modules and improves source fidelity. Incidentally also fixes PR20816. llvm-svn: 217103
Diffstat (limited to 'clang/test')
-rw-r--r--clang/test/Modules/Inputs/cxx-decls-imported.h3
-rw-r--r--clang/test/Modules/Inputs/cxx-decls-merged.h3
-rw-r--r--clang/test/Modules/cxx-decls.cpp2
-rw-r--r--clang/test/SemaCXX/namespace-alias.cpp6
4 files changed, 11 insertions, 3 deletions
diff --git a/clang/test/Modules/Inputs/cxx-decls-imported.h b/clang/test/Modules/Inputs/cxx-decls-imported.h
index 691b374d0d8..8c1e74f17c3 100644
--- a/clang/test/Modules/Inputs/cxx-decls-imported.h
+++ b/clang/test/Modules/Inputs/cxx-decls-imported.h
@@ -44,3 +44,6 @@ typedef struct {
} NameForLinkage2;
auto name_for_linkage2_inner_a = NameForLinkage2::Inner();
typedef decltype(name_for_linkage2_inner_a) NameForLinkage2Inner;
+
+namespace Aliased { extern int a; }
+namespace Alias = Aliased;
diff --git a/clang/test/Modules/Inputs/cxx-decls-merged.h b/clang/test/Modules/Inputs/cxx-decls-merged.h
index 7f2baf36ee9..86e81a9bb68 100644
--- a/clang/test/Modules/Inputs/cxx-decls-merged.h
+++ b/clang/test/Modules/Inputs/cxx-decls-merged.h
@@ -22,3 +22,6 @@ typedef struct {
} NameForLinkage2;
auto name_for_linkage2_inner_b = NameForLinkage2::Inner();
typedef decltype(name_for_linkage2_inner_b) NameForLinkage2Inner;
+
+namespace Aliased { extern int b; }
+namespace Alias = Aliased;
diff --git a/clang/test/Modules/cxx-decls.cpp b/clang/test/Modules/cxx-decls.cpp
index 1fb550ba280..109306ed79d 100644
--- a/clang/test/Modules/cxx-decls.cpp
+++ b/clang/test/Modules/cxx-decls.cpp
@@ -46,6 +46,8 @@ int overrides_virtual_functions_test =
void use_extern_c_function() { ExternCFunction(); }
+int use_namespace_alias() { return Alias::a + Alias::b; }
+
@import cxx_decls_premerged;
void use_extern_c_function_2() { ExternCFunction(); }
diff --git a/clang/test/SemaCXX/namespace-alias.cpp b/clang/test/SemaCXX/namespace-alias.cpp
index e18b58b4d44..63615ecbd35 100644
--- a/clang/test/SemaCXX/namespace-alias.cpp
+++ b/clang/test/SemaCXX/namespace-alias.cpp
@@ -35,12 +35,12 @@ namespace H {
namespace A2 { }
// These all point to A1.
- namespace B = A1; // expected-note {{previous definition is here}}
+ namespace B = A1;
namespace B = A1;
namespace C = B;
- namespace B = C;
+ namespace B = C; // expected-note {{previously defined as an alias for 'A1'}}
- namespace B = A2; // expected-error {{redefinition of 'B' as different kind of symbol}}
+ namespace B = A2; // expected-error {{redefinition of 'B' as an alias for a different namespace}}
}
namespace I {
OpenPOWER on IntegriCloud