Skip to content

Commit bdfb4db

Browse files
committed
[FOLD] show correct lookup context source range in diagnostics
1 parent 462d5fa commit bdfb4db

File tree

1 file changed

+10
-16
lines changed

1 file changed

+10
-16
lines changed

clang/lib/Sema/SemaExprMember.cpp

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -731,7 +731,8 @@ static bool LookupMemberExprInRecord(Sema &SemaRef, LookupResult &R,
731731
<< Typo << DC << DroppedSpecifier
732732
<< SS.getRange());
733733
} else {
734-
SemaRef.Diag(TypoLoc, diag::err_no_member) << Typo << DC << BaseRange;
734+
SemaRef.Diag(TypoLoc, diag::err_no_member)
735+
<< Typo << DC << (SS.isSet() ? SS.getRange() : BaseRange);
735736
}
736737
},
737738
[=](Sema &SemaRef, TypoExpr *TE, TypoCorrection TC) mutable {
@@ -1014,8 +1015,8 @@ Sema::BuildMemberReferenceExpr(Expr *BaseExpr, QualType BaseExprType,
10141015

10151016
if (R.empty()) {
10161017
// Rederive where we looked up.
1017-
DeclContext *DC = (SS.isSet() ? computeDeclContext(SS, false)
1018-
: computeDeclContext(BaseType));
1018+
DeclContext *DC =
1019+
(SS.isSet() ? computeDeclContext(SS) : computeDeclContext(BaseType));
10191020
if (ExtraArgs) {
10201021
ExprResult RetryExpr;
10211022
if (!IsArrow && BaseExpr && !BaseExpr->isTypeDependent()) {
@@ -1041,19 +1042,12 @@ Sema::BuildMemberReferenceExpr(Expr *BaseExpr, QualType BaseExprType,
10411042
}
10421043
}
10431044

1044-
if (SS.isNotEmpty() && !DC) {
1045-
Diag(R.getNameLoc(), diag::err_undeclared_use)
1046-
<< MemberName << SS.getRange();
1047-
} else if (DC) {
1048-
Diag(R.getNameLoc(), diag::err_no_member)
1049-
<< MemberName << DC
1050-
<< (BaseExpr ? BaseExpr->getSourceRange() : SourceRange());
1051-
} else {
1052-
// FIXME: Is this needed?
1053-
Diag(R.getNameLoc(), diag::err_no_member)
1054-
<< MemberName << BaseExprType
1055-
<< (BaseExpr ? BaseExpr->getSourceRange() : SourceRange());
1056-
}
1045+
assert(DC);
1046+
Diag(R.getNameLoc(), diag::err_no_member)
1047+
<< MemberName << DC
1048+
<< (SS.isSet()
1049+
? SS.getRange()
1050+
: (BaseExpr ? BaseExpr->getSourceRange() : SourceRange()));
10571051
return ExprError();
10581052
}
10591053

0 commit comments

Comments
 (0)