Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(58)

Side by Side Diff: tools/clang/blink_gc_plugin/BlinkGCPluginConsumer.cpp

Issue 1901643003: Always enable warn-raw-ptr's check of raw heap pointers. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@sof-gc-plugin-upd
Patch Set: remove unused warning diagnostic Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 diag_class_must_left_mostly_derive_gc_ = diagnostic_.getCustomDiagID( 206 diag_class_must_left_mostly_derive_gc_ = diagnostic_.getCustomDiagID(
207 getErrorLevel(), kClassMustLeftMostlyDeriveGC); 207 getErrorLevel(), kClassMustLeftMostlyDeriveGC);
208 diag_class_requires_trace_method_ = 208 diag_class_requires_trace_method_ =
209 diagnostic_.getCustomDiagID(getErrorLevel(), kClassRequiresTraceMethod); 209 diagnostic_.getCustomDiagID(getErrorLevel(), kClassRequiresTraceMethod);
210 diag_base_requires_tracing_ = 210 diag_base_requires_tracing_ =
211 diagnostic_.getCustomDiagID(getErrorLevel(), kBaseRequiresTracing); 211 diagnostic_.getCustomDiagID(getErrorLevel(), kBaseRequiresTracing);
212 diag_fields_require_tracing_ = 212 diag_fields_require_tracing_ =
213 diagnostic_.getCustomDiagID(getErrorLevel(), kFieldsRequireTracing); 213 diagnostic_.getCustomDiagID(getErrorLevel(), kFieldsRequireTracing);
214 diag_class_contains_invalid_fields_ = diagnostic_.getCustomDiagID( 214 diag_class_contains_invalid_fields_ = diagnostic_.getCustomDiagID(
215 getErrorLevel(), kClassContainsInvalidFields); 215 getErrorLevel(), kClassContainsInvalidFields);
216 diag_class_contains_invalid_fields_warning_ = diagnostic_.getCustomDiagID(
217 getErrorLevel(), kClassContainsInvalidFields);
218 diag_class_contains_gc_root_ = 216 diag_class_contains_gc_root_ =
219 diagnostic_.getCustomDiagID(getErrorLevel(), kClassContainsGCRoot); 217 diagnostic_.getCustomDiagID(getErrorLevel(), kClassContainsGCRoot);
220 diag_class_requires_finalization_ = diagnostic_.getCustomDiagID( 218 diag_class_requires_finalization_ = diagnostic_.getCustomDiagID(
221 getErrorLevel(), kClassRequiresFinalization); 219 getErrorLevel(), kClassRequiresFinalization);
222 diag_class_does_not_require_finalization_ = diagnostic_.getCustomDiagID( 220 diag_class_does_not_require_finalization_ = diagnostic_.getCustomDiagID(
223 DiagnosticsEngine::Warning, kClassDoesNotRequireFinalization); 221 DiagnosticsEngine::Warning, kClassDoesNotRequireFinalization);
224 diag_finalizer_accesses_finalized_field_ = diagnostic_.getCustomDiagID( 222 diag_finalizer_accesses_finalized_field_ = diagnostic_.getCustomDiagID(
225 getErrorLevel(), kFinalizerAccessesFinalizedField); 223 getErrorLevel(), kFinalizerAccessesFinalizedField);
226 diag_finalizer_eagerly_finalized_field_ = diagnostic_.getCustomDiagID( 224 diag_finalizer_eagerly_finalized_field_ = diagnostic_.getCustomDiagID(
227 getErrorLevel(), kFinalizerAccessesEagerlyFinalizedField); 225 getErrorLevel(), kFinalizerAccessesEagerlyFinalizedField);
(...skipping 729 matching lines...) Expand 10 before | Expand all | Expand 10 after
957 ReportDiagnostic(trace->getLocStart(), diag_fields_require_tracing_) 955 ReportDiagnostic(trace->getLocStart(), diag_fields_require_tracing_)
958 << info->record(); 956 << info->record();
959 for (auto& field : info->GetFields()) 957 for (auto& field : info->GetFields())
960 if (!field.second.IsProperlyTraced()) 958 if (!field.second.IsProperlyTraced())
961 NoteFieldRequiresTracing(info, field.first); 959 NoteFieldRequiresTracing(info, field.first);
962 } 960 }
963 961
964 void BlinkGCPluginConsumer::ReportClassContainsInvalidFields( 962 void BlinkGCPluginConsumer::ReportClassContainsInvalidFields(
965 RecordInfo* info, 963 RecordInfo* info,
966 const CheckFieldsVisitor::Errors& errors) { 964 const CheckFieldsVisitor::Errors& errors) {
967 bool only_warnings = options_.warn_raw_ptr;
968 for (auto& error : errors)
969 if (!CheckFieldsVisitor::IsWarning(error.second))
970 only_warnings = false;
971 965
972 ReportDiagnostic(info->record()->getLocStart(), 966 ReportDiagnostic(info->record()->getLocStart(),
973 only_warnings ?
974 diag_class_contains_invalid_fields_warning_ :
975 diag_class_contains_invalid_fields_) 967 diag_class_contains_invalid_fields_)
976 << info->record(); 968 << info->record();
977 969
978 for (auto& error : errors) { 970 for (auto& error : errors) {
979 unsigned note; 971 unsigned note;
980 if (CheckFieldsVisitor::IsRawPtrError(error.second)) { 972 if (error.second == CheckFieldsVisitor::kRawPtrToGCManaged) {
981 note = diag_raw_ptr_to_gc_managed_class_note_; 973 note = diag_raw_ptr_to_gc_managed_class_note_;
982 } else if (CheckFieldsVisitor::IsReferencePtrError(error.second)) {
983 note = diag_reference_ptr_to_gc_managed_class_note_;
984 } else if (error.second == CheckFieldsVisitor::kRefPtrToGCManaged) { 974 } else if (error.second == CheckFieldsVisitor::kRefPtrToGCManaged) {
985 note = diag_ref_ptr_to_gc_managed_class_note_; 975 note = diag_ref_ptr_to_gc_managed_class_note_;
976 } else if (error.second == CheckFieldsVisitor::kReferencePtrToGCManaged) {
977 note = diag_reference_ptr_to_gc_managed_class_note_;
986 } else if (error.second == CheckFieldsVisitor::kOwnPtrToGCManaged) { 978 } else if (error.second == CheckFieldsVisitor::kOwnPtrToGCManaged) {
987 note = diag_own_ptr_to_gc_managed_class_note_; 979 note = diag_own_ptr_to_gc_managed_class_note_;
988 } else if (error.second == CheckFieldsVisitor::kMemberToGCUnmanaged) { 980 } else if (error.second == CheckFieldsVisitor::kMemberToGCUnmanaged) {
989 note = diag_member_to_gc_unmanaged_class_note_; 981 note = diag_member_to_gc_unmanaged_class_note_;
990 } else if (error.second == CheckFieldsVisitor::kMemberInUnmanaged) { 982 } else if (error.second == CheckFieldsVisitor::kMemberInUnmanaged) {
991 note = diag_member_in_unmanaged_class_note_; 983 note = diag_member_in_unmanaged_class_note_;
992 } else if (error.second == CheckFieldsVisitor::kPtrFromHeapToStack) { 984 } else if (error.second == CheckFieldsVisitor::kPtrFromHeapToStack) {
993 note = diag_stack_allocated_field_note_; 985 note = diag_stack_allocated_field_note_;
994 } else if (error.second == CheckFieldsVisitor::kGCDerivedPartObject) { 986 } else if (error.second == CheckFieldsVisitor::kGCDerivedPartObject) {
995 note = diag_part_object_to_gc_derived_class_note_; 987 note = diag_part_object_to_gc_derived_class_note_;
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
1192 void BlinkGCPluginConsumer::NoteField(FieldDecl* field, unsigned note) { 1184 void BlinkGCPluginConsumer::NoteField(FieldDecl* field, unsigned note) {
1193 ReportDiagnostic(field->getLocStart(), note) << field; 1185 ReportDiagnostic(field->getLocStart(), note) << field;
1194 } 1186 }
1195 1187
1196 void BlinkGCPluginConsumer::NoteOverriddenNonVirtualTrace( 1188 void BlinkGCPluginConsumer::NoteOverriddenNonVirtualTrace(
1197 CXXMethodDecl* overridden) { 1189 CXXMethodDecl* overridden) {
1198 ReportDiagnostic(overridden->getLocStart(), 1190 ReportDiagnostic(overridden->getLocStart(),
1199 diag_overridden_non_virtual_trace_note_) 1191 diag_overridden_non_virtual_trace_note_)
1200 << overridden; 1192 << overridden;
1201 } 1193 }
OLDNEW
« no previous file with comments | « tools/clang/blink_gc_plugin/BlinkGCPluginConsumer.h ('k') | tools/clang/blink_gc_plugin/BlinkGCPluginOptions.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698