diff options
author | Paolo Carlini <paolo.carlini@oracle.com> | 2019-08-08 22:15:40 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2019-08-08 22:15:40 +0000 |
commit | 327d3fd01caab82dcc7720a8de7ee7487c6dbea2 (patch) | |
tree | 563edd9955686b1c80806df365ab9bd10c462096 /gcc/cp/decl.c | |
parent | be15aa901d7d259f2eda238157c55c733af583e5 (diff) | |
download | gcc-327d3fd01caab82dcc7720a8de7ee7487c6dbea2.zip gcc-327d3fd01caab82dcc7720a8de7ee7487c6dbea2.tar.gz gcc-327d3fd01caab82dcc7720a8de7ee7487c6dbea2.tar.bz2 |
decl.c (grokdeclarator): Use id_loc and EXPR_LOCATION in a few error messages.
/cp
2019-08-08 Paolo Carlini <paolo.carlini@oracle.com>
* decl.c (grokdeclarator): Use id_loc and EXPR_LOCATION in
a few error messages.
/testsuite
2019-08-08 Paolo Carlini <paolo.carlini@oracle.com>
* g++.dg/cpp0x/enum20.C: Test location(s) too.
* g++.dg/other/friend3.C: Likewise.
* g++.dg/parse/dtor5.C: Likewise.
* g++.dg/parse/friend7.C: Likewise.
* g++.dg/template/error22.C: Likewise.
* g++.old-deja/g++.brendan/err-msg5.C: Likewise.
From-SVN: r274220
Diffstat (limited to 'gcc/cp/decl.c')
-rw-r--r-- | gcc/cp/decl.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 83f086d..b8806e4 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -10579,7 +10579,8 @@ grokdeclarator (const cp_declarator *declarator, ctype = qualifying_scope; if (!MAYBE_CLASS_TYPE_P (ctype)) { - error ("%q#T is not a class or a namespace", ctype); + error_at (id_declarator->id_loc, + "%q#T is not a class or namespace", ctype); ctype = NULL_TREE; } else if (innermost_code != cdk_function @@ -10601,13 +10602,15 @@ grokdeclarator (const cp_declarator *declarator, { if (innermost_code != cdk_function) { - error ("declaration of %qD as non-function", decl); + error_at (EXPR_LOCATION (decl), + "declaration of %qE as non-function", decl); return error_mark_node; } else if (!qualifying_scope && !(current_class_type && at_class_scope_p ())) { - error ("declaration of %qD as non-member", decl); + error_at (EXPR_LOCATION (decl), + "declaration of %qE as non-member", decl); return error_mark_node; } @@ -12510,7 +12513,7 @@ grokdeclarator (const cp_declarator *declarator, else if (in_namespace && !friendp) { /* Something like struct S { int N::j; }; */ - error ("invalid use of %<::%>"); + error_at (id_loc, "invalid use of %<::%>"); return error_mark_node; } else if (FUNC_OR_METHOD_TYPE_P (type) && unqualified_id) @@ -12565,15 +12568,15 @@ grokdeclarator (const cp_declarator *declarator, if (!ctype) { gcc_assert (friendp); - error ("expected qualified name in friend declaration " - "for destructor %qD", uqname); + error_at (id_loc, "expected qualified name in friend " + "declaration for destructor %qD", uqname); return error_mark_node; } if (!check_dtor_name (ctype, TREE_OPERAND (uqname, 0))) { - error ("declaration of %qD as member of %qT", - uqname, ctype); + error_at (id_loc, "declaration of %qD as member of %qT", + uqname, ctype); return error_mark_node; } if (concept_p) |