зеркало из https://github.com/microsoft/clang-1.git
Make this error less specific but also less likely to cause confusion. Fixes
PR7702. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118181 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
fec56e7e34
Коммит
9fa8e56940
|
@ -293,8 +293,6 @@ def err_default_arg_unparsed : Error<
|
|||
def err_dup_virtual : Error<"duplicate 'virtual' in base specifier">;
|
||||
|
||||
// C++ operator overloading
|
||||
def err_operator_missing_type_specifier : Error<
|
||||
"missing type specifier after 'operator'">;
|
||||
def err_operator_string_not_empty : Error<
|
||||
"string literal after 'operator' must be '\"\"'">;
|
||||
|
||||
|
|
|
@ -1005,7 +1005,7 @@ bool Parser::ParseCXXTypeSpecifierSeq(DeclSpec &DS) {
|
|||
// Parse one or more of the type specifiers.
|
||||
if (!ParseOptionalTypeSpecifier(DS, isInvalid, PrevSpec, DiagID,
|
||||
ParsedTemplateInfo(), /*SuppressDeclarations*/true)) {
|
||||
Diag(Tok, diag::err_operator_missing_type_specifier);
|
||||
Diag(Tok, diag::err_expected_type);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -7,8 +7,8 @@ void test() {
|
|||
|
||||
x.int; // expected-error{{expected unqualified-id}}
|
||||
x.~int(); // expected-error{{expected a class name}}
|
||||
x.operator; // expected-error{{missing type specifier after 'operator'}}
|
||||
x.operator typedef; // expected-error{{missing type specifier after 'operator'}}
|
||||
x.operator; // expected-error{{expected a type}}
|
||||
x.operator typedef; // expected-error{{expected a type}}
|
||||
}
|
||||
|
||||
void test2() {
|
||||
|
@ -16,8 +16,8 @@ void test2() {
|
|||
|
||||
x->int; // expected-error{{expected unqualified-id}}
|
||||
x->~int(); // expected-error{{expected a class name}}
|
||||
x->operator; // expected-error{{missing type specifier after 'operator'}}
|
||||
x->operator typedef; // expected-error{{missing type specifier after 'operator'}}
|
||||
x->operator; // expected-error{{expected a type}}
|
||||
x->operator typedef; // expected-error{{expected a type}}
|
||||
}
|
||||
|
||||
// PR6327
|
||||
|
|
|
@ -14,7 +14,7 @@ void test() {
|
|||
i = x.operator int();
|
||||
x.operator--(); // expected-error{{no member named 'operator--'}}
|
||||
x.operator float(); // expected-error{{no member named 'operator float'}}
|
||||
x.operator; // expected-error{{missing type specifier after 'operator'}}
|
||||
x.operator; // expected-error{{expected a type}}
|
||||
}
|
||||
|
||||
void test2() {
|
||||
|
@ -25,5 +25,5 @@ void test2() {
|
|||
i = x->operator int();
|
||||
x->operator--(); // expected-error{{no member named 'operator--'}}
|
||||
x->operator float(); // expected-error{{no member named 'operator float'}}
|
||||
x->operator; // expected-error{{missing type specifier after 'operator'}}
|
||||
x->operator; // expected-error{{expected a type}}
|
||||
}
|
||||
|
|
|
@ -62,8 +62,8 @@ struct abstract {
|
|||
void bad_news(int *ip)
|
||||
{
|
||||
int i = 1;
|
||||
(void)new; // expected-error {{missing type specifier}}
|
||||
(void)new 4; // expected-error {{missing type specifier}}
|
||||
(void)new; // expected-error {{expected a type}}
|
||||
(void)new 4; // expected-error {{expected a type}}
|
||||
(void)new () int; // expected-error {{expected expression}}
|
||||
(void)new int[1.1]; // expected-error {{array size expression must have integral or enumerated type, not 'double'}}
|
||||
(void)new int[1][i]; // expected-error {{only the first dimension}}
|
||||
|
@ -372,3 +372,9 @@ namespace PairedDelete {
|
|||
return new A<int>();
|
||||
}
|
||||
}
|
||||
|
||||
namespace PR7702 {
|
||||
void test1() {
|
||||
new DoesNotExist; // expected-error {{expected a type}}
|
||||
}
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче