diff options
Diffstat (limited to 'clang-tools-extra/cpp11-migrate/UseAuto/UseAutoActions.cpp')
| -rw-r--r-- | clang-tools-extra/cpp11-migrate/UseAuto/UseAutoActions.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/clang-tools-extra/cpp11-migrate/UseAuto/UseAutoActions.cpp b/clang-tools-extra/cpp11-migrate/UseAuto/UseAutoActions.cpp index ceb22390a1f..14986d8dca9 100644 --- a/clang-tools-extra/cpp11-migrate/UseAuto/UseAutoActions.cpp +++ b/clang-tools-extra/cpp11-migrate/UseAuto/UseAutoActions.cpp @@ -28,7 +28,14 @@ void UseAutoFixer::run(const MatchFinder::MatchResult &Result) { if (!SM.isFromMainFile(D->getLocStart())) return; - const CXXConstructExpr *Construct = cast<CXXConstructExpr>(D->getInit()); + const Expr *ExprInit = D->getInit(); + + // Skip expressions with cleanups from the initializer expression. + if (const ExprWithCleanups *E = dyn_cast<ExprWithCleanups>(ExprInit)) + ExprInit = E->getSubExpr(); + + const CXXConstructExpr *Construct = cast<CXXConstructExpr>(ExprInit); + assert(Construct->getNumArgs() == 1u && "Expected constructor with single argument"); |

