[cfe-commits] Patch - Add fix-it hint for missing case keyword within a switch scope

Douglas Gregor dgregor at apple.com
Fri Apr 15 14:03:53 PDT 2011


On Apr 15, 2011, at 11:58 AM, Richard Trieu wrote:

> When a valid expression is followed by a colon inside a switch scope, suggest a fix-it hint to insert a case before the expression.
> 
> int f1(int i) {
>  switch (i) {
>    0: return 1;
>    default: return 0;
>  }
> }
> 
> case.cc:3:4: error: expected 'case' keyword before expression
>    0: return 1;
>    ^
>    case 

Cool idea, but this...

+    // If a case statement is missing, then back-track to this point and
+    // insert case keyword.
+    Token OldToken = Tok;
+    TentativeParsingAction TPA(*this);

is a huge performance problem, since tentative parsing is expensive and should be avoided except after an error occurs or when required by the language.

Is there a way to make this diagnostic kick in only when an error is imminent, e.g., because we've seen <expression> ':' somewhere within a switch statement?

	- Doug



More information about the cfe-commits mailing list