diff options
-rw-r--r-- | gcc/cp/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/cp/decl.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/diagnostic/out-of-class-redeclaration.C | 13 |
4 files changed, 23 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 32c7f40..f8d3d93 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,7 @@ +2019-01-08 Paolo Carlini <paolo.carlini@oracle.com> + + * decl.c (start_decl): Improve permerror location. + 2019-01-08 Jonathan Wakely <jwakely@redhat.com> Jakub Jelinek <jakub@redhat.com> diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index f456c07..7e4e93c 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -5202,7 +5202,8 @@ start_decl (const cp_declarator *declarator, if (DECL_EXTERNAL (decl) && ! DECL_TEMPLATE_SPECIALIZATION (decl) /* Aliases are definitions. */ && !alias) - permerror (input_location, "declaration of %q#D outside of class is not definition", + permerror (declarator->id_loc, + "declaration of %q#D outside of class is not definition", decl); } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 48a6a53..bc94087 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2019-01-08 Paolo Carlini <paolo.carlini@oracle.com> + + * g++.dg/diagnostic/out-of-class-redeclaration.C: New. + 2019-01-08 Iain Sandoe <iain@sandoe.co.uk> * c-c++-common/builtin-has-attribute-3.c: Skip tests requiring symbol diff --git a/gcc/testsuite/g++.dg/diagnostic/out-of-class-redeclaration.C b/gcc/testsuite/g++.dg/diagnostic/out-of-class-redeclaration.C new file mode 100644 index 0000000..9dba8eb --- /dev/null +++ b/gcc/testsuite/g++.dg/diagnostic/out-of-class-redeclaration.C @@ -0,0 +1,13 @@ +// Adapted from g++.old-deja/g++.law/arm8.C + +struct K { + void f(int); +}; + +void K::f(int); // { dg-error "6:declaration of .void K::f\\(int\\). outside of class" } + +struct L { + void g(int) {} +}; + +void L::g(int); // { dg-error "6:declaration of .void L::g\\(int\\). outside of class" } |