mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Merge pull request #78301 from slavapestov/remove-one-way-constraints
Sema: Remove ConstraintKind::OneWayBindParam and ConstraintKind::OneWayEqual
This commit is contained in:
@@ -2181,7 +2181,6 @@ ConstraintSystem::matchTupleTypes(TupleType *tuple1, TupleType *tuple2,
|
||||
case ConstraintKind::ValueMember:
|
||||
case ConstraintKind::ValueWitness:
|
||||
case ConstraintKind::BridgingConversion:
|
||||
case ConstraintKind::OneWayEqual:
|
||||
case ConstraintKind::FallbackType:
|
||||
case ConstraintKind::UnresolvedMemberChainBase:
|
||||
case ConstraintKind::PropertyWrapper:
|
||||
@@ -2543,7 +2542,6 @@ static bool matchFunctionRepresentations(FunctionType::ExtInfo einfo1,
|
||||
case ConstraintKind::UnresolvedValueMember:
|
||||
case ConstraintKind::ValueMember:
|
||||
case ConstraintKind::ValueWitness:
|
||||
case ConstraintKind::OneWayEqual:
|
||||
case ConstraintKind::FallbackType:
|
||||
case ConstraintKind::UnresolvedMemberChainBase:
|
||||
case ConstraintKind::PropertyWrapper:
|
||||
@@ -3187,7 +3185,6 @@ ConstraintSystem::matchFunctionTypes(FunctionType *func1, FunctionType *func2,
|
||||
case ConstraintKind::ValueMember:
|
||||
case ConstraintKind::ValueWitness:
|
||||
case ConstraintKind::BridgingConversion:
|
||||
case ConstraintKind::OneWayEqual:
|
||||
case ConstraintKind::FallbackType:
|
||||
case ConstraintKind::UnresolvedMemberChainBase:
|
||||
case ConstraintKind::PropertyWrapper:
|
||||
@@ -7127,7 +7124,6 @@ ConstraintSystem::matchTypes(Type type1, Type type2, ConstraintKind kind,
|
||||
case ConstraintKind::UnresolvedValueMember:
|
||||
case ConstraintKind::ValueMember:
|
||||
case ConstraintKind::ValueWitness:
|
||||
case ConstraintKind::OneWayEqual:
|
||||
case ConstraintKind::FallbackType:
|
||||
case ConstraintKind::UnresolvedMemberChainBase:
|
||||
case ConstraintKind::PropertyWrapper:
|
||||
@@ -11195,6 +11191,9 @@ ConstraintSystem::SolutionKind ConstraintSystem::simplifyMemberConstraint(
|
||||
functionRefInfo, locator,
|
||||
/*includeInaccessibleMembers*/ true);
|
||||
|
||||
if (result.OverallResult == MemberLookupResult::Unsolved)
|
||||
return formUnsolved();
|
||||
|
||||
// If unwrapped type still couldn't find anything for a given name,
|
||||
// let's fallback to a "not such member" fix.
|
||||
if (result.ViableCandidates.empty() && result.UnviableCandidates.empty())
|
||||
@@ -11560,38 +11559,6 @@ ConstraintSystem::simplifyPropertyWrapperConstraint(
|
||||
return SolutionKind::Solved;
|
||||
}
|
||||
|
||||
ConstraintSystem::SolutionKind
|
||||
ConstraintSystem::simplifyOneWayConstraint(
|
||||
ConstraintKind kind,
|
||||
Type first, Type second, TypeMatchOptions flags,
|
||||
ConstraintLocatorBuilder locator) {
|
||||
// Determine whether the second type can be fully simplified. Only then
|
||||
// will this constraint be resolved.
|
||||
Type secondSimplified = simplifyType(second);
|
||||
if (secondSimplified->hasTypeVariable()) {
|
||||
if (flags.contains(TMF_GenerateConstraints)) {
|
||||
addUnsolvedConstraint(
|
||||
Constraint::create(*this, kind, first, second,
|
||||
getConstraintLocator(locator)));
|
||||
return SolutionKind::Solved;
|
||||
}
|
||||
|
||||
return SolutionKind::Unsolved;
|
||||
}
|
||||
|
||||
// Propagate holes through one-way constraints.
|
||||
if (secondSimplified->isPlaceholder()) {
|
||||
recordAnyTypeVarAsPotentialHole(first);
|
||||
return SolutionKind::Solved;
|
||||
}
|
||||
|
||||
// Translate this constraint into an equality or bind-parameter constraint,
|
||||
// as appropriate.
|
||||
ASSERT(kind == ConstraintKind::OneWayEqual);
|
||||
return matchTypes(first, secondSimplified, ConstraintKind::Equal, flags,
|
||||
locator);
|
||||
}
|
||||
|
||||
ConstraintSystem::SolutionKind
|
||||
ConstraintSystem::simplifyUnresolvedMemberChainBaseConstraint(
|
||||
Type first, Type second, TypeMatchOptions flags,
|
||||
@@ -15717,9 +15684,6 @@ ConstraintSystem::addConstraintImpl(ConstraintKind kind, Type first,
|
||||
case ConstraintKind::PropertyWrapper:
|
||||
return simplifyPropertyWrapperConstraint(first, second, subflags, locator);
|
||||
|
||||
case ConstraintKind::OneWayEqual:
|
||||
return simplifyOneWayConstraint(kind, first, second, subflags, locator);
|
||||
|
||||
case ConstraintKind::UnresolvedMemberChainBase:
|
||||
return simplifyUnresolvedMemberChainBaseConstraint(first, second, subflags,
|
||||
locator);
|
||||
@@ -16297,12 +16261,6 @@ ConstraintSystem::simplifyConstraint(const Constraint &constraint) {
|
||||
// See {Dis, Con}junctionStep class in CSStep.cpp for solving
|
||||
return SolutionKind::Unsolved;
|
||||
|
||||
case ConstraintKind::OneWayEqual:
|
||||
return simplifyOneWayConstraint(
|
||||
constraint.getKind(), constraint.getFirstType(),
|
||||
constraint.getSecondType(),
|
||||
/*flags*/ std::nullopt, constraint.getLocator());
|
||||
|
||||
case ConstraintKind::UnresolvedMemberChainBase:
|
||||
return simplifyUnresolvedMemberChainBaseConstraint(
|
||||
constraint.getFirstType(), constraint.getSecondType(),
|
||||
|
||||
Reference in New Issue
Block a user