Skip to content

Commit 8bedace

Browse files
authored
Merge pull request #5187 from rudkx/fix-array-ref-issue
2 parents b1d2d1a + 5356cc3 commit 8bedace

File tree

2 files changed

+18
-8
lines changed

2 files changed

+18
-8
lines changed

lib/Sema/CSApply.cpp

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6143,12 +6143,17 @@ Expr *ExprRewriter::finishApply(ApplyExpr *apply, Type openedType,
61436143
ArrayRef<Expr *> arguments;
61446144
ArrayRef<TypeBase *> types;
61456145

6146+
SmallVector<Expr *, 1> Scratch;
61466147
if (auto *TE = dyn_cast<TupleExpr>(CEA))
61476148
arguments = TE->getElements();
6148-
else if (auto *PE = dyn_cast<ParenExpr>(CEA))
6149-
arguments = PE->getSubExpr();
6150-
else
6151-
arguments = apply->getArg();
6149+
else if (auto *PE = dyn_cast<ParenExpr>(CEA)) {
6150+
Scratch.push_back(PE->getSubExpr());
6151+
arguments = makeArrayRef(Scratch);
6152+
}
6153+
else {
6154+
Scratch.push_back(apply->getArg());
6155+
arguments = makeArrayRef(Scratch);
6156+
}
61526157

61536158
for (auto arg: arguments) {
61546159
bool isNoEscape = false;

lib/Sema/MiscDiagnostics.cpp

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -299,12 +299,17 @@ static void diagSyntacticUseRestrictions(TypeChecker &TC, const Expr *E,
299299

300300
// The argument is either a ParenExpr or TupleExpr.
301301
ArrayRef<Expr*> arguments;
302+
SmallVector<Expr *, 1> Scratch;
302303
if (auto *TE = dyn_cast<TupleExpr>(Arg))
303304
arguments = TE->getElements();
304-
else if (auto *PE = dyn_cast<ParenExpr>(Arg))
305-
arguments = PE->getSubExpr();
306-
else
307-
arguments = Call->getArg();
305+
else if (auto *PE = dyn_cast<ParenExpr>(Arg)) {
306+
Scratch.push_back(PE->getSubExpr());
307+
arguments = makeArrayRef(Scratch);
308+
}
309+
else {
310+
Scratch.push_back(Call->getArg());
311+
arguments = makeArrayRef(Scratch);
312+
}
308313

309314
// Check each argument.
310315
for (auto arg : arguments) {

0 commit comments

Comments
 (0)