summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.old-deja/g++.ns
diff options
context:
space:
mode:
authorupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
committerupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
commit554fd8c5195424bdbcabf5de30fdc183aba391bd (patch)
tree976dc5ab7fddf506dadce60ae936f43f58787092 /gcc/testsuite/g++.old-deja/g++.ns
downloadcbb-gcc-4.6.4-upstream.tar.bz2
cbb-gcc-4.6.4-upstream.tar.xz
obtained gcc-4.6.4.tar.bz2 from upstream website;upstream
verified gcc-4.6.4.tar.bz2.sig; imported gcc-4.6.4 source tree from verified upstream tarball. downloading a git-generated archive based on the 'upstream' tag should provide you with a source tree that is binary identical to the one extracted from the above tarball. if you have obtained the source via the command 'git clone', however, do note that line-endings of files in your working directory might differ from line-endings of the respective files in the upstream repository.
Diffstat (limited to 'gcc/testsuite/g++.old-deja/g++.ns')
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/alias1.C19
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/alias2.C8
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/alias3.C31
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/alias4.C14
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/alias6.C36
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/alias7.C11
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/anon1.C13
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/bogus1.C10
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/crash1.C12
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/crash2.C11
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/crash3.C10
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/crash4.C11
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/extern1.C18
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/friend1.C8
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/friend2.C11
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/invalid1.C12
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/koenig1.C18
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/koenig2.C10
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/koenig3.C22
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/koenig4.C25
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/koenig5.C19
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/koenig6.C13
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/koenig7.C23
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/koenig8.C14
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/koenig9.C14
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/lookup1.C3
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/lookup2.C9
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/lookup3.C15
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/lookup4.C23
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/lookup5.C23
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/main1.C15
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/ns1.C17
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/ns10.C13
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/ns11.C20
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/ns12.C23
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/ns13.C14
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/ns14.C17
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/ns15.C2
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/ns16.C14
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/ns17.C13
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/ns18.C30
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/ns19.C7
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/ns2.C27
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/ns3.C17
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/ns4.C11
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/ns5.C6
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/ns6.C14
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/ns7.C26
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/ns8.C11
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/ns9.C13
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/overload1.C34
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/overload2.C14
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/overload3.C18
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/overload4.C8
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/overload5.C14
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/scoped1.C26
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/template1.C9
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/template10.C7
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/template11.C16
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/template12.C19
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/template13.C23
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/template14.C14
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/template15.C5
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/template16.C15
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/template17.C37
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/template18.C24
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/template2.C14
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/template3.C22
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/template4.C18
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/template5.C34
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/template6.C24
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/template7.C12
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/template8.C9
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/template9.C41
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/type1.C18
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/type2.C19
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/undef1.C5
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/using1.C3
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/using10.C9
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/using11.C9
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/using12.C20
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/using13.C24
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/using14.C15
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/using2.C5
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/using3.C16
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/using4.C6
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/using5.C6
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/using6.C9
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/using7.C12
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/using8.C20
-rw-r--r--gcc/testsuite/g++.old-deja/g++.ns/using9.C24
91 files changed, 1453 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/alias1.C b/gcc/testsuite/g++.old-deja/g++.ns/alias1.C
new file mode 100644
index 000000000..e46d74dff
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/alias1.C
@@ -0,0 +1,19 @@
+// { dg-do run }
+namespace foo{
+ int eine_funktion(int)
+ {
+ return 0;
+ }
+}
+
+namespace foo{
+ void eine_funktion(int,int)
+ {}
+}
+
+namespace bar = foo;
+
+int main()
+{
+ return bar::eine_funktion(3);
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/alias2.C b/gcc/testsuite/g++.old-deja/g++.ns/alias2.C
new file mode 100644
index 000000000..56712836c
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/alias2.C
@@ -0,0 +1,8 @@
+// { dg-do assemble }
+namespace NS1
+{
+ int a;
+}
+
+namespace NS2 = NonExistant; //{ dg-error "" }
+
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/alias3.C b/gcc/testsuite/g++.old-deja/g++.ns/alias3.C
new file mode 100644
index 000000000..45f004984
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/alias3.C
@@ -0,0 +1,31 @@
+// { dg-do run }
+namespace A{
+ struct X{};
+ void f(X&);
+ extern int i;
+ namespace a_very_long_namespace_name{
+ int k;
+ }
+}
+
+namespace B = A;
+namespace B = A;
+namespace B = B;
+
+namespace avl = A::a_very_long_namespace_name;
+
+void B::f(A::X& x)
+{
+ B::f(x);
+ f(x);
+ avl::k = 1;
+}
+
+int B::i = 0;
+
+int main()
+{
+ B::X x;
+ if (B::i)
+ A::f(x);
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/alias4.C b/gcc/testsuite/g++.old-deja/g++.ns/alias4.C
new file mode 100644
index 000000000..5bff439fc
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/alias4.C
@@ -0,0 +1,14 @@
+// { dg-do assemble }
+namespace A = B; // { dg-error "" } unknown namespace
+
+namespace C{}
+namespace D = C;
+namespace D { // { dg-error "" } reopening namespace with alias
+ void f();
+}
+
+void C::f(){} // { dg-error "" } previous definition
+
+void D::f(){} // { dg-error "" } redefinition
+
+namespace E = C::F; // { dg-error "" } unknown namespace
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/alias6.C b/gcc/testsuite/g++.old-deja/g++.ns/alias6.C
new file mode 100644
index 000000000..31b10bf38
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/alias6.C
@@ -0,0 +1,36 @@
+// { dg-do run }
+// Check namespace aliases inside blocks
+namespace A {
+ int i;
+ void f(){
+ i = 0;
+ }
+}
+
+int g();
+
+int main ()
+{
+ namespace B = A;
+ B::i=42;
+ B::f();
+ using namespace B;
+ f();
+ // A::i is now 0, B::i is 1
+ return g();
+}
+
+namespace B {
+ int i = 1;
+}
+
+int g()
+{
+ namespace x = A;
+ if (x::i)
+ {
+ namespace x = B;
+ return x::i;
+ }
+ return x::i;
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/alias7.C b/gcc/testsuite/g++.old-deja/g++.ns/alias7.C
new file mode 100644
index 000000000..3145e4a3b
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/alias7.C
@@ -0,0 +1,11 @@
+// { dg-do assemble }
+namespace A{
+ namespace B{int i;}
+ using namespace B;
+}
+
+namespace C=A;
+
+void f(){
+ C::i = 1;
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/anon1.C b/gcc/testsuite/g++.old-deja/g++.ns/anon1.C
new file mode 100644
index 000000000..97d3d905d
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/anon1.C
@@ -0,0 +1,13 @@
+// { dg-do run }
+namespace{
+ void f();
+}
+
+int main()
+{
+ f();
+}
+
+namespace{
+ void f(){}
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/bogus1.C b/gcc/testsuite/g++.old-deja/g++.ns/bogus1.C
new file mode 100644
index 000000000..4b927a3d6
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/bogus1.C
@@ -0,0 +1,10 @@
+// { dg-do assemble }
+
+namespace N {}
+
+void f(int N::k); // { dg-error "" }
+
+class Foo
+{
+ int N::j; // { dg-error "" } invalid use of `::'
+};
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/crash1.C b/gcc/testsuite/g++.old-deja/g++.ns/crash1.C
new file mode 100644
index 000000000..eac605b9c
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/crash1.C
@@ -0,0 +1,12 @@
+// { dg-do assemble }
+
+template <class T>
+struct S1 {};
+
+namespace N {
+}
+
+struct S2
+{
+ typedef N::S1<int> S2_T; // { dg-error "" } parse error
+};
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/crash2.C b/gcc/testsuite/g++.old-deja/g++.ns/crash2.C
new file mode 100644
index 000000000..72714299b
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/crash2.C
@@ -0,0 +1,11 @@
+// { dg-do assemble }
+
+// Submitted by bjornw@fairplay.no
+
+
+namespace hei {
+ class CSomeClass {};
+ extern CSomeClass SomeClass;
+}
+
+hei::CSomeClass hei::CSomeClass; // { dg-error "" "" { xfail *-*-* } } should be hei::SomeClass -
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/crash3.C b/gcc/testsuite/g++.old-deja/g++.ns/crash3.C
new file mode 100644
index 000000000..37211d0db
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/crash3.C
@@ -0,0 +1,10 @@
+// { dg-do assemble }
+
+namespace N {
+ template <class T> struct S;
+}
+
+void f()
+{
+ N::S(); // { dg-error "" } invalid use of template
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/crash4.C b/gcc/testsuite/g++.old-deja/g++.ns/crash4.C
new file mode 100644
index 000000000..a3c17403e
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/crash4.C
@@ -0,0 +1,11 @@
+// { dg-do assemble }
+// Origin: Geoffrey Furnish <furnish@actel.com>
+
+namespace N {
+
+ template<class T> class C
+ {
+ template<class U> friend class C;
+ };
+
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/extern1.C b/gcc/testsuite/g++.old-deja/g++.ns/extern1.C
new file mode 100644
index 000000000..c5b7ea747
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/extern1.C
@@ -0,0 +1,18 @@
+// { dg-do link }
+
+// Based on a testcase by eyal.ben-david@aks.com
+
+// An extern declaration of an undeclared object within a function
+// introduces the object into the enclosing namespace [basic.link]/7
+
+namespace {
+ void foo() {
+ extern int xx;
+ xx = 0;
+ }
+ int xx = 1;
+}
+
+int main() {
+ xx = 2;
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/friend1.C b/gcc/testsuite/g++.old-deja/g++.ns/friend1.C
new file mode 100644
index 000000000..7bdea05dc
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/friend1.C
@@ -0,0 +1,8 @@
+// { dg-do assemble }
+namespace A{
+ void f(int);
+}
+
+class X{
+ friend void A::f(int);
+};
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/friend2.C b/gcc/testsuite/g++.old-deja/g++.ns/friend2.C
new file mode 100644
index 000000000..ad6a7d12b
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/friend2.C
@@ -0,0 +1,11 @@
+// { dg-do assemble }
+namespace A{
+ void foo();
+}
+
+
+namespace B{
+class B{
+ friend void A::foo();
+};
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/invalid1.C b/gcc/testsuite/g++.old-deja/g++.ns/invalid1.C
new file mode 100644
index 000000000..38e4d3305
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/invalid1.C
@@ -0,0 +1,12 @@
+// { dg-do assemble }
+namespace x { }
+
+void f(int);
+
+int main()
+{
+ x(); // { dg-error "" } calling a namespace
+ x=4; // { dg-error "" } assigning to a namespace
+ f(x); // { dg-error "" } passing a namespace as parameter
+}
+
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/koenig1.C b/gcc/testsuite/g++.old-deja/g++.ns/koenig1.C
new file mode 100644
index 000000000..4b4ddb18a
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/koenig1.C
@@ -0,0 +1,18 @@
+// { dg-do assemble }
+class ostream;
+extern ostream cout;
+namespace foo
+{
+ struct S
+ {
+ int i;
+ };
+
+ extern ostream &operator<<(ostream &, const S &);
+}
+
+
+void bar(foo::S s)
+{
+ cout << s ;
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/koenig2.C b/gcc/testsuite/g++.old-deja/g++.ns/koenig2.C
new file mode 100644
index 000000000..16d22a29f
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/koenig2.C
@@ -0,0 +1,10 @@
+// { dg-do assemble }
+// { dg-options "" }
+// Check association of {error} for Koenig lookup
+
+struct QString { operator void * (); };
+int foo()
+{
+ QString bar;
+ return (bar == __null );
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/koenig3.C b/gcc/testsuite/g++.old-deja/g++.ns/koenig3.C
new file mode 100644
index 000000000..58b1d571e
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/koenig3.C
@@ -0,0 +1,22 @@
+// { dg-do run }
+//Check association of member pointer in overload resolution.
+struct A {
+ int m_val;
+ friend int operator ->* (A & other, int A::*pm)
+ { return 31; }
+};
+
+int A::*pi = & A::m_val;
+
+int
+main(void)
+{
+ A c;
+ c.m_val = 42;
+ int j = c ->* pi;
+
+ if (j == 31)
+ return 0;
+ else
+ return 1;
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/koenig4.C b/gcc/testsuite/g++.old-deja/g++.ns/koenig4.C
new file mode 100644
index 000000000..d26bd130e
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/koenig4.C
@@ -0,0 +1,25 @@
+// { dg-do run }
+void f();
+void f(int);
+
+namespace A{
+ struct S{
+ void f();
+ void f(S);
+ };
+ void f(S&){}
+ void h(S&){}
+}
+
+template<class T>
+void g(T t){
+ f(t);
+}
+
+int main()
+{
+ A::S s;
+ f(s);
+ g(s);
+ h(s);
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/koenig5.C b/gcc/testsuite/g++.old-deja/g++.ns/koenig5.C
new file mode 100644
index 000000000..7c56d5cbc
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/koenig5.C
@@ -0,0 +1,19 @@
+// { dg-do assemble }
+// Function pointers are ignored in Koenig lookup. (DR 218)
+namespace A{
+ void foo();
+ struct X{};
+ void (*bar)(X*)=0; // { dg-message "A::bar" }
+}
+using A::X;
+
+void (*foo)(X*)=0;
+
+void g()
+{
+ foo(new X); // ok -- DR 218 says that we find the global
+ // foo variable first, and therefore do not
+ // perform argument-dependent lookup.
+ bar(new X); // { dg-error "not declared" }
+ // { dg-message "suggested alternative" "suggested alternative" { target *-*-* } 17 }
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/koenig6.C b/gcc/testsuite/g++.old-deja/g++.ns/koenig6.C
new file mode 100644
index 000000000..b5fa9c989
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/koenig6.C
@@ -0,0 +1,13 @@
+// { dg-do assemble }
+namespace A{
+ struct X{};
+
+ X* foo(X a);
+ void bar(X*){}
+}
+
+int main()
+{
+ A::X x;
+ bar(foo(x));
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/koenig7.C b/gcc/testsuite/g++.old-deja/g++.ns/koenig7.C
new file mode 100644
index 000000000..61b68d803
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/koenig7.C
@@ -0,0 +1,23 @@
+// { dg-do run }
+// Test for Koenig lookup involving overloaded functions.
+
+namespace N1 {
+ struct A { };
+ void f1(A) {}
+ void f2(float) {}
+ void g(void (*)(float)) {}
+}
+
+using N1::f1;
+void f1(float) {}
+
+using N1::f2;
+template <class T>
+void f2(N1::A, T) {}
+
+void g(void (*)(int)) {}
+
+int main() {
+ g(&f1); // Works?
+ g(f2); // Works?
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/koenig8.C b/gcc/testsuite/g++.old-deja/g++.ns/koenig8.C
new file mode 100644
index 000000000..351da5171
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/koenig8.C
@@ -0,0 +1,14 @@
+// { dg-do assemble }
+// Copyright (C) 1999 Free Software Foundation, Inc.
+// Contributed by Nathan Sidwell 15 Dec 1999 <nathan@acm.org>
+
+// caused an ICE determining whether to perform Koenig lookup
+// when checking is enabled
+
+template<class T> void Zap (T);
+
+void V3 ()
+{
+ Zap (1);
+}
+
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/koenig9.C b/gcc/testsuite/g++.old-deja/g++.ns/koenig9.C
new file mode 100644
index 000000000..46efcb72d
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/koenig9.C
@@ -0,0 +1,14 @@
+// { dg-do assemble }
+
+// Copyright (C) 2000 Free Software Foundation, Inc.
+// Contributed by Theodore.Papadopoulo 23 Jun 2000 <Theodore.Papadopoulo@sophia.inria.fr>
+
+int count (int);
+void *count (char *, char);
+
+void foo(const char*,...);
+
+inline void
+bar() {
+ foo("",count); // { dg-error "overloaded function" "multiple overloaded functions" }
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/lookup1.C b/gcc/testsuite/g++.old-deja/g++.ns/lookup1.C
new file mode 100644
index 000000000..bb0dd0a33
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/lookup1.C
@@ -0,0 +1,3 @@
+// { dg-do assemble }
+typedef int __quad_t;
+typedef __quad_t __qaddr_t;
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/lookup2.C b/gcc/testsuite/g++.old-deja/g++.ns/lookup2.C
new file mode 100644
index 000000000..fff53fa90
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/lookup2.C
@@ -0,0 +1,9 @@
+// { dg-do assemble }
+template <class charT>
+struct basic_string
+{
+ charT append (charT c)
+ { return c; }
+};
+typedef char c;
+template class basic_string <char>;
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/lookup3.C b/gcc/testsuite/g++.old-deja/g++.ns/lookup3.C
new file mode 100644
index 000000000..1159a1167
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/lookup3.C
@@ -0,0 +1,15 @@
+// { dg-do run }
+namespace A{
+ int i;
+ int f();
+}
+
+int A::f()
+{
+ return i;
+}
+
+int main()
+{
+ return A::f();
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/lookup4.C b/gcc/testsuite/g++.old-deja/g++.ns/lookup4.C
new file mode 100644
index 000000000..e4b4be31f
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/lookup4.C
@@ -0,0 +1,23 @@
+// { dg-do assemble }
+namespace X{
+ typedef int foo;
+ const int bar=2;
+ namespace Y{
+ void f(foo);
+ extern int g;
+ extern int g1;
+ struct h{
+ void i(foo);
+ };
+ }
+}
+
+void X::Y::f(foo)
+{
+}
+
+int X::Y::g = bar;
+int X::Y::g1(bar);
+
+void X::Y::h::i(foo)
+{}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/lookup5.C b/gcc/testsuite/g++.old-deja/g++.ns/lookup5.C
new file mode 100644
index 000000000..95af00ffd
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/lookup5.C
@@ -0,0 +1,23 @@
+// { dg-do assemble }
+namespace A{
+ void f();
+}
+
+namespace B{
+ using namespace A;
+ void f(int); /* { dg-message "note: declared here" } */
+}
+
+using namespace B;
+
+void g()
+{
+ ::f(); // { dg-error "" } A::f is not found
+}
+
+using namespace A;
+
+void g1()
+{
+ ::f(); // ok, it is found now
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/main1.C b/gcc/testsuite/g++.old-deja/g++.ns/main1.C
new file mode 100644
index 000000000..e002d323c
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/main1.C
@@ -0,0 +1,15 @@
+// { dg-do assemble }
+
+// main is only reserved in the global namespace [basic.start.main]/3
+
+// submitted by Gerald Gutierrez <gutier@intergate.bc.ca>
+
+namespace A { void main () { } }
+namespace B { void main () { } }
+namespace C {
+ void main () { }
+ namespace D {
+ void main () { }
+ }
+}
+
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/ns1.C b/gcc/testsuite/g++.old-deja/g++.ns/ns1.C
new file mode 100644
index 000000000..3fa883cce
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/ns1.C
@@ -0,0 +1,17 @@
+// { dg-do run }
+namespace foo{
+ int eine_funktion(int)
+ {
+ return 0;
+ }
+
+ int eine_funktion(int,int)
+ {
+ return 1;
+ }
+}
+
+int main(int,char**)
+{
+ return foo::eine_funktion(1);
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/ns10.C b/gcc/testsuite/g++.old-deja/g++.ns/ns10.C
new file mode 100644
index 000000000..bbdfb0897
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/ns10.C
@@ -0,0 +1,13 @@
+// { dg-do assemble }
+namespace bb
+{
+ int f(int);
+
+ namespace k
+ {
+ void foo(int bar)
+ {
+ int i=bb:f(bar); // { dg-error "" } namespace
+ }
+ }
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/ns11.C b/gcc/testsuite/g++.old-deja/g++.ns/ns11.C
new file mode 100644
index 000000000..2dc0344f3
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/ns11.C
@@ -0,0 +1,20 @@
+// { dg-do assemble }
+// Build don't link
+// Check [namespace.memdef]/2
+
+namespace A{
+ void f(int);
+ void f(int,int);
+ int i; // { dg-error "" } .*
+}
+
+void A::f(){} // { dg-error "" } should have been declared before
+
+namespace B{
+ void A::f(int){} // { dg-error "" } B does not surround A
+}
+
+int A::i; // { dg-error "" } redefinition
+
+void A::f(int,int){} // ok
+
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/ns12.C b/gcc/testsuite/g++.old-deja/g++.ns/ns12.C
new file mode 100644
index 000000000..c5468914f
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/ns12.C
@@ -0,0 +1,23 @@
+// { dg-do run }
+namespace fred
+{
+ int barney();
+ extern int wilma;
+}
+
+int fred::barney()
+{
+ return fred::wilma;
+}
+
+int fred::wilma;
+
+int barney()
+{
+ return 1;
+}
+
+int main()
+{
+ return fred::barney();
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/ns13.C b/gcc/testsuite/g++.old-deja/g++.ns/ns13.C
new file mode 100644
index 000000000..6f91328ef
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/ns13.C
@@ -0,0 +1,14 @@
+// { dg-do run }
+namespace std{
+ void f(){}
+ void g();
+ int i=5;
+}
+
+void std::g()
+{}
+
+int main()
+{
+ return std::i-5;
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/ns14.C b/gcc/testsuite/g++.old-deja/g++.ns/ns14.C
new file mode 100644
index 000000000..00b901ac1
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/ns14.C
@@ -0,0 +1,17 @@
+// { dg-do run }
+
+namespace std{
+ int f(){
+ return 0;
+ }
+}
+
+int f()
+{
+ return 1;
+}
+
+int main()
+{
+ return std::f();
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/ns15.C b/gcc/testsuite/g++.old-deja/g++.ns/ns15.C
new file mode 100644
index 000000000..bfe510036
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/ns15.C
@@ -0,0 +1,2 @@
+// { dg-do assemble }
+namespace std {}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/ns16.C b/gcc/testsuite/g++.old-deja/g++.ns/ns16.C
new file mode 100644
index 000000000..5860dcb0a
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/ns16.C
@@ -0,0 +1,14 @@
+// { dg-do assemble }
+
+class Y {
+public:
+ void operator +(int) const;
+};
+
+namespace X {
+ extern Y const& z;
+}
+
+void f(void) {
+ X::z + 1;
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/ns17.C b/gcc/testsuite/g++.old-deja/g++.ns/ns17.C
new file mode 100644
index 000000000..033b0af19
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/ns17.C
@@ -0,0 +1,13 @@
+// { dg-do assemble }
+namespace foo
+{
+ class c
+ {
+ };
+}
+
+int
+foo::c:fn () // { dg-error "" } syntax error
+{
+}
+
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/ns18.C b/gcc/testsuite/g++.old-deja/g++.ns/ns18.C
new file mode 100644
index 000000000..192fa4291
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/ns18.C
@@ -0,0 +1,30 @@
+// { dg-do assemble }
+// Origin: Theo Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
+
+namespace Bname {
+ class B;
+}
+
+template <class T>
+class A {
+ friend class Bname::B;
+ static const int a = 1;
+public:
+ A() { }
+};
+
+namespace Bname {
+ class B {
+ int a;
+ public:
+ template<class T>
+ B(const T&):a(T::a) { }
+ };
+}
+
+int
+main()
+{
+ A<int> a;
+ Bname::B b(a);
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/ns19.C b/gcc/testsuite/g++.old-deja/g++.ns/ns19.C
new file mode 100644
index 000000000..77e77380b
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/ns19.C
@@ -0,0 +1,7 @@
+// { dg-do assemble }
+// Origin: Chip Salzenberg <chip@valinux.com>
+
+namespace N {
+enum { E = 0 };
+static int f() { return E; }
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/ns2.C b/gcc/testsuite/g++.old-deja/g++.ns/ns2.C
new file mode 100644
index 000000000..0f65cbc54
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/ns2.C
@@ -0,0 +1,27 @@
+// { dg-do run }
+namespace foo{
+ struct X{
+ int i;
+ void f();
+ static int k1,k2;
+ };
+ void X::f(){}
+ int var;
+ int X::k1;
+}
+
+using namespace foo;
+X zzz;
+int X::k2;
+
+void andere_funktion()
+{
+ zzz.f();
+ var=4;
+}
+
+int main(int,char**)
+{
+ andere_funktion();
+ return 0;
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/ns3.C b/gcc/testsuite/g++.old-deja/g++.ns/ns3.C
new file mode 100644
index 000000000..6cb289b57
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/ns3.C
@@ -0,0 +1,17 @@
+// { dg-do assemble }
+namespace foo{
+ void eine_funktion(int)
+ {}
+}
+
+using namespace foo;
+
+namespace foo{
+ void eine_funktion(int,int)
+ {}
+}
+
+void andere_funktion()
+{
+ eine_funktion(3,4);
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/ns4.C b/gcc/testsuite/g++.old-deja/g++.ns/ns4.C
new file mode 100644
index 000000000..c2b8feebb
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/ns4.C
@@ -0,0 +1,11 @@
+// { dg-do assemble }
+namespace A{
+ enum foo{a,b,c};
+}
+using A::foo;
+using A::b;
+void g()
+{
+ foo x;
+ x=b;
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/ns5.C b/gcc/testsuite/g++.old-deja/g++.ns/ns5.C
new file mode 100644
index 000000000..8ee4c403d
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/ns5.C
@@ -0,0 +1,6 @@
+// { dg-do assemble }
+namespace X{
+ class Y{};
+}
+
+X::Y z;
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/ns6.C b/gcc/testsuite/g++.old-deja/g++.ns/ns6.C
new file mode 100644
index 000000000..211df81eb
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/ns6.C
@@ -0,0 +1,14 @@
+// { dg-do run }
+namespace A{
+ int i;
+ namespace B{
+ void f(){i++;}
+ int i;
+ void g(){i++;}
+ }
+}
+
+int main()
+{
+ return A::i-A::B::i;
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/ns7.C b/gcc/testsuite/g++.old-deja/g++.ns/ns7.C
new file mode 100644
index 000000000..ee834c56b
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/ns7.C
@@ -0,0 +1,26 @@
+// { dg-do assemble }
+namespace A{
+ struct X{
+ int i;
+ X(){}
+ X(int j);
+ void operator=(const X&);
+ virtual ~X(){}
+ };
+ void X::operator=(const X&o)
+ {
+ i=o.i;
+ }
+}
+
+A::X::X(int j):i(j){}
+
+namespace A{
+ struct Y:public X{
+ int j;
+ Y(int,int);
+ };
+}
+
+A::Y::Y(int a,int b):X(a),j(b)
+{}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/ns8.C b/gcc/testsuite/g++.old-deja/g++.ns/ns8.C
new file mode 100644
index 000000000..7ef3dee25
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/ns8.C
@@ -0,0 +1,11 @@
+// { dg-do assemble }
+namespace B{
+ void f();
+}
+
+using namespace B;
+
+void g()
+{
+ ::f();
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/ns9.C b/gcc/testsuite/g++.old-deja/g++.ns/ns9.C
new file mode 100644
index 000000000..9b181e4fd
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/ns9.C
@@ -0,0 +1,13 @@
+// { dg-do assemble }
+namespace bb
+{
+ int f(int);
+
+ namespace k
+ {
+ void foo(int bar)
+ {
+ return bb:f(bar); //{ dg-error "" } syntax error
+ }
+ }
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/overload1.C b/gcc/testsuite/g++.old-deja/g++.ns/overload1.C
new file mode 100644
index 000000000..d177e02bb
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/overload1.C
@@ -0,0 +1,34 @@
+// { dg-do run }
+// Unqualified lookup should find all functions.
+// Duplicates are ignored as long as they lose during overload resolution.
+namespace A{
+ int f(){
+ return 1;
+ }
+ int f(double);
+}
+namespace B{
+ int f(int){
+ return 2;
+ }
+ int f(double);
+}
+
+int f(int,int)
+{
+ return 3;
+}
+
+using namespace A;
+using namespace B;
+
+int main()
+{
+ if(f() != 1)
+ return 1;
+ if(f(1) != 2)
+ return 1;
+ if(f(0,0) != 3)
+ return 1;
+ return 0;
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/overload2.C b/gcc/testsuite/g++.old-deja/g++.ns/overload2.C
new file mode 100644
index 000000000..facfa3f56
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/overload2.C
@@ -0,0 +1,14 @@
+// { dg-do assemble }
+namespace A{
+ void f(); // { dg-message "note" }
+}
+
+using namespace A;
+
+void f(); // { dg-message "note" }
+
+void g()
+{
+ f(); // { dg-error "ambiguous" } ambiguous, ::f or A::f ?
+ // { dg-message "candidate" "candidate note" { target *-*-* } 12 }
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/overload3.C b/gcc/testsuite/g++.old-deja/g++.ns/overload3.C
new file mode 100644
index 000000000..418355396
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/overload3.C
@@ -0,0 +1,18 @@
+// { dg-do assemble }
+
+namespace A{
+ void f();
+}
+
+using A::f;
+
+namespace A{
+ void f(int);
+}
+
+using A::f;
+
+void g()
+{
+ f(4);
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/overload4.C b/gcc/testsuite/g++.old-deja/g++.ns/overload4.C
new file mode 100644
index 000000000..260817530
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/overload4.C
@@ -0,0 +1,8 @@
+// { dg-do assemble }
+namespace A{
+ void f();
+}
+
+using A::f;
+void f(); // { dg-error "" } duplicate declaration
+
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/overload5.C b/gcc/testsuite/g++.old-deja/g++.ns/overload5.C
new file mode 100644
index 000000000..ee86c8b9a
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/overload5.C
@@ -0,0 +1,14 @@
+// { dg-do assemble }
+namespace A{
+ void f(){}
+}
+
+using A::f;
+
+void f(int);
+void f(){} // { dg-error "" } conflict
+
+void g()
+{
+ f(4);
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/scoped1.C b/gcc/testsuite/g++.old-deja/g++.ns/scoped1.C
new file mode 100644
index 000000000..32c20903e
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/scoped1.C
@@ -0,0 +1,26 @@
+// { dg-do assemble }
+//
+// Copyright (C) 2000 Free Software Foundation, Inc.
+// Contributed by Nathan Sidwell 10 Aug 2000 <nathan@codesourcery.com>
+
+// Bug 354. We ICE'd before saying a namespace isn't an aggregate type.
+
+namespace mlp
+{
+ struct base
+ {
+ void reset ();
+ };
+}
+
+struct eo : mlp:: base
+{
+};
+
+void foo (eo &ref)
+{
+ ref.mlp::base::reset ();
+ ref.base::reset ();
+ ref.reset ();
+ ref.mlp::reset (); // { dg-error "" } not an aggregate type
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/template1.C b/gcc/testsuite/g++.old-deja/g++.ns/template1.C
new file mode 100644
index 000000000..61fd72f81
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/template1.C
@@ -0,0 +1,9 @@
+// { dg-do assemble }
+namespace foo {
+
+ template <class T>
+ class x {};
+
+}
+
+foo::x<int> y;
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/template10.C b/gcc/testsuite/g++.old-deja/g++.ns/template10.C
new file mode 100644
index 000000000..423822576
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/template10.C
@@ -0,0 +1,7 @@
+// { dg-do assemble }
+// Origin: Manuel Menezes de Sequeira <mms@torga.iscte.pt>
+
+namespace N {
+ template <class T> void g() {}
+}
+void (*pf)() = N::g<int>;
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/template11.C b/gcc/testsuite/g++.old-deja/g++.ns/template11.C
new file mode 100644
index 000000000..4363773cd
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/template11.C
@@ -0,0 +1,16 @@
+// { dg-do run }
+void foo(){}
+
+namespace Bar{
+ template<class X>
+ class Y{
+ friend void foo(Y<X>){}
+ };
+}
+
+int main()
+{
+ Bar::Y<int> y;
+ foo(y);
+ foo();
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/template12.C b/gcc/testsuite/g++.old-deja/g++.ns/template12.C
new file mode 100644
index 000000000..32dfe0f2c
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/template12.C
@@ -0,0 +1,19 @@
+// { dg-do assemble }
+// Templates can be defined outside of the namespace if the have been declared
+// inside
+namespace bar
+{
+ template <typename T>
+ T const foo(T const &);
+ template<> const int foo<int>(int const &);
+}
+
+template <typename T>
+T const
+bar::foo(T const &a)
+{
+ return a;
+}
+
+template<> const int bar::foo<int>(int const &){return 0;}
+
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/template13.C b/gcc/testsuite/g++.old-deja/g++.ns/template13.C
new file mode 100644
index 000000000..a9559c715
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/template13.C
@@ -0,0 +1,23 @@
+// { dg-do compile }
+// Templates defined outside must be declared inside
+namespace bar
+{
+ // trick it to provide some prior declaration
+ template<class T>
+ void foo(); // { dg-error "definition" }
+ template<class T>class X; // { dg-message "note: previous declaration" }
+}
+
+template <typename T>
+T const
+bar::foo(T const &a) // { dg-error "" "" { xfail *-*-* } } not declared in bar -
+{
+ return a;
+}
+
+template<> void bar::foo<int>() // { dg-error "different namespace" }
+{
+}
+
+template<class T,class U>
+class bar::X{}; // { dg-error "redeclared with 2 template parameter" }
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/template14.C b/gcc/testsuite/g++.old-deja/g++.ns/template14.C
new file mode 100644
index 000000000..437a8aff0
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/template14.C
@@ -0,0 +1,14 @@
+// { dg-do assemble }
+// Origin: Alex Samuel <samuel@codesourcery.com>
+
+namespace Outer
+{
+template <class T> class Inner;
+}
+
+template <class T>
+class Outer::Inner
+{
+public:
+ Inner ();
+};
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/template15.C b/gcc/testsuite/g++.old-deja/g++.ns/template15.C
new file mode 100644
index 000000000..ea0a677b3
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/template15.C
@@ -0,0 +1,5 @@
+// { dg-do assemble }
+// Origin: Mark Mitchell <mark@codesourcery.com>
+
+namespace X { template <class T> void f () {} }
+template void X::f<int> ();
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/template16.C b/gcc/testsuite/g++.old-deja/g++.ns/template16.C
new file mode 100644
index 000000000..c07cb4486
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/template16.C
@@ -0,0 +1,15 @@
+// { dg-do assemble }
+// Test that pushing into a namespace for a definition doesn't affect
+// template instantiations.
+
+
+namespace N {
+ template <class T> void f () { }
+ template <class T> struct A { friend void f<T>(); };
+}
+
+namespace M {
+ struct B;
+}
+
+struct M::B: public N::A<int> { };
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/template17.C b/gcc/testsuite/g++.old-deja/g++.ns/template17.C
new file mode 100644
index 000000000..010a1b030
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/template17.C
@@ -0,0 +1,37 @@
+// { dg-do assemble }
+//
+// Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+// Contributed by Nathan Sidwell 29 Apr 2001 <nathan@codesourcery.com>
+
+// Bug 2258. We failed to implement using directives inside template
+// functions. This makes us regress now that ::std is real.
+
+namespace thing
+{
+ template <typename T> T end2 (T);
+}
+namespace whatever
+{
+}
+
+template <typename T> void fn (T, T (*)(T));
+
+namespace whatever
+{
+ template <typename T> T end3 (T);
+}
+
+template <class T> void mycout(const T& data)
+{
+ using namespace thing;
+ using namespace whatever;
+
+ fn (data, end2);
+ fn (data, end3);
+}
+
+int main()
+{
+ double data = 5.0;
+ mycout(data);
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/template18.C b/gcc/testsuite/g++.old-deja/g++.ns/template18.C
new file mode 100644
index 000000000..f5a4755e8
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/template18.C
@@ -0,0 +1,24 @@
+// { dg-do link }
+// Origin: Andrey Slepuhin <pooh@msu.ru>
+
+namespace A
+{
+ int j;
+
+ template <typename val_t>
+ struct X
+ {
+ inline X ()
+ {
+ extern int j;
+ i = j;
+ }
+
+ int i;
+ };
+}
+
+int main ()
+{
+ A::X<int> x;
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/template2.C b/gcc/testsuite/g++.old-deja/g++.ns/template2.C
new file mode 100644
index 000000000..c88293e43
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/template2.C
@@ -0,0 +1,14 @@
+// { dg-do assemble }
+//Inheritance from templates which are namespace members
+namespace foo {
+
+ template <class T>
+ struct x {
+ x(){}
+ };
+
+}
+
+class y : public foo::x<int> {};
+
+y r;
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/template3.C b/gcc/testsuite/g++.old-deja/g++.ns/template3.C
new file mode 100644
index 000000000..d6b51a91d
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/template3.C
@@ -0,0 +1,22 @@
+// { dg-do run }
+//Check instantiation of templates outside their namespace
+namespace A{
+template <class T>void g(){}
+template <class T> struct B {
+ B(){
+ f();
+ }
+ void f()
+ {
+ g<T>();
+ }
+};
+}
+
+template class A::B<int>;
+A::B<int> s;
+
+int main()
+{
+ return 0;
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/template4.C b/gcc/testsuite/g++.old-deja/g++.ns/template4.C
new file mode 100644
index 000000000..0291417ba
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/template4.C
@@ -0,0 +1,18 @@
+// { dg-do run }
+namespace NS
+{
+template <typename T>
+void solver (){}
+
+}
+
+template<typename T>
+void solver(){}
+
+int main()
+{
+ solver<double>();
+ NS::solver<double>();
+}
+
+
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/template5.C b/gcc/testsuite/g++.old-deja/g++.ns/template5.C
new file mode 100644
index 000000000..8338fef10
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/template5.C
@@ -0,0 +1,34 @@
+// { dg-do run }
+//Check whether namespace-scoped template instantiations
+//are mangled differently.
+
+namespace X{
+ template<class T>
+ struct Y{
+ int f(T){
+ return 1;
+ }
+ template<class X>void g(){}
+ };
+}
+
+template<class T>
+struct Y{
+ int f(T){
+ return 2;
+ }
+};
+
+int main()
+{
+ X::Y<int> z;
+ if (z.f(4) != 1)
+ return 1;
+ z.g<long>();
+
+ Y<int> z1;
+ if (z1.f(5) != 2)
+ return 1;
+ return 0;
+}
+
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/template6.C b/gcc/testsuite/g++.old-deja/g++.ns/template6.C
new file mode 100644
index 000000000..7d85403c7
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/template6.C
@@ -0,0 +1,24 @@
+// { dg-do assemble }
+//reported by Theodore Papadopoulo (Theodore.Papadopoulo@sophia.inria.fr)
+
+namespace A {
+
+ namespace B {
+
+ template <class T1,class T2>
+ struct B {
+ static const unsigned count = 0;
+ template <class ForwardIter>
+ void SetError(ForwardIter it,const T1& p1,const T2& p2) const { }
+ };
+
+ template <>
+ const unsigned B<int,int>::count = 2; // { dg-error "" } duplicate init
+ }
+}
+
+int
+main()
+{
+ unsigned kk = A::B<int,int>::count; // { dg-error "" } not a template: syntax error
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/template7.C b/gcc/testsuite/g++.old-deja/g++.ns/template7.C
new file mode 100644
index 000000000..876096b74
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/template7.C
@@ -0,0 +1,12 @@
+// { dg-do assemble }
+
+
+// Based on bug report by Eric NICOLAS <nicolas@bnp-eng.remcomp.com>
+
+namespace foo {
+ template<class F> struct bar {};
+}
+
+void baz() {
+ foo::bar(); // { dg-error "" } template used as expression
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/template8.C b/gcc/testsuite/g++.old-deja/g++.ns/template8.C
new file mode 100644
index 000000000..232bb9e50
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/template8.C
@@ -0,0 +1,9 @@
+// { dg-do assemble }
+namespace X {
+ template <class T> class foo;
+}
+
+template <class T>
+class X::foo {
+ T worthless;
+};
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/template9.C b/gcc/testsuite/g++.old-deja/g++.ns/template9.C
new file mode 100644
index 000000000..3914746d7
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/template9.C
@@ -0,0 +1,41 @@
+// { dg-do run }
+// Produces ICE 980519.
+// Test case from Dirk Engelmann <Dirk.Engelmann@IWR.Uni-Heidelberg.De>
+
+namespace vector {
+
+ // allocate memory for vector
+
+ template <class T>
+ inline T* alloc(const int aWidth)
+ {
+ // allocate memory
+ return new T[aWidth];
+ }
+
+}
+
+namespace matrix {
+
+ // allocate memory for matrix
+ template <class T>
+ T** alloc(const int aWidth,const int aHeight)
+ {
+ // allocate memory
+ T **mat = vector::alloc<T*>(aHeight);
+ T *data = vector::alloc<T> (aWidth*aHeight);
+ // set pointer
+ for (int i=0; i<aHeight; i++)
+ mat[i] = &data[aWidth*i];
+ // ok
+ return mat;
+ }
+
+}
+
+int main(void)
+{
+ // sample
+ double **m=matrix::alloc<double>(10,20);
+
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/type1.C b/gcc/testsuite/g++.old-deja/g++.ns/type1.C
new file mode 100644
index 000000000..a7d4c8152
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/type1.C
@@ -0,0 +1,18 @@
+// { dg-do assemble }
+// Test that using an elaborated-type-specifier in a namespace to refer
+// to a class outside the namespace does not cause its name to be considered
+// declared in the namespace.
+
+// Contributed by Jason Merrill <jason@cygnus.com>
+
+struct A { };
+
+int A;
+
+namespace N {
+ struct A *f ();
+}
+
+using namespace N;
+
+struct A *a;
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/type2.C b/gcc/testsuite/g++.old-deja/g++.ns/type2.C
new file mode 100644
index 000000000..49bb8b2d6
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/type2.C
@@ -0,0 +1,19 @@
+// { dg-do assemble }
+//
+// Copyright (C) 2001 Free Software Foundation, Inc.
+// Contributed by Nathan Sidwell 11 April 2001 <nathan@codesourcery.com>
+// Origin:stephen.webb@cybersafe.com
+
+// Bug 2125. TYPE_DECLS never had their DECL_CONTEXT set, which
+// confused forward references to classes.
+
+typedef void T;
+namespace A {
+ class C;
+ typedef class C C;
+ typedef int T;
+ class C
+ {
+ T i; // got bogus error, found wrong T
+ };
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/undef1.C b/gcc/testsuite/g++.old-deja/g++.ns/undef1.C
new file mode 100644
index 000000000..f88c07632
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/undef1.C
@@ -0,0 +1,5 @@
+// { dg-do assemble }
+namespace A{
+}
+
+struct Y: A::S<int>{}; //{ dg-error "" } no such type
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/using1.C b/gcc/testsuite/g++.old-deja/g++.ns/using1.C
new file mode 100644
index 000000000..71c4b01d6
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/using1.C
@@ -0,0 +1,3 @@
+// { dg-do assemble }
+using namespace bb; // { dg-error "" } .*
+
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/using10.C b/gcc/testsuite/g++.old-deja/g++.ns/using10.C
new file mode 100644
index 000000000..64c353f28
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/using10.C
@@ -0,0 +1,9 @@
+// { dg-do assemble }
+//Based on a report by Helmut Jarausch <jarausch@IGPM.Rwth-Aachen.DE>
+template<class>
+class foo{};
+
+namespace ABC
+{
+ using ::foo;
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/using11.C b/gcc/testsuite/g++.old-deja/g++.ns/using11.C
new file mode 100644
index 000000000..e00d3b1d1
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/using11.C
@@ -0,0 +1,9 @@
+// { dg-do assemble }
+
+class joey {
+public:
+ typedef int SVec;
+};
+
+using joey::SVec; // { dg-error "" } joey is not a namespace
+
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/using12.C b/gcc/testsuite/g++.old-deja/g++.ns/using12.C
new file mode 100644
index 000000000..343cfefc4
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/using12.C
@@ -0,0 +1,20 @@
+// { dg-do assemble }
+// Origin: Brendan Kehoe <brendan@cygnus.com>
+
+namespace foo
+{
+ void x (bool); // { dg-message "note" }
+ void x (char); // { dg-message "note" } candidates
+ void x (int); // { dg-message "note" } candidates
+ void x (double); // { dg-message "note" } candidates
+}
+
+namespace baz { void x (int); } // { dg-message "note" } candidates
+
+void fn (int i)
+{
+ using foo::x;
+ using baz::x;
+ x(i); // { dg-error "ambiguous" }
+ // { dg-message "candidate" "candidate note" { target *-*-* } 18 }
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/using13.C b/gcc/testsuite/g++.old-deja/g++.ns/using13.C
new file mode 100644
index 000000000..29867deaa
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/using13.C
@@ -0,0 +1,24 @@
+// { dg-do run }
+namespace A{
+ void foo(int){}
+}
+namespace B{
+ void foo(bool){}
+}
+
+void bar()
+{
+ using B::foo;
+ using A::foo;
+ foo(true);
+}
+
+namespace Foo {
+ template<class N> void Hello(N) {}
+}
+
+int main() {
+ using Foo::Hello;
+ Hello(4);
+ bar();
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/using14.C b/gcc/testsuite/g++.old-deja/g++.ns/using14.C
new file mode 100644
index 000000000..a5f984768
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/using14.C
@@ -0,0 +1,15 @@
+// { dg-do assemble }
+// Origin: Mark Mitchell <mark@codesourcery.com>
+
+extern "C" void f ();
+
+namespace N {
+extern "C" void f ();
+}
+
+using N::f;
+
+void g ()
+{
+ f ();
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/using2.C b/gcc/testsuite/g++.old-deja/g++.ns/using2.C
new file mode 100644
index 000000000..f65f230d5
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/using2.C
@@ -0,0 +1,5 @@
+// { dg-do assemble }
+void f();
+namespace A{
+ using ::f;
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/using3.C b/gcc/testsuite/g++.old-deja/g++.ns/using3.C
new file mode 100644
index 000000000..93549a296
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/using3.C
@@ -0,0 +1,16 @@
+// { dg-do assemble }
+
+typedef unsigned int atypedef;
+struct astruct{};
+void afunction();
+void aovlfunction();
+void aovlfunction(int);
+int avariable;
+
+namespace foo {
+ using ::atypedef;
+ using ::astruct;
+ using ::afunction;
+ using ::aovlfunction;
+ using ::avariable;
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/using4.C b/gcc/testsuite/g++.old-deja/g++.ns/using4.C
new file mode 100644
index 000000000..72332f13e
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/using4.C
@@ -0,0 +1,6 @@
+// { dg-do assemble }
+//Build don't link
+#include <vector>
+namespace csp {
+using namespace std::vector; // { dg-error "" } vector is not a namespace
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/using5.C b/gcc/testsuite/g++.old-deja/g++.ns/using5.C
new file mode 100644
index 000000000..ea7d84cc3
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/using5.C
@@ -0,0 +1,6 @@
+// { dg-do assemble }
+namespace a {
+ class b {
+ using std::c; //{ dg-error "" } namespace using on class level
+ };
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/using6.C b/gcc/testsuite/g++.old-deja/g++.ns/using6.C
new file mode 100644
index 000000000..68cf2da11
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/using6.C
@@ -0,0 +1,9 @@
+// { dg-do assemble }
+#include <vector>
+
+namespace csp {
+ using namespace std;
+ struct X {
+ vector<int> v;
+ };
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/using7.C b/gcc/testsuite/g++.old-deja/g++.ns/using7.C
new file mode 100644
index 000000000..6617bc606
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/using7.C
@@ -0,0 +1,12 @@
+// { dg-do run }
+namespace X{
+ void f(int){}
+}
+
+void f();
+
+int main()
+{
+ using X::f;
+ f(3);
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/using8.C b/gcc/testsuite/g++.old-deja/g++.ns/using8.C
new file mode 100644
index 000000000..1d5e58bc9
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/using8.C
@@ -0,0 +1,20 @@
+// { dg-do assemble }
+namespace M {
+ int i;
+}
+namespace N {
+ using namespace M;
+}
+
+using namespace N;
+int j = i;
+
+namespace O{
+ int k;
+}
+
+namespace N {
+ using namespace O;
+}
+
+int l = k;
diff --git a/gcc/testsuite/g++.old-deja/g++.ns/using9.C b/gcc/testsuite/g++.old-deja/g++.ns/using9.C
new file mode 100644
index 000000000..9de6b3199
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.ns/using9.C
@@ -0,0 +1,24 @@
+// { dg-do assemble }
+// Test for proper merging of functions from multiple using directives.
+
+
+namespace standard
+{ void print(int) {}
+ void dump(int) {}
+}
+namespace A { using standard::print; }
+namespace B { using namespace standard; }
+namespace User
+{ using namespace standard;
+ using namespace A;
+ void test()
+ { print(1); }
+ // egcs-1.1: call of overloaded `print (int)' is ambiguous
+}
+namespace User2
+{ using namespace standard;
+ using namespace B;
+ void test()
+ { print(1); } // egcs has no problems here
+}
+