mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
[SIL] Remove what amounts to dead code from classifyDynamicCast().
The archetype tests in the code being removed will never succeed because there is code earlier in the function testing for any archetypes in either type, and that path always returns. The remaining test is broken (it's comparing source input and target input and then target input to target result rather than comparing the source input and target input and then source result and target result), and is just duplicating the test that happens above. If we really want to do a better test for substitutability we can do so at a later time. In the meantime, I don't think it makes sense to leave redundant comparisons and an unreachable return in place.
This commit is contained in:
@@ -490,17 +490,6 @@ swift::classifyDynamicCast(ModuleDecl *M,
|
||||
&& sourceFunction.getResult() == targetFunction.getResult())
|
||||
return DynamicCastFeasibility::WillSucceed;
|
||||
|
||||
auto isSubstitutable = [](CanType a, CanType b) -> bool {
|
||||
// FIXME: Unnecessarily conservative; should structurally check for
|
||||
// substitutability.
|
||||
return a == b || a->hasArchetype() || b->hasArchetype();
|
||||
};
|
||||
|
||||
if (isSubstitutable(sourceFunction.getInput(), targetFunction.getInput())
|
||||
&& isSubstitutable(targetFunction.getInput(),
|
||||
targetFunction.getResult()))
|
||||
return DynamicCastFeasibility::MaySucceed;
|
||||
|
||||
return DynamicCastFeasibility::WillFail;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user