Get inheritance and core classes more correctly wired up.

This commit is contained in:
Bob Nystrom
2013-11-26 07:52:37 -08:00
parent af694053a5
commit eaeec01dc6
12 changed files with 210 additions and 124 deletions
+4
View File
@@ -0,0 +1,4 @@
io.write(true is Bool) // expect: true
io.write(true is Object) // expect: true
io.write(true is Num) // expect: false
io.write(true.type == Bool) // expect: true
+13
View File
@@ -0,0 +1,13 @@
io.write(Num == Num) // expect: true
io.write(Num == Bool) // expect: false
// Not equal to other types.
io.write(Num == 123) // expect: false
io.write(Num == true) // expect: false
io.write(Num != Num) // expect: false
io.write(Num != Bool) // expect: true
// Not equal to other types.
io.write(Num != 123) // expect: true
io.write(Num != true) // expect: true
+4
View File
@@ -0,0 +1,4 @@
io.write((fn 0) is Function) // expect: true
io.write((fn 0) is Object) // expect: true
io.write((fn 0) is String) // expect: false
io.write((fn 0).type == Function) // expect: true
+27
View File
@@ -1,3 +1,4 @@
io.write(Num is Class) // expect: true
io.write(true is Bool) // expect: true
io.write((fn 1) is Function) // expect: true
io.write(123 is Num) // expect: true
@@ -11,6 +12,32 @@ io.write((fn 1) is Num) // expect: false
io.write("s" is Null) // expect: false
io.write(123 is String) // expect: false
// Everything extends Object.
io.write(Num is Object) // expect: true
io.write(null is Object) // expect: true
io.write(true is Object) // expect: true
io.write((fn 1) is Object) // expect: true
io.write("s" is Object) // expect: true
io.write(123 is Object) // expect: true
// Inheritance.
class A {}
class B is A {}
class C is B {}
var a = A.new
var b = B.new
var c = C.new
io.write(a is A) // expect: true
io.write(a is B) // expect: false
io.write(a is C) // expect: false
io.write(b is A) // expect: true
io.write(b is B) // expect: true
io.write(b is C) // expect: false
io.write(c is A) // expect: true
io.write(c is B) // expect: true
io.write(c is C) // expect: true
// TODO(bob): Non-class on RHS.
// TODO(bob): Precedence and associativity.
// TODO(bob): Metaclasses ("Num is Class").
+4
View File
@@ -0,0 +1,4 @@
io.write([] is List) // expect: true
io.write([] is Object) // expect: true
io.write([] is Bool) // expect: false
io.write([].type == List) // expect: true
+4
View File
@@ -0,0 +1,4 @@
io.write(null is Null) // expect: true
io.write(null is Object) // expect: true
io.write(null is Bool) // expect: false
io.write(null.type == Null) // expect: true
+4
View File
@@ -0,0 +1,4 @@
io.write(123 is Num) // expect: true
io.write(123 is Object) // expect: true
io.write(123 is String) // expect: false
io.write(123.type == Num) // expect: true
+4
View File
@@ -0,0 +1,4 @@
io.write("s" is String) // expect: true
io.write("s" is Object) // expect: true
io.write("s" is Num) // expect: false
io.write("s".type == String) // expect: true