Skip to content

Commit d4d8557

Browse files
committed
Sema: typeEraseOpenedArchetypesWithRoot() => typeEraseOpenedArchetypesFromEnvironment()
1 parent 76ec591 commit d4d8557

File tree

4 files changed

+18
-19
lines changed

4 files changed

+18
-19
lines changed

include/swift/Sema/ConstraintSystem.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5972,8 +5972,8 @@ Type typeEraseOpenedExistentialReference(Type type, Type existentialBaseType,
59725972
/// Given a type that includes opened existential archetypes derived from
59735973
/// the given generic environment, replace the archetypes with their upper
59745974
/// bounds.
5975-
Type typeEraseOpenedArchetypesWithRoot(Type type,
5976-
const OpenedArchetypeType *root);
5975+
Type typeEraseOpenedArchetypesFromEnvironment(Type type,
5976+
GenericEnvironment *env);
59775977

59785978
/// Returns true if a reference to a member on a given base type will apply
59795979
/// its curried self parameter, assuming it has one.

lib/Sema/CSApply.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -960,8 +960,8 @@ namespace {
960960
auto *env = record.Archetype->getGenericEnvironment();
961961

962962
if (resultTy->hasLocalArchetypeFromEnvironment(env)) {
963-
Type erasedTy = constraints::typeEraseOpenedArchetypesWithRoot(
964-
resultTy, record.Archetype);
963+
Type erasedTy = constraints::typeEraseOpenedArchetypesFromEnvironment(
964+
resultTy, env);
965965
auto range = result->getSourceRange();
966966
result = coerceToType(result, erasedTy, locator);
967967
// FIXME: Implement missing tuple-to-tuple conversion
@@ -1671,8 +1671,8 @@ namespace {
16711671
} else {
16721672
// Erase opened existentials from the type of the thunk; we're
16731673
// going to open the existential inside the thunk's body.
1674-
containerTy = constraints::typeEraseOpenedArchetypesWithRoot(
1675-
containerTy, knownOpened->second);
1674+
containerTy = constraints::typeEraseOpenedArchetypesFromEnvironment(
1675+
containerTy, knownOpened->second->getGenericEnvironment());
16761676
selfTy = containerTy;
16771677
}
16781678
}
@@ -1735,8 +1735,8 @@ namespace {
17351735
// If the base was an opened existential, erase the opened
17361736
// existential.
17371737
if (openedExistential) {
1738-
refType = constraints::typeEraseOpenedArchetypesWithRoot(
1739-
refType, baseTy->castTo<OpenedArchetypeType>());
1738+
refType = constraints::typeEraseOpenedArchetypesFromEnvironment(
1739+
refType, baseTy->castTo<OpenedArchetypeType>()->getGenericEnvironment());
17401740
}
17411741

17421742
return refType;
@@ -1961,8 +1961,8 @@ namespace {
19611961
getConstraintSystem().getConstraintLocator(memberLocator));
19621962
if (knownOpened != solution.OpenedExistentialTypes.end()) {
19631963
curryThunkTy =
1964-
constraints::typeEraseOpenedArchetypesWithRoot(
1965-
curryThunkTy, knownOpened->second)
1964+
constraints::typeEraseOpenedArchetypesFromEnvironment(
1965+
curryThunkTy, knownOpened->second->getGenericEnvironment())
19661966
->castTo<FunctionType>();
19671967
}
19681968
}

lib/Sema/ConstraintSystem.cpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2449,15 +2449,14 @@ Type constraints::typeEraseOpenedExistentialReference(
24492449
/*force=*/false);
24502450
}
24512451

2452-
Type constraints::typeEraseOpenedArchetypesWithRoot(
2453-
Type type, const OpenedArchetypeType *root) {
2454-
assert(root->isRoot() && "Expected a root archetype");
2452+
Type constraints::typeEraseOpenedArchetypesFromEnvironment(
2453+
Type type, GenericEnvironment *env) {
2454+
assert(env->getKind() == GenericEnvironment::Kind::OpenedExistential);
24552455

2456-
auto *env = root->getGenericEnvironment();
24572456
auto sig = env->getGenericSignature();
24582457

24592458
return typeEraseExistentialSelfReferences(
2460-
type, root->getExistentialType(), TypePosition::Covariant, sig,
2459+
type, env->getOpenedExistentialType(), TypePosition::Covariant, sig,
24612460
/*containsFn=*/[](Type t) {
24622461
return t->hasOpenedExistential();
24632462
},

lib/Sema/TypeCheckEffects.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -810,17 +810,17 @@ static Type typeEraseOpenedArchetypes(Type type) {
810810
if (!type || !type->hasOpenedExistential())
811811
return type;
812812

813-
const OpenedArchetypeType *root = nullptr;
813+
GenericEnvironment *env = nullptr;
814814
type.visit([&](Type type) {
815815
if (auto opened = dyn_cast<OpenedArchetypeType>(type.getPointer())) {
816-
root = opened->getRoot();
816+
env = opened->getGenericEnvironment();
817817
}
818818
});
819819

820-
if (!root)
820+
if (!env)
821821
return type;
822822

823-
return constraints::typeEraseOpenedArchetypesWithRoot(type, root);
823+
return constraints::typeEraseOpenedArchetypesFromEnvironment(type, env);
824824
}
825825

826826
/// A type expressing the result of classifying whether a call or function

0 commit comments

Comments
 (0)