chromium/tools/clang/raw_ptr_plugin/tests/raw_ptr_exclude_stack_allocated.cpp

// 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>

struct StackAllocatedType {
  using IsStackAllocatedTypeMarker [[maybe_unused]] = int;
};
struct StackAllocatedSubType : public StackAllocatedType {};
struct NonStackAllocatedType {};

struct MyStruct {
  StackAllocatedType* excluded_a;
  StackAllocatedSubType* excluded_b;
  std::vector<StackAllocatedType>* excluded_c;
  std::vector<StackAllocatedSubType>* excluded_d;

  StackAllocatedType& excluded_ref_a;
  StackAllocatedSubType& excluded_ref_b;
  std::vector<StackAllocatedType>& excluded_ref_c;
  std::vector<StackAllocatedSubType>& excluded_ref_d;

  NonStackAllocatedType* err_a;
  std::vector<NonStackAllocatedType>* err_b;
  NonStackAllocatedType& err_ref_a;
  std::vector<NonStackAllocatedType>& err_ref_b;
};