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:
@@ -1,4 +1,4 @@
|
||||
var fiber = new Fiber {
|
||||
var fiber = Fiber.new {
|
||||
Fiber.abort("Error message.")
|
||||
}
|
||||
|
||||
|
||||
@@ -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() // expect runtime error: Fiber has already been called.
|
||||
}
|
||||
|
||||
|
||||
@@ -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,4 +1,4 @@
|
||||
var fiber = new Fiber {
|
||||
var fiber = Fiber.new {
|
||||
IO.print("fiber")
|
||||
return "result"
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
var fiber = new Fiber {
|
||||
var fiber = Fiber.new {
|
||||
IO.print("call")
|
||||
}
|
||||
|
||||
|
||||
@@ -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,4 +1,4 @@
|
||||
var fiber = new Fiber {
|
||||
var fiber = Fiber.new {
|
||||
"s".unknown
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
var fiber = new Fiber {
|
||||
var fiber = Fiber.new {
|
||||
IO.print("1")
|
||||
Fiber.yield()
|
||||
IO.print("2")
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
var fiber = new Fiber {
|
||||
var fiber = Fiber.new {
|
||||
"s".unknown
|
||||
}
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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,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()
|
||||
IO.print(2) // expect: 2
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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,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,4 +1,4 @@
|
||||
var fiber = new Fiber {
|
||||
var fiber = Fiber.new {
|
||||
IO.print("before")
|
||||
true.unknownMethod
|
||||
IO.print("after")
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
var fiber
|
||||
|
||||
fiber = new Fiber {
|
||||
fiber = Fiber.new {
|
||||
fiber.try() // expect runtime error: Fiber has already been called.
|
||||
}
|
||||
|
||||
|
||||
@@ -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,4 +1,4 @@
|
||||
var fiber = new Fiber {
|
||||
var fiber = Fiber.new {
|
||||
IO.print("try")
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
var fiber = new Fiber {
|
||||
var fiber = Fiber.new {
|
||||
IO.print("fiber")
|
||||
}
|
||||
|
||||
|
||||
@@ -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,4 +1,4 @@
|
||||
var fiber = new Fiber {
|
||||
var fiber = Fiber.new {
|
||||
IO.print("fiber 1")
|
||||
Fiber.yield()
|
||||
IO.print("fiber 2")
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
var fiber = new Fiber {
|
||||
var fiber = Fiber.new {
|
||||
IO.print("fiber 1")
|
||||
var result = Fiber.yield()
|
||||
IO.print(result)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
var fiber = new Fiber {
|
||||
var fiber = Fiber.new {
|
||||
IO.print("fiber")
|
||||
var result = Fiber.yield()
|
||||
IO.print(result)
|
||||
|
||||
@@ -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,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")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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 @@
|
||||
new Fn(3) // expect runtime error: Argument must be a function.
|
||||
Fn.new(3) // expect runtime error: Argument must be a function.
|
||||
|
||||
@@ -1 +1 @@
|
||||
IO.print(new Fn {}) // expect: <fn>
|
||||
IO.print(Fn.new {}) // expect: <fn>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,4 +1,4 @@
|
||||
var list = new List
|
||||
var list = List.new()
|
||||
|
||||
IO.print(list.count) // expect: 0
|
||||
IO.print(list) // expect: []
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,4 +1,4 @@
|
||||
var fiber = new Fiber {}
|
||||
var fiber = Fiber.new {}
|
||||
|
||||
var map = {
|
||||
null: "null value",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
var map = new Map
|
||||
var map = Map.new()
|
||||
|
||||
IO.print(map.count) // expect: 0
|
||||
IO.print(map) // expect: {}
|
||||
|
||||
@@ -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,2 +1,2 @@
|
||||
class Foo {}
|
||||
IO.print(!(new Foo)) // expect: false
|
||||
IO.print(!Foo.new()) // expect: false
|
||||
|
||||
@@ -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,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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user