diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2017-01-09 21:23:21 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2017-01-09 21:23:21 +0000 |
| commit | fdc82ccb3f2b23a89e7002fe8238e1422b00f96a (patch) | |
| tree | f189aa0a3010e0eb212970b8eadf0a8b098985ea /lib/Parse | |
| parent | 6694ed095d6b27a2c92ec4fd63664fcd88a05749 (diff) | |
Diffstat (limited to 'lib/Parse')
| -rw-r--r-- | lib/Parse/ParseDecl.cpp | 7 | ||||
| -rw-r--r-- | lib/Parse/ParseInit.cpp | 4 |
2 files changed, 8 insertions, 3 deletions
diff --git a/lib/Parse/ParseDecl.cpp b/lib/Parse/ParseDecl.cpp index ba24adefe6b0..833d93e4548a 100644 --- a/lib/Parse/ParseDecl.cpp +++ b/lib/Parse/ParseDecl.cpp @@ -306,10 +306,11 @@ unsigned Parser::ParseAttributeArgsCommon( // Parse the non-empty comma-separated list of expressions. do { - bool ShouldEnter = attributeParsedArgsUnevaluated(*AttrName); + bool Uneval = attributeParsedArgsUnevaluated(*AttrName); EnterExpressionEvaluationContext Unevaluated( - Actions, Sema::Unevaluated, /*LambdaContextDecl=*/nullptr, - /*IsDecltype=*/false, ShouldEnter); + Actions, Uneval ? Sema::Unevaluated : Sema::ConstantEvaluated, + /*LambdaContextDecl=*/nullptr, + /*IsDecltype=*/false); ExprResult ArgExpr( Actions.CorrectDelayedTyposInExpr(ParseAssignmentExpression())); diff --git a/lib/Parse/ParseInit.cpp b/lib/Parse/ParseInit.cpp index 4a68942f6d2c..fa6b75daed92 100644 --- a/lib/Parse/ParseInit.cpp +++ b/lib/Parse/ParseInit.cpp @@ -404,6 +404,10 @@ ExprResult Parser::ParseBraceInitializer() { return Actions.ActOnInitList(LBraceLoc, None, ConsumeBrace()); } + // Enter an appropriate expression evaluation context for an initializer list. + EnterExpressionEvaluationContext EnterContext( + Actions, EnterExpressionEvaluationContext::InitList); + bool InitExprsOk = true; while (1) { |
