@@ -50,29 +50,25 @@ bool FailureDiagnostic::diagnoseAsNote() {
50
50
return false ;
51
51
}
52
52
53
- std::pair< Expr *, bool > FailureDiagnostic::computeAnchor () const {
53
+ Expr *FailureDiagnostic::computeAnchor () const {
54
54
auto &cs = getConstraintSystem ();
55
55
56
56
auto *locator = getLocator ();
57
57
// Resolve the locator to a specific expression.
58
58
SourceRange range;
59
- bool isSubscriptMember =
60
- (!locator->getPath ().empty () && locator->getPath ().back ().getKind () ==
61
- ConstraintLocator::SubscriptMember);
62
-
63
59
ConstraintLocator *resolved = simplifyLocator (cs, locator, range);
64
60
if (!resolved || !resolved->getAnchor ())
65
- return { locator->getAnchor (), true } ;
61
+ return locator->getAnchor ();
66
62
67
63
Expr *anchor = resolved->getAnchor ();
68
64
// FIXME: Work around an odd locator representation that doesn't separate the
69
65
// base of a subscript member from the member access.
70
- if (isSubscriptMember ) {
66
+ if (locator-> isLastElement <LocatorPathElt::SubscriptMember>() ) {
71
67
if (auto subscript = dyn_cast<SubscriptExpr>(anchor))
72
68
anchor = subscript->getBase ();
73
69
}
74
70
75
- return { anchor, !resolved-> getPath (). empty ()} ;
71
+ return anchor;
76
72
}
77
73
78
74
Type FailureDiagnostic::getType (Expr *expr, bool wantRValue) const {
@@ -874,9 +870,6 @@ bool NoEscapeFuncToTypeConversionFailure::diagnoseParameterUse() const {
874
870
}
875
871
876
872
bool MissingForcedDowncastFailure::diagnoseAsError () {
877
- if (hasComplexLocator ())
878
- return false ;
879
-
880
873
auto *expr = getAnchor ();
881
874
if (auto *assignExpr = dyn_cast<AssignExpr>(expr))
882
875
expr = assignExpr->getSrc ();
@@ -894,9 +887,6 @@ bool MissingForcedDowncastFailure::diagnoseAsError() {
894
887
}
895
888
896
889
bool MissingAddressOfFailure::diagnoseAsError () {
897
- if (hasComplexLocator ())
898
- return false ;
899
-
900
890
auto *anchor = getAnchor ();
901
891
auto argTy = getFromType ();
902
892
auto paramTy = getToType ();
@@ -913,9 +903,6 @@ bool MissingAddressOfFailure::diagnoseAsError() {
913
903
}
914
904
915
905
bool MissingExplicitConversionFailure::diagnoseAsError () {
916
- if (hasComplexLocator ())
917
- return false ;
918
-
919
906
auto *DC = getDC ();
920
907
auto *anchor = getAnchor ();
921
908
if (auto *assign = dyn_cast<AssignExpr>(anchor))
@@ -976,9 +963,6 @@ bool MissingExplicitConversionFailure::diagnoseAsError() {
976
963
}
977
964
978
965
bool MemberAccessOnOptionalBaseFailure::diagnoseAsError () {
979
- if (hasComplexLocator ())
980
- return false ;
981
-
982
966
auto *anchor = getAnchor ();
983
967
auto baseType = getType (anchor);
984
968
bool resultIsOptional = ResultTypeIsOptional;
@@ -1101,9 +1085,6 @@ class VarDeclMultipleReferencesChecker : public ASTWalker {
1101
1085
};
1102
1086
1103
1087
bool MissingOptionalUnwrapFailure::diagnoseAsError () {
1104
- if (hasComplexLocator ())
1105
- return false ;
1106
-
1107
1088
if (!getUnwrappedType ()->isBool ()) {
1108
1089
if (diagnoseConversionToBool ())
1109
1090
return true ;
0 commit comments