Skip to content

Commit b8e4c67

Browse files
committed
[CS] Remove function component constraints
FunctionInput relies on being able to represent parameter lists as tuples, which won't be possible once parameter flags are stripped from tuple types. FunctionResult is reasonable, but is currently unused.
1 parent fee31c6 commit b8e4c67

File tree

5 files changed

+0
-115
lines changed

5 files changed

+0
-115
lines changed

include/swift/Sema/Constraint.h

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -171,12 +171,6 @@ enum class ConstraintKind : char {
171171
/// The key path type is chosen based on the selection of overloads for the
172172
/// member references along the path.
173173
KeyPath,
174-
/// The first type is a function type, the second is the function's
175-
/// input type.
176-
FunctionInput,
177-
/// The first type is a function type, the second is the function's
178-
/// result type.
179-
FunctionResult,
180174
/// The first type will be equal to the second type, but only when the
181175
/// second type has been fully determined (and mapped down to a concrete
182176
/// type). At that point, this constraint will be treated like an `Equal`
@@ -691,8 +685,6 @@ class Constraint final : public llvm::ilist_node<Constraint>,
691685
case ConstraintKind::KeyPath:
692686
case ConstraintKind::KeyPathApplication:
693687
case ConstraintKind::Defaultable:
694-
case ConstraintKind::FunctionInput:
695-
case ConstraintKind::FunctionResult:
696688
return ConstraintClassification::TypeProperty;
697689

698690
case ConstraintKind::Disjunction:

include/swift/Sema/ConstraintSystem.h

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4751,13 +4751,6 @@ class ConstraintSystem {
47514751
TypeMatchOptions flags,
47524752
ConstraintLocatorBuilder locator);
47534753

4754-
/// Attempt to simplify a function input or result constraint.
4755-
SolutionKind simplifyFunctionComponentConstraint(
4756-
ConstraintKind kind,
4757-
Type first, Type second,
4758-
TypeMatchOptions flags,
4759-
ConstraintLocatorBuilder locator);
4760-
47614754
/// Attempt to simplify the BridgingConversion constraint.
47624755
SolutionKind simplifyBridgingConstraint(Type type1,
47634756
Type type2,

lib/Sema/CSBindings.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1336,8 +1336,6 @@ void PotentialBindings::infer(Constraint *constraint) {
13361336
case ConstraintKind::EscapableFunctionOf:
13371337
case ConstraintKind::OpenedExistentialOf:
13381338
case ConstraintKind::KeyPath:
1339-
case ConstraintKind::FunctionInput:
1340-
case ConstraintKind::FunctionResult:
13411339
case ConstraintKind::ClosureBodyElement:
13421340
case ConstraintKind::Conjunction:
13431341
// Constraints from which we can't do anything.

lib/Sema/CSSimplify.cpp

Lines changed: 0 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -1632,8 +1632,6 @@ ConstraintSystem::matchTupleTypes(TupleType *tuple1, TupleType *tuple2,
16321632
case ConstraintKind::ValueMember:
16331633
case ConstraintKind::ValueWitness:
16341634
case ConstraintKind::BridgingConversion:
1635-
case ConstraintKind::FunctionInput:
1636-
case ConstraintKind::FunctionResult:
16371635
case ConstraintKind::OneWayEqual:
16381636
case ConstraintKind::OneWayBindParam:
16391637
case ConstraintKind::DefaultClosureType:
@@ -1773,8 +1771,6 @@ static bool matchFunctionRepresentations(FunctionType::ExtInfo einfo1,
17731771
case ConstraintKind::UnresolvedValueMember:
17741772
case ConstraintKind::ValueMember:
17751773
case ConstraintKind::ValueWitness:
1776-
case ConstraintKind::FunctionInput:
1777-
case ConstraintKind::FunctionResult:
17781774
case ConstraintKind::OneWayEqual:
17791775
case ConstraintKind::OneWayBindParam:
17801776
case ConstraintKind::DefaultClosureType:
@@ -2178,8 +2174,6 @@ ConstraintSystem::matchFunctionTypes(FunctionType *func1, FunctionType *func2,
21782174
case ConstraintKind::ValueMember:
21792175
case ConstraintKind::ValueWitness:
21802176
case ConstraintKind::BridgingConversion:
2181-
case ConstraintKind::FunctionInput:
2182-
case ConstraintKind::FunctionResult:
21832177
case ConstraintKind::OneWayEqual:
21842178
case ConstraintKind::OneWayBindParam:
21852179
case ConstraintKind::DefaultClosureType:
@@ -5266,8 +5260,6 @@ ConstraintSystem::matchTypes(Type type1, Type type2, ConstraintKind kind,
52665260
case ConstraintKind::UnresolvedValueMember:
52675261
case ConstraintKind::ValueMember:
52685262
case ConstraintKind::ValueWitness:
5269-
case ConstraintKind::FunctionInput:
5270-
case ConstraintKind::FunctionResult:
52715263
case ConstraintKind::OneWayEqual:
52725264
case ConstraintKind::OneWayBindParam:
52735265
case ConstraintKind::DefaultClosureType:
@@ -7058,71 +7050,6 @@ ConstraintSystem::simplifyOptionalObjectConstraint(
70587050
return SolutionKind::Solved;
70597051
}
70607052

7061-
/// Attempt to simplify a function input or result constraint.
7062-
ConstraintSystem::SolutionKind
7063-
ConstraintSystem::simplifyFunctionComponentConstraint(
7064-
ConstraintKind kind,
7065-
Type first, Type second,
7066-
TypeMatchOptions flags,
7067-
ConstraintLocatorBuilder locator) {
7068-
auto simplified = simplifyType(first);
7069-
auto simplifiedCopy = simplified;
7070-
7071-
unsigned unwrapCount = 0;
7072-
if (shouldAttemptFixes()) {
7073-
while (auto objectTy = simplified->getOptionalObjectType()) {
7074-
simplified = objectTy;
7075-
7076-
// Track how many times we do this so that we can record a fix for each.
7077-
++unwrapCount;
7078-
}
7079-
7080-
if (simplified->isPlaceholder()) {
7081-
if (auto *typeVar = second->getAs<TypeVariableType>())
7082-
recordPotentialHole(typeVar);
7083-
return SolutionKind::Solved;
7084-
}
7085-
}
7086-
7087-
if (simplified->isTypeVariableOrMember()) {
7088-
if (!flags.contains(TMF_GenerateConstraints))
7089-
return SolutionKind::Unsolved;
7090-
7091-
addUnsolvedConstraint(
7092-
Constraint::create(*this, kind, simplified, second,
7093-
getConstraintLocator(locator)));
7094-
} else if (auto *funcTy = simplified->getAs<FunctionType>()) {
7095-
// Equate it to the other type in the constraint.
7096-
Type type;
7097-
ConstraintLocator::PathElementKind locKind;
7098-
7099-
if (kind == ConstraintKind::FunctionInput) {
7100-
type = AnyFunctionType::composeTuple(getASTContext(),
7101-
funcTy->getParams());
7102-
locKind = ConstraintLocator::FunctionArgument;
7103-
} else if (kind == ConstraintKind::FunctionResult) {
7104-
type = funcTy->getResult();
7105-
locKind = ConstraintLocator::FunctionResult;
7106-
} else {
7107-
llvm_unreachable("Bad function component constraint kind");
7108-
}
7109-
7110-
addConstraint(ConstraintKind::Bind, type, second,
7111-
locator.withPathElement(locKind));
7112-
} else {
7113-
return SolutionKind::Error;
7114-
}
7115-
7116-
if (unwrapCount > 0) {
7117-
auto *fix = ForceOptional::create(*this, simplifiedCopy, second,
7118-
getConstraintLocator(locator));
7119-
if (recordFix(fix, /*impact=*/unwrapCount))
7120-
return SolutionKind::Error;
7121-
}
7122-
7123-
return SolutionKind::Solved;
7124-
}
7125-
71267053
static bool isForKeyPathSubscript(ConstraintSystem &cs,
71277054
ConstraintLocator *locator) {
71287055
if (!locator || !locator->getAnchor())
@@ -12048,11 +11975,6 @@ ConstraintSystem::addConstraintImpl(ConstraintKind kind, Type first,
1204811975
case ConstraintKind::PropertyWrapper:
1204911976
return simplifyPropertyWrapperConstraint(first, second, subflags, locator);
1205011977

12051-
case ConstraintKind::FunctionInput:
12052-
case ConstraintKind::FunctionResult:
12053-
return simplifyFunctionComponentConstraint(kind, first, second,
12054-
subflags, locator);
12055-
1205611978
case ConstraintKind::OneWayEqual:
1205711979
case ConstraintKind::OneWayBindParam:
1205811980
return simplifyOneWayConstraint(kind, first, second, subflags, locator);
@@ -12582,14 +12504,6 @@ ConstraintSystem::simplifyConstraint(const Constraint &constraint) {
1258212504
/*flags*/ None,
1258312505
constraint.getLocator());
1258412506

12585-
case ConstraintKind::FunctionInput:
12586-
case ConstraintKind::FunctionResult:
12587-
return simplifyFunctionComponentConstraint(constraint.getKind(),
12588-
constraint.getFirstType(),
12589-
constraint.getSecondType(),
12590-
/*flags*/ None,
12591-
constraint.getLocator());
12592-
1259312507
case ConstraintKind::Disjunction:
1259412508
case ConstraintKind::Conjunction:
1259512509
// {Dis, Con}junction constraints are never solved here.

lib/Sema/Constraint.cpp

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,6 @@ Constraint::Constraint(ConstraintKind Kind, Type First, Type Second,
7373
case ConstraintKind::EscapableFunctionOf:
7474
case ConstraintKind::OpenedExistentialOf:
7575
case ConstraintKind::OptionalObject:
76-
case ConstraintKind::FunctionInput:
77-
case ConstraintKind::FunctionResult:
7876
case ConstraintKind::OneWayEqual:
7977
case ConstraintKind::OneWayBindParam:
8078
case ConstraintKind::UnresolvedMemberChainBase:
@@ -157,8 +155,6 @@ Constraint::Constraint(ConstraintKind Kind, Type First, Type Second, Type Third,
157155
case ConstraintKind::BindOverload:
158156
case ConstraintKind::Disjunction:
159157
case ConstraintKind::Conjunction:
160-
case ConstraintKind::FunctionInput:
161-
case ConstraintKind::FunctionResult:
162158
case ConstraintKind::OneWayEqual:
163159
case ConstraintKind::OneWayBindParam:
164160
case ConstraintKind::DefaultClosureType:
@@ -302,8 +298,6 @@ Constraint *Constraint::clone(ConstraintSystem &cs) const {
302298
case ConstraintKind::DynamicCallableApplicableFunction:
303299
case ConstraintKind::OptionalObject:
304300
case ConstraintKind::Defaultable:
305-
case ConstraintKind::FunctionInput:
306-
case ConstraintKind::FunctionResult:
307301
case ConstraintKind::OneWayEqual:
308302
case ConstraintKind::OneWayBindParam:
309303
case ConstraintKind::DefaultClosureType:
@@ -448,10 +442,6 @@ void Constraint::print(llvm::raw_ostream &Out, SourceManager *sm) const {
448442
break;
449443
case ConstraintKind::OptionalObject:
450444
Out << " optional with object type "; break;
451-
case ConstraintKind::FunctionInput:
452-
Out << " bind function input of "; break;
453-
case ConstraintKind::FunctionResult:
454-
Out << " bind function result of "; break;
455445
case ConstraintKind::BindOverload: {
456446
Out << " bound to ";
457447
auto overload = getOverloadChoice();
@@ -668,8 +658,6 @@ gatherReferencedTypeVars(Constraint *constraint,
668658
case ConstraintKind::LiteralConformsTo:
669659
case ConstraintKind::TransitivelyConformsTo:
670660
case ConstraintKind::SelfObjectOfProtocol:
671-
case ConstraintKind::FunctionInput:
672-
case ConstraintKind::FunctionResult:
673661
case ConstraintKind::OneWayEqual:
674662
case ConstraintKind::OneWayBindParam:
675663
case ConstraintKind::DefaultClosureType:

0 commit comments

Comments
 (0)