diff options
-rw-r--r-- | apps/tile/environment.mu | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/apps/tile/environment.mu b/apps/tile/environment.mu index b5cacb86..0fdb5e75 100644 --- a/apps/tile/environment.mu +++ b/apps/tile/environment.mu @@ -654,8 +654,13 @@ fn copy-unbound-words-to-args _functions: (addr handle function) { { compare curr, 0 break-if-= - { - var bound?/ebx: boolean <- bound? curr, functions-ah + $copy-unbound-words-to-args:unbound: { + { + var is-int?/eax: boolean <- word-is-decimal-integer? curr + compare is-int?, 0 # false + break-if-!= $copy-unbound-words-to-args:unbound + } + var bound?/ebx: boolean <- bound-function? curr, functions-ah compare bound?, 0 # false break-if-!= # push copy of curr before dest-ah @@ -673,14 +678,10 @@ fn copy-unbound-words-to-args _functions: (addr handle function) { } } -fn bound? w: (addr word), functions-ah: (addr handle function) -> result/ebx: boolean { +fn bound-function? w: (addr word), functions-ah: (addr handle function) -> result/ebx: boolean { result <- copy 1 # true - # if is-decimal-number(w) return true - var subresult/eax: boolean <- word-is-decimal-integer? w - compare subresult, 0 # false - break-if-!= # if w == "+" return true - subresult <- word-equal? w, "+" + var subresult/eax: boolean <- word-equal? w, "+" compare subresult, 0 # false break-if-!= # if w == "-" return true |