Kaydet (Commit) 1061875d authored tarafından Stephan Bergmann's avatar Stephan Bergmann

Make loplugin:implicitboolconversion find the same in C++17 and pre-C++17

...see a2d814ac
"loplugin:implicitboolconversion" and 24eeb4d2
"loplugin:implicitboolconversion" for things previously only found in C++17.  As
expected, no further occurrences were found.

Change-Id: Id0ab621b82dc3c40c8b5801413fceb73ade1408a
üst e02e0f40
...@@ -284,6 +284,8 @@ public: ...@@ -284,6 +284,8 @@ public:
bool VisitImplicitCastExpr(ImplicitCastExpr const * expr); bool VisitImplicitCastExpr(ImplicitCastExpr const * expr);
bool VisitMaterializeTemporaryExpr(MaterializeTemporaryExpr const * expr);
private: private:
bool isExternCFunctionCall( bool isExternCFunctionCall(
CallExpr const * expr, FunctionProtoType const ** functionType); CallExpr const * expr, FunctionProtoType const ** functionType);
...@@ -905,6 +907,30 @@ bool ImplicitBoolConversion::VisitImplicitCastExpr( ...@@ -905,6 +907,30 @@ bool ImplicitBoolConversion::VisitImplicitCastExpr(
return true; return true;
} }
bool ImplicitBoolConversion::VisitMaterializeTemporaryExpr(
MaterializeTemporaryExpr const * expr)
{
if (ignoreLocation(expr)) {
return true;
}
if (auto const sub = dyn_cast<ExplicitCastExpr>(expr->GetTemporaryExpr())) {
auto const subsub = compat::getSubExprAsWritten(sub);
if (subsub->getType().IgnoreParens() == expr->getType().IgnoreParens()
&& isBool(subsub))
{
report(
DiagnosticsEngine::Warning,
("explicit conversion (%0) from %1 to %2 implicitly converted"
" back to %3"),
expr->getLocStart())
<< sub->getCastKindName() << subsub->getType() << sub->getType()
<< expr->getType() << expr->getSourceRange();
return true;
}
}
return true;
}
bool ImplicitBoolConversion::isExternCFunctionCall( bool ImplicitBoolConversion::isExternCFunctionCall(
CallExpr const * expr, FunctionProtoType const ** functionType) CallExpr const * expr, FunctionProtoType const ** functionType)
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment