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>
This commit is contained in:
parent
5f55721049
commit
e40a935db2
2 changed files with 13 additions and 13 deletions
|
@ -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;
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue