1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef IGNORE_FIELDS_H_
6#define IGNORE_FIELDS_H_
7
8#include "heap/stubs.h"
9
10namespace blink {
11
12class HeapObject : public GarbageCollected<HeapObject> {
13public:
14    virtual void trace(Visitor*) { }
15};
16
17// Don't warn about raw pointers to heap allocated objects.
18class A : public GarbageCollected<A>{
19private:
20    GC_PLUGIN_IGNORE("http://crbug.com/12345")
21    HeapObject* m_obj;
22};
23
24// Don't require trace method when (all) GC fields are ignored.
25class B : public GarbageCollected<B> {
26private:
27    GC_PLUGIN_IGNORE("http://crbug.com/12345")
28    Member<HeapObject> m_one;
29};
30
31// Don't require tracing an ignored field.
32class C : public GarbageCollected<C> {
33public:
34    void trace(Visitor*);
35private:
36    Member<HeapObject> m_one;
37    GC_PLUGIN_IGNORE("http://crbug.com/12345")
38    Member<HeapObject> m_two;
39};
40
41}
42
43#endif
44