Note: the type is too conservative in some cases with
tc-expr (if you leave : annotations out). This should
be fixed in the future.
original commit: 6a43fac5c27d46f1bb456e861f55c4b2dddca455
They don't actually work yet, because I don't yet know
how to assign them types for when they're called locally.
Probably requires the two pass approach for locals.
original commit: 709f3c66960fc08b77a7978c7c64ddb3e27b4c45
Add a `class:` macro that adds instrumentation for
the type-checker. Also add type-checking for the
expansion of that macro.
original commit: 244135a96e8c6e98e6a77052813b53d4f284443f
This commit introduces a new Class type representation
and adds initial support for parsing the new types.
Existing uses of Class types are adjusted to compile.
original commit: 72c991c1de2ad964657883422d18cea3f6429eb2
The actual bug was already fixed by enabling multi-valued
sequence syntax in TR `for` loop forms.
Closes PR 13937
original commit: 8d4b3ee396a645a828594b7b9afdcaf7e5676ccd
Modify the forms as needed to accept non-annotated
bindings to match the untyped versions. Also fixes
bugs in syntax classes found along the way.
original commit: 37b09521ac3493ed45963aedacf7a263194aec1a
Two caveats:
* in some positions : is not accepted as a formal
when used in combination with * as a formal
* the quality of parse error messages for rest
argument types is traded for better optional argument
error messages
original commit: a3d818c748b09dd07043460ad412a19d0f94b47c
The new `lambda` form allows all combinations of arguments
with optional type annotations for all cases.
original commit: 8ea32c68f61a0bfad6b162302bc3c0ff28870361
In some cases, TR tried to typecheck the contents of a quote-syntax
form that contains unexpanded syntax.
Closes PR 14355
original commit: 26204cf505f885827854908391d2842476728c8b
Does not cover all of the bindings yet, but it
should just be a SMOP after the last extra-env-lang
feature additions.
original commit: 0c0befac075a137158c568f93397c9bea4a109b2
Instead of parsing the module's body like env-lang,
export a `type-environment` form instead. That way
the module may contain any auxiliary definitions
or expressions that are needed.
Additionally allow #:opaque and #:struct clauses
for opaque and struct types in the base type environment.
Update typed/syntax/stx for the new API.
original commit: db51fdb8fdc943971122fea32a7b593b187bd685
This provides better inference for the case when trying
to infer a ListDots in a negative position against a List
type. For example, when trying to apply `time-apply`.
original commit: 18adcb5b041be12994eb65d86bde5dc1f164cca7
A function like (lambda (x) (lambda (y) y)) would cause TR
to fail in an internal metafunction. The fault was triggered
when the object y is abstracted to (0 0) and then the outer
lambda tries to abstract (0 0) and fails.
The problem was triggered by the new path index changes in
v6.0 because TR did not previously try to abstract objects
that occurs in the target type (now necessary for scope
lifting of path indices), which may contain non-identifier
objects.
This error didn't occur in another nearly identical (except
for one crucial identifier? check) code path, so this commit
also eliminates the duplication by abstracting.
original commit: bf47523ac92f2d3b32e6c97aa83d9d256b449a6f