On Feb 11, 2012, at 3:51 PM, Sebastian Redl <[email protected]> wrote:
> Author: cornedbee > Date: Sat Feb 11 17:51:47 2012 > New Revision: 150318 > > URL: http://llvm.org/viewvc/llvm-project?rev=150318&view=rev > Log: > Represent C++ direct initializers as ParenListExprs before semantic analysis > instead of having a special-purpose function. > > - ActOnCXXDirectInitializer, which was mostly duplication of > AddInitializerToDecl (leading e.g. to PR10620, which Eli fixed a few days > ago), is dropped completely. > - MultiInitializer, which was an ugly hack I added, is dropped again. > - We now have the infrastructure in place to distinguish between > int x = {1}; > int x({1}); > int x{1}; > -- VarDecl now has getInitStyle(), which indicates which of the above was > used. > -- CXXConstructExpr now has a flag to indicate that it represents list- > initialization, although this is not yet used. > - InstantiateInitializer was renamed to SubstInitializer and simplified. > - ActOnParenOrParenListExpr has been replaced by ActOnParenListExpr, which > always produces a ParenListExpr. Placed that so far failed to convert that > back to a ParenExpr containing comma operators have been fixed. I'm pretty > sure I could have made a crashing test case before this. > > The end result is a (I hope) considerably cleaner design of initializers. > More importantly, the fact that I can now distinguish between the various > initialization kinds means that I can get the tricky generalized initializer > test cases Johannes Schaub supplied to work. (This is not yet done.) I like this a lot. It eliminates some really annoying redundancy and ugliness in the initialization ASTs. - Doug _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
