910e62b5创建于 1月15日历史提交
// Copyright 2025 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <tuple>
#include <vector>

// Expected rewrite:
// constexpr base::span<int> getPtr() {
constexpr int* getPtr() {
  return nullptr;
}

constexpr int default_data[] = {1, 2};

struct A {
  static const int default_value = 42;

  // Expected rewrite:
  // base::span<int> buffer1 = {};
  int* buffer1 = nullptr;
  // No rewrite expected. Added to document current behavior.
  int* buffer2 = NULL;
  // No rewrite expected. Added to document current behavior.
  int* buffer3 = 0;
  // Expected rewrite:
  // base::span<int> buffer4 = getPtr();
  int* buffer4 = getPtr();
  // Expected rewrite:
  // base::span<const int> buffer5 = base::span_from_ref(default_value);
  const int* buffer5 = &default_value;
  // Expected rewrite:
  // base::span<const int> buffer6 = default_data;
  const int* buffer6 = default_data;
};

void fct() {
  A a;
  // Trigger rewrites.
  std::ignore = a.buffer1[0];
  std::ignore = a.buffer2[0];
  std::ignore = a.buffer3[0];
  std::ignore = a.buffer4[0];
  std::ignore = a.buffer5[0];
  std::ignore = a.buffer6[0];
}