summaryrefslogtreecommitdiff
path: root/Source
Commit message (Collapse)AuthorAge
...
| | * Allow forall statements in refinementsGravatar leino2015-07-31
| | |
* | | Add tests for the serverGravatar Clément Pit--Claudel2015-07-31
| | |
* | | Split the server source into multiple filesGravatar Clément Pit--Claudel2015-07-31
| | |
* | | Fix an issue where the server would reverify the same file multiple times.Gravatar Clément Pit--Claudel2015-07-30
|/ / | | | | | | | | | | The confusing part here is that if one passes null as the ProgramId for two consecutive calls to Boogie, then Boogie will return the same results twice, regardless of what the second program was.
* | Implement a Dafny server.Gravatar Clément Pit--Claudel2015-07-30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The Dafny server is a command line utility that allows non-.Net editors to take advantage of Dafny's caching facilities, as used by the Dafny extension for Visual Studio. The server is essentially a REPL, which produces output in the same format as the Dafny CLI; clients thus do not need to understand the internals of Dafny's caching. A typical editing session proceeds as follows: * When a new Dafny file is opened, the editor starts a new instance of the Dafny server. The cache is blank at that point. * The editor sends a copy of the buffer for initial verification. This takes some time, after which the server returns a list of errors. * The user makes modifications; the editor periodically sends a new copy of the buffer's contents to the Dafny server, which quickly returns an updated list of errors. The client-server protocol is sequential, uses JSON, and works over ASCII pipes by base64-encoding queries. It defines one type of query, and two types of responses: Queries are of the following form: verify <base64 encoded JSON payload> [[DAFNY-CLIENT: EOM]] Responses are of the following form: <list of errors and usual output, as produced by the Dafny CLI> [SUCCESS] [[DAFNY-SERVER: EOM]] or <error message> [FAILURE] [[DAFNY-SERVER: EOM]] The JSON payload is an array with 4 fields: * args: An array of Dafny arguments, as passed to the Dafny CLI * source: A Dafny program, or the path to a Dafny source file. * sourceIsFile: A boolean indicating whether the 'source' argument is a Dafny program or the path to one. * filename: The name of the original source file, to be used in error messages For small files, embedding the Dafny source directly into a message is convenient; for larger files, however, it is generally better for performance to write the source snapshot to a separate file, and to pass that to Dafny by setting the 'sourceIsFile' flag to true.
* | Fixed crash in resolution where, after reporting an error, the cases #type ↵Gravatar Rustan Leino2015-07-29
| | | | | | | | and #module were not handled
* | Update the VS extension to use the error interface defined in 576eac2e17ffGravatar Clément Pit--Claudel2015-07-29
| |
* | MergeGravatar Clément Pit--Claudel2015-07-28
|\ \
| * | Updated parser generation to work with latest update in boogiepartners. Note ↵Gravatar Rustan Leino2015-07-27
| |/ | | | | | | that Coco.exe is now included in boogiepartners.
* | Clarify the inlining warning.Gravatar Clément Pit--Claudel2015-07-27
| |
* | Small refactoringGravatar Clément Pit--Claudel2015-07-27
| |
* | Clean up error reporting.Gravatar Clément Pit--Claudel2015-07-27
| | | | | | | | | | There now is one main entry point for reporting errors, warnings, or information. Next step is to make the VS extension use that.
| * Translate triggers with the same ExpressionTranslator as the bodyGravatar Rustan Leino2015-07-24
|/ | | | Signed-off-by: Clement Pit--Claudel <clement.pitclaudel@live.com>
* Update DafnyExtension to use the parser constructor introduced in d2e394fc4b93Gravatar Clément Pit--Claudel2015-07-24
|
* MergeGravatar Clément Pit--Claudel2015-07-23
|\
| * Fix: Read clauses should be checked before lit liftingGravatar Clément Pit--Claudel2015-07-23
| | | | | | | | | | | | | | | | | | The function IgnoreFuel in UnfoldingPerformance.dfy used to be lit-wrapped. It shouldn't be, because its reads clause is non-empty. This is not a soundness bug, but fixing it improves performance in cases where a function call would be incorrectly unrolled. Test case written by Rustan.
| * Fix a bug with includes and /useBaseNameForFileNameGravatar Clément Pit--Claudel2015-07-23
| | | | | | | | | | | | | | If /useBasenameForFilename is specified, tokens just contain file names, which is not enough to locate included files. Solution based on Rustan's advice.
| * Fix: Unify column numbers in Dafny's errorsGravatar Clément Pit--Claudel2015-07-23
| | | | | | | | | | | | | | | | | | Dafny counts from 0, but Boogie counts from 1. Tokens are 1-based. Thus when we print tokens, we need to decrement the column number. This was done for resolver errors, but not for verification or parsing errors. In addition, parsing errors were inconsistent with resolution errors case-wise. Unfortunately, the fix affects the output of many tests.
| * Fix: Visual studio did not show warnings.Gravatar Clément Pit--Claudel2015-07-23
| | | | | | | | | | To check if the fix works, try declaring a static top level function. Initial work on this patch by Rustan
| * IronDafny related changes:Gravatar Michael Lowell Roberts2015-07-22
| | | | | | | | | | - diabled error message related to ensures clauses requiring function bodies in the case of abstract modules. - fixed bug in similar error message related to bodyless methods in abstract modules.
* | MergeGravatar Clément Pit--Claudel2015-07-21
|\|
* | Simplify some of the deduplication code in TriggerGenerator.csGravatar Clément Pit--Claudel2015-07-21
| |
| * Improved rank axioms for containersGravatar Rustan Leino2015-07-21
| |
| * Code reviewed some of the triggers added by changeset 1dacb6d3cc3cGravatar Rustan Leino2015-07-21
|/
* MergeGravatar Clément Pit--Claudel2015-07-20
|\
* | Add calc's attributes to its SubExpressions.Gravatar Clément Pit--Claudel2015-07-20
| |
| * clarified error message that occurs when the "opened" keyword is left off of ↵Gravatar Michael Lowell Roberts2015-07-20
| | | | | | | | a module import.
| * fix for apparent typo in Rewriter.csGravatar Michael Lowell Roberts2015-07-20
|/
* Merge my autoTriggers work into the master branchGravatar Clément Pit--Claudel2015-07-17
|\ | | | | | | | | This contains trigger related things under the autoTriggers flag (disabled by default), and some bug-fixes and cleanups that are already enabled.
* | Clean up new trigger declarations in Translator.csGravatar Clément Pit--Claudel2015-07-17
| |
* | Fix column numbers in warning and info messagesGravatar Clément Pit--Claudel2015-07-16
| | | | | | | | This brings them in line with error column numbers.
* | Clean up a few thing and set proper defaults before mergingGravatar Clément Pit--Claudel2015-07-16
| |
| * MergeGravatar Rustan Leino2015-07-16
| |\
| | * Fixed bugs in the parsing of explicit type arguments.Gravatar Rustan Leino2015-07-16
| | | | | | | | | | | | | | | Fixed resolution bug where some type arguments were not checked to have been determined. Fixed resolution bugs where checking for equality-supporting types was missing.
* | | Force IsTriggerKiller to return false when /autoTriggers is offGravatar Clément Pit--Claudel2015-07-16
| | | | | | | | | | | | | | | This is a temporary measure to ensure that the trigger related machinery is entirely disabled when /autoTriggers is off.
* | | Use MapConcat instead of String.Join in TriggerGeneratorGravatar Clément Pit--Claudel2015-07-16
| | |
* | | Strip literals from triggersGravatar Clément Pit--Claudel2015-07-16
| | |
| * | [IronDafny] fix for ambiguous identifier error.Gravatar Michael Lowell Roberts2015-07-15
| | |
* | | Weaken the trigger cycling check to allow more patternsGravatar Clément Pit--Claudel2015-07-15
| | |
* | | Fix broken interaction between triggers and inlining of function callsGravatar Clément Pit--Claudel2015-07-14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The problem was that inlining would replace formals with arguments in triggers as well, causing invalid expressions ("trigger killers") to pop up in triggers after inlining. This fix disables inlining if it can't be determined that it won't lead to an invalid trigger. If that procedure is incomplete, then that's only by a narrow margin, as the checks actually ensure that the formals that are getting trigger killers are indeed used in triggers.
* | | Detect matching loops at the mutli-trigger levelGravatar Clément Pit--Claudel2015-07-13
| | | | | | | | | | | | | | | Stop using HashSet, as we don't currently have a good HashCode implementation. Instead, excplicitly call distinct where needed. Improve reporting a bit.
* | | Start adding missing triggers to the translatorGravatar Clément Pit--Claudel2015-07-13
| | |
* | | Add /printTooltips and /autoTriggers to the CLIGravatar Clément Pit--Claudel2015-07-13
| | |
* | | Register the trigger generator as a a rewriter in the Resolver.Gravatar Clément Pit--Claudel2015-07-13
| | |
* | | Initial import of the TriggerGenerator code.Gravatar Clément Pit--Claudel2015-07-13
| | | | | | | | | | | | | | | Includes trigger generation, basic cycle detection, and basic equality comparison for Dafny expressions.
* | | Make attributes enumerable.Gravatar Clément Pit--Claudel2015-07-13
| | | | | | | | | | | | Use an extension method to properly deal with null attributes
| * | [IronDafny] implemented workaround for "import opened" bug(s).Gravatar Michael Lowell Roberts2015-07-13
| |/
| * Fixed crashes in overrides checking of function decreases clauses, and ↵Gravatar Rustan Leino2015-07-07
| | | | | | | | improved the error message reported to users
| * Report warnings only once. (This is the last step in fixing Issue #86.)Gravatar Rustan Leino2015-07-06
| |
* | Small refactoring of Printer.csGravatar Clément Pit--Claudel2015-07-06
| |