Make constructors just methods.
* Eliminate "new" reserved word. * Allow "this" before a method definition to define a constructor. * Only create a default constructor for classes that don't define one.
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
class Foo {
|
||||
getClosure { new Fn { toString } }
|
||||
getClosure { Fn.new { toString } }
|
||||
toString { "Foo" }
|
||||
}
|
||||
|
||||
var closure = (new Foo).getClosure
|
||||
var closure = Foo.new().getClosure
|
||||
IO.print(closure.call()) // expect: Foo
|
||||
|
||||
@@ -2,7 +2,7 @@ class Outer {
|
||||
method {
|
||||
IO.print(this) // expect: Outer
|
||||
|
||||
new Fn {
|
||||
Fn.new {
|
||||
IO.print(this) // expect: Outer
|
||||
|
||||
class Inner {
|
||||
@@ -12,11 +12,11 @@ class Outer {
|
||||
toString { "Inner" }
|
||||
}
|
||||
|
||||
(new Inner).method
|
||||
Inner.new().method
|
||||
}.call()
|
||||
}
|
||||
|
||||
toString { "Outer" }
|
||||
}
|
||||
|
||||
(new Outer).method
|
||||
Outer.new().method
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
class Foo {
|
||||
getClosure { new Fn { new Fn { new Fn { toString } } } }
|
||||
getClosure { Fn.new { Fn.new { Fn.new { toString } } } }
|
||||
toString { "Foo" }
|
||||
}
|
||||
|
||||
var closure = (new Foo).getClosure
|
||||
var closure = Foo.new().getClosure
|
||||
IO.print(closure.call().call().call()) // expect: Foo
|
||||
|
||||
@@ -3,4 +3,4 @@ class Foo {
|
||||
baz { "baz" }
|
||||
}
|
||||
|
||||
IO.print((new Foo).bar.baz) // expect: baz
|
||||
IO.print(Foo.new().bar.baz) // expect: baz
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
new Fn {
|
||||
Fn.new {
|
||||
this // expect error
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user