-
Notifications
You must be signed in to change notification settings - Fork 37
Description
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?