aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2019-01-12 21:59:03 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2019-01-12 21:59:03 +0000
commit062ab4596d7b684f3781db1d484e5a9f1c9f5fd9 (patch)
tree788579482f5b5a539dbbefb2267a9fd7b1e7311c
parent8d5d3edddf70a8683c10e000817e8d2cd5b8c974 (diff)
downloadgcc-062ab4596d7b684f3781db1d484e5a9f1c9f5fd9.zip
gcc-062ab4596d7b684f3781db1d484e5a9f1c9f5fd9.tar.gz
gcc-062ab4596d7b684f3781db1d484e5a9f1c9f5fd9.tar.bz2
decl.c (cp_finish_decl): Improve error location.
/cp 2019-01-12 Paolo Carlini <paolo.carlini@oracle.com> * decl.c (cp_finish_decl): Improve error location. * decl2.c (grokfield): Likewise, improve two locations. /testsuite 2019-01-12 Paolo Carlini <paolo.carlini@oracle.com> * g++.dg/cpp0x/pr62101.C: Test locations too. * g++.dg/inherit/pure1.C: Likewise. From-SVN: r267887
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/decl.c5
-rw-r--r--gcc/cp/decl2.c10
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/pr62101.C2
5 files changed, 21 insertions, 6 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 9c661a5..32b2ab1 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2019-01-12 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * decl.c (cp_finish_decl): Improve error location.
+ * decl2.c (grokfield): Likewise, improve two locations.
+
2019-01-11 Marek Polacek <polacek@redhat.com>
PR c++/88692, c++/87882 - -Wredundant-move false positive with *this.
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index fe5403d..6e75c3d 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -7293,7 +7293,10 @@ cp_finish_decl (tree decl, tree init, bool init_const_expr_p,
synthesize_method (decl);
}
else
- error ("function %q#D is initialized like a variable", decl);
+ error_at (cp_expr_loc_or_loc (init,
+ DECL_SOURCE_LOCATION (decl)),
+ "function %q#D is initialized like a variable",
+ decl);
}
/* else no initialization required. */
}
diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c
index 591cc21..e4cf4e0 100644
--- a/gcc/cp/decl2.c
+++ b/gcc/cp/decl2.c
@@ -924,12 +924,14 @@ grokfield (const cp_declarator *declarator,
else
{
gcc_assert (TREE_CODE (TREE_TYPE (value)) == FUNCTION_TYPE);
+ location_t iloc
+ = cp_expr_loc_or_loc (init, DECL_SOURCE_LOCATION (value));
if (friendp)
- error ("initializer specified for friend function %qD",
- value);
+ error_at (iloc, "initializer specified for friend "
+ "function %qD", value);
else
- error ("initializer specified for static member function %qD",
- value);
+ error_at (iloc, "initializer specified for static "
+ "member function %qD", value);
}
}
else if (TREE_CODE (value) == FIELD_DECL)
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 3d74b63..6f781ae 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2019-01-12 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * g++.dg/cpp0x/pr62101.C: Test locations too.
+ * g++.dg/inherit/pure1.C: Likewise.
+
2019-01-12 Paul Thomas <pault@gcc.gnu.org>
* gfortran.dg/ISO_Fortran_binding_2.f90 : Remove because of
diff --git a/gcc/testsuite/g++.dg/cpp0x/pr62101.C b/gcc/testsuite/g++.dg/cpp0x/pr62101.C
index 2c05dd5..5fc579c 100644
--- a/gcc/testsuite/g++.dg/cpp0x/pr62101.C
+++ b/gcc/testsuite/g++.dg/cpp0x/pr62101.C
@@ -3,7 +3,7 @@
struct X
{
- friend void g(X, int) = 0; // { dg-error "initializer specified for friend function" }
+ friend void g(X, int) = 0; // { dg-error "15:initializer specified for friend function" }
friend void g(X, int) = default; // { dg-error "cannot be defaulted" }
// { dg-prune-output "note" }
friend void f(X, int) = delete;