Commit Graph

346 Commits

Author SHA1 Message Date
Georges Dupéron
09d60e003b Simplified bad syntax error reporting for let (changes c8f02eb by samth) 2015-09-29 18:32:01 -04:00
Asumu Takikawa
eb93a2b571 Improve typechecking for equality
Closes GH issue #164
2015-09-22 22:57:18 -04:00
Daniel Feltey
c6743b4423 Don't expose require-typed-signature 2015-09-13 04:09:48 -05:00
Daniel Feltey
cbb76b987c Fix tc/letrec-values contract and document require-typed-signature 2015-09-12 13:45:33 -05:00
Vincent St-Amour
f89d91d864 Add timing for contract generation. 2015-09-11 13:39:03 -05:00
Vincent St-Amour
5ed30d7fcf Fix contract build. 2015-09-11 13:12:49 -05:00
Daniel Feltey
2e0cc095c7 Initial support for typed units in typed racket.
Most unit forms are supported, including most of the "infer" forms that
infer imports/exports/linkages from the current context.

Notably, none of the structural linking forms for units are supported, and
`define-unit-binding` is also currently unsupported.
2015-09-10 16:32:11 -05:00
Asumu Takikawa
26c4a199fb Fix accidentally added redundant requires
See last commit
2015-09-09 17:54:09 -04:00
Asumu Takikawa
3d6418b8be Refactor provide handling to reduce code 2015-09-09 12:50:32 -04:00
Asumu Takikawa
2b2e87010a Update version dependency on base
Depends on the rename transformer change
2015-09-09 11:59:43 -04:00
Alexis King
4bf3479776 Add types for writeln and println 2015-09-08 15:58:07 -04:00
Asumu Takikawa
241f04bcdb Fix typed provide uses in some modules
When identifiers provided by typed modules were used in
certain submodules of the form (module* n #f ...) or were
used by modules implemented in a language defined by TR,
the wrong redirection was used in the expansion.

The reason was because TR's identifier redirection decided
whether it was in a typed or untyped context at module visit
time, but that's too early in the cases above.

(because TR's #%module-begin may not have begun expanding yet)

The fix uses a rename-transformer that delays the decision
to use the typed or untyped identifier until expansion time.

Closes GH issue #163 and #181

Closes PR 15118
2015-09-08 15:53:34 -04:00
Asumu Takikawa
552f509102 Refactor the renamer module
Moves `get-alternate` since its only user is the require-contract
module. In addition, it appears that one of the cases in the
conditional in its body is unnecessary. This likely means that
the extra machinery for typed-renamers are not needed at all.

Also adds a test for `require/typed` of a typed module
2015-09-08 13:31:02 -04:00
Vincent St-Amour
fd3941c062 Remove dependency on unstable/contract. 2015-09-07 21:38:22 -05:00
Sam Tobin-Hochstadt
c8f02eb93f Improve error message for (let).
Closes #193.
2015-09-07 17:31:46 -04:00
Vincent St-Amour
a25a07987e Update type of pretty-format. 2015-09-07 15:35:14 -05:00
Brian Lachance
77334808a8 Allow AnyValues as a return type in user code
Closes PR 14217
2015-09-07 13:26:34 -05:00
Vincent St-Amour
9ab862c668 Remove now unused bound-names parameter. 2015-09-07 13:26:07 -05:00
Vincent St-Amour
602223e74a Prevent open SC terms.
Closes PR 15144.
2015-09-07 13:24:16 -05:00
Alexis King
c48abf6dff Fix typo in generated contract for Nonpositive-Integer 2015-08-29 16:41:10 -07:00
Asumu Takikawa
f5f84c7625 Fix for*/fold and for*/lists
Only parse and use the type annotations if they are present on
all fold variables. This matches the default for other forms in TR.
Also, this will usually result in a "insufficient type information"
message which is more helpful than if TR chose some default type.

Closes PR 15138
Closes PR 14893
2015-08-25 11:44:24 -04:00
Spencer Florence
9fb79b4e18 more missing srclocs 2015-08-22 08:42:14 -04:00
Spencer Florence
1d2da49dfb fixed src loc propigation for n-ary*->binary 2015-08-22 08:42:14 -04:00
Asumu Takikawa
20f3badc98 Enable prefab support correctly for define-struct
I had forgotten to adjust the define-struct macro to work
like the struct macro for the #:prefab keyword, which made
TR think prefabs were ordinary structs.

Closes GH issue #188
2015-08-21 16:38:04 -04:00
Asumu Takikawa
51cd8db3d6 Add types for a few missing syntax functions
Also fix some existing types
2015-08-20 17:08:47 -04:00
Spencer Florence
c8ebec62e8 fixed unbox-let optimization srcloc propigation 2015-08-20 15:20:51 -05:00
AlexKnauth
30cdfd16cc print more Error types as Error types 2015-08-17 17:48:00 -04:00
Asumu Takikawa
d4a9052f52 Fix outdated comment for redirect-contract 2015-08-17 13:12:25 -04:00
AlexKnauth
0ea39a1177 clean up unused definition 2015-08-16 00:00:58 -05:00
AlexKnauth
0037a0277f allow values with define-new-subtype types as functions 2015-08-15 19:00:35 -05:00
AlexKnauth
efb877dbfb fix inference with define-new-subtype 2015-08-15 14:36:45 -05:00
AlexKnauth
f8cc9e8dcd fix issue #169 2015-08-14 21:42:20 -05:00
Asumu Takikawa
dfdf86e527 Add identifier-binding-symbol to TR base-env 2015-08-14 21:25:54 -04:00
Asumu Takikawa
2e97280335 Eliminate the eval hack for top-level structs
This eliminates a hack used to make the `struct` form
work at the TR top-level. The trampolining top-level
typechecker makes this unnecessary.
2015-08-14 21:25:54 -04:00
Asumu Takikawa
d85a267c42 Declare require/typed internal identifier first
Uses the `define-syntaxes` trick to declare the identifier
so that its binding symbol doesn't change later.
2015-08-14 21:25:54 -04:00
Asumu Takikawa
e031d6c47e Typecheck the top-level using trampolining macros
Instead of local-expanding the entire top-level forms at
once, wrap expressions in a top-level begin in trampolining
macro forms. This allows the typechecker to trampoline back
to the evaluator, which is necessary to declare/register
declarations made in a top-level begin.

The point of this change is to eliminate top-level hacks
and faciliate various macros that need to communicate using
multiple top-level forms.
2015-08-14 21:25:54 -04:00
Asumu Takikawa
84bd502d46 Refactor TR top-interaction
Use a macro to abstract out the implementation of most
of the top-level TR commands.
2015-08-14 21:25:54 -04:00
Asumu Takikawa
94ce4b203e Use tc-expr for top-interaction functions instead
This restricts operations like `:print-type` to only
work on expressions. This seems like a reasonable
restriction and simplifies the implementation.
2015-08-14 21:25:54 -04:00
Vincent St-Amour
e997f02095 Rewrite compound pair operation optimization.
Previous version replaced calls to, e.g., `cadr` with calls to `cdr`
then `car`, called the typechecker to populate the type table, then
optimized the exploded operations. The call to the typechecker failed
on open terms, limiting the applicability of the optimization, and was
just generally brittle.

The new version instead explodes operations, then optimizes them inside
out for as long as the argument's type guarantees it's safe. This works
on open terms, and should be more robust.
2015-08-14 17:28:47 -05:00
Asumu Takikawa
509f1aa20c Update type for copy-directory/files 2015-08-14 01:02:54 -04:00
Vincent St-Amour
aae17a0bc0 in-pairs -> in-dict 2015-08-13 10:41:15 -05:00
Vincent St-Amour
b6362e7eb3 unstable/sequence -> racket/sequence
And move to TR one of the functions that didn't make it.
2015-08-13 10:41:15 -05:00
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
b9268e99db Move syntax-length to TR. 2015-08-05 13:13:51 -05:00
Vincent St-Amour
11a8a3e1d9 unstable/syntax -> syntax/location 2015-08-05 13:13:51 -05:00
AlexKnauth
0c1d58a07b handle define-new-subtype in earlier phase 2015-07-30 23:24:17 -04:00
Brian Lachance
a97489cc80 Fix attempt at handling internal errors when binding AnyValues results
This is the correct change for how attempting to bind AnyValues results
caused internal type-checking errors. The root cause was get-type/infer
violating its own contract by using the default return value from
tc-error/expr

This (partially) reverts 5e0e8ed713.
2015-07-30 16:21:07 -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
Sam Tobin-Hochstadt
a0b7123d4c Handle for-meta in TR requires. 2015-07-29 14:28:24 -07: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
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
Daniel Feltey
44a93b7e43 Merge print-syntax? and show-input? parameters into just the print-syntax? parameter 2015-07-26 19:30:39 -05:00
Alex Knauth
f1da9c22c1 Merge pull request #160 from btlachance/colon-checksyntax-arrows
Cancel marks for 'disappeared-use ids in colon macros
2015-07-23 16:51:41 -04:00
Brian Lachance
045bf05381 Cancel marks for 'disappeared-use ids in colon macros
Fixes check-syntax arrows for the id and optional second :
2015-07-23 14:59:52 -04:00
Vincent St-Amour
f92bddd21b Move rest of unstable/logging from typed-racket-lib to unstable-lib. 2015-07-23 11:48:39 -05:00
Vincent St-Amour
a097521f38 Move part of of unstable/logging to racket/logging. 2015-07-23 11:48:39 -05:00
Vincent St-Amour
6c9593bd73 Move unstable/match to the unstable-lib package.
See additional comments in the corresponding commit to the `unstable` repo.
2015-07-23 11:48:39 -05:00
Sam Tobin-Hochstadt
577b5225cd Fix construction of promise contracts; broken in 5cd5f772. 2015-07-22 16:29:39 -04: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
19c42b28a7 Move filter-multiple to utils file. 2015-07-20 16:17:39 -05: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
9abb1927ee Replace uses of unstable/hash with racket/hash. 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
Sam Tobin-Hochstadt
fca96dcdc1 Quote typecheck-fail-internal properly.
Caught by existing unit tests.
2015-07-20 15:34:49 -04: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
Matthew Flatt
8c006da763 remove syntax-local-make-delta-introducer 2015-07-16 08:40:34 -06:00
Matthew Flatt
2d095c4112 adapt to letrec-syntaxes+values removal and quote-syntax extension
The `quote-syntax` form now suports a `#:local` option, which is
used for type annotations to preserve binding context.

Since `letrec-syntaxes+values` is now removed by `local-expand`,
some patterns must be adjusted, including the pattern used
for type annotations.
2015-07-16 08:40:34 -06:00
Matthew Flatt
2f00de99d0 declare empty namespace for submodules
Using the enclosing module's context for the `#f` part of the
`(module* _ #f ....)` would generally enable a compact encoding of
bindings for the purposes of `module->namespace`. Disabling
`module->namespace` for the generated submodules seems more reliable,
and it seems unlikely that anyone will miss the extra debugging
capability (which is all that is lost for these submodules whose
content is, I think, unspecified).
2015-07-16 08:40:34 -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
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
Sam Tobin-Hochstadt
91e3a1b5f0 Make sure that user-specified clauses come before default clauses in type-case.
Avoids nasty hash ordering bugs.
2015-06-02 17:32:33 -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
Eric Dobson
d4eaa47b27 Make subtype use hash of hashs.
This has a 1% improvement on new-metrics.rkt by my measurements.
2015-05-19 20:37:41 -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
AlexKnauth
b11e48fa93 don't raise error for require/typed in module-begin context 2015-05-14 12:13:14 -04:00
Alex Knauth
c6b1f8fdc0 syntax error for require/typed in untyped code 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
Asumu Takikawa
5751a2e1cf Refactor get-field checking to avoid bad names 2015-05-12 15:08:53 -04:00
Eric Dobson
90061c2b96 Add filters for trivial cases in arithemetic procedures. 2015-05-02 08:26:50 -07:00
Eric Dobson
22342d6a35 Simplify flsqrt type. 2015-05-02 08:26:50 -07:00
Eric Dobson
fc4e216fc2 Simplify flexp type. 2015-05-02 08:26:50 -07:00
Eric Dobson
142b52918c Fix types for flmin and flmax.
flmin and flmax only take two arguments.
2015-05-02 08:26:50 -07:00
Eric Dobson
848b69b73d Simplify flonum comparison types. 2015-05-02 08:26:50 -07:00
Eric Dobson
d288b14244 Expand type of fl/. 2015-05-02 08:26:50 -07:00
Eric Dobson
c50b6291e2 Cleanup fl* type. 2015-05-02 08:26:50 -07:00
Eric Dobson
811cd211e9 Tighten fl+ and fl- types. 2015-05-02 08:26:49 -07:00
Eric Dobson
c3c134780e Cleanup fx shifts. 2015-05-02 08:26:49 -07:00
Eric Dobson
3c978d82cb Tighten fxior and fxxor. 2015-05-02 08:26:49 -07:00
Eric Dobson
424658f6ab Tighten fxmin and fxmax.
Replace Zero case with all NonNegative or NonPositive values.
2015-05-02 08:26:49 -07:00
Eric Dobson
93b538b694 Cleanup types of fixnum comparisons.
Unify Zero and One cases, and remove extraneous ones.
2015-05-02 08:26:49 -07:00
Eric Dobson
114b9376f1 Tighten type of fxabs. 2015-05-02 08:26:49 -07:00
Eric Dobson
ad09e941a8 Tighten type of fxquotient 2015-05-02 08:26:49 -07:00
Eric Dobson
c923663e55 Tighten type of fx*
Make multiplication by Zero return Zero and by One return the other arg.
2015-05-02 08:26:49 -07:00
Eric Dobson
6bc24fdf83 Fixup type of fx-
fx- is not commutative.
Output is always a fixnum.
2015-05-02 08:26:48 -07:00
Eric Dobson
b6a53b8916 Cleanup types of fx+
Fix case for two Bytes which should be Index not PosIndex.
2015-05-02 08:26:48 -07:00
Eric Dobson
86d5845bc4 Replace exclude-zero with commutative-equality/strict-filter.
Make it more obvious what the generated type is.
Also removes NaN from the specific type for flonums because that was
incorrect.
2015-05-02 08:26:48 -07:00
Eric Dobson
69e613c831 Simplify types for nan? and infinite? 2015-05-02 08:26:48 -07:00
Eric Dobson
e91cdad6b0 Tighten types on sgn. 2015-05-02 08:26:48 -07:00
Eric Dobson
ddd503a203 Fix type on integer-sqrt/remainder.
It doesn't return exact integers when given inexact input.
2015-05-02 08:26:48 -07:00
Eric Dobson
eeef1a7c55 Simplify types of integer-sqrt. 2015-05-02 08:26:40 -07:00
Eric Dobson
70fdc3dd13 Make flonum and ext-flonum types use the same definitions.
This avoids problems where one could be changed to fix a bug and the
other would be missed.
2015-04-28 20:27:44 -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
Asumu Takikawa
7bf4314af4 Simplify Name type representation
Avoids contract errors by using a simpler representation
and sticking with it throughout.
2015-04-08 11:23:48 -04:00
Asumu Takikawa
d22bf8cc11 Fix type-name-env contracts and uses 2015-04-08 11:23:48 -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
b8921ff4df Fix contract on subst-type.
subst-type now can be called with Values? and such.
2015-04-06 09:58:06 -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
Eric Dobson
db3826c474 Add comments for changes to substitution. 2015-04-05 18:01:11 -07:00
Sam Tobin-Hochstadt
6a262c19fa Add prefab structs to HISTORY. 2015-04-03 21:33:39 -04:00
Sam Tobin-Hochstadt
0793021514 History update for Typed Racket. 2015-04-03 18:45:38 -04:00
Sam Tobin-Hochstadt
583ca906b3 Significantly reduce dependencies.
In conjunction with a small change to syntax/parse, this means
that `typed/racket/base` no longer depends on `racket/set`,
`racket/contract/base`, or `racket/generic`.

Timings on my machine go from ~200ms for `#lang typed/racket/base`
as the whole file, to ~100ms. For comparison, `racket/base` is 30ms
and `#lang racket` is 150ms. `#lang typed/racket` is ~200ms with
this change.

Changes include:
 - not using `in-syntax`
 - switching to `syntax/parse/pre`
 - avoiding `template` from `syntax/parse`
2015-04-03 12:50:55 -04: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
Sam Tobin-Hochstadt
718bc82b5d Avoid providing def-redirect. 2015-03-26 12:23:48 -04: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
2a4ce892ae Merge branch 'integral-to-inexact' 2015-03-20 19:43:04 -07:00
Alexis King
aab2d9efcf Include more specific types for integers converted to floats 2015-03-19 18:54:11 -07:00
Sam Tobin-Hochstadt
ee7bed777b Add dependency on 6.2.0.2.
This is definitely needed for the new `begin-encourage-inline`
submodule, but also needed for various other changes (such as
`dynamic-object/c`).
2015-03-19 21:45:15 -04:00
Sam Tobin-Hochstadt
0dce19e4bf Reduce more dependencies.
Use `syntax/parse/pre` (checked with @rmculpepper).
Use new `begin-encourage-inline` submodule.
Remove use of `match` in TR runtime-loaded code.
2015-03-19 21:41:58 -04:00
Sam Tobin-Hochstadt
4709536653 Split prims.rkt to reduce dependencies.
There are several new files: one for structure prims, one for
annotation-related prims, one for contract related ones. The prims-contract
file uses trickery with submodules to avoid a direct dependency
on `racket/contract`.

Additionally, the rewritten versions of `for/set` et al now use
a submodule to avoid a direct dependency on `racket/set`.
2015-03-18 18:47:49 -04:00
Sam Tobin-Hochstadt
333a8b9bd7 Remove long lines, and inline vector-copy to remove dependency. 2015-03-18 18:23:56 -04: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
TwoPoint7182818
911036c2a6 Make order-of-magnitude more specific
(order-of-magnitude n) is only negative if n < 1. Hence it is non-negative for all positive integers.
2015-03-15 20:48:46 -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