@@ -781,9 +781,8 @@ class StmtChecker : public StmtVisitor<StmtChecker, Stmt*> {
781781 }
782782 }
783783
784- auto exprTy = TypeChecker::typeCheckExpression (E, DC,
785- ResultTy,
786- ctp, options);
784+ auto exprTy =
785+ TypeChecker::typeCheckExpression (E, DC, {ResultTy, ctp}, options);
787786 RS->setResult (E);
788787
789788 if (!exprTy) {
@@ -844,8 +843,7 @@ class StmtChecker : public StmtVisitor<StmtChecker, Stmt*> {
844843 }
845844
846845 TypeChecker::typeCheckExpression (exprToCheck, DC,
847- contextType,
848- contextTypePurpose);
846+ {contextType, contextTypePurpose});
849847
850848 // Propagate the change into the inout expression we stripped before.
851849 if (inout) {
@@ -867,10 +865,9 @@ class StmtChecker : public StmtVisitor<StmtChecker, Stmt*> {
867865 Type exnType = getASTContext ().getErrorDecl ()->getDeclaredInterfaceType ();
868866 if (!exnType) return TS;
869867
870- TypeChecker::typeCheckExpression (E, DC, exnType,
871- CTP_ThrowStmt);
868+ TypeChecker::typeCheckExpression (E, DC, {exnType, CTP_ThrowStmt});
872869 TS->setSubExpr (E);
873-
870+
874871 return TS;
875872 }
876873
@@ -885,7 +882,7 @@ class StmtChecker : public StmtVisitor<StmtChecker, Stmt*> {
885882 TypeChecker::typeCheckDecl (DS->getTempDecl ());
886883
887884 Expr *theCall = DS->getCallExpr ();
888- TypeChecker::typeCheckExpression (theCall, DC);
885+ TypeChecker::typeCheckExpression (theCall, DC, /* contextualInfo= */ {} );
889886 DS->setCallExpr (theCall);
890887
891888 return DS;
@@ -1159,7 +1156,8 @@ class StmtChecker : public StmtVisitor<StmtChecker, Stmt*> {
11591156 Stmt *visitSwitchStmt (SwitchStmt *switchStmt) {
11601157 // Type-check the subject expression.
11611158 Expr *subjectExpr = switchStmt->getSubjectExpr ();
1162- auto resultTy = TypeChecker::typeCheckExpression (subjectExpr, DC);
1159+ auto resultTy = TypeChecker::typeCheckExpression (subjectExpr, DC,
1160+ /* contextualInfo=*/ {});
11631161 auto limitExhaustivityChecks = !resultTy;
11641162 if (Expr *newSubjectExpr =
11651163 TypeChecker::coerceToRValue (getASTContext (), subjectExpr))
@@ -1519,7 +1517,7 @@ void StmtChecker::typeCheckASTNode(ASTNode &node) {
15191517 }
15201518
15211519 auto resultTy =
1522- TypeChecker::typeCheckExpression (E, DC, Type (), CTP_Unused , options);
1520+ TypeChecker::typeCheckExpression (E, DC, /* contextualInfo= */ {} , options);
15231521
15241522 // If a closure expression is unused, the user might have intended to write
15251523 // "do { ... }".
@@ -1619,9 +1617,8 @@ static Expr* constructCallToSuperInit(ConstructorDecl *ctor,
16191617 r = new (Context) TryExpr (SourceLoc (), r, Type (), /* implicit=*/ true );
16201618
16211619 DiagnosticSuppression suppression (ctor->getASTContext ().Diags );
1622- auto resultTy =
1623- TypeChecker::typeCheckExpression (r, ctor, Type (), CTP_Unused,
1624- TypeCheckExprFlags::IsDiscarded);
1620+ auto resultTy = TypeChecker::typeCheckExpression (
1621+ r, ctor, /* contextualInfo=*/ {}, TypeCheckExprFlags::IsDiscarded);
16251622 if (!resultTy)
16261623 return nullptr ;
16271624
0 commit comments