summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg/tc1/dr101.C
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/g++.dg/tc1/dr101.C')
-rw-r--r--gcc/testsuite/g++.dg/tc1/dr101.C30
1 files changed, 30 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/tc1/dr101.C b/gcc/testsuite/g++.dg/tc1/dr101.C
new file mode 100644
index 000000000..0316aaaa7
--- /dev/null
+++ b/gcc/testsuite/g++.dg/tc1/dr101.C
@@ -0,0 +1,30 @@
+// { dg-do compile }
+// Origin: Giovanni Bajo <giovannibajo at gcc dot gnu dot org>
+// DR101: Redeclaration of extern "C" names via using-declarations
+
+namespace Test1 {
+
+ typedef unsigned int X;
+ extern "C" void f1();
+ namespace N {
+ typedef unsigned int X;
+ extern "C" void f1();
+ }
+ using N::f1; // { dg-bogus "" "redeclaration through 'using' should not be ambiguous" }
+ using N::X; // { dg-bogus "" "redeclaration through 'using' should not be ambiguous" }
+}
+
+
+namespace Test2 {
+
+ typedef unsigned int X; // { dg-bogus "X" "" }
+ extern "C" int f2();
+ namespace N {
+ typedef unsigned int X; // { dg-bogus "X" "" }
+ extern "C" int f2();
+ }
+ using namespace N;
+ int i = f2(); // { dg-bogus "" "redeclaration through 'using' should not be ambiguous" }
+ X x; // { dg-bogus "" "redeclaration through 'using' should not be ambiguous" }
+
+}