Jonathan Paul Lukens
Jonathan Paul Lukens
`def foo(bar: 10, **kwargs); end; foo(**some_hash)` requires that the target explicitly check the splatted hash for presence of a `bar` key before blowing away the default. Current implementation does not...
It is unclear to me how to do this nicely, but without it there is an enormous amount of code duplicated across method implementations.
Should be relatively straightforward with the exception of formatting. Because of Go's rather unconventional parse string format, will require a compatibility layer in the stdlib package for parsing format strings.
This will require special handling since it will need to generate new class types.
A `Proc` type exists in the types package but is only used in inference for methods that take blocks. `.new` seems like an achievable goal.
Currently, `each`, `to_a` etc. on a range don't work. This will require implementing `succ` on string, and adding support for user-defined classes that defined `succ` themselves.
Two key components to parsing and type inference on class methods: method storage/resolution and variable storage/resolution. This should be relatively straightforward if duplicative of the existing plumbing for instance methods/variables....