summaryrefslogtreecommitdiffstats
path: root/clang/lib/Parse/ParseInit.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2011-01-03 19:31:53 +0000
committerDouglas Gregor <dgregor@apple.com>2011-01-03 19:31:53 +0000
commit968f23ab97f1a6ee606c79911eec53c1b5d9f717 (patch)
treef33b4d5a6f4b6d3fd3161eceb81aab3388449718 /clang/lib/Parse/ParseInit.cpp
parent8e666510f6f9fa832aa8393be5331ba4456ab63a (diff)
downloadbcm5719-llvm-968f23ab97f1a6ee606c79911eec53c1b5d9f717.tar.gz
bcm5719-llvm-968f23ab97f1a6ee606c79911eec53c1b5d9f717.zip
Implement support for pack expansions in initializer lists and
expression lists. llvm-svn: 122764
Diffstat (limited to 'clang/lib/Parse/ParseInit.cpp')
-rw-r--r--clang/lib/Parse/ParseInit.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/clang/lib/Parse/ParseInit.cpp b/clang/lib/Parse/ParseInit.cpp
index c2675f33e78..82dda2b793d 100644
--- a/clang/lib/Parse/ParseInit.cpp
+++ b/clang/lib/Parse/ParseInit.cpp
@@ -310,8 +310,8 @@ ExprResult Parser::ParseInitializerWithPotentialDesignator() {
/// [GNU] '{' '}'
///
/// initializer-list:
-/// designation[opt] initializer
-/// initializer-list ',' designation[opt] initializer
+/// designation[opt] initializer ...[opt]
+/// initializer-list ',' designation[opt] initializer ...[opt]
///
ExprResult Parser::ParseBraceInitializer() {
InMessageExpressionRAIIObject InMessage(*this, false);
@@ -344,6 +344,9 @@ ExprResult Parser::ParseBraceInitializer() {
else
SubElt = ParseInitializer();
+ if (Tok.is(tok::ellipsis))
+ SubElt = Actions.ActOnPackExpansion(SubElt.get(), ConsumeToken());
+
// If we couldn't parse the subelement, bail out.
if (!SubElt.isInvalid()) {
InitExprs.push_back(SubElt.release());
OpenPOWER on IntegriCloud