Asumu Takikawa
4f050888e2
Export let*-values from TR correctly
...
Closes PR 14997
2015-08-12 12:16:05 -04:00
Asumu Takikawa
29144c7932
Fix handling of let rhs that don't return
...
In the case that a let rhs doesn't return and therefore the
bodies of the let are unreachable, the bodies need to be marked
as ignored for the optimizer.
In addition, don't attempt unboxed let optimization at all
if the return type is Nothing since it probably means some
body expressions have no type.
Closes GH issue #165
2015-08-11 12:07:27 -04:00
Asumu Takikawa
6512b52b1d
Fix polymorphic recursion check for type aliases
...
The old check was broken for cases with type constructors
with more than one type argument and was also too conservative
in some cases (e.g., when one cycle refers to another cycle of
aliases in a non-recursive manner).
The new check is still conservative, but it allows more types
than before.
Closes GH issue #157
2015-08-07 19:05:13 -04:00
Vincent St-Amour
5b986d7d38
Update base dependency version.
2015-08-05 13:13:50 -05:00
Vincent St-Amour
f6779f2cfa
unstable/macro-testing -> syntax/macro-testing
2015-08-05 13:13:50 -05:00
AlexKnauth
cf4a033872
fix issue #166
2015-08-03 18:36:14 -05:00
AlexKnauth
0c1d58a07b
handle define-new-subtype in earlier phase
2015-07-30 23:24:17 -04:00
AlexKnauth
a58c2e317f
add define-new-subtype
...
inspired by haskell newtypes
http://www.mail-archive.com/racket-users@googlegroups.com/msg27118.html
https://www.haskell.org/tutorial/moretypes.html
2015-07-30 01:39:06 -04:00
Asumu Takikawa
d1e17b04e8
Add tests for PR 15026
...
Fixed on HEAD, possibly due to new expander
Closes PR 15026
2015-07-29 14:29:18 -04:00
Asumu Takikawa
3fffeeac5d
Add a test for PR 14521
...
Started working since v6.2. Possibly due to the new macro
expander.
Closes PR 14521.
2015-07-29 13:55:49 -04:00
Brian Lachance
5e0e8ed713
Fix missing match cases when trying to bind AnyValues typed "results"
...
tc-toplevel has fixes for define's, tc-let-unit has fixes for let's
2015-07-29 11:44:29 -04:00
Brian Lachance
1e5bc30b95
Prevent -let-internal name from leaking to users
...
Because -let-internal wasn't rename-out'd, users would see its name in
syntax error messages. Adding #:context forces the error messages to be
phrased in terms of the given form.
2015-07-29 11:07:54 -04:00
Vincent St-Amour
0a7ec21df9
Rename open-place to place/context.
2015-07-28 16:15:08 -05:00
Asumu Takikawa
91279f46c7
Add types for recent functions moved from unstable
2015-07-28 14:49:26 -04:00
Asumu Takikawa
2819a62b30
Add types for new syntax operations
2015-07-27 17:15:54 -04:00
Vincent St-Amour
36a8eb2b53
Remove dependency on unstable/open-place.
...
Instead use open-place from racket/place.
2015-07-23 11:48:39 -05:00
Sam Tobin-Hochstadt
5cd5f772d6
Don't allow promises created with delay/name
as (Promise T)
.
...
Since these promises re-evaluate their bodies every time they
are forced, allowing them makes `force` not idempotent and not
safe to treat as a path.
This change is slightly backwards-incompatible, since programs
that previously passed `delay/name` promises across the typed
boundary will now fail at runtime. The alternative is also
incompatible: stop treating `force` as a path. Since `delay/name`
is quite obscure, this approach seems like the safer choice.
2015-07-22 14:22:34 -04:00
Vincent St-Amour
28c9bdf37b
Fix base version dependency.
2015-07-20 16:17:39 -05:00
Vincent St-Amour
f35b5a9182
check-duplicate -> check-duplicates
2015-07-20 16:17:39 -05:00
Vincent St-Amour
72fb041211
Replace uses of unstable/function and /list with the equivalent core libs.
2015-07-20 16:17:39 -05:00
Matthew Flatt
1842aaa2bd
fixes for some tests
...
The `identifier-binding` function is now senstive to the "macro
introduction" scope that's on an indentifier provided to a currently
expanding macro. Unit tests for TR need to use
`syntax-local-intorduce` to remove it, in the same way that `tc-setup`
already does.
Also, recognize a class expansion when it's wrapped with
`#%expression`, since `class` now expands that way sometimes.
2015-07-16 08:40:35 -06:00
AlexKnauth
aec5fad4be
make append preserve non-emptyness of first argument
...
see https://github.com/racket/scribble/pull/8#discussion_r33423152
2015-06-28 12:07:42 -04:00
Sam Tobin-Hochstadt
90dd27bfd8
Fix update-implies error.
2015-06-23 16:21:37 -04:00
Sam Tobin-Hochstadt
77f8316eaa
Reduce dependencies.
2015-06-23 16:09:09 -04:00
Sam Tobin-Hochstadt
9a2b74dc33
Generate trivial constraints for missing type variables.
...
If the type variable isn't mentioned anywhere, then just
pick `Any` as its substitution.
Fixes #152 .
2015-06-23 16:08:23 -04:00
Vincent St-Amour
6bef6e6ca8
Make type of abs
and magnitude
more precise.
...
Fixes a failing test.
2015-06-16 12:00:07 -05:00
Eric Dobson
0498f548c1
Fix the type of abs on negative zeros.
2015-06-16 10:43:01 -05:00
Asumu Takikawa
0892e23892
Resolve expected type in tc-lambda-unit
...
Closes #144
2015-06-10 12:23:39 -04:00
Asumu Takikawa
bc3443b393
Change Module-Path type to accommodate submodules
...
Closes #84
2015-06-10 12:21:51 -04:00
Asumu Takikawa
b63514a2c3
Allow more flexible keywords in ->* types
...
Keyword argument types in ->* are now allowed intermixed with
positional arguments instead of at the end.
Closes #145
2015-06-02 01:05:05 -04:00
Eric Dobson
8014db0f7d
Make infer unfold Mu before spliting on Unions.
2015-05-19 20:44:15 -07:00
AlexKnauth
e075523e5e
change type of partition
2015-05-19 16:29:49 -04:00
Alexis King
a096857a88
Disable the #{} reader macro if a dispatch macro already exists on #\{
2015-05-14 14:35:30 -07:00
Sam Tobin-Hochstadt
93276d4091
Add some missing dependencies.
2015-05-14 12:13:14 -04:00
Mira Leung
3a70ed5669
Update to fl>= tests
2015-05-14 12:13:14 -04:00
Mira Leung
9b88243b5c
Unit tests for fl comparison operators
2015-05-14 12:13:14 -04:00
Mira Leung
df0f9d53bd
Unit tests for fl>= typechecking
2015-05-14 12:13:14 -04:00
Eric Dobson
1e890f18be
Add support for running raco test on TR unit tests.
2015-05-14 12:13:14 -04:00
Asumu Takikawa
92d1dd1c5e
Add sealing contracts for row polymorphic types
...
This enables contract generation in the negative
direction (untyped->typed) for row polymorphic types
(basically mixin types).
Depends on `class-seal` and `class-unseal` in
the racket/class library.
2015-05-13 20:52:32 -04:00
Marc Burns
609d6189e9
Improve typecheck for private field initializers
...
This patch addresses two issues with `typed/racket/class`:
1. For multiple private fields declared with `define-values`, type
information does not propagate from the values produced by the
initialization expression to the declared fields. This breaks soundness
of private fields: A field can be annotated with a type that does not
contain the field's initial value.
This was resolved by keeping a table of temporary bindings introduced in
the expansion of the initializer along with their types. The field
setter's type is then checked against that of the corresponding
temporary.
2. The class body typechecker assumes that the `expr` of
a `define-values` clause will expand to a bare `(values vs ...)`.
This was resolved by generalizing the template for matching an expanded
`define-values` initializer and extracting the type information from the
`expr` instead of each element in `(vs ...)`.
2015-05-12 18:42:05 -04:00
Eric Dobson
90061c2b96
Add filters for trivial cases in arithemetic procedures.
2015-05-02 08:26:50 -07:00
Vincent St-Amour
257d4ec9a7
Fix use of values in type of integer-sqrt/remainder
.
...
Closes PR 15034.
2015-04-28 17:49:53 -04:00
Asumu Takikawa
a80f55946d
Adjust error messages for : annotation form
...
Print better error messages for expression like
(: 2 Zero). Also fix and improve error messages for
multiple/missing types.
Closes PR 15044
2015-04-21 16:07:13 -04:00
Andrew Kent
cbbf5536d8
no objects for mutated private class fields
...
tidy up ->acc
2015-04-08 17:53:00 -04:00
Eric Dobson
f0c48cfb87
Make abs return its argument on -NonNegReal.
2015-04-07 09:50:33 -07:00
Eric Dobson
a522768b7e
Make tc-subst restrict returned types based on argument types.
2015-04-07 09:50:32 -07:00
Eric Dobson
7a29e8e369
Simplify cases in comparisons with -Zero or -RealZero
2015-04-07 08:23:32 -07:00
Eric Dobson
1ad0a2b181
Remove extra cases in comparisons for -One
2015-04-07 08:23:32 -07:00
Eric Dobson
b77bd862a0
Stop trying to represent rest objects because they are currently broken.
...
Closes #83 .
2015-04-07 08:13:38 -07:00
Eric Dobson
a33b27a3c9
Remove many cases of = that are unnecessary.
2015-04-05 19:10:51 -07:00
Eric Dobson
7b762933c6
Simplify the type of zero?.
2015-04-05 19:07:12 -07:00
Eric Dobson
be225976d3
Make subtype work with restricted filters.
...
Closes PR 15025.
2015-04-05 19:07:12 -07:00
Asumu Takikawa
7b5478e0bc
Make Place-Channel <: (Evtof Any)
2015-04-02 11:00:25 -04:00
Asumu Takikawa
c70910aaa0
Fix type restriction in values->tc-results
...
Previously the restriction didn't account for traversing
the object type with the given path. This also relies on
the previous commit that adds subtyping on filters.
(because this change seems to introduce filters which
only differ by an unrolling of a recursive type, but
the old subtyping only worked for identical types)
2015-04-02 10:58:45 -04:00
Asumu Takikawa
8acc86bb9b
Add subtyping for types inside filters
...
This makes a type like
(-> Any Boolean : #:+ Integer)
a subtype of a type like
(-> Any Boolean : #:+ Number)
For not filters, the direction is reversed.
2015-04-01 18:54:00 -04:00
Eric Dobson
889d96ca78
Strengthen infinity checks in comparison operations.
...
This adds checks for infinity when comparing against reals and accounts
for NaNs.
2015-03-30 09:25:48 -07:00
Eric Dobson
3889036b12
Simplify types for positive? and negative?.
2015-03-30 09:12:51 -07:00
Eric Dobson
5de22c80f7
Make values->tc-results restrict to the original type of the object.
2015-03-30 09:12:25 -07:00
Eric Dobson
e5ea1f4bb6
Make zero? sound with regards to NaN.
2015-03-28 14:08:20 -07:00
Alexis King
b54d8dc04a
Strengthen the types for member, memv, memq, and memf
...
Fixes #61 .
2015-03-25 16:44:42 -07:00
Vincent St-Amour
b3bdb40ab7
Optimize pair operations, even in the absence of syntactic pair types.
2015-03-24 16:47:06 -04:00
Alexis King
aab2d9efcf
Include more specific types for integers converted to floats
2015-03-19 18:54:11 -07:00
Asumu Takikawa
7a09bac1e3
Handle more cases for opt-arg function contracts
...
Allow more cases that are allowed for ordinary function
contracts and explicitly error instead of internal errors
for other cases.
Closes Github Issue #50
2015-03-17 15:52:21 -04:00
Asumu Takikawa
1e44bee956
Fix contract test form for the failure case
...
This hadn't been updated for recent contract changes but
hadn't been noticed since it only breaks on failing tests.
2015-03-17 15:52:21 -04:00
Asumu Takikawa
8106d318f1
Fix first-order check for TR's opaque object/c
...
Closes PR 15003
2015-03-13 16:52:34 -04:00
Asumu Takikawa
1999d0251b
Allow #lang typed/racket/gui and add base module
...
This aligns the library structure of typed/racket/gui
to racket/gui.
2015-03-12 17:27:59 -04:00
Asumu Takikawa
8e6710438f
Support prefabs for unsafe-struct-ref
2015-03-10 15:18:02 -04:00
Asumu Takikawa
5d708ab53f
Add typechecking for prefab structs
...
Adds a new Prefab type constructor along with support for
the use of `struct` with the #:prefab keyword.
2015-03-10 15:14:51 -04:00
Asumu Takikawa
57a76517fc
Enable environment extension in unit tests
...
This allows a unit test like tc-e to extend the lexical
type environment when checking the test expression.
2015-03-09 15:59:02 -04:00
Asumu Takikawa
96e741dc1b
Add srcloc instead of a quoted syntax for casts
2015-03-06 16:09:31 -05:00
Sam Tobin-Hochstadt
a3e25231a6
Look up unrenamed versions of type aliases as well.
...
Fixes bug reported by Alexander Knauth.
2015-03-06 12:13:40 -05:00
Sam Tobin-Hochstadt
7a67243d68
Fix contract provide fixup to handle contracts at the beginning.
2015-03-06 09:41:29 -05:00
Matthew Flatt
011649a654
move contract submodules to start of enclosing module
...
Putting the contract submodules early enough allows them to be used
for `module*` submodules.
Repairs a problem reported by Alexander:
http://lists.racket-lang.org/users/archive/2015-March/066164.html
2015-03-06 09:41:29 -05:00
Asumu Takikawa
4866ff825b
Increase with-tr-contracts.rkt timeout
2015-03-05 22:23:58 -05:00
Alexis King
c79b61a751
Adjust named-let to use the return type annotation whenever possible
...
Fixes #43
2015-03-04 15:17:35 -08:00
Asumu Takikawa
33543ce054
Use absent
in some row poly class contracts
...
When exporting row polymorphic functions from TR, just
use absent clauses to ensure that TR won't accidentally
try to add pre-existing fields/methods. No sealing is
needed because the typechecker enforces parameteric use
of the class.
2015-03-04 16:26:35 -05:00
Asumu Takikawa
b8807f706c
Fix a test that violated opaque class/c
2015-03-04 16:26:35 -05:00
Asumu Takikawa
8d0c352dcc
Add a custom object contract for use in TR
...
This corresponds to the more strict object contracts
from the OOPSLA paper. Also use `object/c-opaque` in
TR contract generation
2015-03-04 16:26:35 -05:00
Asumu Takikawa
e2fd3b6653
Enable opaque class contracts in TR
2015-03-04 13:28:06 -05:00
Alexis King
3f67cfea7c
Use contract-neg-party to accurately handle contracted applications
...
Fixes #38
2015-03-03 16:15:09 -08:00
Asumu Takikawa
165a2afa5b
Fix augment/inner contract generation
2015-02-28 14:02:57 -05:00
Asumu Takikawa
ec15f58542
Basic support for contract gen for PolyRow types
...
Currently only supports the typed export side. The other
way needs contract features that haven't been merged yet.
2015-02-27 15:19:30 -05:00
Asumu Takikawa
6a855f664c
Reorganize type->contract for polymorphic methods
2015-02-27 13:37:07 -05:00
Asumu Takikawa
78fc0f19e7
Improve types for private field accessors
...
Enables better occurrence typing for private fields
2015-02-23 15:38:28 -05:00
Alexis King
425c584a30
Handles expansion of internal forms inside splicing-syntax-parameterize
...
Fixes PR 14973
Closes #24 .
2015-02-21 15:40:23 -05:00
Asumu Takikawa
5180e601db
Adjust the fix in 619d6945c3
...
For unions of multiple type aliases the new placeholder
would cause union collapsing incorrectly. Put an uninterned
symbol in the placeholder types to avoid this.
2015-02-17 14:00:07 -05:00
Alexis King
619d6945c3
Prevent type alias placeholders from collapsing in unions with symbols
...
Fixes #26
2015-02-16 13:22:35 -05:00
Asumu Takikawa
52cc284d87
Better error msg for structs with the same name
...
Thanks to Max for the suggestion
2015-02-13 00:10:19 -05:00
Asumu Takikawa
888893d81b
Work around type alias printing limitations
...
Type aliases in internal definition contexts can affect
type printing outside of the context, which can cause
interference in unit tests.
This only seems to happen when running with the TR test
driver.
2015-02-12 16:31:18 -05:00
Asumu Takikawa
62c86d5ddd
Added occurrence typing for private fields.
...
This also tracks mutation of private fields to ensure that only
non-mutated field types are allowed to be refined.
2015-02-12 16:31:18 -05:00
Asumu Takikawa
6c09d52b2e
Generalize method handling in TR
...
Previously, TR only recognized a subset of the syntax that
the class macro accepts for method definitions (and errored
unhelpfully on other cases). Though that subset was sufficient
for most methods, macros will sometimes produce unusual forms.
2015-02-08 18:29:37 -05:00
Vincent St-Amour
787df49140
Make type of division more lenient.
...
Thanks to John Clements for the report.
2015-02-04 14:06:54 -05:00
Asumu Takikawa
8402ee1635
Add FSemaphores to Typed Racket
2015-02-02 11:23:09 -05:00
Asumu Takikawa
e85cc55f6f
Add types for call-with-semaphore
2015-02-02 02:54:01 -05:00
Alexis King
032a11fdae
Add support for use-dir? param of in-directory
...
Closes #21 .
2015-01-31 09:34:01 -05:00
Alexis King
7122d93de8
Make Path a subtype of Module-Path
...
Closes #20 .
2015-01-31 09:33:50 -05:00
Alexis King
8c471bb2a3
Add tests for directory-list #:build? argument
...
Closes #18 .
2015-01-29 09:55:17 -05:00
Vincent St-Amour
ef35d21a31
Refine type of current-inexact-milliseconds.
...
Thanks to Alex Knauth for the report.
2015-01-27 20:30:28 -05:00
Asumu Takikawa
066e4356b4
Support type alias definitions in class bodies
2015-01-22 14:22:11 -05:00
Asumu Takikawa
5c090ba686
Fix new error messages for class/object types
...
Closes PR 14942
2015-01-21 13:55:19 -05:00
Asumu Takikawa
4ab7ba2578
Improve check-below errors for classes/objects
...
Also fix a type-checker bug that the tests for the
error messages uncovered.
2015-01-20 19:58:25 -05:00
Asumu Takikawa
b9aca78cf0
Update compile-omit-paths for TR tests
2015-01-20 14:23:38 -05:00
Asumu Takikawa
0b8c29b98e
Fix TR's async-channel-contract test
2015-01-20 14:23:38 -05:00
Asumu Takikawa
e1ad989d18
Move GUI tests to a separate folder
...
These don't work as ordinary integration tests because
racket/gui/base cannot be instantiated multiple times.
The test driver will be modified later to run these
differently to avoid multiple instantiation.
2015-01-20 10:47:53 -05:00
Asumu Takikawa
8bc58ba94c
Don't show GUI frame for Esquire test
2015-01-20 10:47:53 -05:00
Asumu Takikawa
455bc7664b
Fix type dictionary entries for overriden methods
...
Add typed Racket Esquire as a test case
2015-01-19 16:12:31 -05:00
Sam Tobin-Hochstadt
5ba9633e78
Improve hash-table overlap.
...
Thanks to Alex Knauth for the code and Jordan Johnson for the test case.
2015-01-19 09:48:50 -05:00
Sam Tobin-Hochstadt
9a39c3e793
Add for/set
and for*/set
to Typed Racket.
2015-01-16 09:43:37 -05:00
Andrew Kent
e7d61bd982
fixed struct field updates
2015-01-14 15:32:34 +05:30
Asumu Takikawa
ded837ce10
Fix tc/send to accept keyword argument methods
...
Closes PR 14910
2015-01-12 18:36:35 -05:00
Asumu Takikawa
864b0ad5fc
Add more authors to typed-racket-test pkg
2015-01-09 18:08:36 -05:00
Andrew Kent
3ed6b464e7
overlap tests for Seq and Evt, minor overlap fix
2015-01-06 15:01:16 -05:00
Andrew Kent
16db5ecc78
dont let-alias type vars, better overlap & restrict
2015-01-06 13:51:40 -05:00
Andrew Kent
dc2ce38aef
Merge pull request #5 from andmkent/master
...
fixed mutation let-aliasing bug
2015-01-05 09:15:57 -05:00
Asumu Takikawa
dbaebdd305
Propagate expected types better for private fields
...
Closes PR 14911
2015-01-04 19:39:14 -05:00
Andrew Kent
9d41048747
fixed mutation let-aliasing bug
...
let-aliasing initially forgot to check if a variable that might act as
an alias was ever mutated. fixed by disallowing a mutated variable to
act as an alias.
2015-01-03 23:03:45 -05:00
Asumu Takikawa
791a16e54f
Fix method definitions with lambda/case-lambda
...
Closes PR 14904
2015-01-01 01:59:37 -05:00
Asumu Takikawa
6059fb481b
Check expected type before calling tc/funapp1
...
This compensates for a change in commit bb3f446186
that made the possible-domains function more permissive
(possibly returning results that are inconsistent with the
expected type).
Closes PR 14889
2015-01-01 00:03:23 -05:00
Asumu Takikawa
643c20afdb
Add missing contract generation error cases
...
Functions with dotted values or AnyValues in the return type
aren't yet supported for contract generation.
Related to PR 14894
2014-12-27 05:31:46 -05:00
Andrew Kent
e1b8eff1f9
initial let-aliasing addition
2014-12-22 12:35:30 -05:00
Vincent St-Amour
29e4be449b
Fix more collection paths.
2014-12-18 09:30:17 -05:00
Asumu Takikawa
3e45f258be
Adjust TR test package dependencies
2014-12-16 16:25:37 -05:00
Vincent St-Amour
67bb30da0b
Fix collection references to use the new name.
2014-12-16 14:15:54 -05:00
Vincent St-Amour
134f793ccc
Reduce directory nesting for tests.
2014-12-16 10:07:25 -05:00
Andrew Kent
76effbb423
better Or implied-atomic? & unit tests
2014-12-13 22:13:31 -05:00
Sam Tobin-Hochstadt
933e571125
Don't compare non-identifiers with free-id=?
.
...
Closes PR 14877.
2014-12-10 17:53:46 -05:00
Sam Tobin-Hochstadt
b5172405ff
Actually fix the tests.
2014-12-08 10:03:34 -05:00
Sam Tobin-Hochstadt
8b3ed72205
Increase test timeouts for DrDr.
2014-12-07 10:01:19 -05:00
Sam Tobin-Hochstadt
44e3cdfb71
Remove extra directories.
2014-12-02 00:53:36 -05:00