diff options
author | Aaron Ballman <aaron@aaronballman.com> | 2025-06-13 06:45:40 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-06-13 06:45:40 -0400 |
commit | 9eef4d1c5fa6b1bcbbe675c14ca8301d5d346f7b (patch) | |
tree | fa96a6126d9a464940832afd388fd4c34c664cb8 /clang/lib/Sema/SemaStmt.cpp | |
parent | 541e5118ce570c9bed74cb5ff836f88cf1c0e644 (diff) | |
download | llvm-9eef4d1c5fa6b1bcbbe675c14ca8301d5d346f7b.zip llvm-9eef4d1c5fa6b1bcbbe675c14ca8301d5d346f7b.tar.gz llvm-9eef4d1c5fa6b1bcbbe675c14ca8301d5d346f7b.tar.bz2 |
Remove delayed typo expressions (#143423)
This removes the delayed typo correction functionality from Clang
(regular typo correction still remains) due to fragility of the
solution.
An RFC was posted here:
https://discourse.llvm.org/t/rfc-removing-support-for-delayed-typo-correction/86631
and while that RFC was asking for folks to consider stepping up to be
maintainers, and we did have a few new contributors show some interest,
experiments show that it's likely worth it to remove this functionality
entirely and focus efforts on improving regular typo correction.
This removal fixes ~20 open issues (quite possibly more), improves
compile time performance by roughly .3-.4%
(https://llvm-compile-time-tracker.com/?config=Overview&stat=instructions%3Au&remote=AaronBallman&sortBy=date),
and does not appear to regress diagnostic behavior in a way we wouldn't
find acceptable.
Fixes #142457
Fixes #139913
Fixes #138850
Fixes #137867
Fixes #137860
Fixes #107840
Fixes #93308
Fixes #69470
Fixes #59391
Fixes #58172
Fixes #46215
Fixes #45915
Fixes #45891
Fixes #44490
Fixes #36703
Fixes #32903
Fixes #23312
Fixes #69874
Diffstat (limited to 'clang/lib/Sema/SemaStmt.cpp')
-rw-r--r-- | clang/lib/Sema/SemaStmt.cpp | 14 |
1 files changed, 3 insertions, 11 deletions
diff --git a/clang/lib/Sema/SemaStmt.cpp b/clang/lib/Sema/SemaStmt.cpp index 50f5757..923a9e8 100644 --- a/clang/lib/Sema/SemaStmt.cpp +++ b/clang/lib/Sema/SemaStmt.cpp @@ -535,12 +535,7 @@ Sema::ActOnCaseExpr(SourceLocation CaseLoc, ExprResult Val) { return ER; }; - ExprResult Converted = CorrectDelayedTyposInExpr( - Val, /*InitDecl=*/nullptr, /*RecoverUncorrectedTypos=*/false, - CheckAndFinish); - if (Converted.get() == Val.get()) - Converted = CheckAndFinish(Val.get()); - return Converted; + return CheckAndFinish(Val.get()); } StmtResult @@ -2344,7 +2339,7 @@ StmtResult Sema::ActOnForEachLValueExpr(Expr *E) { static bool FinishForRangeVarDecl(Sema &SemaRef, VarDecl *Decl, Expr *Init, SourceLocation Loc, int DiagID) { if (Decl->getType()->isUndeducedType()) { - ExprResult Res = SemaRef.CorrectDelayedTyposInExpr(Init); + ExprResult Res = Init; if (!Res.isUsable()) { Decl->setInvalidDecl(); return true; @@ -3845,10 +3840,7 @@ bool Sema::DeduceFunctionTypeFromReturnExpr(FunctionDecl *FD, StmtResult Sema::ActOnReturnStmt(SourceLocation ReturnLoc, Expr *RetValExp, Scope *CurScope) { - // Correct typos, in case the containing function returns 'auto' and - // RetValExp should determine the deduced type. - ExprResult RetVal = CorrectDelayedTyposInExpr( - RetValExp, nullptr, /*RecoverUncorrectedTypos=*/true); + ExprResult RetVal = RetValExp; if (RetVal.isInvalid()) return StmtError(); |