aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2013-05-03 09:02:15 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2013-05-03 09:02:15 +0000
commitc067d9fe141912636b9d757fbd83ce7d73300bfe (patch)
tree764662553646f9fc5bafdadec4e3dcda62ec1f92 /gcc/testsuite
parent79d944d29618c459e8470715ed0a38a0f2891c50 (diff)
downloadgcc-c067d9fe141912636b9d757fbd83ce7d73300bfe.zip
gcc-c067d9fe141912636b9d757fbd83ce7d73300bfe.tar.gz
gcc-c067d9fe141912636b9d757fbd83ce7d73300bfe.tar.bz2
re PR c++/14283 (Diagnostic for invalid template-id could be improved)
/cp 2013-05-03 Paolo Carlini <paolo.carlini@oracle.com> PR c++/14283 * parser.c (cp_parser_diagnose_invalid_type_name): Improve error messages for template types and fix column numbers. /testsuite 2013-05-03 Paolo Carlini <paolo.carlini@oracle.com> PR c++/14283 * g++.dg/parse/error51.C: New. * g++.dg/parse/error15.C: Adjust column numbers. From-SVN: r198572
Diffstat (limited to 'gcc/testsuite')
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/g++.dg/parse/error15.C18
-rw-r--r--gcc/testsuite/g++.dg/parse/error51.C13
3 files changed, 28 insertions, 9 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index c8dc189..88ac420 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2013-05-03 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/14283
+ * g++.dg/parse/error51.C: New.
+ * g++.dg/parse/error15.C: Adjust column numbers.
+
2013-05-02 Tobias Burnus <burnus@net-b.de>
PR fortran/57142
diff --git a/gcc/testsuite/g++.dg/parse/error15.C b/gcc/testsuite/g++.dg/parse/error15.C
index 607a1db..deba54a 100644
--- a/gcc/testsuite/g++.dg/parse/error15.C
+++ b/gcc/testsuite/g++.dg/parse/error15.C
@@ -11,9 +11,9 @@ namespace N
}
N::A f2; // { dg-error "1:invalid use of template-name 'N::A' without an argument list" }
-N::INVALID f3; // { dg-error "1:'INVALID' in namespace 'N' does not name a type" }
-N::C::INVALID f4; // { dg-error "1:'INVALID' in 'struct N::C' does not name a type" }
-N::K f6; // { dg-error "1:'K' in namespace 'N' does not name a type" }
+N::INVALID f3; // { dg-error "4:'INVALID' in namespace 'N' does not name a type" }
+N::C::INVALID f4; // { dg-error "7:'INVALID' in 'struct N::C' does not name a type" }
+N::K f6; // { dg-error "4:'K' in namespace 'N' does not name a type" }
typename N::A f7;
// { dg-error "13:invalid use of template-name 'N::A' without an argument list" "13" { target *-*-* } 17 }
// { dg-error "17:invalid type in declaration before ';' token" "17" { target *-*-* } 17 }
@@ -21,9 +21,9 @@ typename N::A f7;
struct B
{
N::A f2; // { dg-error "3:invalid use of template-name 'N::A' without an argument list" }
- N::INVALID f3; // { dg-error "3:'INVALID' in namespace 'N' does not name a type" }
- N::C::INVALID f4; // { dg-error "3:'INVALID' in 'struct N::C' does not name a type" }
- N::K f6; // { dg-error "3:'K' in namespace 'N' does not name a type" }
+ N::INVALID f3; // { dg-error "6:'INVALID' in namespace 'N' does not name a type" }
+ N::C::INVALID f4; // { dg-error "9:'INVALID' in 'struct N::C' does not name a type" }
+ N::K f6; // { dg-error "6:'K' in namespace 'N' does not name a type" }
typename N::A f7;
// { dg-error "15:invalid use of template-name 'N::A' without an argument list" "15" { target *-*-* } 27 }
};
@@ -32,9 +32,9 @@ template <int>
struct C
{
N::A f2; // { dg-error "3:invalid use of template-name 'N::A' without an argument list" }
- N::INVALID f3; // { dg-error "3:'INVALID' in namespace 'N' does not name a type" }
- N::C::INVALID f4; // { dg-error "3:'INVALID' in 'struct N::C' does not name a type" }
- N::K f6; // { dg-error "3:'K' in namespace 'N' does not name a type" }
+ N::INVALID f3; // { dg-error "6:'INVALID' in namespace 'N' does not name a type" }
+ N::C::INVALID f4; // { dg-error "9:'INVALID' in 'struct N::C' does not name a type" }
+ N::K f6; // { dg-error "6:'K' in namespace 'N' does not name a type" }
typename N::A f7; // { dg-error "15:invalid use of template-name 'N::A' without an argument list" }
};
diff --git a/gcc/testsuite/g++.dg/parse/error51.C b/gcc/testsuite/g++.dg/parse/error51.C
new file mode 100644
index 0000000..e599304
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/error51.C
@@ -0,0 +1,13 @@
+// PR c++/14283
+
+struct A
+{};
+
+namespace N
+{}
+
+template <typename> struct C
+{
+ typedef A::template INVALID<void> X0; // { dg-error "23:'INVALID' in 'struct A' does not name a template type" }
+ typedef N::template INVALID<void> X1; // { dg-error "23:'INVALID' in namespace 'N' does not name a template type" }
+};