llvm-project/clang/lib/Parse
Argyrios Kyrtzidis f73f2d28a2 The disambiguation process for ambiguous paren expressions is not "side effects free", e.g:
(T(*)(int[x+y]));

is an (invalid) paren expression, but "x+y" will be parsed as part of the (rejected) type-id,
so unnecessary Action calls are made for an unused (and possibly leaked) "x+y".

Use a different scheme, similar to parsing inline methods. The parenthesized tokens are cached,
the context that follows is determined (possibly by parsing a cast-expression),
and then we re-introduce the cached tokens into the token stream and parse them appropriately.

llvm-svn: 72279
2009-05-22 21:09:47 +00:00
..
AttributeList.cpp implementation of format_arg for ObjC methods/functions. 2009-05-20 17:41:43 +00:00
CMakeLists.txt Build system changes to use TableGen to generate the various 2009-03-16 23:06:59 +00:00
DeclSpec.cpp Add parsing of friend specifiers. 2009-05-06 04:46:28 +00:00
ExtensionRAIIObject.h Rejigger how -pedantic and -pedantic-errors work and their interaction 2009-04-15 07:01:18 +00:00
Makefile Build system changes to use TableGen to generate the various 2009-03-16 23:06:59 +00:00
MinimalAction.cpp teach -parse-noop about int128_t and friends. 2009-05-01 16:33:20 +00:00
ParseCXXInlineMethods.cpp The mysterious bug turns out to be an incredibly bone-headed mistake. 2009-04-26 21:08:36 +00:00
ParseDecl.cpp Refactor the common code of 'ParseTypeofSpecifier' and 'ParseSizeofAlignofExpression' into a new 2009-05-22 10:22:50 +00:00
ParseDeclCXX.cpp Merge the ASTVector and ASTOwningVector templates, since they offered 2009-05-21 16:25:11 +00:00
ParseExpr.cpp Handle correctly a very ugly part of the C++ syntax. We cannot disambiguate between a parenthesized type-id and 2009-05-22 10:24:42 +00:00
ParseExprCXX.cpp The disambiguation process for ambiguous paren expressions is not "side effects free", e.g: 2009-05-22 21:09:47 +00:00
ParseInit.cpp Merge the ASTVector and ASTOwningVector templates, since they offered 2009-05-21 16:25:11 +00:00
ParseObjc.cpp Merge the ASTVector and ASTOwningVector templates, since they offered 2009-05-21 16:25:11 +00:00
ParsePragma.cpp Implement '#pragma unused'. 2009-03-23 22:28:25 +00:00
ParsePragma.h Implement '#pragma unused'. 2009-03-23 22:28:25 +00:00
ParseStmt.cpp Merge the ASTVector and ASTOwningVector templates, since they offered 2009-05-21 16:25:11 +00:00
ParseTemplate.cpp Merge the ASTVector and ASTOwningVector templates, since they offered 2009-05-21 16:25:11 +00:00
ParseTentative.cpp Handle correctly a very ugly part of the C++ syntax. We cannot disambiguate between a parenthesized type-id and 2009-05-22 10:24:42 +00:00
Parser.cpp Implement parsing for explicit instantiations of class templates, e.g., 2009-05-12 23:25:50 +00:00