================
@@ -38,14 +38,47 @@ inline bool IsLifetimeSafetyDiagnosticEnabled(Sema &S,
const Decl *D) {
D->getBeginLoc());
}
+inline void reportAssignmentImpl(Sema &S, const Expr *IssueExpr,
+ const ValueDecl *LHS, const Expr *RHS,
+ const SourceLocation LHSExploc) {
+ const auto [IssueMsg, _] = FormatIssueExprForSema(IssueExpr);
+ const auto SrcMsgList = FormatSrcExprForSema(RHS);
+ if (SrcMsgList.size() == 1 &&
+ llvm::isa<DeclRefExpr>(SrcMsgList[0].CurrExpr)) {
+ S.Diag(LHSExploc, diag::note_lifetime_safety_note_alias_chain)
+ << FormatValueDeclForSema(LHS) << IssueMsg;
+ } else {
+ for (const auto &SrcMsg : llvm::reverse(SrcMsgList))
+ S.Diag(RHS->getBeginLoc(), diag::note_lifetime_safety_note_alias_chain)
+ << SrcMsg.CurrExpr->getSourceRange() << SrcMsg.Value << IssueMsg;
+ S.Diag(LHSExploc, diag::note_lifetime_safety_note_alias_chain)
+ << FormatValueDeclForSema(LHS) << IssueMsg;
+ }
+}
+
+inline void reportAssignment(Sema &S, const Expr *IssueExpr,
+ const OriginDestExpr &LHS, const Expr *RHS) {
+ if (!LHS || !RHS) {
+ return;
----------------
suoyuan666 wrote:
```cpp
if (!LHS || !RHS)
return;
```
I forget it.
https://github.com/llvm/llvm-project/pull/188467
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits