@@ -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