Change how new operators are compiled.
Instead of an instruction that always instantiates an instance,
the "new" is compiled to a method call on the class, followed by a
method call on the (presumably) new instance.
The former lets built-in types like Fn do special stuff instead of
allocating an instance. In particular, it means:
new Fn { ... }
can just return the block argument.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
IO.print((fn 0) is Function) // expect: true
|
||||
IO.print((fn 0) is Object) // expect: true
|
||||
IO.print((fn 0) is String) // expect: false
|
||||
IO.print((fn 0).type == Function) // expect: true
|
||||
IO.print((fn 0) is Fn) // expect: true
|
||||
IO.print((fn 0) is Object) // expect: true
|
||||
IO.print((fn 0) is String) // expect: false
|
||||
IO.print((fn 0).type == Fn) // expect: true
|
||||
|
||||
Reference in New Issue
Block a user