summaryrefslogtreecommitdiff
path: root/compilerplugins
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2017-08-15 09:44:18 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2017-08-15 13:46:29 +0200
commit718cdd43c25783d9cd402e381123efe3981cc514 (patch)
treee8c4c20b8173f15520724a3d3e216bfbe0e98851 /compilerplugins
parent4cd418692ed71e31fdf2fbd85cef89aa29df55c9 (diff)
loplugin:redundantcast, find more functional casts
In the enum types that caused the problem look like this when I dump then: EnumType 0xdb45770 'enum SvxFrameDirection' `-Enum 0xdb456d8 'SvxFrameDirection' SubstTemplateTypeParmType 0xdb61200 'enum SvxFrameDirection' sugar |-TemplateTypeParmType 0xd7518f0 'EnumT' dependent depth 0 index 0 | `-TemplateTypeParm 0xd7518a8 'EnumT' `-EnumType 0xdb45770 'enum SvxFrameDirection' `-Enum 0xdb456d8 'SvxFrameDirection' Change-Id: Id8fedabe43b7a27df61a2320a9acbf54d2dc7882 Reviewed-on: https://gerrit.libreoffice.org/41169 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'compilerplugins')
-rw-r--r--compilerplugins/clang/redundantcast.cxx5
1 files changed, 2 insertions, 3 deletions
diff --git a/compilerplugins/clang/redundantcast.cxx b/compilerplugins/clang/redundantcast.cxx
index 2a66f8ff0704..56afdf13f090 100644
--- a/compilerplugins/clang/redundantcast.cxx
+++ b/compilerplugins/clang/redundantcast.cxx
@@ -580,7 +580,6 @@ bool RedundantCast::VisitCXXFunctionalCastExpr(CXXFunctionalCastExpr const * exp
if (ignoreLocation(expr)) {
return true;
}
-
// Restrict this to "real" casts (compared to uses of braced-init-list, like
//
// Foo{bar, baz}
@@ -590,7 +589,7 @@ bool RedundantCast::VisitCXXFunctionalCastExpr(CXXFunctionalCastExpr const * exp
// std::initializer_list<Foo>{bar, baz}
//
// ), and only to cases where the sub-expression already is a prvalue of
- // non-class type (and thus the cast is unlikely meant to create a
+ // non-class type (and thus the cast is unlikely to be meant to create a
// temporary):
auto const sub = compat::getSubExprAsWritten(expr);
if (sub->getValueKind() != VK_RValue || expr->getType()->isRecordType()
@@ -634,7 +633,7 @@ bool RedundantCast::VisitCXXFunctionalCastExpr(CXXFunctionalCastExpr const * exp
}
auto const t1 = expr->getTypeAsWritten();
- auto const t2 = sub->getType();
+ auto const t2 = sub->getType().getDesugaredType(compiler.getASTContext());
if (t1 != t2)
return true;
if (!isOkToRemoveArithmeticCast(t1, t2, expr->getSubExpr()))