25
25
#include " clang/Sema/EnterExpressionEvaluationContext.h"
26
26
#include " clang/Sema/Initialization.h"
27
27
#include " clang/Sema/Lookup.h"
28
+ #include " clang/Sema/Ownership.h"
28
29
#include " clang/Sema/SemaInternal.h"
29
30
#include " llvm/ADT/APInt.h"
30
31
#include " llvm/ADT/FoldingSet.h"
@@ -5429,18 +5430,12 @@ static void TryOrBuildParenListInitialization(
5429
5430
auto HandleInitializedEntity = [&](const InitializedEntity &SubEntity,
5430
5431
const InitializationKind &SubKind,
5431
5432
Expr *Arg, Expr **InitExpr = nullptr ) {
5432
- InitializationSequence IS = [&]() {
5433
- if (Arg)
5434
- return InitializationSequence (S, SubEntity, SubKind, Arg);
5435
- return InitializationSequence (S, SubEntity, SubKind, std::nullopt);
5436
- }();
5433
+ InitializationSequence IS = InitializationSequence (
5434
+ S, SubEntity, SubKind, Arg ? MultiExprArg (Arg) : std::nullopt);
5437
5435
5438
5436
if (IS.Failed ()) {
5439
5437
if (!VerifyOnly) {
5440
- if (Arg)
5441
- IS.Diagnose (S, SubEntity, SubKind, Arg);
5442
- else
5443
- IS.Diagnose (S, SubEntity, SubKind, std::nullopt);
5438
+ IS.Diagnose (S, SubEntity, SubKind, Arg ? ArrayRef (Arg) : std::nullopt);
5444
5439
} else {
5445
5440
Sequence.SetFailed (
5446
5441
InitializationSequence::FK_ParenthesizedListInitFailed);
@@ -5450,10 +5445,8 @@ static void TryOrBuildParenListInitialization(
5450
5445
}
5451
5446
if (!VerifyOnly) {
5452
5447
ExprResult ER;
5453
- if (Arg)
5454
- ER = IS.Perform (S, SubEntity, SubKind, Arg);
5455
- else
5456
- ER = IS.Perform (S, SubEntity, SubKind, std::nullopt);
5448
+ ER = IS.Perform (S, SubEntity, SubKind,
5449
+ Arg ? MultiExprArg (Arg) : std::nullopt);
5457
5450
if (InitExpr)
5458
5451
*InitExpr = ER.get ();
5459
5452
else
0 commit comments