@@ -731,7 +731,8 @@ static bool LookupMemberExprInRecord(Sema &SemaRef, LookupResult &R,
731
731
<< Typo << DC << DroppedSpecifier
732
732
<< SS.getRange ());
733
733
} 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);
735
736
}
736
737
},
737
738
[=](Sema &SemaRef, TypoExpr *TE, TypoCorrection TC) mutable {
@@ -1014,8 +1015,8 @@ Sema::BuildMemberReferenceExpr(Expr *BaseExpr, QualType BaseExprType,
1014
1015
1015
1016
if (R.empty ()) {
1016
1017
// 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));
1019
1020
if (ExtraArgs) {
1020
1021
ExprResult RetryExpr;
1021
1022
if (!IsArrow && BaseExpr && !BaseExpr->isTypeDependent ()) {
@@ -1041,19 +1042,12 @@ Sema::BuildMemberReferenceExpr(Expr *BaseExpr, QualType BaseExprType,
1041
1042
}
1042
1043
}
1043
1044
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 ()));
1057
1051
return ExprError ();
1058
1052
}
1059
1053
0 commit comments