aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Malcolm <dmalcolm@redhat.com>2023-08-21 21:13:17 -0400
committerDavid Malcolm <dmalcolm@redhat.com>2023-08-21 21:13:17 -0400
commite40a935db29cfd8f1c68b1d0b7219d71b9c5abb0 (patch)
tree64267b41b9351e97ff84c50756bcc42814c0a845
parent5f55721049415d4887681f3c7115d8619ab80ccd (diff)
downloadgcc-e40a935db29cfd8f1c68b1d0b7219d71b9c5abb0.zip
gcc-e40a935db29cfd8f1c68b1d0b7219d71b9c5abb0.tar.gz
gcc-e40a935db29cfd8f1c68b1d0b7219d71b9c5abb0.tar.bz2
analyzer: convert note_adding_context to annotating_context
This is enabling work towards the context being able to inject events into diagnostic paths, rather than just notes after the warning. gcc/analyzer/ChangeLog: * region-model.cc (class check_external_function_for_access_attr::annotating_ctxt): Convert to an annotating_context. * region-model.h (class note_adding_context): Rename to... (class annotating_context): ...this, updating the "warn" method. (note_adding_context::make_note): Replace with... (annotating_context::add_annotations): ...this. Signed-off-by: David Malcolm <dmalcolm@redhat.com>
-rw-r--r--gcc/analyzer/region-model.cc12
-rw-r--r--gcc/analyzer/region-model.h14
2 files changed, 13 insertions, 13 deletions
diff --git a/gcc/analyzer/region-model.cc b/gcc/analyzer/region-model.cc
index 494a9cd..5c165ff 100644
--- a/gcc/analyzer/region-model.cc
+++ b/gcc/analyzer/region-model.cc
@@ -1641,23 +1641,23 @@ check_external_function_for_access_attr (const gcall *call,
if (access->mode == access_write_only
|| access->mode == access_read_write)
{
- /* Subclass of decorated_region_model_context that
+ /* Subclass of annotating_context that
adds a note about the attr access to any saved diagnostics. */
- class annotating_ctxt : public note_adding_context
+ class annotating_ctxt : public annotating_context
{
public:
annotating_ctxt (tree callee_fndecl,
const attr_access &access,
region_model_context *ctxt)
- : note_adding_context (ctxt),
+ : annotating_context (ctxt),
m_callee_fndecl (callee_fndecl),
m_access (access)
{
}
- std::unique_ptr<pending_note> make_note () final override
+ void add_annotations () final override
{
- return make_unique<reason_attr_access>
- (m_callee_fndecl, m_access);
+ add_note (make_unique<reason_attr_access>
+ (m_callee_fndecl, m_access));
}
private:
tree m_callee_fndecl;
diff --git a/gcc/analyzer/region-model.h b/gcc/analyzer/region-model.h
index 4f09f2e..8877265 100644
--- a/gcc/analyzer/region-model.h
+++ b/gcc/analyzer/region-model.h
@@ -922,28 +922,28 @@ protected:
region_model_context *m_inner;
};
-/* Subclass of region_model_context_decorator that adds a note
- when saving diagnostics. */
+/* Subclass of region_model_context_decorator with a hook for adding
+ notes/events when saving diagnostics. */
-class note_adding_context : public region_model_context_decorator
+class annotating_context : public region_model_context_decorator
{
public:
bool warn (std::unique_ptr<pending_diagnostic> d) override
{
if (m_inner->warn (std::move (d)))
{
- add_note (make_note ());
+ add_annotations ();
return true;
}
else
return false;
}
- /* Hook to make the new note. */
- virtual std::unique_ptr<pending_note> make_note () = 0;
+ /* Hook to add new event(s)/note(s) */
+ virtual void add_annotations () = 0;
protected:
- note_adding_context (region_model_context *inner)
+ annotating_context (region_model_context *inner)
: region_model_context_decorator (inner)
{
}