This commit is contained in:
Bob Nystrom
2013-12-20 07:05:31 -08:00
parent 61e745d548
commit e83d0bb360
11 changed files with 199 additions and 82 deletions
+18
View File
@@ -0,0 +1,18 @@
class Foo {
new(value) { _value = value }
toString { return _value }
bar = value {
_value = value
return value
}
}
var a = new Foo("a")
var b = new Foo("b")
var c = new Foo("c")
// Assignment is right-associative.
a.bar = b.bar = c.bar = "d"
io.write(a.toString) // expect: d
io.write(b.toString) // expect: d
io.write(c.toString) // expect: d
+6
View File
@@ -0,0 +1,6 @@
class Foo {
bar = value { return value }
}
var foo = new Foo
(foo.bar) = "value" // expect error
+6
View File
@@ -0,0 +1,6 @@
class Foo {
bar = value { return value }
}
var foo = new Foo
"a" + foo.bar = "value" // expect error
+8
View File
@@ -0,0 +1,8 @@
class Foo {
bar = value {
io.write(value)
}
}
var foo = new Foo
foo.bar = "value" // expect: value
+6
View File
@@ -0,0 +1,6 @@
class Foo {
bar = value { return value }
}
var foo = new Foo
a is foo.bar = "value" // expect error
+6
View File
@@ -0,0 +1,6 @@
class Foo {
bar = value { return value }
}
var foo = new Foo
!foo.bar = "value" // expect error
+6
View File
@@ -0,0 +1,6 @@
class Foo {
bar = value { return "result" }
}
var foo = new Foo
io.write(foo.bar = "value") // expect: result
+8
View File
@@ -0,0 +1,8 @@
class Foo {
bar = value { io.write("set") }
bar { io.write("get") }
}
var foo = new Foo
foo.bar = "value" // expect: set
foo.bar // expect: get
+7
View File
@@ -0,0 +1,7 @@
class Foo {
static bar = value {
io.write(value)
}
}
Foo.bar = "value" // expect: value
+1
View File
@@ -20,3 +20,4 @@ class Derived is Base {
// TODO: Calling super outside of a class.
// TODO: Super calls inside nested functions in methods.
// TODO: Super where there is no inherited method.
// TODO: Super setter calls.