The attached (trivial) patch makes Clang emit Fix-Its that remove
duplicate decl-specifiers (e.g. "const int const x = 3").

>From 6e9bf9a63d3183947ff556bd0dcd390b5b1e1e58 Mon Sep 17 00:00:00 2001
From: Eelis van der Weegen <[email protected]>
Date: Sat, 21 Aug 2010 14:10:54 +0200
Subject: [PATCH] Emit Fix-Its for duplicate decl-specifiers.

---
 lib/Parse/ParseDecl.cpp |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)

diff --git lib/Parse/ParseDecl.cpp lib/Parse/ParseDecl.cpp
index 3f97636..5a0c987 100644
--- lib/Parse/ParseDecl.cpp
+++ lib/Parse/ParseDecl.cpp
@@ -1405,7 +1405,10 @@ 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(Loc);
+      else
+        Diag(Tok, DiagID) << PrevSpec;
     }
     DS.SetRangeEnd(Tok.getLocation());
     ConsumeToken();
-- 
1.7.1

_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to