From 59ec4914775d554368879fd1d67b416daf9406d4 Mon Sep 17 00:00:00 2001 From: Paolo Carlini Date: Wed, 16 Jan 2019 16:16:54 +0000 Subject: decl.c (grokdeclarator): Use locations[ds_storage_class] in error messages about ill-formed uses of mutable. /cp 2019-01-16 Paolo Carlini * decl.c (grokdeclarator): Use locations[ds_storage_class] in error messages about ill-formed uses of mutable. /testsuite 2019-01-16 Paolo Carlini * g++.dg/other/pr33558.C: Test location too. * g++.dg/other/pr33558-2.C: Likewise. * g++.dg/parse/crash4.C: Likewise. * g++.old-deja/g++.brendan/err-msg11.C: Likewise. * g++.old-deja/g++.mike/p7635.C: Likewise. * g++.old-deja/g++.other/decl6.C: Likewise. From-SVN: r267978 --- gcc/cp/decl.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) (limited to 'gcc/cp/decl.c') diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 8e1d12d..9f96ebc 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -11902,36 +11902,43 @@ grokdeclarator (const cp_declarator *declarator, if (storage_class == sc_mutable) { + location_t sloc = declspecs->locations[ds_storage_class]; if (decl_context != FIELD || friendp) { - error ("non-member %qs cannot be declared %", name); + error_at (sloc, "non-member %qs cannot be declared %", + name); storage_class = sc_none; } else if (decl_context == TYPENAME || typedef_p) { - error ("non-object member %qs cannot be declared %", name); + error_at (sloc, + "non-object member %qs cannot be declared %", + name); storage_class = sc_none; } else if (TREE_CODE (type) == FUNCTION_TYPE || TREE_CODE (type) == METHOD_TYPE) { - error ("function %qs cannot be declared %", name); + error_at (sloc, "function %qs cannot be declared %", + name); storage_class = sc_none; } else if (staticp) { - error ("static %qs cannot be declared %", name); + error_at (sloc, "% %qs cannot be declared %", + name); storage_class = sc_none; } else if (type_quals & TYPE_QUAL_CONST) { - error ("const %qs cannot be declared %", name); + error_at (sloc, "% %qs cannot be declared %", + name); storage_class = sc_none; } else if (TYPE_REF_P (type)) { - permerror (input_location, "reference %qs cannot be declared " - "%", name); + permerror (sloc, "reference %qs cannot be declared %", + name); storage_class = sc_none; } } -- cgit v1.1