Fix regression in implicit conversions of implicitly unwrapped optional AnyObject types to their contextual types. (rdar://problem/16922332)

Swift SVN r18203
This commit is contained in:
Joe Pamer
2014-05-16 18:13:35 +00:00
parent fc47f11a29
commit b10a2bf48a
3 changed files with 16 additions and 12 deletions

View File

@@ -2651,6 +2651,18 @@ ConstraintSystem::simplifyBridgedToObjectiveCConstraint(const Constraint
if (!baseTy)
return SolutionKind::Unsolved;
if (baseTy->getClassOrBoundGenericClass()) {
increaseScore(SK_UserConversion);
return SolutionKind::Solved;
}
if (auto archetype = baseTy->getAs<ArchetypeType>()) {
if (archetype->requiresClass()) {
increaseScore(SK_UserConversion);
return SolutionKind::Solved;
}
}
if (auto bridgedType = TC.getBridgedToObjC(DC, baseTy).first) {
return simplifyRestrictedConstraint(ConversionRestrictionKind::User,
bridgedType,
@@ -2660,14 +2672,6 @@ ConstraintSystem::simplifyBridgedToObjectiveCConstraint(const Constraint
constraint.getLocator());
}
if (baseTy->getClassOrBoundGenericClass())
return SolutionKind::Solved;
if (auto archetype = baseTy->getAs<ArchetypeType>()) {
if (archetype->requiresClass())
return SolutionKind::Solved;
}
// Record this failure.
recordFailure(constraint.getLocator(),
Failure::IsNotBridgedToObjectiveC,