The MLscript programming language. Functional and object-oriented; structurally typed and sound; with powerful type inference. Soon to have full interop with TypeScript!
[x] allow fun and val members to be declared virtual; a signature without an implementation is considered virtual automatically
[x] check that overridden funs and vals are virtual
[x] forbid uses of this in constructors, including a class' initialization statements in the body and val RHSs
[x] make an exception to the above for each final (ie non-virtual) member which either is a valor is a lazy val or a fun that doesn't itself transitively use this
fun
andval
members to be declaredvirtual
; a signature without an implementation is considered virtual automaticallyfun
s andval
s are virtualthis
in constructors, including a class' initialization statements in the body andval
RHSsval
or is alazy val
or afun
that doesn't itself transitively use this