HomePhabricator

[clang-tidy] Fix PR32896: detect initializer lists in modernize-use-empalce

Description

[clang-tidy] Fix PR32896: detect initializer lists in modernize-use-empalce

Summary:
This patch fixes PR32896.

The problem was that modernize-use-emplace incorrectly removed changed push_back into emplace_back, removing explicit constructor call with initializer list parameter, resulting in compiler error after applying fixits.
modernize-use-emplace used to check if matched constructor had InitListExpr, but didn't check against CXXStdInitializerListExpr.

Eg.

std::vector<std::vector<int>> v;
  v.push_back(std::vector<int>({1})); // --> v.emplace_back({1});

Reviewers: Prazek, alexfh, aaron.ballman

Reviewed By: Prazek, alexfh, aaron.ballman

Subscribers: xazax.hun, cfe-commits

Tags: #clang-tools-extra

Differential Revision: https://reviews.llvm.org/D32767

Details

Committed
kuharMay 5 2017, 1:35 PM
Reviewer
Prazek
Differential Revision
D32767: [clang-tidy] Fix PR32896: detect initializer lists in modernize-use-empalce
Branches
Unknown
Tags
Unknown