Commit Graph

31873 Commits

Author SHA1 Message Date
Asumu Takikawa
c16ace02fa Add support for inherit-field 2014-02-20 16:50:25 -05:00
Asumu Takikawa
e25b24986f Fix a private/augment method issue 2014-02-20 16:50:25 -05:00
Asumu Takikawa
008e18a6b4 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
2014-02-20 16:50:25 -05:00
Asumu Takikawa
37c313e9b3 Improve error messages 2014-02-20 16:50:25 -05:00
Asumu Takikawa
27a7322033 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.
2014-02-20 16:50:25 -05:00
Asumu Takikawa
98b49deb76 Error on duplicate type annotations 2014-02-20 16:50:25 -05:00
Asumu Takikawa
0ef3f09768 Allow type annotations in class clauses directly 2014-02-20 16:50:25 -05:00
Asumu Takikawa
a6daafd70a Use class instead of class: for typed classes 2014-02-20 16:50:25 -05:00
Asumu Takikawa
91729c060c Add support for basic polymorphic classes 2014-02-20 16:50:25 -05:00
Asumu Takikawa
71d590604f Improve handling of expected type 2014-02-20 16:50:25 -05:00
Asumu Takikawa
e3efb90a59 Add expected error messages to class tests 2014-02-20 16:50:25 -05:00
Asumu Takikawa
86093f88be Fix contracts on TR functions 2014-02-20 16:50:25 -05:00
Asumu Takikawa
6cdc5fb720 Improve several type error messages
In particular, improve the syntax reported when the
method arity is wrong.
2014-02-20 16:50:25 -05:00
Asumu Takikawa
0d498e18e7 Enforce method types as function types in parsing 2014-02-20 16:50:25 -05:00
Asumu Takikawa
7ba8dd57cb Add a unit test for ill-typed private methods 2014-02-20 16:50:25 -05:00
Asumu Takikawa
eb95264e3f Support pubment and augment methods
This required changes to the type and row
representation. I also got rid of the redundancy
between Row and Class types.

Some other bugs had to be quashed for these
changes, such as private methods not actually
being type-checked.
2014-02-20 16:50:25 -05:00
Asumu Takikawa
1dede05549 Make type parsing error more informative 2014-02-20 16:50:24 -05:00
Asumu Takikawa
92e34ebab9 Fix class type subtyping
Although classes have no non-trivial subtyping relationships,
the representation I chose ends up introducing cases where two
"equal" types are not represented in the same way. This
commit fixes that by checking only the relevant parts of the
representation.
2014-02-20 16:50:24 -05:00
Asumu Takikawa
939c3bb4c8 Implement row polymorphism
- Refactor syntax classes and parsing for class types in
    order to accommodate constraints for row polymorphism
  - No contract generation, but other parts are implemented
2014-02-20 16:50:24 -05:00
Asumu Takikawa
884c898bfa Change #:extends to #:implements 2014-02-20 16:50:24 -05:00
Asumu Takikawa
c47531569a Add parsing for (Object ...) types into Instances 2014-02-20 16:50:24 -05:00
Asumu Takikawa
32f39ddff4 Improve object type printing
Use the `Object` constructor style instead of `Instance`
in cases where it makes sense.
2014-02-20 16:50:24 -05:00
Asumu Takikawa
081cc4777a Add syntactic sugar for recursive class types 2014-02-20 16:50:24 -05:00
Asumu Takikawa
a1efc2c276 Attempt to support recursive types in classes better 2014-02-20 16:50:24 -05:00
Asumu Takikawa
16ca57500b Remove debug displays 2014-02-20 16:50:24 -05:00
Asumu Takikawa
19b1ca17c6 Attempt to allow recursive types in objects/classes
Contract generation is not implemented correctly yet
since the static contract portion needs adjustment.
2014-02-20 16:50:24 -05:00
Asumu Takikawa
cc61f0639e Allow duplicate type names if they have the same type 2014-02-20 16:50:24 -05:00
Asumu Takikawa
f84cf996c3 Add "multiple inheritance" for class types 2014-02-20 16:50:24 -05:00
Asumu Takikawa
4543204e85 Don't add super-type inits into type with #:extends 2014-02-20 16:50:24 -05:00
Asumu Takikawa
bbd5d97a23 Support private fields 2014-02-20 16:50:23 -05:00
Asumu Takikawa
4559981212 Add super calls
(also removed bogus super-new init test)
2014-02-20 16:50:23 -05:00
Asumu Takikawa
ba70851ba0 Don't make mandatory super inits mandatory for super-new 2014-02-20 16:50:23 -05:00
Asumu Takikawa
f82a49be7d Fix type-checking for fields with this 2014-02-20 16:50:23 -05:00
Asumu Takikawa
6b5875a1f1 Fix subtyping for fields 2014-02-20 16:50:23 -05:00
Asumu Takikawa
5da60f7067 Make keyword methods type-check
Note: send does not work with keyword methods yet
2014-02-20 16:50:23 -05:00
Asumu Takikawa
4e5d0846ba Add support for inherited methods 2014-02-20 16:50:23 -05:00
Asumu Takikawa
30e3c49886 Attempt better error message for bad method type case 2014-02-20 16:50:23 -05:00
Asumu Takikawa
0d5a775a62 Better support for class top-level behavior 2014-02-20 16:50:23 -05:00
Asumu Takikawa
b9a175eed2 Allow top-level expressions to refer to inits 2014-02-20 16:50:23 -05:00
Asumu Takikawa
384e1392bd Cleanup FIXME comments 2014-02-20 16:50:23 -05:00
Asumu Takikawa
6f86c66199 Improve super-new handling.
Now `super-new` calls are type-checked with the right
context so that init arguments can be passed as arguments.

In addition, the `super-new` checking was factored out into
three functions.
2014-02-20 16:50:23 -05:00
Asumu Takikawa
44f9b87f02 Fix optional argument check that was broken 2014-02-20 16:50:23 -05:00
Asumu Takikawa
14eeab934c Make init defaults work correctly as well 2014-02-20 16:50:23 -05:00
Asumu Takikawa
aa830a3461 Get init-field working in most cases 2014-02-20 16:50:23 -05:00
Asumu Takikawa
267a37134e Type-check field initialization
Also fixed local accessors when internal names are used that
are different from external names.
2014-02-20 16:50:23 -05:00
Asumu Takikawa
6ce16e1538 Factor out class expansion parsing
This commit prepares the code for more interesting parsing
of the initializer body (for expansion-introduced top-level
expressions for example) and faster parsing of methods and
other things in a single pass.
2014-02-20 16:50:23 -05:00
Asumu Takikawa
599beeae52 Fix non-expected case with inits/fields missing annotations
Also fix bogus test cases and the bug that hid them
2014-02-20 16:50:23 -05:00
Asumu Takikawa
f188d7f103 Check more clause presence/absence appropriately 2014-02-20 16:50:22 -05:00
Asumu Takikawa
f010a9ce71 Rule out multiple super-new 2014-02-20 16:50:22 -05:00
Asumu Takikawa
0ef255916d Add support for private methods 2014-02-20 16:50:22 -05:00