Add [DEFINED] and [UNDEFINED] (#127)
authorPhil Burk <philburk@mobileer.com>
Sun, 4 Dec 2022 21:25:39 +0000 (13:25 -0800)
committerGitHub <noreply@github.com>
Sun, 4 Dec 2022 21:25:39 +0000 (13:25 -0800)
Also add tests.

Fixes #111

fth/condcomp.fth
fth/t_corex.fth

index dc65c6bc76616d1c0da991e9d59a15234645dfbd..762cde89a605ffe45ef1f2d3ff2fab43be96674b 100644 (file)
@@ -46,5 +46,15 @@ anew task-condcomp.fth
 
 : EXISTS? ( <name> -- flag , true if defined )
     bl word find
-    swap drop
+    nip 0<>
+; immediate
+
+: [DEFINED] ( <name> -- flag , true if defined, ANS )
+    bl word find
+    nip 0<>
+; immediate
+
+: [UNDEFINED] ( <name> -- flag , true if not defined, ANS )
+    bl word find
+    nip 0=
 ; immediate
index f2b3f197ca0967b1c8cca5dd12642c3fef0e36c6..c37252ac4b5673a5b6a613791202c52750855f1c 100644 (file)
@@ -330,5 +330,19 @@ T{ s" unknown-query-string" ENVIRONMENT? }T{ FALSE }T
 T{ s" MAX-CHAR" ENVIRONMENT? }T{ 255 TRUE }T
 T{ s" ADDRESS-UNITS-BITS" ENVIRONMENT? }T{ 8 TRUE }T
 
+\  ----------------------------------------------------- PROGRAMMING
+
+T{ exists? words }T{ true }T  \ high level
+T{ exists? swap }T{ true }T   \ in kernel
+T{ exists? lkajsdlakjs }T{ false }T
+
+T{ [defined] if }T{ true }T   \ high level
+T{ [defined] dup }T{ true }T  \ in kernel
+T{ [defined] k23jh42 }T{ false }T
+
+T{ [undefined] if }T{ false }T  \ high level
+T{ [undefined] dup }T{ false }T \ in kernel
+T{ [undefined] k23jh42 }T{ true }T
+
 }TEST