OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "BlinkGCPluginConsumer.h" | 5 #include "BlinkGCPluginConsumer.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <set> | 8 #include <set> |
9 | 9 |
10 #include "CheckDispatchVisitor.h" | 10 #include "CheckDispatchVisitor.h" |
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
188 | 188 |
189 // Check polymorphic classes that are GC-derived or have a trace method. | 189 // Check polymorphic classes that are GC-derived or have a trace method. |
190 if (info->record()->hasDefinition() && info->record()->isPolymorphic()) { | 190 if (info->record()->hasDefinition() && info->record()->isPolymorphic()) { |
191 // TODO: Check classes that inherit a trace method. | 191 // TODO: Check classes that inherit a trace method. |
192 CXXMethodDecl* trace = info->GetTraceMethod(); | 192 CXXMethodDecl* trace = info->GetTraceMethod(); |
193 if (trace || info->IsGCDerived()) | 193 if (trace || info->IsGCDerived()) |
194 CheckPolymorphicClass(info, trace); | 194 CheckPolymorphicClass(info, trace); |
195 } | 195 } |
196 | 196 |
197 { | 197 { |
198 CheckFieldsVisitor visitor; | 198 CheckFieldsVisitor visitor(options_); |
199 if (visitor.ContainsInvalidFields(info)) | 199 if (visitor.ContainsInvalidFields(info)) |
200 reporter_.ClassContainsInvalidFields(info, visitor.invalid_fields()); | 200 reporter_.ClassContainsInvalidFields(info, visitor.invalid_fields()); |
201 } | 201 } |
202 | 202 |
203 if (info->IsGCDerived()) { | 203 if (info->IsGCDerived()) { |
204 // It is illegal for a class to be both stack allocated and garbage | 204 // It is illegal for a class to be both stack allocated and garbage |
205 // collected. | 205 // collected. |
206 if (info->IsStackAllocated()) { | 206 if (info->IsStackAllocated()) { |
207 for (auto& base : info->GetBases()) { | 207 for (auto& base : info->GetBases()) { |
208 RecordInfo* base_info = base.second.info(); | 208 RecordInfo* base_info = base.second.info(); |
(...skipping 505 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
714 SourceLocation spelling_location = source_manager.getSpellingLoc(loc); | 714 SourceLocation spelling_location = source_manager.getSpellingLoc(loc); |
715 PresumedLoc ploc = source_manager.getPresumedLoc(spelling_location); | 715 PresumedLoc ploc = source_manager.getPresumedLoc(spelling_location); |
716 if (ploc.isInvalid()) { | 716 if (ploc.isInvalid()) { |
717 // If we're in an invalid location, we're looking at things that aren't | 717 // If we're in an invalid location, we're looking at things that aren't |
718 // actually stated in the source. | 718 // actually stated in the source. |
719 return false; | 719 return false; |
720 } | 720 } |
721 *filename = ploc.getFilename(); | 721 *filename = ploc.getFilename(); |
722 return true; | 722 return true; |
723 } | 723 } |
OLD | NEW |