forked from OSchip/llvm-project
Make the "extra ';' inside a struct or union" diagnostic more
precise. Fixes PR7336. llvm-svn: 106170
This commit is contained in:
parent
bb1196534c
commit
13d0568ecc
|
@ -24,7 +24,9 @@ def ext_empty_source_file : Extension<"ISO C forbids an empty source file">;
|
|||
def ext_top_level_semi : Extension<
|
||||
"extra ';' outside of a function">;
|
||||
def ext_extra_struct_semi : Extension<
|
||||
"extra ';' inside a struct or union">;
|
||||
"extra ';' inside a %0">;
|
||||
def ext_extra_ivar_semi : Extension<
|
||||
"extra ';' inside instance variable list">;
|
||||
|
||||
def ext_duplicate_declspec : Extension<"duplicate '%0' declaration specifier">;
|
||||
def ext_plain_complex : ExtWarn<
|
||||
|
|
|
@ -1777,6 +1777,7 @@ void Parser::ParseStructUnionBody(SourceLocation RecordLoc,
|
|||
// Check for extraneous top-level semicolon.
|
||||
if (Tok.is(tok::semi)) {
|
||||
Diag(Tok, diag::ext_extra_struct_semi)
|
||||
<< DeclSpec::getSpecifierName((DeclSpec::TST)TagType)
|
||||
<< FixItHint::CreateRemoval(Tok.getLocation());
|
||||
ConsumeToken();
|
||||
continue;
|
||||
|
|
|
@ -1570,6 +1570,7 @@ void Parser::ParseCXXMemberSpecification(SourceLocation RecordLoc,
|
|||
// Check for extraneous top-level semicolon.
|
||||
if (Tok.is(tok::semi)) {
|
||||
Diag(Tok, diag::ext_extra_struct_semi)
|
||||
<< DeclSpec::getSpecifierName((DeclSpec::TST)TagType)
|
||||
<< FixItHint::CreateRemoval(Tok.getLocation());
|
||||
ConsumeToken();
|
||||
continue;
|
||||
|
|
|
@ -1014,7 +1014,7 @@ void Parser::ParseObjCClassInstanceVariables(DeclPtrTy interfaceDecl,
|
|||
|
||||
// Check for extraneous top-level semicolon.
|
||||
if (Tok.is(tok::semi)) {
|
||||
Diag(Tok, diag::ext_extra_struct_semi)
|
||||
Diag(Tok, diag::ext_extra_ivar_semi)
|
||||
<< FixItHint::CreateRemoval(Tok.getLocation());
|
||||
ConsumeToken();
|
||||
continue;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
_Complex cd; // CHECK: code-complete-errors.c:1:1: warning: plain '_Complex' requires a type specifier; assuming '_Complex double'
|
||||
// CHECK: FIX-IT: Insert " double" at 1:9
|
||||
struct s {
|
||||
int x, y;; // CHECK: code-complete-errors.c:4:12: warning: extra ';' inside a struct or union
|
||||
int x, y;; // CHECK: code-complete-errors.c:4:12: warning: extra ';' inside a struct
|
||||
}; // CHECK: FIX-IT: Remove [4:12 - 4:13]
|
||||
|
||||
struct s s0 = { y: 5 }; // CHECK: code-complete-errors.c:7:20: warning: use of GNU old-style field designator extension
|
||||
|
|
Loading…
Reference in New Issue