================
@@ -13587,10 +13587,22 @@ static bool CheckForModifiableLvalue(Expr *E,
SourceLocation Loc, Sema &S) {
SourceRange Assign;
if (Loc != OrigLoc)
Assign = SourceRange(OrigLoc, OrigLoc);
- if (NeedType)
+ if (NeedType) {
S.Diag(Loc, DiagID) << E->getType() << E->getSourceRange() << Assign;
- else
+ } else {
+ ExprResult Deref;
+ unsigned FixitDiagID = 0;
+ {
+ Sema::TentativeAnalysisScope Trap(S);
+ Deref = S.ActOnUnaryOp(S.getCurScope(), Loc, tok::star, E);
+ }
S.Diag(Loc, DiagID) << E->getSourceRange() << Assign;
+ if (Deref.isUsable() &&
+ Deref.get()->isModifiableLvalue(S.Context, &Loc) == Expr::MLV_Valid) {
+ FixitDiagID = diag::note_typecheck_expression_not_modifiable_lvalue;
+ S.Diag(Loc, FixitDiagID) << E->getSourceRange() << Assign;
----------------
Sirraide wrote:
The `FixitDiagID` can just be inlined here.
This is also missing the actual fix-it hint; I’d suggest looking for uses of
`FixItHint::CreateInsertion` and working with that.
https://github.com/llvm/llvm-project/pull/94159
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits