Skip to content

When is the Position of an AST node mandatory? #732

@fpoli

Description

@fpoli

In Prusti, we only generate Position instances (with a unique line, column and ID) for the AST nodes that we know might be the offending node of a verification error. Sometimes, we also generate positions for the AST nodes that we know might be the reason of a verification error. For any other AST node we generate a dummy position where the line and column are zero.

This worked well so far when using Silicon configured to report one verification error per method. However, when we configure Silicon to report multiple verification errors we still only receive one verification error per method. Aurel found that by removing .distinctBy(failureFilterAndGroupingCriterion) we actually get all the errors that we expect, but I then wonder why the deduplication is there in the first place.

I have a few questions about this:

  • What are the AST nodes from which Silicon takes the position used to deduplicate verification errors?
  • In general, what is the minimum set of AST nodes for which a frontend should generate unique positions?
  • Why is there a deduplication of verification errors in Silicon? Is it perhaps no longer needed?

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionFurther information is requested

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions