Georges Dupéron
4ab256abf2
Fixes GH issue #315 Syntax properties are not forwarded by define-typed/untyped-identifier
, following @samth's suggestions.
2016-04-06 12:06:42 -05:00
Asumu Takikawa
9ec358b665
Update type-table after tc-funapp processing
...
This makes the tooltip show the more refined function
type after application typechecking. For example, case->
types will be narrowed to the particular case that fits.
Polymorphic function types will be instantiated at the
appropriate type.
Fixes issue #325
2016-03-28 17:53:34 -04:00
Sam Tobin-Hochstadt
7572adb9c2
Fix use of simple-result->
to check the domains.
...
This broke pict3d, but also disabled some contract checks that
should have been kept.
2016-03-28 17:11:37 -04:00
Asumu Takikawa
812f1a8c79
Add types for box-cas!, unsafe-box*-cas!
2016-03-23 16:02:22 -04:00
Daniel Feltey
425ff47700
Raise errors when signatures are not in the signature environment while typechecking
...
Closes #319
2016-03-12 16:39:39 -06:00
Asumu Takikawa
d23e05f2c3
Escape "~" in tc-error/fields arguments
...
Fixes issue #314
2016-03-02 04:43:34 -05:00
Georges Dupéron
350a8bb74e
Changed how arguments and other pieces of information are printed, to follow the error message conventions, as suggested by samth in PR #250 .
...
* PR #250 : https://github.com/racket/typed-racket/pull/250
* Error message conventions: http://docs.racket-lang.org/reference/exns.html?q=raise-arg#%28part._err-msg-conventions%29
2016-03-01 15:19:09 -06:00
Asumu Takikawa
72927e2248
Add the rest of Racket's exn hierarchy
2016-02-21 12:20:40 -05:00
Asumu Takikawa
a90f6c46eb
Add exn:break:hang-up and exn:break:terminate
2016-02-21 02:48:45 -05:00
Stephen Chang
c19fac7fd5
add ids from in-hash- expansion to special-env
...
- fixes test failures due to 048c4b4a73
- add in-hash- tests
2016-02-05 18:26:03 -05:00
Sam Tobin-Hochstadt
0bfaa75bcf
Add test for test-case
from typed/rackunit
.
2016-02-02 08:21:02 -05:00
Asumu Takikawa
0308a229ed
Ensure define-typed-struct/exec has a Procedure
...
Fixes issue #293
2016-01-22 13:43:03 -05:00
Vincent St-Amour
f53314a21c
Fix optimizer tests for nw, optimized hash iteration (in Racket).
2016-01-19 15:40:31 -06:00
Asumu Takikawa
bad5a35291
Fix type of file-position
...
Closes issue #297
2016-01-17 16:38:21 -05:00
Sam Tobin-Hochstadt
838431c176
Add the simple-result->
combinator to Typed Racket.
...
This is used for functions with a single argument imported with
`require/typed`, and avoids unneccessary checks. This produces a
3x speedup on the following benchmark:
#lang racket/base
(module m racket/base
(provide f)
(define (f x) x))
(module n typed/racket/base
(require/typed
(submod ".." m)
[f (-> Integer Integer)])
(time
(for ([x (in-range 1000000)])
(f 1) (f 2) (f 3) (f 4))))
(require 'n)
on top of the previous improvment from using `unsafe-procedure-chaperone`
and `procedure-result-arity`.
2016-01-16 22:27:18 -05:00
Asumu Takikawa
7217e2e531
Fix name argument for dtsi/exec
...
Looks like this got typoed in commit a3ca5aeefc
Closes issue #291
2016-01-15 11:58:38 -05:00
Vincent St-Amour
f6bb11c1d5
Fix test for removed missed opt logging.
2016-01-06 12:42:20 -06:00
Vincent St-Amour
40e7c969ab
Refine type of min
.
...
Closes PR14896.
2015-12-31 14:32:41 -06:00
Benjamin Greenman
8f0f57a187
typo: remove outdated comment
2015-12-31 14:21:21 -05:00
Sam Tobin-Hochstadt
730a72709e
Increase memory limit to avoid spurious failures.
2015-12-31 11:34:23 -05:00
Sam Tobin-Hochstadt
3be139b9b5
Merge branch 'opaque'
2015-12-31 10:53:30 -05:00
Alexis King
a3ca5aeefc
Allow the types created for structs to be specified manually
...
This allows the types generated by the struct form, as well as #:struct
clauses of require/typed, to be specified explicitly using a #:type-name
option. This allows the name of a struct and the type it is assigned to
be different.
Closes #261
2015-12-30 13:12:05 -08:00
Sam Tobin-Hochstadt
d3fac7c24a
Revise handling of #:opaque types, and Any.
...
Guard opaque predicates with an (-> Any Any) contract. This uses the
contract generation infrastructure to avoid wrapping struct predicates.
Also, relax `any-wrap/c` (the contract used for `Any` in positive
position) to allow opaque structures. This also requires an enumeration
of all the other kinds of values that TR understands, so that they are
not confused with opaque structures.
Joint work with @bennn.
Closes #202 .
Closes #203 .
Closes #241 .
2015-12-30 12:33:15 -05:00
Sam Tobin-Hochstadt
43a8cce3fc
Reorganize the TR testing files, and add progress output.
...
`typed-racket-test/main` is now the file to run for almost everything.
`typed-racket-test/run` continues to exist so that DrDr preserves the
timing history.
Integration tests now print a progress meter, which should fix the
Travis timeouts.
2015-12-29 16:43:25 -05:00
Asumu Takikawa
b18d940f1a
Fix GH issue #271
...
Propagate syntax properties when opening up begins at the top-level
so that ignore properties will get transferred.
2015-12-18 18:10:48 -05:00
Sam Tobin-Hochstadt
519dfb6fdc
Handle Sequenceof
in the type parser to support multiple values.
2015-12-17 19:42:29 -05:00
Georges Dupéron
f992786243
Fixes GH issue #268 “Can't provide promise for polymorphic struct”.
...
See also commit 5cd5f77
“Don't allow promises created with `delay/name` as `(Promise T)`.”.
The contracts in `typed-racket-lib/typed-racket/static-contracts/combinators/structural.rkt` should be just a single identifier, not a lambda expression, because `typed-racket-lib/typed-racket/private/type-contract.rkt` relies on that, and passes the contract name to free-identifier=?, which won't work on a lambda.
2015-12-17 14:52:40 +01:00
Sam Tobin-Hochstadt
077ff4ab2f
Remove use of this-expression-source-directory
.
...
Fixes presence of build system path in .zo files.
2015-12-11 10:12:33 -05:00
Asumu Takikawa
7f05dc6731
Update docs & tests for struct constructor options
2015-12-08 00:33:45 -05:00
Vincent St-Amour
70afdf6f70
Relax type of expt.
...
Made possible by the fix to its dynamic behavior.
Should be fully backwards compatible.
2015-12-02 15:44:23 -06:00
Vincent St-Amour
1d69569382
Fix tests.
2015-11-30 07:56:08 -06:00
Vincent St-Amour
6a8c366210
Fix type of expt
to reflect fix to dynamic behavior.
2015-11-25 17:33:00 -06:00
Vincent St-Amour
fe4808f96a
Fix magnitude on numbers with negative components.
...
Closes PR 15183.
2015-11-23 14:30:20 -06:00
Sam Tobin-Hochstadt
f9825cb250
Add test for top-level mutated var fix.
2015-11-18 14:31:48 -05:00
Sam Tobin-Hochstadt
577ab41da6
Keep ignored provide forms in the output.
...
Closes #231 .
2015-11-16 09:45:08 -05:00
Vincent St-Amour
1e32397658
Refine type for expt.
...
Fixes rsound.
2015-11-13 10:14:39 -06:00
Sam Tobin-Hochstadt
5f39bb3647
Increase with-tr-contracts timeout.
2015-11-12 18:41:52 -05:00
Vincent St-Amour
1187281bf7
Fix sign propagation in some real-complex corner cases.
...
May have been found using random testing a while back.
2015-11-12 16:08:20 -06:00
Vincent St-Amour
b88b4a8829
Fix magnitude opt to not overflow.
...
May have been found with random testing, a while ago.
2015-11-12 15:36:44 -06:00
Vincent St-Amour
53e501bb8b
Avoid generating contraints for optimized-away contract definitions.
...
Closes #214 .
2015-11-12 13:46:37 -06:00
Vincent St-Amour
3c1c5b1d03
Be more robust against one of {TR,R} erroring.
2015-11-10 16:39:18 -06:00
Eric Dobson
c9db5dded7
Make infer/dotted instantiate the dotted variable to improve inference.
...
With this we don't need to infer the length of the dotted variable,
in parts of the inference.
Closes #120 .
2015-11-10 16:56:14 -05:00
Vincent St-Amour
caf62c5fc6
Travis CI has yet another FPU.
2015-11-10 10:33:50 -06:00
Vincent St-Amour
65f375f065
Refactoring.
2015-11-10 10:33:49 -06:00
Vincent St-Amour
7e7bef773f
Have resource limits for individual test cases.
...
So that a term that takes too long doesn't doom the whole run.
2015-11-10 10:33:49 -06:00
Sam Tobin-Hochstadt
d9e3c2ac6a
Repair da574a4
again.
2015-11-10 08:59:18 -05:00
Vincent St-Amour
249ae295e8
DrDr has a different FPU than I do.
2015-11-09 21:36:28 -06:00
Sam Tobin-Hochstadt
da574a47d0
Handle in-vector
with range arguments.
...
* Add `normalise-inputs` to special function env.
* Treat eta-expansion specially. Now
`(lambda (x ...) (f x ...))`
will typecheck like `f` but with a type restricted to
the size of `x ...`.
Currently, this special case only works for non-polymorphic
functions.
2015-11-09 19:04:14 -05:00
ben
5d4477d08d
safe & efficient (-> Any Boolean) contract
...
New strategy for compiling the (-> Any Boolean) type to a contract.
When possible, uses `struct-predicate-procedure?` instead of
wrapping in `(-> any-wrap/c boolean?)`.
Makes exceptions for untyped chaperones/impersonators over struct predicates;
those are always wrapped with `(-> any-wrap/c boolean?)`.
This change also affects (require/typed ... [#:struct ...]), but not #:opaque
2015-11-09 19:04:02 -05:00
Georges Dupéron
67bd07a84a
Fixes type of member
and assoc
, plus some tests for them. See github bug #223 : “(member) has wrong type, exploiting the hole causes segfault”.
2015-11-09 19:04:02 -05:00
Vincent St-Amour
177fdb9684
More drdr-found counterexamples.
...
All fixed already, but were found before I pushed the fixes.
2015-11-09 17:24:12 -06:00
Vincent St-Amour
65b6d3e019
Abstract over operations properly.
...
Found using random testing.
2015-11-09 17:16:10 -06:00
Vincent St-Amour
7346abf91c
Preserve sign better in real-complex ops.
...
Found using random testing.
2015-11-09 17:16:10 -06:00
Vincent St-Amour
db79beaf12
Actual fix for not suppressing divide-by-0 errors.
2015-11-09 17:16:10 -06:00
Vincent St-Amour
63e26cf17a
Avoid suppressing divide-by-0 errors.
2015-11-09 17:16:09 -06:00
Vincent St-Amour
6a2c8ca9f7
Fix the fix to flexpt.
2015-11-09 17:16:09 -06:00
Vincent St-Amour
5fe4e6b03f
Add missing coercion.
2015-11-09 17:16:09 -06:00
Vincent St-Amour
0b2ae25c92
Propagate fix to division.
...
Found using random testing, at least twice.
2015-11-09 17:16:09 -06:00
Vincent St-Amour
7ef06f74c9
Extend this handling to multiplication.
...
Found using random testing.
2015-11-09 17:16:09 -06:00
Vincent St-Amour
b101d396a3
Avoid premature float conversions.
...
Found using random testing.
2015-11-09 17:16:09 -06:00
Vincent St-Amour
7ba1ab6e51
Use correct imaginary binding.
...
Fixes 13 bugs found using random testing.
2015-11-09 17:16:09 -06:00
Vincent St-Amour
b6e6a6fa98
Add test for real-complex interaction.
2015-11-09 17:16:09 -06:00
Vincent St-Amour
f2bb83b012
That bug has been fixed.
2015-11-09 17:16:09 -06:00
Vincent St-Amour
46f2ed95d3
Fix tests for more conservative types.
2015-11-09 17:16:08 -06:00
Vincent St-Amour
9385f6e350
Yet another fix for expt and complexes.
...
Found using random testing. Found once.
2015-11-09 17:16:08 -06:00
Vincent St-Amour
5ce00a90d2
Fix sign property of n-ary division.
...
Found using random testing. Found 4 times.
2015-11-09 17:16:08 -06:00
Vincent St-Amour
23de6a654e
Fix another NaN case in expt.
...
Found using random testing. Found 3 times.
2015-11-09 17:16:08 -06:00
Vincent St-Amour
3ef8fe1739
Fix type of expt for bignums that get converted to infinity.
...
Found using random testing. Found 10 times.
2015-11-09 17:16:08 -06:00
Vincent St-Amour
a0ef6b1d8c
Fix type of expt.
...
Found using random testing. Found 10 times.
2015-11-09 17:16:08 -06:00
Vincent St-Amour
ef80d61ae9
Fix port interleaving.
2015-11-09 17:16:08 -06:00
Vincent St-Amour
16a18d7648
Fix type of flexpt.
...
Found using random testing. Found 9 times.
2015-11-09 17:16:08 -06:00
Vincent St-Amour
bd12a1b928
Add a regression test suite with historical counterexamples found by DrDr.
2015-11-09 17:16:08 -06:00
Sam Tobin-Hochstadt
37bfd24a0b
Add test for or/c problem.
2015-11-06 14:35:46 -05:00
Vincent St-Amour
e4edf7a9ee
Remove tests made obsolete by safety improvements.
2015-11-03 18:04:44 -06:00
Vincent St-Amour
89a06cfae6
Fix bitwise-and on negative numbers.
...
Found using random testing.
2015-11-03 16:02:05 -06:00
Vincent St-Amour
58e97f83ea
Fix sign propagation for division.
...
Found using random testing.
2015-11-03 15:47:32 -06:00
Vincent St-Amour
da97da5ff8
Fix type of expt when mixing floats and float complexes.
...
Found using random testing.
2015-11-02 19:31:00 -06:00
Vincent St-Amour
ca9306bb1d
Use more precise notion of "real argument" for multiplication too.
...
Found using random testing.
2015-11-02 19:31:00 -06:00
Vincent St-Amour
e47ffeb0e8
Fix interaction of sign and underflow in fl/.
...
Found using random testing.
2015-11-02 19:31:00 -06:00
Vincent St-Amour
a3d29d9e03
Align float-complex/float division with Racket more.
...
Found using random testing.
2015-11-02 19:30:59 -06:00
Sam Tobin-Hochstadt
cb35383143
Add test case for issue #215 .
2015-11-02 14:49:25 -05:00
Daniel Feltey
d7ae7dbdd8
Fix incorrect serialization of signature environment
...
Closes #229
2015-10-29 01:35:33 -05:00
Asumu Takikawa
9b8b525d42
Make unit test less noisy
2015-10-24 04:13:47 -04:00
Asumu Takikawa
2479dffde0
Fix #:opaque require clauses at the top-level
2015-10-21 17:23:24 -04:00
Asumu Takikawa
5fa40de546
Avoid ignoring class/unit forms at the top-level
...
Possibly a better long-term solution (for after the release)
is to not use the ignore property here and instead just use the
ignore table.
2015-10-21 13:33:30 -04:00
Asumu Takikawa
c3a59ee1c4
Use protect-out
for unsafe operations
...
Disallows usage in sandboxes and similar contexts
2015-10-20 18:00:35 -04:00
Sam Tobin-Hochstadt
6aa635d740
Fix equality handling on literals.
...
Repairs eb93a2b571
and closes #215 .
2015-10-20 15:56:07 -04:00
Asumu Takikawa
b5dc5585be
Fix part of GH issue #208
...
For private `define-values` in classes with multiple variables, don't
eagerly throw type errors in the synthesis step. Instead, wait
until the later checking step when the environment will be correctly
set up.
When the initial synthesis typecheck fails, yield type Any for
the environment. If the typecheck should really fail, this is ok. If
not, then the user can add a type annotation.
A better long-term strategy is to change the handling of environments
so that the type environment gets refined as definitions are checked.
This way all annotations that the user writes are factored into the
initial environment and unannotated variables will have their types
synthesized.
2015-10-20 14:06:32 -04:00
Vincent St-Amour
59a61cc732
Fix tests.
2015-10-19 16:23:26 -05:00
Vincent St-Amour
4aed44370d
Ignore more code that has no types.
2015-10-19 16:23:26 -05:00
Vincent St-Amour
6245807b7c
Log uses of float vectors.
...
For OC to recommend using flvectors instead.
2015-10-19 16:23:26 -05:00
Vincent St-Amour
6ccb0939f8
Have optimizer skip more code that is not typechecked.
2015-10-19 16:23:26 -05:00
Asumu Takikawa
3149b0a305
Fix send
on a receiver with recursive type
...
Thanks to Matthias for finding the bug
2015-10-19 16:27:11 -04:00
Asumu Takikawa
638618ae40
Fix unsafe-require/typed for kw functions
2015-10-16 15:52:21 -04:00
Sam Tobin-Hochstadt
3d91ebeb4c
Increase timeout instead of removing it.
...
Having no timeout definition reverts to the default, which is 90 seconds.
2015-10-16 11:48:28 -04:00
Vincent St-Amour
b40cde6b67
Remove stray timeout.
...
The random tester has its own timeout, which doesn't cause drdr to error.
2015-10-16 10:20:32 -05:00
Vincent St-Amour
98f90cce2c
Ignore random testing running out of resources.
...
Evaluating random bignum expressions sometimes goes off the rails.
2015-10-06 11:44:27 -05:00
Asumu Takikawa
bf3f86a2b0
Add a performance test for function contracts
2015-10-01 18:04:20 -04:00
Asumu Takikawa
ef6d82e81f
Add a test for top-level unsafe-require/typed
2015-10-01 17:41:03 -04:00
Vincent St-Amour
913ef6a2ef
Ensure a minimum of actually random testing.
...
Previously, most of it was actually deterministic enumeration, which meant
repeating the same tests over and over again. We still want to run those,
if only to catch regressions, so now we run both enumeration and truly
random tests, separately.
This does mean that the set of tests being run for a given seed is not the
same as it used to, so old seeds won't give the same results as before.
2015-10-01 13:57:35 -05:00