forked from Mirror/wren
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:
@ -22,7 +22,7 @@ class Bar is Foo {
|
||||
}
|
||||
}
|
||||
|
||||
var bar = new Bar
|
||||
var bar = Bar.new()
|
||||
bar.foo("foo 1", "foo 2")
|
||||
bar.bar("bar 1", "bar 2")
|
||||
|
||||
|
||||
@ -2,7 +2,7 @@ var ClosureType
|
||||
|
||||
{
|
||||
var a = "a"
|
||||
ClosureType = new Fn { IO.print(a) }.type
|
||||
ClosureType = Fn.new { IO.print(a) }.type
|
||||
}
|
||||
|
||||
class Subclass is ClosureType {} // expect runtime error: Subclass cannot inherit from Fn.
|
||||
|
||||
@ -12,7 +12,7 @@ class Bar is Foo {
|
||||
override { IO.print("bar") }
|
||||
}
|
||||
|
||||
var bar = new Bar
|
||||
var bar = Bar.new()
|
||||
bar.methodOnFoo // expect: foo
|
||||
bar.methodOnBar // expect: bar
|
||||
|
||||
|
||||
@ -1,31 +1,31 @@
|
||||
class Foo {
|
||||
new { _field = "Foo field" }
|
||||
this new() { _field = "Foo field" }
|
||||
|
||||
closeOverFooGet {
|
||||
return new Fn { new Fn { _field } }
|
||||
return Fn.new { Fn.new { _field } }
|
||||
}
|
||||
|
||||
closeOverFooSet {
|
||||
return new Fn { new Fn { _field = "new foo value" } }
|
||||
return Fn.new { Fn.new { _field = "new foo value" } }
|
||||
}
|
||||
}
|
||||
|
||||
class Bar is Foo {
|
||||
new {
|
||||
super
|
||||
this new() {
|
||||
super()
|
||||
_field = "Bar field"
|
||||
}
|
||||
|
||||
closeOverBarGet {
|
||||
return new Fn { new Fn { _field } }
|
||||
return Fn.new { Fn.new { _field } }
|
||||
}
|
||||
|
||||
closeOverBarSet {
|
||||
return new Fn { new Fn { _field = "new bar value" } }
|
||||
return Fn.new { Fn.new { _field = "new bar value" } }
|
||||
}
|
||||
}
|
||||
|
||||
var bar = new Bar
|
||||
var bar = Bar.new()
|
||||
IO.print(bar.closeOverFooGet.call().call()) // expect: Foo field
|
||||
IO.print(bar.closeOverBarGet.call().call()) // expect: Bar field
|
||||
bar.closeOverFooSet.call().call()
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
class A {}
|
||||
class B is A {}
|
||||
class C is B {}
|
||||
var a = new A
|
||||
var b = new B
|
||||
var c = new C
|
||||
var a = A.new()
|
||||
var b = B.new()
|
||||
var c = C.new()
|
||||
|
||||
IO.print(a is A) // expect: true
|
||||
IO.print(a is B) // expect: false
|
||||
|
||||
Reference in New Issue
Block a user