feat: replace new keyword with this constructor syntax and ClassName.new() calls across core library and docs

Replace all uses of the `new` reserved word with explicit `this new()` constructor definitions and `ClassName.new()` instantiation calls in builtin/core.wren. Update all documentation files (classes.markdown, fiber.markdown, fn.markdown, sequence.markdown, error-handling.markdown, expressions.markdown, fibers.markdown, functions.markdown) to reflect the new constructor syntax, removing `new` keyword examples and replacing them with `ClassName.new()` patterns and `this new()` definitions.
This commit is contained in:
Bob Nystrom
2015-07-10 16:18:22 +00:00
parent 121d39cb42
commit e19ff59cce
221 changed files with 864 additions and 654 deletions
+1 -1
View File
@@ -1,4 +1,4 @@
var fiber = new Fiber {
var fiber = Fiber.new {
Fiber.abort("Error message.")
}
+1 -1
View File
@@ -1,4 +1,4 @@
var fiber = new Fiber {
var fiber = Fiber.new {
IO.print("fiber")
}
+1 -1
View File
@@ -1,6 +1,6 @@
var fiber
fiber = new Fiber {
fiber = Fiber.new {
fiber.call() // expect runtime error: Fiber has already been called.
}
+2 -2
View File
@@ -1,11 +1,11 @@
var a
var b
a = new Fiber {
a = Fiber.new {
b.call() // expect runtime error: Fiber has already been called.
}
b = new Fiber {
b = Fiber.new {
a.call()
}
@@ -1,4 +1,4 @@
var fiber = new Fiber {
var fiber = Fiber.new {
IO.print("fiber")
}
+1 -1
View File
@@ -1,4 +1,4 @@
var fiber = new Fiber {
var fiber = Fiber.new {
IO.print("fiber")
return "result"
}
+1 -1
View File
@@ -1,4 +1,4 @@
var fiber = new Fiber {
var fiber = Fiber.new {
IO.print("call")
}
+1 -1
View File
@@ -1,4 +1,4 @@
var fiber = new Fiber {
var fiber = Fiber.new {
IO.print("fiber")
}
@@ -1,6 +1,6 @@
var fiber
fiber = new Fiber {
fiber = Fiber.new {
fiber.call(2) // expect runtime error: Fiber has already been called.
}
@@ -1,11 +1,11 @@
var a
var b
a = new Fiber {
a = Fiber.new {
b.call(3) // expect runtime error: Fiber has already been called.
}
b = new Fiber {
b = Fiber.new {
a.call(2)
}
@@ -1,4 +1,4 @@
var fiber = new Fiber {
var fiber = Fiber.new {
IO.print("call")
}
+1 -1
View File
@@ -1,4 +1,4 @@
var fiber = new Fiber {
var fiber = Fiber.new {
"s".unknown
}
+1 -1
View File
@@ -1,4 +1,4 @@
var fiber = new Fiber {
var fiber = Fiber.new {
IO.print("1")
Fiber.yield()
IO.print("2")
+1 -1
View File
@@ -1,4 +1,4 @@
var fiber = new Fiber {
var fiber = Fiber.new {
"s".unknown
}
+1 -1
View File
@@ -1 +1 @@
var fiber = new Fiber("not fn") // expect runtime error: Argument must be a function.
var fiber = Fiber.new("not fn") // expect runtime error: Argument must be a function.
+2 -2
View File
@@ -1,8 +1,8 @@
var b = new Fiber {
var b = Fiber.new {
IO.print("fiber b")
}
var a = new Fiber {
var a = Fiber.new {
IO.print("begin fiber a")
b.call()
IO.print("end fiber a")
+1 -1
View File
@@ -1,4 +1,4 @@
var fiber = new Fiber {
var fiber = Fiber.new {
IO.print("fiber")
}
+1 -1
View File
@@ -1,6 +1,6 @@
var fiber
fiber = new Fiber {
fiber = Fiber.new {
IO.print(1) // expect: 1
fiber.run()
IO.print(2) // expect: 2
+2 -2
View File
@@ -1,13 +1,13 @@
var a
var b
a = new Fiber {
a = Fiber.new {
IO.print(2)
b.run()
IO.print("nope")
}
b = new Fiber {
b = Fiber.new {
IO.print(1)
a.run()
IO.print(3)
+2 -2
View File
@@ -1,10 +1,10 @@
var a = new Fiber {
var a = Fiber.new {
IO.print("run")
}
// Run a through an intermediate fiber since it will get discarded and we need
// to return to the main one after a completes.
var b = new Fiber {
var b = Fiber.new {
a.run()
IO.print("nope")
}
+1 -1
View File
@@ -1,4 +1,4 @@
var fiber = new Fiber {
var fiber = Fiber.new {
IO.print("fiber")
}
@@ -1,6 +1,6 @@
var fiber
fiber = new Fiber {
fiber = Fiber.new {
IO.print(1) // expect: 1
fiber.run("ignored")
IO.print(2) // expect: 2
@@ -1,13 +1,13 @@
var a
var b
a = new Fiber {
a = Fiber.new {
IO.print(2)
b.run("ignored")
IO.print("nope")
}
b = new Fiber {
b = Fiber.new {
IO.print(1)
a.run("ignored")
IO.print(3)
+1 -1
View File
@@ -1,4 +1,4 @@
var fiber = new Fiber {
var fiber = Fiber.new {
IO.print("before")
true.unknownMethod
IO.print("after")
+1 -1
View File
@@ -1,6 +1,6 @@
var fiber
fiber = new Fiber {
fiber = Fiber.new {
fiber.try() // expect runtime error: Fiber has already been called.
}
+2 -2
View File
@@ -1,11 +1,11 @@
var a
var b
a = new Fiber {
a = Fiber.new {
b.try() // expect runtime error: Fiber has already been called.
}
b = new Fiber {
b = Fiber.new {
a.call()
}
+1 -1
View File
@@ -1,4 +1,4 @@
var fiber = new Fiber {
var fiber = Fiber.new {
IO.print("try")
}
+1 -1
View File
@@ -1,4 +1,4 @@
var fiber = new Fiber {
var fiber = Fiber.new {
IO.print("fiber")
}
+1 -1
View File
@@ -1,4 +1,4 @@
var fiber = new Fiber {}
var fiber = Fiber.new {}
IO.print(fiber is Fiber) // expect: true
IO.print(fiber is Object) // expect: true
IO.print(fiber is Bool) // expect: false
+1 -1
View File
@@ -1,4 +1,4 @@
var fiber = new Fiber {
var fiber = Fiber.new {
IO.print("fiber 1")
Fiber.yield()
IO.print("fiber 2")
+1 -1
View File
@@ -1,4 +1,4 @@
var fiber = new Fiber {
var fiber = Fiber.new {
IO.print("fiber 1")
var result = Fiber.yield()
IO.print(result)
+1 -1
View File
@@ -1,4 +1,4 @@
var fiber = new Fiber {
var fiber = Fiber.new {
IO.print("fiber")
var result = Fiber.yield()
IO.print(result)
+3 -3
View File
@@ -1,11 +1,11 @@
var a = new Fiber {
var a = Fiber.new {
IO.print("before") // expect: before
Fiber.yield()
}
// Run a chain of fibers. Since none of them are called, they all get discarded
// and there is no remaining caller.
var b = new Fiber { a.run() }
var c = new Fiber { b.run() }
var b = Fiber.new { a.run() }
var c = Fiber.new { b.run() }
c.run()
IO.print("not reached")
+1 -1
View File
@@ -1,4 +1,4 @@
var fiber = new Fiber {
var fiber = Fiber.new {
IO.print("fiber 1")
Fiber.yield("yield 1")
IO.print("fiber 2")
@@ -1,11 +1,11 @@
var a = new Fiber {
var a = Fiber.new {
IO.print("before") // expect: before
Fiber.yield(1)
}
// Run a chain of fibers. Since none of them are called, they all get discarded
// and there is no remaining caller.
var b = new Fiber { a.run() }
var c = new Fiber { b.run() }
var b = Fiber.new { a.run() }
var c = Fiber.new { b.run() }
c.run()
IO.print("not reached")
+5 -5
View File
@@ -1,5 +1,5 @@
IO.print(new Fn {}.arity) // expect: 0
IO.print(new Fn {|a| a}.arity) // expect: 1
IO.print(new Fn {|a, b| a}.arity) // expect: 2
IO.print(new Fn {|a, b, c| a}.arity) // expect: 3
IO.print(new Fn {|a, b, c, d| a}.arity) // expect: 4
IO.print(Fn.new {}.arity) // expect: 0
IO.print(Fn.new {|a| a}.arity) // expect: 1
IO.print(Fn.new {|a, b| a}.arity) // expect: 2
IO.print(Fn.new {|a, b, c| a}.arity) // expect: 3
IO.print(Fn.new {|a, b, c, d| a}.arity) // expect: 4
+4 -4
View File
@@ -1,7 +1,7 @@
var f0 = new Fn { IO.print("zero") }
var f1 = new Fn {|a| IO.print("one ", a) }
var f2 = new Fn {|a, b| IO.print("two ", a, " ", b) }
var f3 = new Fn {|a, b, c| IO.print("three ", a, " ", b, " ", c) }
var f0 = Fn.new { IO.print("zero") }
var f1 = Fn.new {|a| IO.print("one ", a) }
var f2 = Fn.new {|a, b| IO.print("two ", a, " ", b) }
var f3 = Fn.new {|a, b, c| IO.print("three ", a, " ", b, " ", c) }
f0.call("a") // expect: zero
f0.call("a", "b") // expect: zero
@@ -1,2 +1,2 @@
var f2 = new Fn {|a, b| IO.print(a, b) }
var f2 = Fn.new {|a, b| IO.print(a, b) }
f2.call("a") // expect runtime error: Function expects more arguments.
+9 -9
View File
@@ -1,16 +1,16 @@
// Not structurally equal.
IO.print(new Fn { 123 } == new Fn { 123 }) // expect: false
IO.print(new Fn { 123 } != new Fn { 123 }) // expect: true
IO.print(Fn.new { 123 } == Fn.new { 123 }) // expect: false
IO.print(Fn.new { 123 } != Fn.new { 123 }) // expect: true
// Not equal to other types.
IO.print(new Fn { 123 } == 1) // expect: false
IO.print(new Fn { 123 } == false) // expect: false
IO.print(new Fn { 123 } == "fn 123") // expect: false
IO.print(new Fn { 123 } != 1) // expect: true
IO.print(new Fn { 123 } != false) // expect: true
IO.print(new Fn { 123 } != "fn 123") // expect: true
IO.print(Fn.new { 123 } == 1) // expect: false
IO.print(Fn.new { 123 } == false) // expect: false
IO.print(Fn.new { 123 } == "fn 123") // expect: false
IO.print(Fn.new { 123 } != 1) // expect: true
IO.print(Fn.new { 123 } != false) // expect: true
IO.print(Fn.new { 123 } != "fn 123") // expect: true
// Equal by identity.
var f = new Fn { 123 }
var f = Fn.new { 123 }
IO.print(f == f) // expect: true
IO.print(f != f) // expect: false
+1 -1
View File
@@ -1 +1 @@
new Fn(3) // expect runtime error: Argument must be a function.
Fn.new(3) // expect runtime error: Argument must be a function.
+1 -1
View File
@@ -1 +1 @@
IO.print(new Fn {}) // expect: <fn>
IO.print(Fn.new {}) // expect: <fn>
+4 -4
View File
@@ -1,4 +1,4 @@
IO.print(new Fn { 0 } is Fn) // expect: true
IO.print(new Fn { 0 } is Object) // expect: true
IO.print(new Fn { 0 } is String) // expect: false
IO.print(new Fn { 0 }.type == Fn) // expect: true
IO.print(Fn.new { 0 } is Fn) // expect: true
IO.print(Fn.new { 0 } is Object) // expect: true
IO.print(Fn.new { 0 } is String) // expect: false
IO.print(Fn.new { 0 }.type == Fn) // expect: true
+1 -1
View File
@@ -18,6 +18,6 @@ class Foo {
toString { "Foo.toString" }
}
IO.print([1, new Foo, 2].join(", ")) // expect: 1, Foo.toString, 2
IO.print([1, Foo.new(), 2].join(", ")) // expect: 1, Foo.toString, 2
// TODO: Handle lists that contain themselves.
+1 -1
View File
@@ -1,4 +1,4 @@
var list = new List
var list = List.new()
IO.print(list.count) // expect: 0
IO.print(list) // expect: []
+2 -2
View File
@@ -1,7 +1,7 @@
var a = [1, 4, 2, 1, 5]
var b = ["W", "o", "r", "l", "d"]
var max = new Fn {|a, b| a > b ? a : b }
var sum = new Fn {|a, b| a + b }
var max = Fn.new {|a, b| a > b ? a : b }
var sum = Fn.new {|a, b| a + b }
IO.print(a.reduce(max)) // expect: 5
IO.print(a.reduce(10, max)) // expect: 10
+1 -1
View File
@@ -12,6 +12,6 @@ class Foo {
toString { "Foo.toString" }
}
IO.print([1, new Foo, 2]) // expect: [1, Foo.toString, 2]
IO.print([1, Foo.new(), 2]) // expect: [1, Foo.toString, 2]
// TODO: Handle lists that contain themselves.
+1 -1
View File
@@ -1,4 +1,4 @@
var fiber = new Fiber {}
var fiber = Fiber.new {}
var map = {
null: "null value",
+1 -1
View File
@@ -1,4 +1,4 @@
var map = new Map
var map = Map.new()
IO.print(map.count) // expect: 0
IO.print(map) // expect: {}
+1 -1
View File
@@ -12,7 +12,7 @@ class Foo {
toString { "Foo.toString" }
}
IO.print({1: new Foo}) // expect: {1: Foo.toString}
IO.print({1: Foo.new()}) // expect: {1: Foo.toString}
// Since iteration order is unspecified, we don't know what order the results
// will be.
+1 -1
View File
@@ -1,2 +1,2 @@
class Foo {}
IO.print(!(new Foo)) // expect: false
IO.print(!Foo.new()) // expect: false
+4 -4
View File
@@ -26,15 +26,15 @@ IO.print(Object.same(Bool, Bool)) // expect: true
// Other types compare by identity.
class Foo {}
var foo = new Foo
var foo = Foo.new()
IO.print(Object.same(foo, foo)) // expect: true
IO.print(Object.same(foo, new Foo)) // expect: false
IO.print(Object.same(foo, Foo.new())) // expect: false
// Ignores == operators.
class Bar {
==(other) { true }
}
var bar = new Bar
var bar = Bar.new()
IO.print(Object.same(bar, bar)) // expect: true
IO.print(Object.same(bar, new Bar)) // expect: false
IO.print(Object.same(bar, Bar.new())) // expect: false
+1 -1
View File
@@ -1,2 +1,2 @@
class Foo {}
IO.print((new Foo).toString == "instance of Foo") // expect: true
IO.print(Foo.new().toString == "instance of Foo") // expect: true
+1 -1
View File
@@ -8,4 +8,4 @@ class TestSequence is Sequence {
iteratorValue(iterator) { iterator }
}
IO.print((new TestSequence).count) // expect: 10
IO.print(TestSequence.new().count) // expect: 10
+1 -1
View File
@@ -7,4 +7,4 @@ class InfiniteSequence is Sequence {
}
// Should not try to iterate the whole sequence.
IO.print((new InfiniteSequence).isEmpty) // expect: false
IO.print(InfiniteSequence.new().isEmpty) // expect: false
+3 -3
View File
@@ -1,6 +1,6 @@
// Infinite iterator demonstrating that Sequence.map is not eager
class FibIterator {
new {
this new() {
_current = 0
_next = 1
}
@@ -16,7 +16,7 @@ class FibIterator {
class Fib is Sequence {
iterate(iterator) {
if (iterator == null) return new FibIterator
if (iterator == null) return FibIterator.new()
iterator.iterate
return iterator
}
@@ -24,7 +24,7 @@ class Fib is Sequence {
iteratorValue(iterator) { iterator.value }
}
var squareFib = (new Fib).map {|fib| fib * fib }
var squareFib = Fib.new().map {|fib| fib * fib }
var iterator = null
IO.print(squareFib is Sequence) // expect: true
+1 -1
View File
@@ -8,4 +8,4 @@ class TestSequence is Sequence {
iteratorValue(iterator) { iterator }
}
IO.print((new TestSequence).toList) // expect: [1, 2, 3]
IO.print(TestSequence.new().toList) // expect: [1, 2, 3]
+3 -3
View File
@@ -1,6 +1,6 @@
// Infinite iterator demonstrating that Sequence.where is not eager
class FibIterator {
new {
this new() {
_current = 0
_next = 1
}
@@ -16,7 +16,7 @@ class FibIterator {
class Fib is Sequence {
iterate(iterator) {
if (iterator == null) return new FibIterator
if (iterator == null) return FibIterator.new()
iterator.iterate
return iterator
}
@@ -24,7 +24,7 @@ class Fib is Sequence {
iteratorValue(iterator) { iterator.value }
}
var largeFibs = (new Fib).where {|fib| fib > 100 }
var largeFibs = Fib.new().where {|fib| fib > 100 }
var iterator = null
IO.print(largeFibs is Sequence) // expect: true