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,5 +1,5 @@
|
||||
class Foo {
|
||||
new(value) { _value = value }
|
||||
this new(value) { _value = value }
|
||||
toString { _value }
|
||||
bar=(value) {
|
||||
_value = value
|
||||
@@ -7,9 +7,9 @@ class Foo {
|
||||
}
|
||||
}
|
||||
|
||||
var a = new Foo("a")
|
||||
var b = new Foo("b")
|
||||
var c = new Foo("c")
|
||||
var a = Foo.new("a")
|
||||
var b = Foo.new("b")
|
||||
var c = Foo.new("c")
|
||||
|
||||
// Assignment is right-associative.
|
||||
a.bar = b.bar = c.bar = "d"
|
||||
|
||||
@@ -2,5 +2,5 @@ class Foo {
|
||||
bar=(value) { value }
|
||||
}
|
||||
|
||||
var foo = new Foo
|
||||
var foo = Foo.new()
|
||||
(foo.bar) = "value" // expect error
|
||||
|
||||
@@ -2,5 +2,5 @@ class Foo {
|
||||
bar=(value) { value }
|
||||
}
|
||||
|
||||
var foo = new Foo
|
||||
var foo = Foo.new()
|
||||
"a" + foo.bar = "value" // expect error
|
||||
|
||||
@@ -4,5 +4,5 @@ class Foo {
|
||||
}
|
||||
}
|
||||
|
||||
var foo = new Foo
|
||||
var foo = Foo.new()
|
||||
foo.bar = "value" // expect: value
|
||||
|
||||
@@ -2,5 +2,5 @@ class Foo {
|
||||
bar=(value) { value }
|
||||
}
|
||||
|
||||
var foo = new Foo
|
||||
var foo = Foo.new()
|
||||
a is foo.bar = "value" // expect error
|
||||
|
||||
@@ -2,5 +2,5 @@ class Foo {
|
||||
bar=(value) { value }
|
||||
}
|
||||
|
||||
var foo = new Foo
|
||||
var foo = Foo.new()
|
||||
!foo.bar = "value" // expect error
|
||||
|
||||
@@ -2,5 +2,5 @@ class Foo {
|
||||
bar=(value) { "result" }
|
||||
}
|
||||
|
||||
var foo = new Foo
|
||||
var foo = Foo.new()
|
||||
IO.print(foo.bar = "value") // expect: result
|
||||
|
||||
@@ -3,6 +3,6 @@ class Foo {
|
||||
bar { IO.print("get") }
|
||||
}
|
||||
|
||||
var foo = new Foo
|
||||
var foo = Foo.new()
|
||||
foo.bar = "value" // expect: set
|
||||
foo.bar // expect: get
|
||||
|
||||
Reference in New Issue
Block a user