+2020-05-07 Marek Polacek <polacek@redhat.com>
+
+ * decl.c (grok_op_properties): Fix spelling of non-static.
+ * typeck.c (build_class_member_access_expr): Likewise.
+
2020-05-07 Richard Biener <rguenther@suse.de>
PR middle-end/94703
(DECL_CONTEXT (fn), BINFO_TYPE (cand->conversion_path))))
flags |= LOOKUP_NONVIRTUAL;
- /* [class.mfct.nonstatic]: If a nonstatic member function of a class
+ /* [class.mfct.non-static]: If a non-static member function of a class
X is called for an object that is not of type X, or of a type
derived from X, the behavior is undefined.
{
/* ARM $12.6.2: [A member initializer list] (or, for an
aggregate, initialization by a brace-enclosed list) is the
- only way to initialize nonstatic const and reference
+ only way to initialize non-static const and reference
members. */
TYPE_HAS_COMPLEX_COPY_ASSIGN (t) = 1;
TYPE_HAS_COMPLEX_MOVE_ASSIGN (t) = 1;
{
/* ARM $12.6.2: [A member initializer list] (or, for an
aggregate, initialization by a brace-enclosed list) is the
- only way to initialize nonstatic const and reference
+ only way to initialize non-static const and reference
members. */
TYPE_HAS_COMPLEX_COPY_ASSIGN (t) = 1;
TYPE_HAS_COMPLEX_MOVE_ASSIGN (t) = 1;
| CLASSTYPE_READONLY_FIELDS_NEED_INIT (type));
}
- /* Core issue 80: A nonstatic data member is required to have a
+ /* Core issue 80: A non-static data member is required to have a
different name from the class iff the class has a
user-declared constructor. */
if (constructor_name_p (DECL_NAME (field), t)
member functions match targets of type "pointer-to-member
function;" the function type of the pointer to member is used to
select the member function from the set of overloaded member
- functions. If a nonstatic member function is selected, the
+ functions. If a non-static member function is selected, the
reference to the overloaded function name is required to have the
form of a pointer to member as described in 5.3.1.
}
bool first = true;
- /* Skip artificial parameter for nonstatic member functions. */
+ /* Skip artificial parameter for non-static member functions. */
if (TREE_CODE (t) == METHOD_TYPE)
types = TREE_CHAIN (types);
|| operator_code == ARRAY_REF
|| operator_code == NOP_EXPR)
{
- error_at (loc, "%qD must be a nonstatic member function", decl);
+ error_at (loc, "%qD must be a non-static member function", decl);
return false;
}
-- if T is a scalar type, the storage is set to the value of zero
converted to T.
- -- if T is a non-union class type, the storage for each nonstatic
+ -- if T is a non-union class type, the storage for each non-static
data member and each base-class subobject is zero-initialized.
-- if T is a union type, the storage for its first data member is
/* If MEMBER is non-static, then the program has fallen afoul of
[expr.prim]:
- An id-expression that denotes a nonstatic data member or
- nonstatic member function of a class can only be used:
+ An id-expression that denotes a non-static data member or
+ non-static member function of a class can only be used:
-- as part of a class member access (_expr.ref_) in which the
object-expression refers to the member's class or a class
-- to form a pointer to member (_expr.unary.op_), or
- -- in the body of a nonstatic member function of that class or
- of a class derived from that class (_class.mfct.nonstatic_), or
+ -- in the body of a non-static member function of that class or
+ of a class derived from that class (_class.mfct.non-static_), or
-- in a mem-initializer for a constructor for that class or for
a class derived from that class (_class.base.init_). */
/* [class.protected]
When a friend or a member function of a derived class references
- a protected nonstatic member of a base class, an access check
+ a protected non-static member of a base class, an access check
applies in addition to those described earlier in clause
_class.access_) Except when forming a pointer to member
(_expr.unary.op_), the access must be through a pointer to,
of that class.
[class.member.lookup]:If the resulting set of declarations are not all
- from sub-objects of the same type, or the set has a nonstatic member
+ from sub-objects of the same type, or the set has a non-static member
and includes members from distinct sub-objects, there is an ambiguity
and the program is ill-formed.
- This function checks that T contains no nonstatic members. */
+ This function checks that T contains no non-static members. */
int
shared_member_p (tree t)
if (complain & tf_error)
{
if (TREE_CODE (member) == FIELD_DECL)
- error ("invalid use of nonstatic data member %qE", member);
+ error ("invalid use of non-static data member %qE", member);
else
error ("%qD is not a member of %qT", member, object_type);
}
+2020-05-07 Marek Polacek <polacek@redhat.com>
+
+ * g++.dg/other/operator1.C: Adjust expected message.
+ * g++.dg/overload/operator2.C: Likewise.
+ * g++.dg/template/error30.C: Likewise.
+ * g++.old-deja/g++.jason/operator.C: Likewise.
+
2020-05-07 Richard Biener <rguenther@suse.de>
PR middle-end/94703
// PR c++/27547
// { dg-do compile }
-int operator=(int); // { dg-error "5:.int operator=\\(int\\). must be a nonstatic member function" }
+int operator=(int); // { dg-error "5:.int operator=\\(int\\). must be a non-static member function" }
void foo()
{
struct A
{
- static operator int(); // { dg-error "10:.static A::operator int\\(\\). must be a nonstatic member function" }
+ static operator int(); // { dg-error "10:.static A::operator int\\(\\). must be a non-static member function" }
};
struct B
static int operator*(); // { dg-error "14:.static int B::operator\\*\\(\\). must be either a non-static member function or a non-member function" }
};
-static operator int(); // { dg-error "8:.operator int\\(\\). must be a nonstatic member function" }
+static operator int(); // { dg-error "8:.operator int\\(\\). must be a non-static member function" }
template<int> struct A;
-template<template<typename> class B> A<B<int>::x> operator() (); // { dg-error "51:.A<B<int>::x> operator\\(\\)\\(\\). must be a nonstatic member function" }
+template<template<typename> class B> A<B<int>::x> operator() (); // { dg-error "51:.A<B<int>::x> operator\\(\\)\\(\\). must be a non-static member function" }
struct A {
int operator?:(int a, int b); // { dg-error "prohibits overloading" }
- static int operator()(int a); // { dg-error "14:.static int A::operator\\(\\)\\(int\\). must be a nonstatic member function" }
+ static int operator()(int a); // { dg-error "14:.static int A::operator\\(\\)\\(int\\). must be a non-static member function" }
static int operator+(A,A); // { dg-error "14:.static int A::operator\\+\\(A, A\\). must be either a non-static member function or a non-member function" }
int operator+(int a, int b = 1); // { dg-error "7:.int A::operator\\+\\(int, int\\). must have either zero or one argument" }
int operator++(char); // { dg-error "7:postfix .int A::operator\\+\\+\\(char\\). must have .int. as its argument" }
void operator delete (A a); // { dg-error ".operator delete. takes type .void\\*. as first parameter" }
char * operator char * (int); // { dg-error "return type" "ret" }
-// { dg-error "8:.operator char\\*\\*\\(int\\). must be a nonstatic member function" "mem" { target *-*-* } .-1 }
+// { dg-error "8:.operator char\\*\\*\\(int\\). must be a non-static member function" "mem" { target *-*-* } .-1 }