diff options
author | Volker Reichelt <reichelt@igpm.rwth-aachen.de> | 2003-01-22 23:21:51 +0000 |
---|---|---|
committer | Volker Reichelt <reichelt@gcc.gnu.org> | 2003-01-22 23:21:51 +0000 |
commit | 68aab9ee3e6ba21b48b5f2e24e61705472b7f7ed (patch) | |
tree | 5fed5f72c047ff44d182e3a1ded59b755c447ee4 | |
parent | 02ba6302897de5e08844780710f6dea54dae39d5 (diff) | |
download | gcc-68aab9ee3e6ba21b48b5f2e24e61705472b7f7ed.zip gcc-68aab9ee3e6ba21b48b5f2e24e61705472b7f7ed.tar.gz gcc-68aab9ee3e6ba21b48b5f2e24e61705472b7f7ed.tar.bz2 |
re PR c++/2738 (ICE on return type specification of a destructor)
PR c++/2738
* g++.dg/parse/ret-type1.C: New test.
PR c++/3792
* g++.dg/parse/tmpl-outside1.C: New test.
PR c++/4207
* g++.dg/parse/int-as-enum1.C: New test.
PR c++/4903
* g++.dg/parse/no-typename1.C: New test.
PR c++/5533
* g++.dg/parse/no-value1.C: New test.
PR c++/5921
* g++.dg/parse/wrong-inline1.C: New test.
PR c++/6402
* g++.dg/parse/ref1.C: New test.
PR c++/6992
* g++.dg/parse/attr-ctor1.C: New test.
PR c++/7229
* g++.dg/parse/namespace5.C: New test.
PR c++/7917
* g++.dg/parse/func-def1.C: New test.
PR c++/8143
* g++.dg/parse/undefined1.C: New test.
PR c++/5723, PR c++/8522
* g++.dg/parse/specialization1.C: New test.
PR c++/163, PR c++/8595
* g++.dg/parse/struct-as-enum1.C: New test.
PR c++/9173
* g++.dg/parse/undefined2.C: New test.
From-SVN: r61624
-rw-r--r-- | gcc/testsuite/ChangeLog | 44 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/parse/attr-ctor1.C | 8 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/parse/func-def1.C | 11 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/parse/int-as-enum1.C | 6 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/parse/namespace5.C | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/parse/no-typename1.C | 11 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/parse/no-value1.C | 14 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/parse/ref1.C | 17 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/parse/ret-type1.C | 10 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/parse/specialization1.C | 6 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/parse/struct-as-enum1.C | 10 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/parse/tmpl-outside1.C | 10 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/parse/undefined1.C | 10 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/parse/undefined2.C | 12 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/parse/wrong-inline1.C | 12 |
15 files changed, 186 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index fed915c..80d67ee 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,47 @@ +2003-01-22 Volker Reichelt <reichelt@igpm.rwth-aachen.de> + + PR c++/2738 + * g++.dg/parse/ret-type1.C: New test. + + PR c++/3792 + * g++.dg/parse/tmpl-outside1.C: New test. + + PR c++/4207 + * g++.dg/parse/int-as-enum1.C: New test. + + PR c++/4903 + * g++.dg/parse/no-typename1.C: New test. + + PR c++/5533 + * g++.dg/parse/no-value1.C: New test. + + PR c++/5921 + * g++.dg/parse/wrong-inline1.C: New test. + + PR c++/6402 + * g++.dg/parse/ref1.C: New test. + + PR c++/6992 + * g++.dg/parse/attr-ctor1.C: New test. + + PR c++/7229 + * g++.dg/parse/namespace5.C: New test. + + PR c++/7917 + * g++.dg/parse/func-def1.C: New test. + + PR c++/8143 + * g++.dg/parse/undefined1.C: New test. + + PR c++/5723, PR c++/8522 + * g++.dg/parse/specialization1.C: New test. + + PR c++/163, PR c++/8595 + * g++.dg/parse/struct-as-enum1.C: New test. + + PR c++/9173 + * g++.dg/parse/undefined2.C: New test. + 2003-01-22 Mark Mitchell <mark@codesourcery.com> PR c++/9298 diff --git a/gcc/testsuite/g++.dg/parse/attr-ctor1.C b/gcc/testsuite/g++.dg/parse/attr-ctor1.C new file mode 100644 index 0000000..4f8cd1d --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/attr-ctor1.C @@ -0,0 +1,8 @@ +// PR c++/6992 +// Origin: <petr@scssoft.com> +// { dg-do compile } + +class A +{ + __attribute__((section("whatever"))) A(); +}; diff --git a/gcc/testsuite/g++.dg/parse/func-def1.C b/gcc/testsuite/g++.dg/parse/func-def1.C new file mode 100644 index 0000000..00c973d --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/func-def1.C @@ -0,0 +1,11 @@ +// PR c++/7917 +// Origin: VACLAV HAISMAN <V.Haisman@sh.cvut.cz> +// { dg-do compile } + +struct A +{ + int i; + void foo() = 0 {} // { dg-error "" } + + A() : i(0) {} +}; diff --git a/gcc/testsuite/g++.dg/parse/int-as-enum1.C b/gcc/testsuite/g++.dg/parse/int-as-enum1.C new file mode 100644 index 0000000..2bf9cc0 --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/int-as-enum1.C @@ -0,0 +1,6 @@ +// PR c++/4207 +// Origin: <wanderer@rsu.ru> +// { dg-do compile } + +typedef int A; +enum ::A {}; // { dg-error "" } diff --git a/gcc/testsuite/g++.dg/parse/namespace5.C b/gcc/testsuite/g++.dg/parse/namespace5.C new file mode 100644 index 0000000..277c0c8 --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/namespace5.C @@ -0,0 +1,5 @@ +// PR c++/7229 +// { dg-do compile } + +namespace A { namespace B { typedef int type; } } +typename A::B<0>::type x; // { dg-error "" } diff --git a/gcc/testsuite/g++.dg/parse/no-typename1.C b/gcc/testsuite/g++.dg/parse/no-typename1.C new file mode 100644 index 0000000..42059ce --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/no-typename1.C @@ -0,0 +1,11 @@ +// PR c++/4903 +// Origin: Dan Marinescu <theverylittleone@hotmail.com> +// { dg-do compile } + +template <typename T> struct A +{ + template <typename U> struct B + { + A<T>::template B<U> foo(); // { dg-error "" } + }; +}; diff --git a/gcc/testsuite/g++.dg/parse/no-value1.C b/gcc/testsuite/g++.dg/parse/no-value1.C new file mode 100644 index 0000000..443a389 --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/no-value1.C @@ -0,0 +1,14 @@ +// PR c++/5533 +// { dg-do compile } + +namespace N +{ + template <class T> struct A{}; +} + +template <class T> void foo(T) {} + +void bar() +{ + foo(N::A); // { dg-error "" } +} diff --git a/gcc/testsuite/g++.dg/parse/ref1.C b/gcc/testsuite/g++.dg/parse/ref1.C new file mode 100644 index 0000000..d1dffb0 --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/ref1.C @@ -0,0 +1,17 @@ +// PR c++/6402 +// Origin: Wolfgang Bangerth <wolfgang@dealii.org> +// { dg-do compile } + +class A +{ + A (const A&); + public: + A(); +}; + +struct B { A a; }; + +struct C : public B +{ + void foo() { const A &ref = B::a; } // taking reference, not a copy! +}; diff --git a/gcc/testsuite/g++.dg/parse/ret-type1.C b/gcc/testsuite/g++.dg/parse/ret-type1.C new file mode 100644 index 0000000..a5dc93a --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/ret-type1.C @@ -0,0 +1,10 @@ +// PR c++/2738 +// Origin: Wolfgang Bangerth <wolfgang.bangerth@iwr.uni-heidelberg.de> +// { dg-do compile } + +template <int i> class A +{ + class C { C(); }; +}; + +template <int i> void A<i>::C::C () {} // { dg-error "return type" } diff --git a/gcc/testsuite/g++.dg/parse/specialization1.C b/gcc/testsuite/g++.dg/parse/specialization1.C new file mode 100644 index 0000000..7378570 --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/specialization1.C @@ -0,0 +1,6 @@ +// PR c++/5723, PR c++/8522 +// Origin: Matthias Kleinmann, Peter Karl Mueller <peter.karl.mueller@gmx.de> +// { dg-do compile } + +template <typename T> class A; +template <typename T> class A<T>::B; // { dg-error "declaration" } diff --git a/gcc/testsuite/g++.dg/parse/struct-as-enum1.C b/gcc/testsuite/g++.dg/parse/struct-as-enum1.C new file mode 100644 index 0000000..016c603 --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/struct-as-enum1.C @@ -0,0 +1,10 @@ +// PR c++/163, PR c++/8595 +// Origin: <martin@loewis.home.cs.tu-berlin.de>, Mark Leone <mleone@pixar.com> +// { dg-do compile } + +namespace N +{ + struct A {}; +} + +typedef enum N::A B; // { dg-error "enum" } diff --git a/gcc/testsuite/g++.dg/parse/tmpl-outside1.C b/gcc/testsuite/g++.dg/parse/tmpl-outside1.C new file mode 100644 index 0000000..07c89e2 --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/tmpl-outside1.C @@ -0,0 +1,10 @@ +// PR c++/3792 +// Origin: <david.abrahams@rcn.com> +// { dg-do compile } + +struct X +{ + template <int i> struct Y {}; +}; + +typedef X::template Y<0> y; // { dg-error "template" } diff --git a/gcc/testsuite/g++.dg/parse/undefined1.C b/gcc/testsuite/g++.dg/parse/undefined1.C new file mode 100644 index 0000000..0ae4e88 --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/undefined1.C @@ -0,0 +1,10 @@ +// PR c++/8143 +// { dg-do compile } + +struct foo +{ + X x; // { dg-error "" } + + foo(X) {} // { dg-error "" } + foo(X y, int) : x() {} // { dg-error "" } +}; diff --git a/gcc/testsuite/g++.dg/parse/undefined2.C b/gcc/testsuite/g++.dg/parse/undefined2.C new file mode 100644 index 0000000..a7e76f1 --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/undefined2.C @@ -0,0 +1,12 @@ +// PR c++/9173 +// Origin: <wwieser@gmx.de> +// { dg-do compile } + +class A {}; + +class B +{ + void foo(int,A::X); // { dg-error "" } +}; + +void B::foo(int,A::X) {} // { dg-error "" } diff --git a/gcc/testsuite/g++.dg/parse/wrong-inline1.C b/gcc/testsuite/g++.dg/parse/wrong-inline1.C new file mode 100644 index 0000000..22b9a97 --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/wrong-inline1.C @@ -0,0 +1,12 @@ +// PR c++/5921 +// Origin: Volker Reichelt <reichelt@igpm.rwth-aachen.de> +// { dg-do compile } + +struct A +{ + struct B { B(); }; +}; + +static A::B b; + +inline template <int i> void f (); // { dg-error "" } |