+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
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;
}
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.
// { 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" }