Files
wren/test/is/is.wren
T
Bob Nystrom 474e89c992 refactor: consolidate type-check helpers into generic wrenIsObjType and validate IS operand is class
Replace six separate type-check functions (wrenIsClosure, wrenIsFiber, wrenIsFn, wrenIsInstance, wrenIsRange, wrenIsString) with a single wrenIsObjType that takes an ObjType parameter. Add IS_CLASS macro and runtime validation in the IS bytecode handler to ensure the right operand is a class, producing a clear error message when it is not. Add test case for non-class right operand.
2014-01-21 15:52:03 +00:00

33 lines
1.1 KiB
Plaintext

IO.print(Num is Class) // expect: true
IO.print(true is Bool) // expect: true
IO.print((fn 1) is Function) // expect: true
IO.print(123 is Num) // expect: true
IO.print(null is Null) // expect: true
IO.print("s" is String) // expect: true
IO.print(Num is Bool) // expect: false
IO.print(null is Class) // expect: false
IO.print(true is Function) // expect: false
IO.print((fn 1) is Num) // expect: false
IO.print("s" is Null) // expect: false
IO.print(123 is String) // expect: false
// Everything extends Object.
IO.print(Num is Object) // expect: true
IO.print(null is Object) // expect: true
IO.print(true is Object) // expect: true
IO.print((fn 1) is Object) // expect: true
IO.print("s" is Object) // expect: true
IO.print(123 is Object) // expect: true
// Classes extend Class.
IO.print(Num is Class) // expect: true
IO.print(null is Class) // expect: false
IO.print(true is Class) // expect: false
IO.print((fn 1) is Class) // expect: false
IO.print("s" is Class) // expect: false
IO.print(123 is Class) // expect: false
// TODO: Non-class on RHS.
// TODO: Precedence and associativity.