@@ -1333,7 +1333,7 @@ diagnoseTypeMemberOnInstanceLookup(Type baseObjTy,
1333
1333
static DeclName
1334
1334
findCorrectEnumCaseName (Type Ty, TypoCorrectionResults &corrections,
1335
1335
DeclName memberName) {
1336
- if (!memberName.isSimpleName ())
1336
+ if (memberName. isSpecial () || !memberName.isSimpleName ())
1337
1337
return DeclName ();
1338
1338
if (!Ty->is <EnumType>() &&
1339
1339
!Ty->is <BoundGenericEnumType>())
@@ -7562,18 +7562,23 @@ bool FailureDiagnosis::diagnoseMemberFailures(
7562
7562
7563
7563
// If this is a tuple, then the index needs to be valid.
7564
7564
if (auto tuple = baseObjTy->getAs <TupleType>()) {
7565
- StringRef nameStr = memberName.getBaseIdentifier ().str ();
7566
- int fieldIdx = -1 ;
7567
- // Resolve a number reference into the tuple type.
7568
- unsigned Value = 0 ;
7569
- if (!nameStr.getAsInteger (10 , Value) && Value < tuple->getNumElements ()) {
7570
- fieldIdx = Value;
7571
- } else {
7572
- fieldIdx = tuple->getNamedElementId (memberName.getBaseIdentifier ());
7573
- }
7565
+ auto baseName = memberName.getBaseName ();
7574
7566
7575
- if (fieldIdx != -1 )
7576
- return false ; // Lookup is valid.
7567
+ if (!baseName.isSpecial ()) {
7568
+ StringRef nameStr = baseName.userFacingName ();
7569
+
7570
+ int fieldIdx = -1 ;
7571
+ // Resolve a number reference into the tuple type.
7572
+ unsigned Value = 0 ;
7573
+ if (!nameStr.getAsInteger (10 , Value) && Value < tuple->getNumElements ()) {
7574
+ fieldIdx = Value;
7575
+ } else {
7576
+ fieldIdx = tuple->getNamedElementId (memberName.getBaseIdentifier ());
7577
+ }
7578
+
7579
+ if (fieldIdx != -1 )
7580
+ return false ; // Lookup is valid.
7581
+ }
7577
7582
7578
7583
diagnose (BaseLoc, diag::could_not_find_tuple_member, baseObjTy, memberName)
7579
7584
.highlight (memberRange);
0 commit comments