[cfe-commits] r60421 - in /cfe/trunk: lib/Parse/ParseExpr.cpp lib/Parse/ParseExprCXX.cpp test/SemaCXX/new-delete.cpp

Douglas Gregor dgregor at apple.com
Tue Dec 2 08:51:11 PST 2008


On Dec 2, 2008, at 8:35 AM, Sebastian Redl wrote:

> Author: cornedbee
> Date: Tue Dec  2 10:35:44 2008
> New Revision: 60421
>
> URL: http://llvm.org/viewvc/llvm-project?rev=60421&view=rev
> Log:
> Make the parser handle ::new and ::delete correctly.

Looks good, thanks!

> +  case tok::coloncolon: // [C++] new-expression or [C++] delete- 
> expression
> +    if (NextToken().is(tok::kw_new))
> +      return ParseCXXNewExpression();
> +    else
> +      return ParseCXXDeleteExpression();
> +

It's worth a comment here noting that '::' followed by anything but  
"new" or "delete" will be resolved to a scope-resolution or qualified  
typename token.

>
>   case tok::kw_new: // [C++] new-expression
> -    // FIXME: ParseCXXIdExpression currently steals :: tokens.
>     return ParseCXXNewExpression();
>
>   case tok::kw_delete: // [C++] delete-expression
>
> Modified: cfe/trunk/lib/Parse/ParseExprCXX.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/ParseExprCXX.cpp?rev=60421&r1=60420&r2=60421&view=diff
>
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- cfe/trunk/lib/Parse/ParseExprCXX.cpp (original)
> +++ cfe/trunk/lib/Parse/ParseExprCXX.cpp Tue Dec  2 10:35:44 2008
> @@ -38,6 +38,12 @@
>       (Tok.isNot(tok::identifier) || NextToken().isNot 
> (tok::coloncolon)))
>     return false;
>
> +  // Don't parse ::new and ::delete as scope specifiers. It would  
> only make
> +  // things a lot more complicated.
> +  if (Tok.is(tok::coloncolon) && (NextToken().is(tok::kw_new) ||
> +                                  NextToken().is(tok::kw_delete)))
> +    return false;

It's not that parsing ::new and ::delete here would be more  
complicated, it's that they aren't nested-name-specifiers at all, right?

Thanks, Sebastian!

	- Doug



More information about the cfe-commits mailing list