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:
Bob Nystrom
2014-04-02 17:42:30 -07:00
parent cc56ac4da7
commit a550d6cea4
8 changed files with 49 additions and 33 deletions
+4 -4
View File
@@ -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