Asumu Takikawa
a7fd2a8f11
Expand on docs for TR class init/init-rest args
...
original commit: 8c83e1a08deac604fe4685a915cd010ad0a06db4
2014-02-20 18:00:44 -05:00
Asumu Takikawa
41cee0f69a
Reorganize docs on typed classes
...
Use subsections and put the special forms first
original commit: f856bce277988ae708a864e20a908247c14ec8e3
2014-02-20 17:33:45 -05:00
Asumu Takikawa
ffdb6752f3
Revise TR classes & docs based on feedback
...
original commit: 1c6c0855f788fb311db7a93b5e81bbcd6b24d03b
2014-02-20 16:50:28 -05:00
Asumu Takikawa
6cd8927abc
Move internal unit tests out into a separate file
...
original commit: e7e354f69ae4846b3d37cce58268a01d9ee6cca7
2014-02-20 16:50:28 -05:00
Asumu Takikawa
f2260843b0
Add support for positional init arguments for TR
...
This includes support for positional inits and also
init-rest along with make-object and instantiate.
original commit: 18182d16a615f5ecf7bed5428374010f609bb59e
2014-02-20 16:50:27 -05:00
Asumu Takikawa
7df37ff6a8
Use shorthand notation for classes in subtype tests
...
original commit: 0b1eec20b5a1ffb569c0e4332bb459ce47c864b9
2014-02-20 16:50:27 -05:00
Asumu Takikawa
aa15b72985
Fix integration test for new class type syntax
...
original commit: cd2ef502b013292b948e1ba7932f2d6b97871d76
2014-02-20 16:50:27 -05:00
Asumu Takikawa
07243dd154
Add static contract tests for classes
...
original commit: 39b237043d0d91058ac8cb041eb665f502b17590
2014-02-20 16:50:27 -05:00
Asumu Takikawa
10f04eb58e
Convert parse tests w/ classes to use abbreviations
...
original commit: dff2fa6de78917848c121cc60264176fe2e7b851
2014-02-20 16:50:27 -05:00
Asumu Takikawa
3786645026
Disallow non-aliases in #:implements
...
original commit: 92d5e4a8aecbb9b121652f1e38c9bee76db64e0f
2014-02-20 16:50:27 -05:00
Asumu Takikawa
3a63c8175e
Add abbreviation for classes and use in base-env
...
original commit: 98a2d248c0589e4b8d3663566adff7b66da6be6b
2014-02-20 16:50:27 -05:00
Asumu Takikawa
143c430632
Revise type for is-a?
...
original commit: 84e780174e0d827f6a4fc660f92525ca5bb71800
2014-02-20 16:50:27 -05:00
Asumu Takikawa
d70a59d5cb
Add ClassTop type
...
Still TODO are better error messages when a ClassTop
is encountered for subclassing or instantiation.
original commit: e26742e736f59ebb4beada50dd813105de89948d
2014-02-20 16:50:27 -05:00
Asumu Takikawa
6eb16b9f2f
Refactor part of class type system
...
original commit: afb141711406ed4f65de6f558afdd76f17524013
2014-02-20 16:50:27 -05:00
Asumu Takikawa
a7b4474b11
Add documentation for typed classes
...
original commit: 0a89b9b71817403ef9e24da59e48fa6368eca1c1
2014-02-20 16:50:27 -05:00
Asumu Takikawa
e93058db54
Check for unsupported class clauses and error
...
original commit: 66c1b10c189c06739b3c85fbb568b0d0859dee7d
2014-02-20 16:50:27 -05:00
Asumu Takikawa
b08abc4f48
Update type->contract for new class representation
...
original commit: 661a3714342c8268c8986ef1fbd7438bb3930e1a
2014-02-20 16:50:27 -05:00
Asumu Takikawa
c87dfbdf18
Rewrite class tests as standard TR typecheck tests
...
original commit: 02391fae9d5778a3d6b6659930d13ac3df22b588
2014-02-20 16:50:27 -05:00
Asumu Takikawa
24d2f84103
Allow depth subtyping with #:implements
...
original commit: bd5ec395c264971fe9c8f0ed2fbe5130cc406c56
2014-02-20 16:50:27 -05:00
Asumu Takikawa
72dd536f96
Parse-type fix for Instance types
...
original commit: 00bb21964247ebb774c2db4709b567adf16cc51a
2014-02-20 16:50:27 -05:00
Asumu Takikawa
fef7b7b508
Fix timing in class type-checking
...
(make sure the timing goes away if the flag is off)
original commit: ee3e83856c6f6973c29ada0c809a5ecb50d871aa
2014-02-20 16:50:26 -05:00
Asumu Takikawa
d78535d187
Add subtyping tests for classes/objects
...
original commit: 8331d8c8a2e994a2c961e18977d9563a3f92ba8d
2014-02-20 16:50:26 -05:00
Asumu Takikawa
3222baafbd
Simplify typechecking for some field initializers
...
This seems to speed up type-checking for some
initializers. The caveat is that it's slightly less
paranoid about type-checking the expansion.
original commit: 03c74a16ff0c9f8707361e0818b37c99ae5d00d9
2014-02-20 16:50:26 -05:00
Asumu Takikawa
546a52843d
Simplify type expression
...
original commit: 80d21e106c8aeed582de2bedfd4fbd586a3a16c4
2014-02-20 16:50:26 -05:00
Asumu Takikawa
6d6bf8f553
Avoid type-checking type annotation clauses
...
original commit: e52256b7f08e5e4bb5846fd5bbfc2032b46ea45e
2014-02-20 16:50:26 -05:00
Asumu Takikawa
566b4d3dfb
Make subtyping checks on objects faster
...
original commit: c8e5423e557cf5976bdb0050b72979b9fb9c76a4
2014-02-20 16:50:26 -05:00
Asumu Takikawa
97c6350e87
Fix augment type printing
...
original commit: e80c4d72fb3ef7ee86915d17d5c6d5e1837bc800
2014-02-20 16:50:26 -05:00
Asumu Takikawa
c07f80cc07
Allow polymorphic method types
...
original commit: 7d7f23589f31eab49cec51e63c40d7065b0e2596
2014-02-20 16:50:26 -05:00
Asumu Takikawa
d298da507f
Add internal timing support for classes
...
original commit: 45b8e17687d925fa282220d03c73ed09a47ab2c7
2014-02-20 16:50:26 -05:00
Asumu Takikawa
65dc0c6374
Adjust local expansion to account for local macros
...
original commit: 7cc9b0ef12dd4eacf36c2bf619e1687da0ca689f
2014-02-20 16:50:26 -05:00
Asumu Takikawa
5b6fcb01dc
Increase named-based sharing of class types
...
This change makes serialized types much smaller when large
class types are used for type aliases. This shrunk the zo file
for the gui-types module from 12MB to 220KB.
If large zo files are a problem elsewhere, this may be worth
doing for more types.
original commit: 54bc1732da258f4d1f979fde24c793790b8c50ba
2014-02-20 16:50:26 -05:00
Asumu Takikawa
02f61dbd05
Add support for in-line class polymorphism
...
original commit: 37c1730bb3db2007d6ff25455103f7f0ea95b69f
2014-02-20 16:50:26 -05:00
Asumu Takikawa
dd208670d5
Reorganize functions for type parameters
...
This refactoring saves some lines and reduces the ridiculous
number of arguments for some helper functions. (using a hash
table instead of arguments) This will help for adding type
parameter name scoping later.
original commit: 3c044e23fda47897b77676f5c9d8c9434754581e
2014-02-20 16:50:26 -05:00
Asumu Takikawa
3022f91b48
Add support for separate augment/pubment interfaces
...
Now a class may have a pubment method that has a different
type for being directly called and for being specialized
for inner calls. This is actually necessary to type-check
interesting uses of pubment/augment.
Note that if a class does not provide a type annotation
for the augmentation interface, it will be assumed to be
the same as the pubment type.
original commit: 8ca8eb164205df1850ce677d3e37053712565ed8
2014-02-20 16:50:26 -05:00
Asumu Takikawa
bd47f1e634
Refactor class type-checker
...
original commit: f8212063b798f866fc91862942b54baaae7194eb
2014-02-20 16:50:26 -05:00
Asumu Takikawa
aa3f6c7b9b
Use lists as sets for type-checking classes
...
original commit: dbf9459e99465e73bd9adaa6a907e5516107b284
2014-02-20 16:50:26 -05:00
Asumu Takikawa
8b56ec986e
Improve error messages for superclass checks
...
Also add a test for the inherit-field case for this
original commit: ed94d35105d43b087eab1814f939e86c593364f9
2014-02-20 16:50:25 -05:00
Asumu Takikawa
b7f41e65d7
Add support for inherit-field
...
original commit: c16ace02fa15ab1a1ca7e17fe66c666d44ccf23a
2014-02-20 16:50:25 -05:00
Asumu Takikawa
211f4f4db5
Fix a private/augment method issue
...
original commit: e25b24986fc2c141a0abd8a4f6f4245f94d1f379
2014-02-20 16:50:25 -05:00
Asumu Takikawa
8e7bfb9ad8
For classes, always check expected type against synthesized
...
This also enables depth subtyping for class types, which
was needed to get the tests to pass
original commit: 008e18a6b44e2a363c706bb1994ccee6c56dec98
2014-02-20 16:50:25 -05:00
Asumu Takikawa
707f6ed62d
Improve error messages
...
original commit: 37c313e9b3f4c1cebc726711616b4ec4fcef747d
2014-02-20 16:50:25 -05:00
Asumu Takikawa
ea7d2b92cd
If no annotations are present, assume Any or Procedure
...
Note that for methods, if the type is annotated as
Procedure, TR will try to find a more precise type and
use that instead.
original commit: 27a7322033fecaf99e043bdfd06c50efe0a7898c
2014-02-20 16:50:25 -05:00
Asumu Takikawa
ceda8ae1a7
Error on duplicate type annotations
...
original commit: 98b49deb76dc96af23efb3b0742f1a8bed3e6d36
2014-02-20 16:50:25 -05:00
Asumu Takikawa
36d434b42b
Allow type annotations in class clauses directly
...
original commit: 0ef3f09768f1d44887abf28aca1f68d05916e9d3
2014-02-20 16:50:25 -05:00
Asumu Takikawa
81a7b3b55e
Use class
instead of class:
for typed classes
...
original commit: a6daafd70a58a988f3c7c6795eb56ce84d541882
2014-02-20 16:50:25 -05:00
Asumu Takikawa
4947ef6e53
Add support for basic polymorphic classes
...
original commit: 91729c060cd431cb3b438aa6f0d3572ed456ab22
2014-02-20 16:50:25 -05:00
Asumu Takikawa
f59585bb5a
Improve handling of expected type
...
original commit: 71d590604f33ecf9e9f2fb31307b4b01f79fc048
2014-02-20 16:50:25 -05:00
Asumu Takikawa
6bd6b9e1e2
Add expected error messages to class tests
...
original commit: e3efb90a59e08f30636fce70ffaeae28c59dfd2c
2014-02-20 16:50:25 -05:00
Asumu Takikawa
fcc096d51d
Fix contracts on TR functions
...
original commit: 86093f88beb97120f1fe41a38e8c4741ff1043bc
2014-02-20 16:50:25 -05:00
Asumu Takikawa
0dd6b87991
Improve several type error messages
...
In particular, improve the syntax reported when the
method arity is wrong.
original commit: 6cdc5fb720cb69a9c6c541632e0e97bd571f1b23
2014-02-20 16:50:25 -05:00