From 554fd8c5195424bdbcabf5de30fdc183aba391bd Mon Sep 17 00:00:00 2001 From: upstream source tree Date: Sun, 15 Mar 2015 20:14:05 -0400 Subject: obtained gcc-4.6.4.tar.bz2 from upstream website; 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. --- gcc/testsuite/g++.old-deja/g++.ns/alias1.C | 19 ++++++++++++ gcc/testsuite/g++.old-deja/g++.ns/alias2.C | 8 +++++ gcc/testsuite/g++.old-deja/g++.ns/alias3.C | 31 +++++++++++++++++++ gcc/testsuite/g++.old-deja/g++.ns/alias4.C | 14 +++++++++ gcc/testsuite/g++.old-deja/g++.ns/alias6.C | 36 ++++++++++++++++++++++ gcc/testsuite/g++.old-deja/g++.ns/alias7.C | 11 +++++++ gcc/testsuite/g++.old-deja/g++.ns/anon1.C | 13 ++++++++ gcc/testsuite/g++.old-deja/g++.ns/bogus1.C | 10 +++++++ gcc/testsuite/g++.old-deja/g++.ns/crash1.C | 12 ++++++++ gcc/testsuite/g++.old-deja/g++.ns/crash2.C | 11 +++++++ gcc/testsuite/g++.old-deja/g++.ns/crash3.C | 10 +++++++ gcc/testsuite/g++.old-deja/g++.ns/crash4.C | 11 +++++++ gcc/testsuite/g++.old-deja/g++.ns/extern1.C | 18 +++++++++++ gcc/testsuite/g++.old-deja/g++.ns/friend1.C | 8 +++++ gcc/testsuite/g++.old-deja/g++.ns/friend2.C | 11 +++++++ gcc/testsuite/g++.old-deja/g++.ns/invalid1.C | 12 ++++++++ gcc/testsuite/g++.old-deja/g++.ns/koenig1.C | 18 +++++++++++ gcc/testsuite/g++.old-deja/g++.ns/koenig2.C | 10 +++++++ gcc/testsuite/g++.old-deja/g++.ns/koenig3.C | 22 ++++++++++++++ gcc/testsuite/g++.old-deja/g++.ns/koenig4.C | 25 ++++++++++++++++ gcc/testsuite/g++.old-deja/g++.ns/koenig5.C | 19 ++++++++++++ gcc/testsuite/g++.old-deja/g++.ns/koenig6.C | 13 ++++++++ gcc/testsuite/g++.old-deja/g++.ns/koenig7.C | 23 +++++++++++++++ gcc/testsuite/g++.old-deja/g++.ns/koenig8.C | 14 +++++++++ gcc/testsuite/g++.old-deja/g++.ns/koenig9.C | 14 +++++++++ gcc/testsuite/g++.old-deja/g++.ns/lookup1.C | 3 ++ gcc/testsuite/g++.old-deja/g++.ns/lookup2.C | 9 ++++++ gcc/testsuite/g++.old-deja/g++.ns/lookup3.C | 15 ++++++++++ gcc/testsuite/g++.old-deja/g++.ns/lookup4.C | 23 +++++++++++++++ gcc/testsuite/g++.old-deja/g++.ns/lookup5.C | 23 +++++++++++++++ gcc/testsuite/g++.old-deja/g++.ns/main1.C | 15 ++++++++++ gcc/testsuite/g++.old-deja/g++.ns/ns1.C | 17 +++++++++++ gcc/testsuite/g++.old-deja/g++.ns/ns10.C | 13 ++++++++ gcc/testsuite/g++.old-deja/g++.ns/ns11.C | 20 +++++++++++++ gcc/testsuite/g++.old-deja/g++.ns/ns12.C | 23 +++++++++++++++ gcc/testsuite/g++.old-deja/g++.ns/ns13.C | 14 +++++++++ gcc/testsuite/g++.old-deja/g++.ns/ns14.C | 17 +++++++++++ gcc/testsuite/g++.old-deja/g++.ns/ns15.C | 2 ++ gcc/testsuite/g++.old-deja/g++.ns/ns16.C | 14 +++++++++ gcc/testsuite/g++.old-deja/g++.ns/ns17.C | 13 ++++++++ gcc/testsuite/g++.old-deja/g++.ns/ns18.C | 30 +++++++++++++++++++ gcc/testsuite/g++.old-deja/g++.ns/ns19.C | 7 +++++ gcc/testsuite/g++.old-deja/g++.ns/ns2.C | 27 +++++++++++++++++ gcc/testsuite/g++.old-deja/g++.ns/ns3.C | 17 +++++++++++ gcc/testsuite/g++.old-deja/g++.ns/ns4.C | 11 +++++++ gcc/testsuite/g++.old-deja/g++.ns/ns5.C | 6 ++++ gcc/testsuite/g++.old-deja/g++.ns/ns6.C | 14 +++++++++ gcc/testsuite/g++.old-deja/g++.ns/ns7.C | 26 ++++++++++++++++ gcc/testsuite/g++.old-deja/g++.ns/ns8.C | 11 +++++++ gcc/testsuite/g++.old-deja/g++.ns/ns9.C | 13 ++++++++ gcc/testsuite/g++.old-deja/g++.ns/overload1.C | 34 +++++++++++++++++++++ gcc/testsuite/g++.old-deja/g++.ns/overload2.C | 14 +++++++++ gcc/testsuite/g++.old-deja/g++.ns/overload3.C | 18 +++++++++++ gcc/testsuite/g++.old-deja/g++.ns/overload4.C | 8 +++++ gcc/testsuite/g++.old-deja/g++.ns/overload5.C | 14 +++++++++ gcc/testsuite/g++.old-deja/g++.ns/scoped1.C | 26 ++++++++++++++++ gcc/testsuite/g++.old-deja/g++.ns/template1.C | 9 ++++++ gcc/testsuite/g++.old-deja/g++.ns/template10.C | 7 +++++ gcc/testsuite/g++.old-deja/g++.ns/template11.C | 16 ++++++++++ gcc/testsuite/g++.old-deja/g++.ns/template12.C | 19 ++++++++++++ gcc/testsuite/g++.old-deja/g++.ns/template13.C | 23 +++++++++++++++ gcc/testsuite/g++.old-deja/g++.ns/template14.C | 14 +++++++++ gcc/testsuite/g++.old-deja/g++.ns/template15.C | 5 ++++ gcc/testsuite/g++.old-deja/g++.ns/template16.C | 15 ++++++++++ gcc/testsuite/g++.old-deja/g++.ns/template17.C | 37 +++++++++++++++++++++++ gcc/testsuite/g++.old-deja/g++.ns/template18.C | 24 +++++++++++++++ gcc/testsuite/g++.old-deja/g++.ns/template2.C | 14 +++++++++ gcc/testsuite/g++.old-deja/g++.ns/template3.C | 22 ++++++++++++++ gcc/testsuite/g++.old-deja/g++.ns/template4.C | 18 +++++++++++ gcc/testsuite/g++.old-deja/g++.ns/template5.C | 34 +++++++++++++++++++++ gcc/testsuite/g++.old-deja/g++.ns/template6.C | 24 +++++++++++++++ gcc/testsuite/g++.old-deja/g++.ns/template7.C | 12 ++++++++ gcc/testsuite/g++.old-deja/g++.ns/template8.C | 9 ++++++ gcc/testsuite/g++.old-deja/g++.ns/template9.C | 41 ++++++++++++++++++++++++++ gcc/testsuite/g++.old-deja/g++.ns/type1.C | 18 +++++++++++ gcc/testsuite/g++.old-deja/g++.ns/type2.C | 19 ++++++++++++ gcc/testsuite/g++.old-deja/g++.ns/undef1.C | 5 ++++ gcc/testsuite/g++.old-deja/g++.ns/using1.C | 3 ++ gcc/testsuite/g++.old-deja/g++.ns/using10.C | 9 ++++++ gcc/testsuite/g++.old-deja/g++.ns/using11.C | 9 ++++++ gcc/testsuite/g++.old-deja/g++.ns/using12.C | 20 +++++++++++++ gcc/testsuite/g++.old-deja/g++.ns/using13.C | 24 +++++++++++++++ gcc/testsuite/g++.old-deja/g++.ns/using14.C | 15 ++++++++++ gcc/testsuite/g++.old-deja/g++.ns/using2.C | 5 ++++ gcc/testsuite/g++.old-deja/g++.ns/using3.C | 16 ++++++++++ gcc/testsuite/g++.old-deja/g++.ns/using4.C | 6 ++++ gcc/testsuite/g++.old-deja/g++.ns/using5.C | 6 ++++ gcc/testsuite/g++.old-deja/g++.ns/using6.C | 9 ++++++ gcc/testsuite/g++.old-deja/g++.ns/using7.C | 12 ++++++++ gcc/testsuite/g++.old-deja/g++.ns/using8.C | 20 +++++++++++++ gcc/testsuite/g++.old-deja/g++.ns/using9.C | 24 +++++++++++++++ 91 files changed, 1453 insertions(+) create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/alias1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/alias2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/alias3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/alias4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/alias6.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/alias7.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/anon1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/bogus1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/crash1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/crash2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/crash3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/crash4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/extern1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/friend1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/friend2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/invalid1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/koenig1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/koenig2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/koenig3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/koenig4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/koenig5.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/koenig6.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/koenig7.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/koenig8.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/koenig9.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/lookup1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/lookup2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/lookup3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/lookup4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/lookup5.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/main1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/ns1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/ns10.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/ns11.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/ns12.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/ns13.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/ns14.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/ns15.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/ns16.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/ns17.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/ns18.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/ns19.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/ns2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/ns3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/ns4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/ns5.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/ns6.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/ns7.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/ns8.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/ns9.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/overload1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/overload2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/overload3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/overload4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/overload5.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/scoped1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/template1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/template10.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/template11.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/template12.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/template13.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/template14.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/template15.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/template16.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/template17.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/template18.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/template2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/template3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/template4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/template5.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/template6.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/template7.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/template8.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/template9.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/type1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/type2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/undef1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/using1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/using10.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/using11.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/using12.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/using13.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/using14.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/using2.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/using3.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/using4.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/using5.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/using6.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/using7.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/using8.C create mode 100644 gcc/testsuite/g++.old-deja/g++.ns/using9.C (limited to 'gcc/testsuite/g++.old-deja/g++.ns') 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 +struct S1 {}; + +namespace N { +} + +struct S2 +{ + typedef N::S1 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 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 + +namespace N { + + template class C + { + template 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 +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 +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 + +// caused an ICE determining whether to perform Koenig lookup +// when checking is enabled + +template 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 + +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 +struct basic_string +{ + charT append (charT c) + { return c; } +}; +typedef char c; +template class basic_string ; 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 + +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 + +namespace Bname { + class B; +} + +template +class A { + friend class Bname::B; + static const int a = 1; +public: + A() { } +}; + +namespace Bname { + class B { + int a; + public: + template + B(const T&):a(T::a) { } + }; +} + +int +main() +{ + A 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 + +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 + +// 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 x {}; + +} + +foo::x 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 + +namespace N { + template void g() {} +} +void (*pf)() = N::g; 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 Y{ + friend void foo(Y){} + }; +} + +int main() +{ + Bar::Y 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 + T const foo(T const &); + template<> const int foo(int const &); +} + +template +T const +bar::foo(T const &a) +{ + return a; +} + +template<> const int bar::foo(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 + void foo(); // { dg-error "definition" } + templateclass X; // { dg-message "note: previous declaration" } +} + +template +T const +bar::foo(T const &a) // { dg-error "" "" { xfail *-*-* } } not declared in bar - +{ + return a; +} + +template<> void bar::foo() // { dg-error "different namespace" } +{ +} + +template +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 + +namespace Outer +{ +template class Inner; +} + +template +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 + +namespace X { template void f () {} } +template void X::f (); 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 void f () { } + template struct A { friend void f(); }; +} + +namespace M { + struct B; +} + +struct M::B: public N::A { }; 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 + +// Bug 2258. We failed to implement using directives inside template +// functions. This makes us regress now that ::std is real. + +namespace thing +{ + template T end2 (T); +} +namespace whatever +{ +} + +template void fn (T, T (*)(T)); + +namespace whatever +{ + template T end3 (T); +} + +template 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 + +namespace A +{ + int j; + + template + struct X + { + inline X () + { + extern int j; + i = j; + } + + int i; + }; +} + +int main () +{ + A::X 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 + struct x { + x(){} + }; + +} + +class y : public foo::x {}; + +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 void g(){} +template struct B { + B(){ + f(); + } + void f() + { + g(); + } +}; +} + +template class A::B; +A::B 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 +void solver (){} + +} + +template +void solver(){} + +int main() +{ + solver(); + NS::solver(); +} + + 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 + struct Y{ + int f(T){ + return 1; + } + templatevoid g(){} + }; +} + +template +struct Y{ + int f(T){ + return 2; + } +}; + +int main() +{ + X::Y z; + if (z.f(4) != 1) + return 1; + z.g(); + + Y 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 + struct B { + static const unsigned count = 0; + template + void SetError(ForwardIter it,const T1& p1,const T2& p2) const { } + }; + + template <> + const unsigned B::count = 2; // { dg-error "" } duplicate init + } +} + +int +main() +{ + unsigned kk = A::B::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 + +namespace foo { + template 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 foo; +} + +template +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 + +namespace vector { + + // allocate memory for vector + + template + inline T* alloc(const int aWidth) + { + // allocate memory + return new T[aWidth]; + } + +} + +namespace matrix { + + // allocate memory for matrix + template + T** alloc(const int aWidth,const int aHeight) + { + // allocate memory + T **mat = vector::alloc(aHeight); + T *data = vector::alloc (aWidth*aHeight); + // set pointer + for (int i=0; i(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 + +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 +// 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{}; //{ 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 +template +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 + +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 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 + +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 +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 + +namespace csp { + using namespace std; + struct X { + vector 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 +} + -- cgit v1.2.3