diff options
author | Paolo Carlini <paolo.carlini@oracle.com> | 2019-01-12 21:59:03 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2019-01-12 21:59:03 +0000 |
commit | 062ab4596d7b684f3781db1d484e5a9f1c9f5fd9 (patch) | |
tree | 788579482f5b5a539dbbefb2267a9fd7b1e7311c | |
parent | 8d5d3edddf70a8683c10e000817e8d2cd5b8c974 (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/decl.c | 5 | ||||
-rw-r--r-- | gcc/cp/decl2.c | 10 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/pr62101.C | 2 |
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; |