@@ -2003,31 +2003,20 @@ Type TypeChecker::typeCheckExpression(Expr *&expr, DeclContext *dc,
2003
2003
SolutionApplicationTarget target (
2004
2004
expr, dc, convertTypePurpose, convertType,
2005
2005
options.contains (TypeCheckExprFlags::IsDiscarded));
2006
- bool unresolvedTypeExprs = false ;
2007
- auto resultTarget = typeCheckExpression (
2008
- target, unresolvedTypeExprs, options);
2006
+ auto resultTarget = typeCheckExpression (target, options);
2009
2007
if (!resultTarget) {
2010
2008
expr = target.getAsExpr ();
2011
2009
return Type ();
2012
2010
}
2013
2011
2014
2012
expr = resultTarget->getAsExpr ();
2015
-
2016
- // HACK for clients that want unresolved types.
2017
- if (unresolvedTypeExprs) {
2018
- return ErrorType::get (dc->getASTContext ());
2019
- }
2020
-
2021
-
2022
2013
return expr->getType ();
2023
2014
}
2024
2015
2025
2016
Optional<SolutionApplicationTarget>
2026
2017
TypeChecker::typeCheckExpression (
2027
2018
SolutionApplicationTarget &target,
2028
- bool &unresolvedTypeExprs,
2029
2019
TypeCheckExprOptions options) {
2030
- unresolvedTypeExprs = false ;
2031
2020
Expr *expr = target.getAsExpr ();
2032
2021
DeclContext *dc = target.getDeclContext ();
2033
2022
auto &Context = dc->getASTContext ();
@@ -2081,14 +2070,12 @@ TypeChecker::typeCheckExpression(
2081
2070
}
2082
2071
2083
2072
// If the client allows the solution to have unresolved type expressions,
2084
- // check for them now. We cannot apply the solution with unresolved TypeVars,
2073
+ // check for them now. We cannot apply the solution with unresolved TypeVars,
2085
2074
// because they will leak out into arbitrary places in the resultant AST.
2086
2075
if (options.contains (TypeCheckExprFlags::AllowUnresolvedTypeVariables) &&
2087
2076
(viable->size () != 1 ||
2088
2077
(target.getExprConversionType () &&
2089
2078
target.getExprConversionType ()->hasUnresolvedType ()))) {
2090
- // FIXME: This hack should only be needed for CSDiag.
2091
- unresolvedTypeExprs = true ;
2092
2079
return target;
2093
2080
}
2094
2081
@@ -2137,8 +2124,7 @@ bool TypeChecker::typeCheckBinding(
2137
2124
/* bindPatternVarsOneWay=*/ false );
2138
2125
2139
2126
// Type-check the initializer.
2140
- bool unresolvedTypeExprs = false ;
2141
- auto resultTarget = typeCheckExpression (target, unresolvedTypeExprs);
2127
+ auto resultTarget = typeCheckExpression (target);
2142
2128
2143
2129
if (resultTarget) {
2144
2130
initializer = resultTarget->getAsExpr ();
@@ -2267,8 +2253,7 @@ bool TypeChecker::typeCheckForEachBinding(DeclContext *dc, ForEachStmt *stmt) {
2267
2253
2268
2254
auto target = SolutionApplicationTarget::forForEachStmt (
2269
2255
stmt, sequenceProto, dc, /* bindPatternVarsOneWay=*/ false );
2270
- bool unresolvedTypeExprs = false ;
2271
- return !typeCheckExpression (target, unresolvedTypeExprs);
2256
+ return !typeCheckExpression (target);
2272
2257
}
2273
2258
2274
2259
bool TypeChecker::typeCheckCondition (Expr *&expr, DeclContext *dc) {
0 commit comments