From 10eb4b67d8c7503a3df9a19efad1df4e37437f1b Mon Sep 17 00:00:00 2001 From: David Blaikie Date: Fri, 9 Dec 2011 21:42:37 +0000 Subject: Add notes for suppressing and (if it's a zero-arg function returning bool) fixing the function-to-bool conversion warning. llvm-svn: 146280 --- clang/lib/Sema/SemaChecking.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'clang/lib/Sema/SemaChecking.cpp') diff --git a/clang/lib/Sema/SemaChecking.cpp b/clang/lib/Sema/SemaChecking.cpp index a0138d8723a..db60f2388aa 100644 --- a/clang/lib/Sema/SemaChecking.cpp +++ b/clang/lib/Sema/SemaChecking.cpp @@ -3771,6 +3771,16 @@ void CheckImplicitConversion(Sema &S, Expr *E, QualType T, if (FunctionDecl* F = dyn_cast(D)) { S.Diag(E->getExprLoc(), diag::warn_impcast_function_to_bool) << F << E->getSourceRange() << SourceRange(CC); + S.Diag(E->getExprLoc(), diag::note_function_to_bool_silence) + << FixItHint::CreateInsertion(E->getExprLoc(), "&"); + QualType ReturnType; + UnresolvedSet<4> NonTemplateOverloads; + S.isExprCallable(*E, ReturnType, NonTemplateOverloads); + if (!ReturnType.isNull() + && ReturnType->isSpecificBuiltinType(BuiltinType::Bool)) + S.Diag(E->getExprLoc(), diag::note_function_to_bool_call) + << FixItHint::CreateInsertion( + S.getPreprocessor().getLocForEndOfToken(E->getLocEnd()), "()"); return; } } -- cgit v1.2.3