aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Sema/SemaStmt.cpp
diff options
context:
space:
mode:
authorAaron Ballman <aaron@aaronballman.com>2025-06-13 06:45:40 -0400
committerGitHub <noreply@github.com>2025-06-13 06:45:40 -0400
commit9eef4d1c5fa6b1bcbbe675c14ca8301d5d346f7b (patch)
treefa96a6126d9a464940832afd388fd4c34c664cb8 /clang/lib/Sema/SemaStmt.cpp
parent541e5118ce570c9bed74cb5ff836f88cf1c0e644 (diff)
downloadllvm-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.cpp14
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();