diff --git a/src/kiss/Prelude.hx b/src/kiss/Prelude.hx index 998ee193..ee55d1e7 100644 --- a/src/kiss/Prelude.hx +++ b/src/kiss/Prelude.hx @@ -1,5 +1,7 @@ package kiss; +using Std; + class Prelude { public static function add(a, b) { return a + b; @@ -69,13 +71,17 @@ class Prelude { case TBool: (v : Bool); default: // Empty strings are falsy - var str = cast(v, String); - if (str != null) { + if (v.isOfType(String)) { + var str:String = cast v; str.length > 0; + } else if (v.isOfType(Array)) { + // Empty lists are falsy + var lst:Array = cast v; + lst.length > 0; } else { // Any other value is true by default true; - } + }; } } diff --git a/src/test/cases/BasicTestCase.hx b/src/test/cases/BasicTestCase.hx index bd0596ed..7730c49c 100644 --- a/src/test/cases/BasicTestCase.hx +++ b/src/test/cases/BasicTestCase.hx @@ -117,6 +117,8 @@ class BasicTestCase extends Test { Assert.equals(false, BasicTestCase.myIf6); Assert.equals(true, BasicTestCase.myIf7); Assert.equals(false, BasicTestCase.myIf8); + Assert.equals(false, BasicTestCase.myIf9); + Assert.equals(true, BasicTestCase.myIf10); } function testMacros() { diff --git a/src/test/cases/BasicTestCase.kiss b/src/test/cases/BasicTestCase.kiss index 342885c8..1fa1dc6a 100644 --- a/src/test/cases/BasicTestCase.kiss +++ b/src/test/cases/BasicTestCase.kiss @@ -62,6 +62,8 @@ (defvar myIf6 (if false true false)) (defvar myIf7 (if "string" true false)) (defvar myIf8 (if "" true false)) +(defvar myIf9 (if [] true false)) +(defvar myIf10 (if [1] true false)) (defvar :Int myInt 8)