diff options
author | Dmitri Gribenko <gribozavr@gmail.com> | 2013-01-21 11:25:03 +0000 |
---|---|---|
committer | Dmitri Gribenko <gribozavr@gmail.com> | 2013-01-21 11:25:03 +0000 |
commit | 7ec6f3ddeb4cd7168b9efb6f0a950e852c292a56 (patch) | |
tree | f30b217180b6821d1574498514a41196f6e1e9dc /clang/lib/Sema/SemaDecl.cpp | |
parent | 9b46312c87561f0e7fe286de5d7341a139bee067 (diff) | |
download | bcm5719-llvm-7ec6f3ddeb4cd7168b9efb6f0a950e852c292a56.tar.gz bcm5719-llvm-7ec6f3ddeb4cd7168b9efb6f0a950e852c292a56.zip |
Add a fixit for _Noreturn main,
add tests for fixits removing static and inline from main
llvm-svn: 173024
Diffstat (limited to 'clang/lib/Sema/SemaDecl.cpp')
-rw-r--r-- | clang/lib/Sema/SemaDecl.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index 7936efa136d..f73ea9875a5 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -6474,8 +6474,14 @@ void Sema::CheckMain(FunctionDecl* FD, const DeclSpec& DS) { if (FD->isInlineSpecified()) Diag(DS.getInlineSpecLoc(), diag::err_inline_main) << FixItHint::CreateRemoval(DS.getInlineSpecLoc()); - if (DS.isNoreturnSpecified()) - Diag(DS.getNoreturnSpecLoc(), diag::ext_noreturn_main); + if (DS.isNoreturnSpecified()) { + SourceLocation NoreturnLoc = DS.getNoreturnSpecLoc(); + SourceRange NoreturnRange(NoreturnLoc, + PP.getLocForEndOfToken(NoreturnLoc)); + Diag(NoreturnLoc, diag::ext_noreturn_main); + Diag(NoreturnLoc, diag::note_main_remove_noreturn) + << FixItHint::CreateRemoval(NoreturnRange); + } if (FD->isConstexpr()) { Diag(DS.getConstexprSpecLoc(), diag::err_constexpr_main) << FixItHint::CreateRemoval(DS.getConstexprSpecLoc()); |