Unify body handling.

Blocks, functions, and methods now have the same code for handling
their bodies.

This means that single-line methods work like single-line functions:
they return the result of their expression.
This commit is contained in:
Bob Nystrom
2014-04-03 07:48:19 -07:00
parent 55c2c6ffb0
commit da4cadf16b
34 changed files with 1165 additions and 1187 deletions
+2 -5
View File
@@ -1,9 +1,6 @@
class Foo {
getClosure {
return new Fn { toString }
}
toString { return "Foo" }
getClosure { new Fn { toString } }
toString { "Foo" }
}
var closure = (new Foo).getClosure
+2 -2
View File
@@ -9,14 +9,14 @@ class Outer {
method {
IO.print(this) // expect: Inner
}
toString { return "Inner" }
toString { "Inner" }
}
(new Inner).method
}.call
}
toString { return "Outer" }
toString { "Outer" }
}
(new Outer).method
+2 -11
View File
@@ -1,15 +1,6 @@
class Foo {
getClosure {
return new Fn {
return new Fn {
return new Fn {
return toString
}
}
}
}
toString { return "Foo" }
getClosure { new Fn { new Fn { new Fn { toString } } } }
toString { "Foo" }
}
var closure = (new Foo).getClosure
+2 -2
View File
@@ -1,6 +1,6 @@
class Foo {
bar { return this }
baz { return "baz" }
bar { this }
baz { "baz" }
}
IO.print((new Foo).bar.baz) // expect: baz
+1 -1
View File
@@ -4,7 +4,7 @@ class Foo {
IO.print(this.bar) // expect: bar
}
static bar { return "bar" }
static bar { "bar" }
}
Foo.test