chromium/tools/clang/rewrite_templated_container_fields/tests/container-like-classes-expected.cc

// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <vector>

#include "base/memory/raw_ptr.h"

class List {
 public:
  // Expected rewrite: List(const std::vector<raw_ptr<int>>& arg):
  // member_(arg){}
  List(const std::vector<raw_ptr<int>>& arg) : member_(arg) {}

  // Expected rewrite: std::vector<raw_ptr<int>>::iterator begin()
  std::vector<raw_ptr<int>>::iterator begin() { return member_.begin(); }

  // Expected rewrite: std::vector<raw_ptr<int>>::const_iterator end() const
  std::vector<raw_ptr<int>>::iterator end() { return member_.end(); }

  // Expected rewrite: std::vector<raw_ptr<int>>::const_iterator begin() const
  std::vector<raw_ptr<int>>::const_iterator begin() const {
    return member_.begin();
  }

  // Expected rewrite: std::vector<raw_ptr<int>>::const_iterator end() const
  std::vector<raw_ptr<int>>::const_iterator end() const {
    return member_.end();
  }

 private:
  // Expected rewrite: std::vector<raw_ptr<int>> member_;
  std::vector<raw_ptr<int>> member_;
};

List* get_ptr() {
  return nullptr;
}

void fct() {
  // Expected rewrite: std::vector<raw_ptr<int>> temp;
  std::vector<raw_ptr<int>> temp;
  temp.push_back(nullptr);

  List l(temp);

  // Expected rewrite: for (int* i : l)
  for (int* i : l) {
    (void)i;
  }

  List* ptr = &l;
  // Expected rewrite: for (int* i : *ptr)
  for (int* i : *ptr) {
    (void)i;
  }

  // Expected rewrite: for (int* i : *get_ptr())
  for (int* i : *get_ptr()) {
    (void)i;
  }
}