diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2017-08-15 09:44:18 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2017-08-15 13:46:29 +0200 |
commit | 718cdd43c25783d9cd402e381123efe3981cc514 (patch) | |
tree | e8c4c20b8173f15520724a3d3e216bfbe0e98851 /compilerplugins | |
parent | 4cd418692ed71e31fdf2fbd85cef89aa29df55c9 (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.cxx | 5 |
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())) |