aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2019-01-08 09:41:36 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2019-01-08 09:41:36 +0000
commit30fa2068a3d4317b5b2282eb2e37e98aedfcbf4e (patch)
tree58729404710a899345234b2f3e6adf5af24eef53
parente32ba3f7abf2f2be6cac6d9785a5e8cf9f2a47c5 (diff)
downloadgcc-30fa2068a3d4317b5b2282eb2e37e98aedfcbf4e.zip
gcc-30fa2068a3d4317b5b2282eb2e37e98aedfcbf4e.tar.gz
gcc-30fa2068a3d4317b5b2282eb2e37e98aedfcbf4e.tar.bz2
decl.c (start_decl): Improve permerror location.
/cp 2019-01-08 Paolo Carlini <paolo.carlini@oracle.com> * decl.c (start_decl): Improve permerror location. /testsuite 2019-01-08 Paolo Carlini <paolo.carlini@oracle.com> * g++.dg/diagnostic/out-of-class-redeclaration.C: New. From-SVN: r267675
-rw-r--r--gcc/cp/ChangeLog4
-rw-r--r--gcc/cp/decl.c3
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/g++.dg/diagnostic/out-of-class-redeclaration.C13
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" }