Commit Graph

3080 Commits

Author SHA1 Message Date
Asumu Takikawa
defa74d44a Support private fields
original commit: bbd5d97a230bf8bab1d4bf3e5d88a606b86e637e
2014-02-20 16:50:23 -05:00
Asumu Takikawa
a2250fad43 Add super calls
(also removed bogus super-new init test)

original commit: 45599812128b2d5b1f52db91b792ffeec5c8ad40
2014-02-20 16:50:23 -05:00
Asumu Takikawa
07206b7f17 Don't make mandatory super inits mandatory for super-new
original commit: ba70851ba0dd7f812dd5f10dee36b2008e74f103
2014-02-20 16:50:23 -05:00
Asumu Takikawa
d7f6d81607 Fix type-checking for fields with this
original commit: f82a49be7dbf6e0abb5598179e85a5a06cb0cf2b
2014-02-20 16:50:23 -05:00
Asumu Takikawa
5dd26e30dc Fix subtyping for fields
original commit: 6b5875a1f1c4250a996e461609682d22ba428194
2014-02-20 16:50:23 -05:00
Asumu Takikawa
9d5a2d5f36 Make keyword methods type-check
Note: send does not work with keyword methods yet

original commit: 5da60f70673cd997b746b2fc437f9f8a055216dd
2014-02-20 16:50:23 -05:00
Asumu Takikawa
88af42a16a Add support for inherited methods
original commit: 4e5d0846baec22d8b23bc34a86c61881d8b36ca0
2014-02-20 16:50:23 -05:00
Asumu Takikawa
d04f0b6727 Attempt better error message for bad method type case
original commit: 30e3c498867dcd6b188157321b4ae7c5491329f2
2014-02-20 16:50:23 -05:00
Asumu Takikawa
d113733ab8 Better support for class top-level behavior
original commit: 0d5a775a62eb6dae2dba92012f49f9467685a4b1
2014-02-20 16:50:23 -05:00
Asumu Takikawa
ddf31e527e Allow top-level expressions to refer to inits
original commit: b9a175eed277138f9f4216b2f4694a3e27b7d7bb
2014-02-20 16:50:23 -05:00
Asumu Takikawa
290abc0333 Cleanup FIXME comments
original commit: 384e1392bd985c7f376f54df9a24374a40532e35
2014-02-20 16:50:23 -05:00
Asumu Takikawa
9e17db7f38 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.

original commit: 6f86c66199bde3989a0b603b7386baa58167247d
2014-02-20 16:50:23 -05:00
Asumu Takikawa
25b1b3f648 Fix optional argument check that was broken
original commit: 44f9b87f02480b3e805b9891f3e31d49c7a3f410
2014-02-20 16:50:23 -05:00
Asumu Takikawa
e8575dbe9a Make init defaults work correctly as well
original commit: 14eeab934c521c36c71ed4628d897a2a31f09c6e
2014-02-20 16:50:23 -05:00
Asumu Takikawa
daccd31c15 Get init-field working in most cases
original commit: aa830a346123fdc092a4bceddfaf0276ab6e096c
2014-02-20 16:50:23 -05:00
Asumu Takikawa
94535805cd Type-check field initialization
Also fixed local accessors when internal names are used that
are different from external names.

original commit: 267a37134ef164f7d8bd9e3ffe6006ab16cf4bf2
2014-02-20 16:50:23 -05:00
Asumu Takikawa
15e21bb39f 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.

original commit: 6ce16e15380197f4cee9f44ca7ad42a34acc2c81
2014-02-20 16:50:23 -05:00
Asumu Takikawa
3ad23f8986 Fix non-expected case with inits/fields missing annotations
Also fix bogus test cases and the bug that hid them

original commit: 599beeae522f63a2007b3f17346ea7d91feeeca3
2014-02-20 16:50:23 -05:00
Asumu Takikawa
e942e91fb5 Check more clause presence/absence appropriately
original commit: f188d7f1030d4d48abe3d5d6cc2759403808084d
2014-02-20 16:50:22 -05:00
Asumu Takikawa
7bf90d1894 Rule out multiple super-new
original commit: f010a9ce71384a8412988ce60ea266e5fd3e8fa2
2014-02-20 16:50:22 -05:00
Asumu Takikawa
87f9ad8c18 Add support for private methods
original commit: 0ef255916dbc5fb663ebd5cf975e46a45d027088
2014-02-20 16:50:22 -05:00
Asumu Takikawa
aaf40266d1 Fix bug that triggers due to missing super-new
original commit: ab8513f48d8ae490e0ed9bd4c1ea34240c4de74e
2014-02-20 16:50:22 -05:00
Asumu Takikawa
4aa3c2a639 Make sure super inits that are provided don't count
original commit: c009948627fea6555a91e37e5d76c8370d0df13f
2014-02-20 16:50:22 -05:00
Asumu Takikawa
6fd920cee9 Make sure superclass mandatory inits are provided
original commit: b1627984e258df8f23d1295ec554fe0d5b128ea5
2014-02-20 16:50:22 -05:00
Asumu Takikawa
a91d41a453 Fix inheritance without expected type
original commit: c16a3b2350530c1858dacb8d1b7ea70fc42f1081
2014-02-20 16:50:22 -05:00
Asumu Takikawa
e54413e95a Set init arguments as optional correctly
original commit: d8a303983024a416be66b69f060270d2b39d4bb5
2014-02-20 16:50:22 -05:00
Asumu Takikawa
f4c8fd57e0 Make internal/external names work
original commit: f895e3156f26d01a5c62c18d675514204440f9ff
2014-02-20 16:50:22 -05:00
Asumu Takikawa
21b9774043 Better class types when no expected type given
original commit: ae2866e8ca7eb1c7822bb71518bd5db9adc95dfa
2014-02-20 16:50:22 -05:00
Asumu Takikawa
06c9398293 Fix top-level use of classes
original commit: 2ae1f5a602f843f9c854de9809916a60ff767cc5
2014-02-20 16:50:22 -05:00
Asumu Takikawa
59a5c57f42 Type-check class top-level expressions
original commit: dc35a8cd4db8f2a0cf9424aac50aad7960eb1074
2014-02-20 16:50:22 -05:00
Asumu Takikawa
4356293a59 Support tc-expr and not just tc-expr/check
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
2014-02-20 16:50:22 -05:00
Asumu Takikawa
2ee160cc8c Add infrastructure for private methods
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
2014-02-20 16:50:22 -05:00
Asumu Takikawa
d1ae0dc0e9 Add support for local field access
original commit: 6c0e82f15bc1dda5b984d4ddf21c41de9eb80315
2014-02-20 16:50:22 -05:00
Asumu Takikawa
28096a6385 Add support for override
original commit: 931556264e4fea7c1c3e5f289aade11e511c60d4
2014-02-20 16:50:22 -05:00
Asumu Takikawa
f028ab23b3 Check super-new calls
Still need to use this information to adjust the class
type init clauses

original commit: 060aaa8b26c05ca8800db0d3444b5f4c4a09bf4f
2014-02-20 16:50:21 -05:00
Asumu Takikawa
f058d684b6 Add unit tests for classes
original commit: 77847de94436dcaf8389236d14251110fa7c138a
2014-02-20 16:50:21 -05:00
Asumu Takikawa
bc07b8b140 Initial work on type-checking class expressions
Add a `class:` macro that adds instrumentation for
the type-checker. Also add type-checking for the
expansion of that macro.

original commit: 244135a96e8c6e98e6a77052813b53d4f284443f
2014-02-20 16:50:21 -05:00
Asumu Takikawa
744c8593d6 Clean up object init and add support for get-field
original commit: 684fabde1bdfa92279c413ab612f2771db2f2f9e
2014-02-20 16:50:21 -05:00
Asumu Takikawa
68518c74fc Add new Class type representation
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
2014-02-20 16:50:21 -05:00
Asumu Takikawa
ecc82246af Make TR's for/hash form more flexible
original commit: d35fb82f4a583a6b27164ecd92fd8d52c0dd72db
2014-02-20 14:13:41 -05:00
Asumu Takikawa
9a4ee81604 Add TR case-lambda with optional type annotations
original commit: 58a3d12f0c1e27b2ea45bcb1c8ee1243825d28b1
2014-02-20 13:54:32 -05:00
Asumu Takikawa
4216d01b2d TR: move helper syntax classes to helper file
original commit: ed98404aafea1f9d0142dabdba73dcf7f16dda73
2014-02-20 12:05:11 -05:00
Asumu Takikawa
f57a8f5e96 Add test for PR 13937
The actual bug was already fixed by enabling multi-valued
sequence syntax in TR `for` loop forms.

Closes PR 13937

original commit: 8d4b3ee396a645a828594b7b9afdcaf7e5676ccd
2014-02-20 00:06:45 -05:00
Asumu Takikawa
9ee89f821d Document legacy forms with a : suffix
Also don't export internal macros

original commit: a17e4578404b7eb243e1b7dbfb749b1df6e44215
2014-02-19 21:20:48 -05:00
Asumu Takikawa
43060c8d37 Revise TR Reference for new :-less forms
original commit: 768d04fa975097097af18d2fae1be108cbf3abbe
2014-02-19 16:40:40 -05:00
Asumu Takikawa
4f2bd7180f Provide :-less versions of all for forms.
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
2014-02-19 16:40:40 -05:00
Asumu Takikawa
28cba9af4a Accept polydots rest in TR lambda and define
Also accept type variables before formals in all cases

original commit: 35ef2f90ebef94c8f7c4e46fc43c03b6ce329a41
2014-02-19 16:40:40 -05:00
Asumu Takikawa
088e5d700f Enable mixed type annotations for define
original commit: 3d177e454ea3634060a4b9b0814f588bc7c74e49
2014-02-19 16:40:40 -05:00
Asumu Takikawa
5cfd64eb33 Support polymorphism in both TR let and lambda
original commit: 967490cb229c3ef4d70960f6b0075d8e28f21ea9
2014-02-19 16:40:40 -05:00
Asumu Takikawa
ca951c418c Add :-less versions of struct macros
original commit: 45d36579d3823f024a7448ed9efc552aa90b9b0f
2014-02-19 16:40:40 -05:00