From: Giovanni Bajo Date: Thu, 5 Feb 2004 16:50:57 +0000 (+0000) Subject: re PR c++/14008 (Confusing diagnostic when omitting a template parameter) X-Git-Tag: releases/gcc-4.0.0~10353 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=2f69c594130c1b4f086e399d5148b9b3f802c5a0;p=thirdparty%2Fgcc.git re PR c++/14008 (Confusing diagnostic when omitting a template parameter) PR c++/14008 * g++.dg/parse/error15.C: New test. * g++.dg/parse/crash11.C: Update dg-error mark. From-SVN: r77324 --- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index df3236f6f4c7..50de43ff3f2f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2003-02-05 Giovanni Bajo + + PR c++/14008 + * g++.dg/parse/error15.C: New test. + * g++.dg/parse/crash11.C: Update dg-error mark. + 2004-02-04 Mark Mitchell PR c++/13932 diff --git a/gcc/testsuite/g++.dg/parse/crash11.C b/gcc/testsuite/g++.dg/parse/crash11.C index 4893678d46f2..e6db364a2478 100644 --- a/gcc/testsuite/g++.dg/parse/crash11.C +++ b/gcc/testsuite/g++.dg/parse/crash11.C @@ -30,5 +30,5 @@ struct C }; int main() { - typedef B::Template::Type Type; // { dg-error "init-declarator|;" } + typedef B::Template::Type Type; // { dg-error "does not name a type" } } diff --git a/gcc/testsuite/g++.dg/parse/error15.C b/gcc/testsuite/g++.dg/parse/error15.C new file mode 100644 index 000000000000..fd7038247188 --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/error15.C @@ -0,0 +1,39 @@ +// { dg-do compile } +// Contributed by Volker Reichelt +// PR c++/14008: Improve diagnostic on invalid types in declarators. + +namespace N +{ + template struct A {}; + struct C {}; + int K; +} + +N::A f2; // { dg-error "without an argument list" } +N::INVALID f3; // { dg-error "in namespace `N' does not name a type" } +N::C::INVALID f4; // { dg-error "in class `N::C' does not name a type" } +N::K f6; // { dg-error "in namespace `N' does not name a type" } +typename N::A f7; // { dg-error "without an argument list|outside of template" } + +struct B +{ + N::A f2; // { dg-error "without an argument list" } + N::INVALID f3; // { dg-error "in namespace `N' does not name a type" } + N::C::INVALID f4; // { dg-error "in class `N::C' does not name a type" } + N::K f6; // { dg-error "in namespace `N' does not name a type" } + typename N::A f7; // { dg-error "without an argument list|outside of template" } +}; + +template +struct C +{ + N::A f2; // { dg-error "without an argument list" } + N::INVALID f3; // { dg-error "in namespace `N' does not name a type" } + N::C::INVALID f4; // { dg-error "in class `N::C' does not name a type" } + N::K f6; // { dg-error "in namespace `N' does not name a type" } + typename N::A f7; // { dg-error "without an argument list" } +}; + +// { dg-bogus "" "bogus excess errors in declaration" { xfail *-*-* } 16 } +// { dg-bogus "" "bogus excess errors in declaration" { xfail *-*-* } 24 } +// { dg-bogus "" "bogus excess errors in declaration" { xfail *-*-* } 34 }