diff --git a/pytype/typegraph/solver.cc b/pytype/typegraph/solver.cc index 3e0e7494a..0c9cfda34 100644 --- a/pytype/typegraph/solver.cc +++ b/pytype/typegraph/solver.cc @@ -27,8 +27,6 @@ namespace internal { struct RemoveResult { const GoalSet removed_goals; const GoalSet new_goals; - RemoveResult(const GoalSet& removed_goals, const GoalSet& new_goals): - removed_goals(removed_goals), new_goals(new_goals) {} }; struct TraverseState { @@ -36,13 +34,6 @@ struct TraverseState { GoalSet seen_goals; GoalSet removed_goals; GoalSet new_goals; - TraverseState() {} - TraverseState(GoalSet goals_to_remove, GoalSet seen_goals, - GoalSet removed_goals, GoalSet new_goals) - : goals_to_remove(goals_to_remove), - seen_goals(seen_goals), - removed_goals(removed_goals), - new_goals(new_goals) {} }; // Remove all goals that can be fulfilled at the current CFG node. @@ -65,36 +56,35 @@ static std::vector remove_finished_goals(const CFGNode* pos, std::inserter(state.new_goals, state.new_goals.begin()), pointer_less()); std::deque queue; - queue.emplace_back(state); + queue.push_back(std::move(state)); std::vector results; while (!queue.empty()) { state = std::move(queue.front()); queue.pop_front(); if (state.goals_to_remove.empty()) { - results.push_back(RemoveResult(state.removed_goals, state.new_goals)); + results.push_back({state.removed_goals, state.new_goals}); continue; } const auto* goal = *state.goals_to_remove.begin(); state.goals_to_remove.erase(state.goals_to_remove.begin()); if (state.seen_goals.count(goal)) { // Only process a goal once, to prevent infinite loops. - queue.emplace_back(std::move(state)); + queue.push_back(std::move(state)); continue; } state.seen_goals.insert(goal); const auto* origin = goal->FindOrigin(pos); if (!origin) { state.new_goals.insert(goal); - queue.emplace_back(std::move(state)); + queue.push_back(std::move(state)); continue; } state.removed_goals.insert(goal); for (const auto& source_set : origin->source_sets) { GoalSet next_goals_to_remove(state.goals_to_remove); next_goals_to_remove.insert(source_set.begin(), source_set.end()); - queue.push_back(TraverseState(std::move(next_goals_to_remove), - state.seen_goals, state.removed_goals, - state.new_goals)); + queue.push_back({std::move(next_goals_to_remove), state.seen_goals, + state.removed_goals, state.new_goals}); } } return results;