Skip to content

Commit 07fc64e

Browse files
committed
AST: Fix a few more places where TypeMatcher would lose sugar
1 parent 527a519 commit 07fc64e

File tree

1 file changed

+6
-9
lines changed

1 file changed

+6
-9
lines changed

include/swift/AST/TypeMatcher.h

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -181,9 +181,8 @@ class TypeMatcher {
181181

182182
bool visitReferenceStorageType(CanReferenceStorageType firstStorage,
183183
Type secondType, Type sugaredFirstType) {
184-
auto _secondStorage = secondType->getCanonicalType();
185-
if (firstStorage->getKind() == _secondStorage->getKind()) {
186-
auto secondStorage = cast<ReferenceStorageType>(_secondStorage);
184+
if (firstStorage->getKind() == secondType->getDesugaredType()->getKind()) {
185+
auto secondStorage = secondType->castTo<ReferenceStorageType>();
187186
return this->visit(firstStorage.getReferentType(),
188187
secondStorage->getReferentType(),
189188
sugaredFirstType->castTo<ReferenceStorageType>()
@@ -195,9 +194,8 @@ class TypeMatcher {
195194

196195
bool visitNominalType(CanNominalType firstNominal,
197196
Type secondType, Type sugaredFirstType) {
198-
auto _secondNominal = secondType->getCanonicalType();
199-
if (firstNominal->getKind() == _secondNominal->getKind()) {
200-
auto secondNominal = cast<NominalType>(_secondNominal);
197+
if (firstNominal->getKind() == secondType->getDesugaredType()->getKind()) {
198+
auto secondNominal = secondType->castTo<NominalType>();
201199
if (firstNominal->getDecl() != secondNominal->getDecl())
202200
return mismatch(firstNominal.getPointer(), secondNominal,
203201
sugaredFirstType);
@@ -216,9 +214,8 @@ class TypeMatcher {
216214

217215
bool visitAnyMetatypeType(CanAnyMetatypeType firstMeta,
218216
Type secondType, Type sugaredFirstType) {
219-
auto _secondMeta = secondType->getCanonicalType();
220-
if (firstMeta->getKind() == _secondMeta->getKind()) {
221-
auto secondMeta = cast<AnyMetatypeType>(_secondMeta);
217+
if (firstMeta->getKind() == secondType->getDesugaredType()->getKind()) {
218+
auto secondMeta = secondType->castTo<AnyMetatypeType>();
222219
return this->visit(firstMeta.getInstanceType(),
223220
secondMeta->getInstanceType(),
224221
sugaredFirstType->castTo<AnyMetatypeType>()

0 commit comments

Comments
 (0)