Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New features and improvements #216

Draft
wants to merge 83 commits into
base: master
Choose a base branch
from
Draft

Conversation

cedihegi
Copy link
Contributor

@cedihegi cedihegi commented Mar 1, 2023

Practical Work project by @jthomme1 and me, supervised by @Aurel300.

The new features include:

  • Show quantifier instantiations via inlay hints, and split by which verification caused them on hover
  • Display chosen viper quantifier triggers on hover
  • Selective verification via code-lenses
  • Generate templates for external specifications via code-actions
  • Get per method verification results and display them with gutter symbols
  • Display per method verification time and whether the result was cached or not
  • Verification results, diagnostics and quantifier messages are processed asynchronously, which allows users to see progress while prusti is still running.
  • (optional and rather experimental) For function calls, users can "peek definitions" for that call to see its contract. This feature is turned off by default and it's design is more of a temporary proof of concept.

Additionally, @jthomme1 did a rather extensive refactoring of the diagnostics and verification parts.

To use these new features, prusti needs to be at least at version 0.3.0.

cedihegi and others added 30 commits October 23, 2022 14:15
…or crate

and codelenses only updating after reloading a file or editing it.
verifying different files or crates, not just the info
of the most recent one is stored.
Not yet actually depending on the verification's result.
…s. However the textual decorators just stack in subsequent verifications so they will have to be removed at some point
@fpoli
Copy link
Member

fpoli commented Mar 2, 2023

Can you try adding the following configuration to the "rules" section of .eslintrc?

// Report unused variables only if they don't start with "_".
// Source: https://stackoverflow.com/a/64067915/2491528
"no-unused-vars": "off",
"@typescript-eslint/no-unused-vars": [
  "error",
  { 
    "argsIgnorePattern": "^_",
    "varsIgnorePattern": "^_",
    "caughtErrorsIgnorePattern": "^_"
  }
],

What's important to me is that there are no linting errors. Linting errors that are too restrictive should be downgraded to warnings in the linter's configuration if they still provide some value, or disabled at all if they are too noisy.

@fpoli
Copy link
Member

fpoli commented Mar 2, 2023

To use these new features, prusti needs to be at least at version 0.3.0.

@Aurel300 this means that we should publish a >=0.3.0 Prusti release before merging this PR.

@Aurel300
Copy link
Member

Aurel300 commented Mar 2, 2023

@Aurel300 this means that we should publish a >=0.3.0 Prusti release before merging this PR.

Yes, I know, that's what viperproject/prusti-dev#1334 will do.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants