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> 2015-06-22 Jason Merrill <jason@redhat.com>
PR c++/66515 PR c++/66515
......
...@@ -9529,7 +9529,8 @@ grokdeclarator (const cp_declarator *declarator, ...@@ -9529,7 +9529,8 @@ grokdeclarator (const cp_declarator *declarator,
if (virtualp if (virtualp
&& (current_class_name == NULL_TREE || decl_context != FIELD)) && (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; virtualp = 0;
} }
...@@ -10476,19 +10477,11 @@ grokdeclarator (const cp_declarator *declarator, ...@@ -10476,19 +10477,11 @@ grokdeclarator (const cp_declarator *declarator,
if (decl_context == TYPENAME) if (decl_context == TYPENAME)
{ {
/* Note that the grammar rejects storage classes /* Note that here we don't care about type_quals. */
in typenames, fields or parameters. */
if (type_quals != TYPE_UNQUALIFIED)
type_quals = TYPE_UNQUALIFIED;
/* Special case: "friend class foo" looks like a TYPENAME context. */ /* Special case: "friend class foo" looks like a TYPENAME context. */
if (friendp) if (friendp)
{ {
if (type_quals != TYPE_UNQUALIFIED)
{
error ("type qualifiers specified for friend class declaration");
type_quals = TYPE_UNQUALIFIED;
}
if (inlinep) if (inlinep)
{ {
error ("%<inline%> specified for friend class declaration"); 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> 2015-06-22 Marek Polacek <polacek@redhat.com>
* gcc.dg/fold-ior-1.c: New test. * gcc.dg/fold-ior-1.c: New test.
......
...@@ -3,8 +3,8 @@ ...@@ -3,8 +3,8 @@
// { dg-do compile } // { dg-do compile }
void foo0() = 0; // { dg-error "like a variable" } 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 struct A
{ {
void foo2() = 0; // { dg-error "non-virtual" } 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