summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang/lib/Parse/ParseDecl.cpp7
-rw-r--r--clang/test/FixIt/fixit.c3
2 files changed, 9 insertions, 1 deletions
diff --git a/clang/lib/Parse/ParseDecl.cpp b/clang/lib/Parse/ParseDecl.cpp
index 8a548cf5173..371d8ad02e8 100644
--- a/clang/lib/Parse/ParseDecl.cpp
+++ b/clang/lib/Parse/ParseDecl.cpp
@@ -1405,7 +1405,12 @@ void Parser::ParseDeclarationSpecifiers(DeclSpec &DS,
if (isInvalid) {
assert(PrevSpec && "Method did not return previous specifier!");
assert(DiagID);
- Diag(Tok, DiagID) << PrevSpec;
+
+ if (DiagID == diag::ext_duplicate_declspec)
+ Diag(Tok, DiagID)
+ << PrevSpec << FixItHint::CreateRemoval(Tok.getLocation());
+ else
+ Diag(Tok, DiagID) << PrevSpec;
}
DS.SetRangeEnd(Tok.getLocation());
ConsumeToken();
diff --git a/clang/test/FixIt/fixit.c b/clang/test/FixIt/fixit.c
index b799fa3b3b8..890fb10b41d 100644
--- a/clang/test/FixIt/fixit.c
+++ b/clang/test/FixIt/fixit.c
@@ -38,3 +38,6 @@ int test_cond(int y, int fooBar) {
int x = y ? 1 4+foobar;
return x;
}
+
+// CHECK: typedef int int_t;
+typedef typedef int int_t;
OpenPOWER on IntegriCloud