| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 #ifndef TOOLS_BLINK_GC_PLUGIN_DIAGNOSTICS_REPORTER_H_ | 5 #ifndef TOOLS_BLINK_GC_PLUGIN_DIAGNOSTICS_REPORTER_H_ |
| 6 #define TOOLS_BLINK_GC_PLUGIN_DIAGNOSTICS_REPORTER_H_ | 6 #define TOOLS_BLINK_GC_PLUGIN_DIAGNOSTICS_REPORTER_H_ |
| 7 | 7 |
| 8 #include "CheckFieldsVisitor.h" | 8 #include "CheckFieldsVisitor.h" |
| 9 #include "CheckFinalizerVisitor.h" | 9 #include "CheckFinalizerVisitor.h" |
| 10 #include "CheckGCRootsVisitor.h" | 10 #include "CheckGCRootsVisitor.h" |
| (...skipping 12 matching lines...) Expand all Loading... |
| 23 explicit DiagnosticsReporter(clang::CompilerInstance&); | 23 explicit DiagnosticsReporter(clang::CompilerInstance&); |
| 24 | 24 |
| 25 bool hasErrorOccurred() const; | 25 bool hasErrorOccurred() const; |
| 26 clang::DiagnosticsEngine::Level getErrorLevel() const; | 26 clang::DiagnosticsEngine::Level getErrorLevel() const; |
| 27 | 27 |
| 28 void ClassMustLeftMostlyDeriveGC(RecordInfo* info); | 28 void ClassMustLeftMostlyDeriveGC(RecordInfo* info); |
| 29 void ClassRequiresTraceMethod(RecordInfo* info); | 29 void ClassRequiresTraceMethod(RecordInfo* info); |
| 30 void BaseRequiresTracing(RecordInfo* derived, | 30 void BaseRequiresTracing(RecordInfo* derived, |
| 31 clang::CXXMethodDecl* trace, | 31 clang::CXXMethodDecl* trace, |
| 32 clang::CXXRecordDecl* base); | 32 clang::CXXRecordDecl* base); |
| 33 void FieldsRequireTracing(RecordInfo* info, | 33 void FieldsImproperlyTraced(RecordInfo* info, |
| 34 clang::CXXMethodDecl* trace); | 34 clang::CXXMethodDecl* trace); |
| 35 void ClassContainsInvalidFields( | 35 void ClassContainsInvalidFields( |
| 36 RecordInfo* info, | 36 RecordInfo* info, |
| 37 const CheckFieldsVisitor::Errors& errors); | 37 const CheckFieldsVisitor::Errors& errors); |
| 38 void ClassContainsGCRoots(RecordInfo* info, | 38 void ClassContainsGCRoots(RecordInfo* info, |
| 39 const CheckGCRootsVisitor::Errors& errors); | 39 const CheckGCRootsVisitor::Errors& errors); |
| 40 void FinalizerAccessesFinalizedFields( | 40 void FinalizerAccessesFinalizedFields( |
| 41 clang::CXXMethodDecl* dtor, | 41 clang::CXXMethodDecl* dtor, |
| 42 const CheckFinalizerVisitor::Errors& errors); | 42 const CheckFinalizerVisitor::Errors& errors); |
| 43 void ClassRequiresFinalization(RecordInfo* info); | 43 void ClassRequiresFinalization(RecordInfo* info); |
| 44 void ClassDoesNotRequireFinalization(RecordInfo* info); | 44 void ClassDoesNotRequireFinalization(RecordInfo* info); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 59 void ClassDeclaresPureVirtualTrace(RecordInfo* info, | 59 void ClassDeclaresPureVirtualTrace(RecordInfo* info, |
| 60 clang::CXXMethodDecl* trace); | 60 clang::CXXMethodDecl* trace); |
| 61 void LeftMostBaseMustBePolymorphic(RecordInfo* derived, | 61 void LeftMostBaseMustBePolymorphic(RecordInfo* derived, |
| 62 clang::CXXRecordDecl* base); | 62 clang::CXXRecordDecl* base); |
| 63 void BaseClassMustDeclareVirtualTrace(RecordInfo* derived, | 63 void BaseClassMustDeclareVirtualTrace(RecordInfo* derived, |
| 64 clang::CXXRecordDecl* base); | 64 clang::CXXRecordDecl* base); |
| 65 | 65 |
| 66 void NoteManualDispatchMethod(clang::CXXMethodDecl* dispatch); | 66 void NoteManualDispatchMethod(clang::CXXMethodDecl* dispatch); |
| 67 void NoteBaseRequiresTracing(BasePoint* base); | 67 void NoteBaseRequiresTracing(BasePoint* base); |
| 68 void NoteFieldRequiresTracing(RecordInfo* holder, clang::FieldDecl* field); | 68 void NoteFieldRequiresTracing(RecordInfo* holder, clang::FieldDecl* field); |
| 69 void NoteFieldShouldNotBeTraced(RecordInfo* holder, clang::FieldDecl* field); |
| 69 void NotePartObjectContainsGCRoot(FieldPoint* point); | 70 void NotePartObjectContainsGCRoot(FieldPoint* point); |
| 70 void NoteFieldContainsGCRoot(FieldPoint* point); | 71 void NoteFieldContainsGCRoot(FieldPoint* point); |
| 71 void NoteUserDeclaredDestructor(clang::CXXMethodDecl* dtor); | 72 void NoteUserDeclaredDestructor(clang::CXXMethodDecl* dtor); |
| 72 void NoteUserDeclaredFinalizer(clang::CXXMethodDecl* dtor); | 73 void NoteUserDeclaredFinalizer(clang::CXXMethodDecl* dtor); |
| 73 void NoteBaseRequiresFinalization(BasePoint* base); | 74 void NoteBaseRequiresFinalization(BasePoint* base); |
| 74 void NoteFieldRequiresFinalization(FieldPoint* field); | 75 void NoteFieldRequiresFinalization(FieldPoint* field); |
| 75 void NoteField(FieldPoint* point, unsigned note); | 76 void NoteField(FieldPoint* point, unsigned note); |
| 76 void NoteField(clang::FieldDecl* field, unsigned note); | 77 void NoteField(clang::FieldDecl* field, unsigned note); |
| 77 void NoteOverriddenNonVirtualTrace(clang::CXXMethodDecl* overridden); | 78 void NoteOverriddenNonVirtualTrace(clang::CXXMethodDecl* overridden); |
| 78 | 79 |
| 79 private: | 80 private: |
| 80 clang::DiagnosticBuilder ReportDiagnostic( | 81 clang::DiagnosticBuilder ReportDiagnostic( |
| 81 clang::SourceLocation location, | 82 clang::SourceLocation location, |
| 82 unsigned diag_id); | 83 unsigned diag_id); |
| 83 | 84 |
| 84 void ReportMissingDispatchMethod(RecordInfo* info, unsigned error); | 85 void ReportMissingDispatchMethod(RecordInfo* info, unsigned error); |
| 85 void ReportMissingDispatch(const clang::FunctionDecl* dispatch, | 86 void ReportMissingDispatch(const clang::FunctionDecl* dispatch, |
| 86 RecordInfo* receiver, | 87 RecordInfo* receiver, |
| 87 unsigned error); | 88 unsigned error); |
| 88 | 89 |
| 89 clang::CompilerInstance& instance_; | 90 clang::CompilerInstance& instance_; |
| 90 clang::DiagnosticsEngine& diagnostic_; | 91 clang::DiagnosticsEngine& diagnostic_; |
| 91 | 92 |
| 92 unsigned diag_class_must_left_mostly_derive_gc_; | 93 unsigned diag_class_must_left_mostly_derive_gc_; |
| 93 unsigned diag_class_requires_trace_method_; | 94 unsigned diag_class_requires_trace_method_; |
| 94 unsigned diag_base_requires_tracing_; | 95 unsigned diag_base_requires_tracing_; |
| 95 unsigned diag_fields_require_tracing_; | 96 unsigned diag_fields_require_tracing_; |
| 97 unsigned diag_fields_improperly_traced_; |
| 96 unsigned diag_class_contains_invalid_fields_; | 98 unsigned diag_class_contains_invalid_fields_; |
| 97 unsigned diag_class_contains_gc_root_; | 99 unsigned diag_class_contains_gc_root_; |
| 98 unsigned diag_class_requires_finalization_; | 100 unsigned diag_class_requires_finalization_; |
| 99 unsigned diag_class_does_not_require_finalization_; | 101 unsigned diag_class_does_not_require_finalization_; |
| 100 unsigned diag_finalizer_accesses_finalized_field_; | 102 unsigned diag_finalizer_accesses_finalized_field_; |
| 101 unsigned diag_finalizer_eagerly_finalized_field_; | 103 unsigned diag_finalizer_eagerly_finalized_field_; |
| 102 unsigned diag_overridden_non_virtual_trace_; | 104 unsigned diag_overridden_non_virtual_trace_; |
| 103 unsigned diag_missing_trace_dispatch_method_; | 105 unsigned diag_missing_trace_dispatch_method_; |
| 104 unsigned diag_missing_finalize_dispatch_method_; | 106 unsigned diag_missing_finalize_dispatch_method_; |
| 105 unsigned diag_virtual_and_manual_dispatch_; | 107 unsigned diag_virtual_and_manual_dispatch_; |
| 106 unsigned diag_missing_trace_dispatch_; | 108 unsigned diag_missing_trace_dispatch_; |
| 107 unsigned diag_missing_finalize_dispatch_; | 109 unsigned diag_missing_finalize_dispatch_; |
| 108 unsigned diag_derives_non_stack_allocated_; | 110 unsigned diag_derives_non_stack_allocated_; |
| 109 unsigned diag_class_overrides_new_; | 111 unsigned diag_class_overrides_new_; |
| 110 unsigned diag_class_declares_pure_virtual_trace_; | 112 unsigned diag_class_declares_pure_virtual_trace_; |
| 111 unsigned diag_left_most_base_must_be_polymorphic_; | 113 unsigned diag_left_most_base_must_be_polymorphic_; |
| 112 unsigned diag_base_class_must_declare_virtual_trace_; | 114 unsigned diag_base_class_must_declare_virtual_trace_; |
| 113 | 115 |
| 114 unsigned diag_base_requires_tracing_note_; | 116 unsigned diag_base_requires_tracing_note_; |
| 115 unsigned diag_field_requires_tracing_note_; | 117 unsigned diag_field_requires_tracing_note_; |
| 118 unsigned diag_field_should_not_be_traced_note_; |
| 116 unsigned diag_raw_ptr_to_gc_managed_class_note_; | 119 unsigned diag_raw_ptr_to_gc_managed_class_note_; |
| 117 unsigned diag_ref_ptr_to_gc_managed_class_note_; | 120 unsigned diag_ref_ptr_to_gc_managed_class_note_; |
| 118 unsigned diag_reference_ptr_to_gc_managed_class_note_; | 121 unsigned diag_reference_ptr_to_gc_managed_class_note_; |
| 119 unsigned diag_own_ptr_to_gc_managed_class_note_; | 122 unsigned diag_own_ptr_to_gc_managed_class_note_; |
| 123 unsigned diag_unique_ptr_to_gc_managed_class_note_; |
| 120 unsigned diag_member_to_gc_unmanaged_class_note_; | 124 unsigned diag_member_to_gc_unmanaged_class_note_; |
| 121 unsigned diag_stack_allocated_field_note_; | 125 unsigned diag_stack_allocated_field_note_; |
| 122 unsigned diag_member_in_unmanaged_class_note_; | 126 unsigned diag_member_in_unmanaged_class_note_; |
| 123 unsigned diag_part_object_to_gc_derived_class_note_; | 127 unsigned diag_part_object_to_gc_derived_class_note_; |
| 124 unsigned diag_part_object_contains_gc_root_note_; | 128 unsigned diag_part_object_contains_gc_root_note_; |
| 125 unsigned diag_field_contains_gc_root_note_; | 129 unsigned diag_field_contains_gc_root_note_; |
| 126 unsigned diag_finalized_field_note_; | 130 unsigned diag_finalized_field_note_; |
| 127 unsigned diag_eagerly_finalized_field_note_; | 131 unsigned diag_eagerly_finalized_field_note_; |
| 128 unsigned diag_user_declared_destructor_note_; | 132 unsigned diag_user_declared_destructor_note_; |
| 129 unsigned diag_user_declared_finalizer_note_; | 133 unsigned diag_user_declared_finalizer_note_; |
| 130 unsigned diag_base_requires_finalization_note_; | 134 unsigned diag_base_requires_finalization_note_; |
| 131 unsigned diag_field_requires_finalization_note_; | 135 unsigned diag_field_requires_finalization_note_; |
| 132 unsigned diag_overridden_non_virtual_trace_note_; | 136 unsigned diag_overridden_non_virtual_trace_note_; |
| 133 unsigned diag_manual_dispatch_method_note_; | 137 unsigned diag_manual_dispatch_method_note_; |
| 134 | 138 |
| 135 }; | 139 }; |
| 136 | 140 |
| 137 #endif // TOOLS_BLINK_GC_PLUGIN_DIAGNOSTICS_REPORTER_H_ | 141 #endif // TOOLS_BLINK_GC_PLUGIN_DIAGNOSTICS_REPORTER_H_ |
| OLD | NEW |