1
0
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:
Bob Nystrom
2015-07-10 09:18:22 -07:00
parent 0ddaa2517c
commit 5fb6186d7d
221 changed files with 864 additions and 654 deletions

View File

@ -12,7 +12,7 @@ class Foo {
Foo.method
IO.print(Nonlocal) // expect: method
new Fn {
Fn.new {
Nonlocal = "fn"
}.call()
IO.print(Nonlocal) // expect: fn

View File

@ -1,9 +1,9 @@
class Foo {
static bar { new Bar }
static bar { Bar.new() }
}
class Bar {
static foo { new Foo }
static foo { Foo.new() }
}
IO.print(Foo.bar) // expect: instance of Bar

View File

@ -1,7 +1,6 @@
var fn = new Fn {
var fn = Fn.new {
IO.print(Foo)
IO.print(Bar)
}
// expect error line 7
// expect error line 7
// expect error line 6

View File

@ -1,5 +1,5 @@
var Global = "global"
new Fn {
Fn.new {
IO.print(Global) // expect: global
}.call()

View File

@ -1,4 +1,4 @@
var f = new Fn {
var f = Fn.new {
IO.print(Global)
}

View File

@ -10,5 +10,5 @@ class Foo {
}
}
(new Foo).method // expect: global
Foo.new().method // expect: global
Foo.classMethod // expect: global

View File

@ -10,5 +10,5 @@ class Foo {
var Global = "global"
(new Foo).method // expect: global
Foo.new().method // expect: global
Foo.classMethod // expect: global