@@ -1241,19 +1241,20 @@ namespace {
12411241 if (auto *VD = dyn_cast<VarDecl>(E->getDecl ())) {
12421242 knownType = CS.getTypeIfAvailable (VD);
12431243 if (!knownType)
1244- knownType = VD-> getType ( );
1244+ knownType = CS. getVarType (VD );
12451245
12461246 if (knownType) {
1247- assert (!knownType->isHole ());
12481247 // If the known type has an error, bail out.
12491248 if (knownType->hasError ()) {
12501249 if (!CS.hasType (E))
12511250 CS.setType (E, knownType);
12521251 return nullptr ;
12531252 }
12541253
1255- // Set the favored type for this expression to the known type.
1256- CS.setFavoredType (E, knownType.getPointer ());
1254+ if (!knownType->hasHole ()) {
1255+ // Set the favored type for this expression to the known type.
1256+ CS.setFavoredType (E, knownType.getPointer ());
1257+ }
12571258 }
12581259
12591260 // This can only happen when failure diagnostics is trying
@@ -2016,7 +2017,7 @@ namespace {
20162017
20172018 Type externalType;
20182019 if (param->getTypeRepr ()) {
2019- auto declaredTy = param-> getType ( );
2020+ auto declaredTy = CS. getVarType (param );
20202021 externalType = CS.openUnboundGenericTypes (declaredTy, paramLoc);
20212022 } else {
20222023 // Let's allow parameters which haven't been explicitly typed
@@ -3884,7 +3885,7 @@ bool ConstraintSystem::generateConstraints(
38843885 getConstraintLocator (typeRepr));
38853886 setType (typeRepr, backingType);
38863887
3887- auto propertyType = wrappedVar-> getType ( );
3888+ auto propertyType = getVarType (wrappedVar );
38883889 if (propertyType->hasError ())
38893890 return true ;
38903891
0 commit comments