Commit ea663be9 by Paolo Carlini Committed by Paolo Carlini

decl.c (grokdeclarator): Use declspecs->locations[ds_virtual].

/cp
2015-06-22  Paolo Carlini  <paolo.carlini@oracle.com>

	* decl.c (grokdeclarator): Use declspecs->locations[ds_virtual].

/testsuite
2015-06-22  Paolo Carlini  <paolo.carlini@oracle.com>

	* g++.dg/inherit/pure1.C: Test location too.

2015-06-22  Paolo Carlini  <paolo.carlini@oracle.com>

	* decl.c (grokdeclarator): Remove pointless code.

From-SVN: r224750
parent 33273def
2015-06-22 Paolo Carlini <paolo.carlini@oracle.com>
* decl.c (grokdeclarator): Use declspecs->locations[ds_virtual].
2015-06-22 Paolo Carlini <paolo.carlini@oracle.com>
* decl.c (grokdeclarator): Remove pointless code.
2015-06-22 Jason Merrill <jason@redhat.com>
PR c++/66515
......
......@@ -9529,7 +9529,8 @@ grokdeclarator (const cp_declarator *declarator,
if (virtualp
&& (current_class_name == NULL_TREE || decl_context != FIELD))
{
error ("%<virtual%> outside class declaration");
error_at (declspecs->locations[ds_virtual],
"%<virtual%> outside class declaration");
virtualp = 0;
}
......@@ -10476,19 +10477,11 @@ grokdeclarator (const cp_declarator *declarator,
if (decl_context == TYPENAME)
{
/* Note that the grammar rejects storage classes
in typenames, fields or parameters. */
if (type_quals != TYPE_UNQUALIFIED)
type_quals = TYPE_UNQUALIFIED;
/* Note that here we don't care about type_quals. */
/* Special case: "friend class foo" looks like a TYPENAME context. */
if (friendp)
{
if (type_quals != TYPE_UNQUALIFIED)
{
error ("type qualifiers specified for friend class declaration");
type_quals = TYPE_UNQUALIFIED;
}
if (inlinep)
{
error ("%<inline%> specified for friend class declaration");
......
2015-06-22 Paolo Carlini <paolo.carlini@oracle.com>
* g++.dg/inherit/pure1.C: Test location too.
2015-06-22 Marek Polacek <polacek@redhat.com>
* gcc.dg/fold-ior-1.c: New test.
......
......@@ -3,8 +3,8 @@
// { dg-do compile }
void foo0() = 0; // { dg-error "like a variable" }
virtual void foo1() = 0; // { dg-error "outside class|variable" }
virtual void foo1() = 0; // { dg-error "1:'virtual' outside class" }
// { dg-error "like a variable" "" { target *-*-* } 6 }
struct A
{
void foo2() = 0; // { dg-error "non-virtual" }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment