"ambiguous conversion from derived class '%0' to base class '%1':%2")
// C++ operator overloading
-DIAG(err_expected_operator, ERROR,
- "expected 'operator' keyword")
DIAG(err_operator_overload_needs_class_or_enum, ERROR,
"non-member overloaded operator '%0' must have at least one parameter of class or enumeration type (or reference thereof)")
DIAG(err_operator_overload_variadic, ERROR,
/// <= >= && || ++ -- , ->* ->
/// () []
IdentifierInfo *Parser::MaybeParseOperatorFunctionId() {
- if (Tok.isNot(tok::kw_operator))
- return 0;
+ assert(Tok.is(tok::kw_operator) && "Expected 'operator' keyword");
OverloadedOperatorKind Op = OO_None;
switch (NextToken().getKind()) {
if (Op == OO_None)
return 0;
else {
- ExpectAndConsume(tok::kw_operator, diag::err_expected_operator);
+ ConsumeToken(); // 'operator'
ConsumeAnyToken(); // the operator itself
return &PP.getIdentifierTable().getOverloadedOperator(Op);
}