================
Comment at: lib/Parse/ParseDecl.cpp:4841
@@ -4824,3 +4840,3 @@
// portion is empty), if an abstract-declarator is allowed.
D.SetIdentifier(0, Tok.getLocation());
----------------
Richard Smith wrote:
> This looks like it'll provide the wrong location if there were misplaced
> brackets.
The recovery for brackets requires !D.mayOmitIdentifier() [line 4710] while
this branch requires D.mayOmitIdentifier(). Either bracket recovery happens or
this code executes, but not both.
================
Comment at: lib/Parse/ParseDecl.cpp:4862
@@ -4838,3 +4861,3 @@
: D.getDeclSpec().getSourceRange());
- else if (getLangOpts().CPlusPlus) {
- if (Tok.is(tok::period) || Tok.is(tok::arrow))
+ } else if (getLangOpts().CPlusPlus) {
+ if (!UnhandledError && (Tok.is(tok::period) || Tok.is(tok::arrow)))
----------------
Richard Smith wrote:
> Have you considered putting the bracket parsing code way down here (and
> recursively calling back into this function after parsing them)?
Currently, the error correction of:
int [1] a [2];
to
int a[1][2];
If this was done recursively, the bracket recovery would go to the end instead
to:
int a[2][1];
http://reviews.llvm.org/D2712
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits