@@ -181,9 +181,8 @@ class TypeMatcher {
181
181
182
182
bool visitReferenceStorageType (CanReferenceStorageType firstStorage,
183
183
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>();
187
186
return this ->visit (firstStorage.getReferentType (),
188
187
secondStorage->getReferentType (),
189
188
sugaredFirstType->castTo <ReferenceStorageType>()
@@ -195,9 +194,8 @@ class TypeMatcher {
195
194
196
195
bool visitNominalType (CanNominalType firstNominal,
197
196
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>();
201
199
if (firstNominal->getDecl () != secondNominal->getDecl ())
202
200
return mismatch (firstNominal.getPointer (), secondNominal,
203
201
sugaredFirstType);
@@ -216,9 +214,8 @@ class TypeMatcher {
216
214
217
215
bool visitAnyMetatypeType (CanAnyMetatypeType firstMeta,
218
216
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>();
222
219
return this ->visit (firstMeta.getInstanceType (),
223
220
secondMeta->getInstanceType (),
224
221
sugaredFirstType->castTo <AnyMetatypeType>()
0 commit comments