Commit Graph

190 Commits

Author SHA1 Message Date
Robert Dockins
c620cbf237 Update the parser to allow prefix operators in more places.
This allows us to define (~) as a prefix operator symbol synonym
for `complement`.

Fixes #296.
2016-05-04 16:26:36 -07:00
Trevor Elliott
cf979723b7 Fixes #322
Just needed to recurse through the parens and infix cases in `appTys`.
2016-04-07 21:26:21 -07:00
Brian Huffman
b77dd2a82a :prove checks properties in the order they appear in the source.
Also add a regression test. Fixes #171.
2016-03-10 11:36:41 -05:00
Thomas M. DuBuisson
10acbdbfb8 Add comment in README explaining how to run tests. 2016-03-04 09:05:47 -08:00
Thomas M. DuBuisson
b40c1ce25d Add known failure for issue 314. 2016-03-04 09:05:23 -08:00
Thomas M. DuBuisson
edb9373c4e Add test case for issue #314 2016-03-04 08:58:50 -08:00
Brian Huffman
1953223e9f Add test case for issue #312. 2016-02-19 11:53:33 -08:00
Brian Huffman
1322156d28 Remove trailing whitespace 2016-02-19 10:08:20 -08:00
Brian Huffman
6def46da69 Add (failing) test for issue #2. 2016-02-12 14:46:06 -08:00
Iavor S. Diatchki
f7823544cf Add a test for ticket #308 2016-02-09 11:56:44 -08:00
Brian Huffman
ab4f113084 Add regression test for issue #256. 2016-02-08 15:09:34 -08:00
Brian Huffman
9538c59d23 Fix shift/rotate by amounts greater than 2^63 in evaluator
Also added regression tests. This should fix issue #306.
2016-01-27 10:37:55 -08:00
Adam C. Foltzer
4d3fc9a413 Update copyright dates and add missing headers 2016-01-19 18:19:35 -08:00
Adam C. Foltzer
4029b6c15c add a test for #126 2016-01-19 18:18:03 -08:00
Adam C. Foltzer
07da2018b7 switch to more portable seeding for random
The `random` primitive previously took a `[32]` seed, but this causes
inconsistency between 32-bit and 64-bit platforms when the seed is large
enough to wrap around in GHC's representation of an `Int`. This patch
switches to an API that seeds directly with four 64-bit words, and so
should behave the same way on our supported platforms.
2016-01-19 18:17:34 -08:00
Adam C. Foltzer
ac85cec175 update test with counterexample that z3 produces
These sorts of tests are inherently unstable, but since Z3 seems to
agree across our platforms on this one, this should help make tests quieter.
2016-01-12 16:50:22 -08:00
Adam C. Foltzer
9e179d14bc finally add Even-Mansour example; closes #124 2016-01-12 16:49:47 -08:00
Thomas M. DuBuisson
752310cd0d Merge branch 'master' into writeFile 2015-12-25 21:39:01 -08:00
Adam C. Foltzer
9c07fe1006 merge in the 2.2.6 changes, including z3 switch 2015-12-23 16:10:56 -08:00
Adam C. Foltzer
3ae0dda7ac switch to Z3 for typechecking and proving
Note: the hardcoding in this patch is only for the 2.2 hotfix branch; in
the 2.3 branch we will only have to change the default setting for the
typechecker.
2015-12-23 14:59:10 -08:00
Adam C. Foltzer
aeefab69a1 refactor :check and :exhaust
This is to set up improvements to the cryptol-server, and therefore
pycryptol interface.

This patch also fixes a regression in pretty-printing output caused by a
previous error in fixity of the `<>` operator
2015-12-22 18:17:20 -08:00
Thomas M. DuBuisson
3afdae127a Add known failure notice for issue 212 2015-12-10 12:36:06 -08:00
Thomas M. DuBuisson
b355dedcf8 Test files for read/write bytearray command. 2015-11-15 10:42:04 -08:00
Trevor Elliott
39bac2034a Merge remote-tracking branch 'origin/master' into wip/name-change 2015-10-16 13:23:29 -07:00
Adam C. Foltzer
ad3fdb4e14 use base-compat to remove much CPP 2015-10-08 16:54:08 -07:00
Trevor Elliott
cacc59529e Update test output 2015-09-29 17:35:18 -07:00
Trevor Elliott
f8e6582230 Update tests and output 2015-09-28 21:26:26 -07:00
Trevor Elliott
60694f8456 Output format changed 2015-09-28 12:07:42 -07:00
Trevor Elliott
b4fbec108e Update some test output
The core AST now always prints fully-qualified names.
2015-09-27 19:56:58 -05:00
Trevor Elliott
d71fd8a3ee Issue #148 is fixed now 2015-08-14 17:38:50 -07:00
Iavor S. Diatchki
c9e4fab6a8 Fix up tests. 2015-08-12 15:52:18 -07:00
Daniel Wagner
a958ce3328 regression test for a specializer bug 2015-07-23 18:08:14 -07:00
Adam C. Foltzer
494bf6d92e tweak patch in 170e5953 to work for 7.8; add test 2015-07-01 12:31:37 -04:00
Trevor Elliott
4d469fa2ce Update test output 2015-06-29 16:34:11 -07:00
Iavor S. Diatchki
8429d294e6 Add a test for multi-if 2015-06-22 09:25:45 -07:00
Trevor Elliott
5ff6005bed Allow operators to use '\'
Fix #246
2015-06-21 01:53:52 +01:00
Trevor Elliott
47b3d59831 Add a test for doc strings 2015-06-10 21:45:31 -07:00
Trevor Elliott
c51a2815bb Add a test for qualified infix operators 2015-06-10 20:59:29 -07:00
Trevor Elliott
9b7e46724c Give 100 fixity levels, and fix prelude fixity again
Also fix issue198, which had been accidentally updated while failing
2015-06-10 11:55:54 -07:00
Trevor Elliott
fb98af636a Slight test output change 2015-06-09 17:02:07 -07:00
Trevor Elliott
88e44a5937 Location information changed in test 101 2015-06-09 14:45:51 -07:00
Trevor Elliott
f06b4deaea Update 226 output, as it uses :browse 2015-06-09 14:32:17 -07:00
Trevor Elliott
7e8940e9a8 Name changes in debug output 2015-06-09 14:27:43 -07:00
Trevor Elliott
6bdbe52673 Add another test for unary operators 2015-06-04 10:37:28 -07:00
Trevor Elliott
e8e5e30557 Fix parsing of unary operators 2015-06-03 17:50:22 -07:00
Trevor Elliott
e4258b4d2c Add a regression test for xor precedence 2015-06-03 15:36:18 -07:00
Trevor Elliott
ae6b5dc3e8 Add support for user-defined infix operators
Squashed commit of the following:

commit 9f03b7cd1a1f169ea192d735890fd6a3503ecb39
Author: Trevor Elliott <trevor@galois.com>
Date:   Wed Jun 3 11:40:27 2015 -0700

    Add a test for user-defined infix operators

commit 31656a4640e8189b880fa1ce39779c07872ebe18
Author: Trevor Elliott <trevor@galois.com>
Date:   Wed Jun 3 11:39:43 2015 -0700

    Forgot to initialize some fields in the parser

commit 73bcb2e5961691f2258f5a7a12ee2dc92d1a1ad3
Author: Trevor Elliott <trevor@galois.com>
Date:   Wed Jun 3 11:20:40 2015 -0700

    Fix unnecessary panics in the renamer

commit 03cd8130901fb7aeb12d41cc03ce970ce6571423
Author: Trevor Elliott <trevor@galois.com>
Date:   Mon Jun 1 01:29:36 2015 -0700

    Remove a debug print

commit 2934a56b31d51ac971204d3fea9f62bf8829573d
Author: Trevor Elliott <trevor@galois.com>
Date:   Mon Jun 1 01:26:32 2015 -0700

    User-defined operators

commit 47f4b37fc75accaf0284addc2382c341167b8b6b
Author: Trevor Elliott <trevor@galois.com>
Date:   Sun May 31 23:44:51 2015 -0700

    Parse signatures for infix operators

commit a1a11705c2eec6e669159756de2eb2cb19bcfa83
Author: Trevor Elliott <trevor@galois.com>
Date:   Sun May 31 23:28:56 2015 -0700

    Plumb fixity information through

commit 56134ac0d9fb919f280dabfcdab6506195816340
Author: Trevor Elliott <trevor@galois.com>
Date:   Sun May 31 22:03:55 2015 -0700

    Parse fixity declarations

commit f2db0ad5d47d478799dabf03a6cad9be7aec2191
Author: Trevor Elliott <trevor@galois.com>
Date:   Fri May 29 16:00:57 2015 -0700

    Update test output for location changes

commit 15949018865d3ac8efca1a081334a7213c25775c
Merge: 1bd7f16 52f3a83
Author: Trevor Elliott <trevor@galois.com>
Date:   Fri May 29 15:36:20 2015 -0700

    Merge remote-tracking branch 'origin/master' into wip/infix-operators

commit 1bd7f1602bd6bbf5693871f01ca65a4cf3ed3bf8
Author: Trevor Elliott <trevor@galois.com>
Date:   Fri May 29 15:30:14 2015 -0700

    Forgot to consider EParens in translateExprToNumT

commit d63435270d5ca5bdf37584e4781a655a685c9c3b
Author: Trevor Elliott <trevor@galois.com>
Date:   Fri May 29 15:29:47 2015 -0700

    Add | to the operator character set

commit 7be23372c4625bf20b8f8ccf94a148563417f6cb
Author: Trevor Elliott <trevor@galois.com>
Date:   Fri May 29 14:49:07 2015 -0700

    Fix the printing of #Uniq variables

commit f9110e159aa0c3ae7450fe7a4db2a8d275d9bc1a
Author: Trevor Elliott <trevor@galois.com>
Date:   Thu May 28 17:04:26 2015 -0700

    Fix some failing tests

commit 0582fd08cc402c7bfd2de2c02df14fa77906e37e
Author: Trevor Elliott <trevor@galois.com>
Date:   Thu May 28 16:12:18 2015 -0700

    Remove more primitives from the parser

commit f5dafd1ea7954b64f7949c754e0c94abd2598679
Author: Trevor Elliott <trevor@galois.com>
Date:   Wed May 27 18:02:52 2015 -0700

    Do fixity resolution during renaming
2015-06-03 11:42:33 -07:00
Iavor S. Diatchki
52f3a836b4 Fix test output issues214.
We get one warning per enumeration which seems reasonable.
2015-05-27 15:35:24 -07:00
Iavor S. Diatchki
cd2f4bfc7a Put cast under the quantifiers, fixes test05 in mono-binds 2015-05-27 15:32:17 -07:00
Trevor Elliott
c04446b53a Adds more support for UTF-8 in identifiers
Also:

- Improves the `lexical error` message, changing it to `unrecognized
  character`, and only displaying the one character that caused the
  problem.

- Adds more relevant text when showing a lexical error, which should
  address #219

- Switches parser to operate over lazy `Data.Text` rather than `String`
2015-05-26 14:29:36 -07:00
Trevor Elliott
5e92b00789 Fix #177
Add a name mapping environment to the pretty printer to control how qualified
names get printed.
2015-05-21 23:17:15 -07:00
Thomas M. DuBuisson
d553a33179 Fix #214: Add the test that shows the success.
Notice the actual fix is in commit
342b1cf3ff
2015-05-11 10:25:22 -07:00
Thomas M. DuBuisson
7457f7d5aa Example crash in HEAD (issue #214)
This shows a type error in 2.2.3 but crashes HEAD.
2015-05-08 13:56:53 -07:00
Thomas M. DuBuisson
fd4ed49fe5 @yav Another TC example for #212
So I'm treating this issue as a running conversation centered around
this one topic, let me know if it gets old.
2015-05-07 23:24:41 -07:00
Thomas M. DuBuisson
94abebdf01 Example type constraint width issues 2015-05-07 09:31:10 -07:00
Brian Huffman
f95d3fadb6 Add regression test for issue #211. 2015-05-05 11:49:12 -07:00
Adam C. Foltzer
8007f97205 prepare for 7.10
- Move the stackage file so it's not on by default (will test with it on
  Jenkins instead of all the time)
- Use CPP to remove unnecessary import warnings in 7.10
2015-04-30 13:53:24 -07:00
Trevor Elliott
69c9465cab Experiment with defaulting using the SMT solver 2015-04-03 15:12:36 -07:00
Trevor Elliott
3ca8746eb3 Allow expected failures to be ignored 2015-03-30 16:58:33 -07:00
Iavor S. Diatchki
b037c6a6ea Merge remote-tracking branch 'origin/master' into wip/cs
Conflicts:
	cryptol.cabal
2015-03-30 14:00:35 -07:00
Adam C. Foltzer
5768dac5c0 prepare for 7.10
- Move the stackage file so it's not on by default (will test with it on
  Jenkins instead of all the time)
- Use CPP to remove unnecessary import warnings in 7.10
2015-03-30 13:07:37 -07:00
Iavor S. Diatchki
afd53bb6a1 Merge remote-tracking branch 'origin/master' into wip/cs
Conflicts:
	cryptol.cabal
	src/Cryptol/TypeCheck/Solve.hs
	src/Cryptol/TypeCheck/Solver/CrySAT.hs
	src/Cryptol/TypeCheck/Solver/Selector.hs
2015-03-30 11:29:20 -07:00
Adam C. Foltzer
0536d0f15a update copyright years 2015-03-24 11:19:52 -07:00
Adam C. Foltzer
fe1a2403c9 handle EvalErrors more gracefully in :check
Fixes #114 (mostly; Ctrl-C still doesn't clean everything up, but fixing
that would require a whole lot of work).
2015-03-16 17:17:36 -07:00
Adam C. Foltzer
faab7b0b0a tweak paths in test output for Windows 2015-03-06 12:03:21 -08:00
Iavor S. Diatchki
db0d036966 Correct the test to expose the proper bug. 2015-03-05 10:36:15 -08:00
Brian Huffman
cadfaced80 Update test for issue #177
The issue is not the set of names in scope, it is the type names
printed out by the :t command. It should use the same names that
are in scope in the module.

If the type of an expression contains a type synonym that is not
in scope at all, then I'm not sure what exactly it should do.
2015-03-04 11:22:37 -08:00
Brian Huffman
0eb57b9674 Add test for issue #177. 2015-03-04 09:58:53 -08:00
Dylan McNamee
063fe14014 simpler r05 2015-03-03 15:10:45 -08:00
Dylan McNamee
68b7e61c6e regression with new constraint solver 2015-03-03 14:20:19 -08:00
Dylan McNamee
0059791b15 hoping this simple padding example is solvable by the new constraint solver 2015-03-03 11:50:47 -08:00
Iavor S. Diatchki
15523027e9 Merge remote-tracking branch 'origin/master' into wip/cs 2015-02-27 11:01:32 -08:00
Adam C. Foltzer
8ea7ba0b75 make cryptol interpreter utf8 by default
Previously we were just using Prelude's `readFile`, which uses the
system default locale. This meant that people writing Cryptol in other
locales might produce source files that work fine for them but not
others. Now the interpreter sets the default locale to utf8 at startup.

Additionally, the code to catch exceptions from loading modules was too
lazy, allowing exceptions to bring down the whole process when the
module contents were forced outside of the `try`.

We also assumed that any IO exception was from files not being found;
there's now an "Other IO exception" possiblity. Incorrect locales will
trigger this alternative because the actual IOException raised isn't
specific to locale errors.
2015-02-26 17:35:41 -08:00
Iavor S. Diatchki
a42b3a7fc1 Switch to new defaulting code in type inference.
The changes in the tests are just to do with order of constraints.
2015-02-25 17:21:51 -08:00
Iavor S. Diatchki
089ddc688e Port defaulting to new solver; hook it in with prove implication. 2015-02-25 16:52:24 -08:00
Iavor S. Diatchki
99c1dd66e1 Fix test (again) 2015-02-25 15:43:42 -08:00
Iavor S. Diatchki
d11cc88633 Merge remote-tracking branch 'origin/master' into wip/cs 2015-02-25 14:21:20 -08:00
Iavor S. Diatchki
55a3a56659 Merge branch 'master' of github.com:GaloisInc/cryptol 2015-02-25 14:19:35 -08:00
Iavor S. Diatchki
be546b4261 Modify testrunniner to figure out on its own if we have a dir or a test.
This means we don't need -d anymore, and now we can run individual tests
from the comman line.
2015-02-25 14:19:11 -08:00
Iavor S. Diatchki
688e5cfebf Fix test. 2015-02-25 13:44:29 -08:00
bryant
e73c35bcf4 add empty module test 2015-02-24 18:00:59 -05:00
Adam C. Foltzer
0b500d79d9 move issue218 test to issue116
218 was an issue number on our old trac wiki; #116 (and #2) are the
corresponding tickets on GitHub. Pointed out by @weaversa in #170
2015-02-18 10:43:03 -08:00
Adam C. Foltzer
deb6f62d2c update (failing) test case for 0-based tuple index
Between this and the fix for #117, this fixes #170
2015-02-18 10:34:59 -08:00
Adam C. Foltzer
49030290e9 fix #93
Revised how we do output for `:sat` and `:prove` without arguments,
making it more clear what properties are being checked in each case.

Also reworded the output of `:check` slightly in the case where the
property has no inputs. It would be nice to make `:check` output more
consistent with the others.
2015-02-18 10:25:46 -08:00
Adam C. Foltzer
3d275ea44c add load targets to search path
Fixes a bug pointed out by @weaversa:
https://github.com/GaloisInc/cryptol/issues/127#issuecomment-64464455

In addition to the other search path changes in #127, we now will add
the directory containing files to be loaded to the search path. This
applies to:

- files loaded with a command line argument, like in the original
  comment
- arguments to `:l`, so for example `:l examples/DES.cry` would work
- batch file arguments, so for example running `cryptol -b
  /some/path/bar.cry` adds `/some/path` to the search path.
2015-02-17 15:27:59 -08:00
Adam C. Foltzer
64d3d1353f add warnShadowing REPL option
Conflicts:
	cryptol/REPL/Command.hs
2015-02-16 14:40:06 -08:00
Adam C. Foltzer
a5cf80c570 Merge @yuuko's allsat pull requests
Cryptol's invocation of proof tools has changed quite a bit since this
PR was first opened, so this took a fair amount of work to
integrate. However we now have the :satNum option, and multiple sat
results are correctly bound to `it`.
2015-01-18 16:13:56 -08:00
Brian Huffman
ae219c2e90 Fix definitions of sbvRotate{Left,Right} for large rotation amounts;
Also add regression tests for symbolic rotations.

Fixes #160.
2015-01-16 11:06:12 -08:00
Brian Huffman
811dc0f816 Add regression test for issue #158. 2015-01-15 16:24:21 -08:00
Trevor Elliott
ec368fe6af Fix #16
Propagating type signatures down when they're given seems to fix this bug.
2014-12-30 10:49:01 -08:00
Trevor Elliott
41ca73ffaa Update tests for changes to inference
The changes didn't alter the behavior of the typechecker, only the
warning/error output, and the order of some variables when generalizing.
2014-12-30 10:43:38 -08:00
Trevor Elliott
ca6cead8f0 Update the output for test 225 2014-12-18 17:28:34 -08:00
Trevor Elliott
b1d65e1655 Update issue225.icry
mono-binds is irrelevant to the bug now.
2014-12-16 17:59:07 -08:00
Trevor Elliott
1466d99e1b This is fixed by mono-binds 2014-12-16 17:56:28 -08:00
Trevor Elliott
2401954532 The goals are equivalent 2014-12-16 17:56:07 -08:00
Adam C. Foltzer
284338c938 Add the mono-binds flag
When `:set mono-binds=on`, any local definitions lacking type
signatures will not be generalized (i.e., will be monomorphic). This
reduces what is in most cases unnecessary polymorphism that can give
rise to constraints that are difficult to solve. This also improves
the performance of the Cryptol interpreter by lifting many polymorphic
type applications out of the inner loops that are commonly defined as
bindings in `where` clauses.

The flag is on by default in the Cryptol REPL, and in most cases makes
it possible to leave out more type signatures in `where` clauses than
before. However, some programs really do rely on inferring polymorphic
types for local variables; in this case adding an explicit polymorphic
type signature to the local binding in question will make the program
typecheck.
2014-12-15 17:48:25 -08:00
Brian Huffman
b88e2d1a11 Add test cases for issue #58. 2014-12-11 15:50:22 -08:00
Trevor Elliott
28fdd44100 Fix #140
The Smtlib solver was translating Fin constraints to True, as it didn't know
how to handle them.  They should have been skipped, and returned back as
unsolved goals instead.
2014-12-11 15:12:14 -08:00
Adam C. Foltzer
9abc779340 update random values after changing random generation 2014-12-05 17:38:00 -08:00
Adam C. Foltzer
969c96e8e1 Don't do fancy progress bars for :check in batch mode 2014-12-05 17:18:29 -08:00