diff options
| author | Gabor Greif <ggreif@gmail.com> | 2010-09-08 00:31:13 +0000 |
|---|---|---|
| committer | Gabor Greif <ggreif@gmail.com> | 2010-09-08 00:31:13 +0000 |
| commit | 80c218386fe602893aecf7fd3b9df789ef0bba56 (patch) | |
| tree | 9d9eeaec36ec542f146d91b3671759b3a0b786bb /clang/lib/Sema/SemaDecl.cpp | |
| parent | 136d035e45bee162623ba29957742700b66a3c52 (diff) | |
| download | bcm5719-llvm-80c218386fe602893aecf7fd3b9df789ef0bba56.tar.gz bcm5719-llvm-80c218386fe602893aecf7fd3b9df789ef0bba56.zip | |
add a fixit when 'main' does ot return 'int'; review welcome
llvm-svn: 113324
Diffstat (limited to 'clang/lib/Sema/SemaDecl.cpp')
| -rw-r--r-- | clang/lib/Sema/SemaDecl.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index df077fd7097..2b42fb60fbb 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -3171,7 +3171,7 @@ Sema::ActOnFunctionDeclarator(Scope* S, Declarator& D, DeclContext* DC, SC = SC_Static; break; } - case DeclSpec::SCS_private_extern: SC = SC_PrivateExtern;break; + case DeclSpec::SCS_private_extern: SC = SC_PrivateExtern; break; } if (D.getDeclSpec().isThreadSpecified()) @@ -3976,8 +3976,14 @@ void Sema::CheckMain(FunctionDecl* FD) { const FunctionType* FT = T->getAs<FunctionType>(); if (!Context.hasSameUnqualifiedType(FT->getResultType(), Context.IntTy)) { - // TODO: add a replacement fixit to turn the return type into 'int'. - Diag(FD->getTypeSpecStartLoc(), diag::err_main_returns_nonint); + TypeSourceInfo *TSI = FD->getTypeSourceInfo(); + TypeLoc TL = TSI->getTypeLoc(); + const SemaDiagnosticBuilder& D = Diag(FD->getTypeSpecStartLoc(), + diag::err_main_returns_nonint); + if (FunctionTypeLoc* PTL = dyn_cast<FunctionTypeLoc>(&TL)) { + D << FixItHint::CreateReplacement(PTL->getResultLoc().getSourceRange(), + "int"); + } FD->setInvalidDecl(true); } |

