diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2021-06-22 23:39:54 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2021-06-22 23:39:54 -0700 |
commit | 76ef912eb25cf6eccac43253ad1184d6fd502426 (patch) | |
tree | 435e519b05aa08d34ac74caa73cf12b297699609 | |
parent | 2eae06ebda6edfb5d0ea3f8823ccaf60af38694e (diff) | |
download | mu-76ef912eb25cf6eccac43253ad1184d6fd502426.tar.gz |
all tests passing again; infix seems done
-rw-r--r-- | mu-init.subx | 28 | ||||
-rw-r--r-- | shell/infix.mu | 6 | ||||
-rw-r--r-- | shell/macroexpand.mu | 2 |
3 files changed, 20 insertions, 16 deletions
diff --git a/mu-init.subx b/mu-init.subx index 26accb8a..8fcf84e3 100644 --- a/mu-init.subx +++ b/mu-init.subx @@ -14,21 +14,19 @@ Entry: bd/copy-to-ebp 0/imm32 # #? (main 0 0 Primary-bus-secondary-drive) - (set-cursor-position 0 0x30 2) - (test-infix) -#? # always first run tests -#? (run-tests) -#? (num-test-failures) # => eax -#? # call main if tests all passed -#? { -#? 3d/compare-eax-and 0/imm32 -#? 75/jump-if-!= break/disp8 -#? c7 0/subop/copy *Running-tests? 0/imm32/false -#? (clear-real-screen) -#? c7 0/subop/copy *Real-screen-cursor-x 0/imm32 -#? c7 0/subop/copy *Real-screen-cursor-y 0/imm32 -#? (main 0 0 Primary-bus-secondary-drive) -#? } + # always first run tests + (run-tests) + (num-test-failures) # => eax + # call main if tests all passed + { + 3d/compare-eax-and 0/imm32 + 75/jump-if-!= break/disp8 + c7 0/subop/copy *Running-tests? 0/imm32/false + (clear-real-screen) + c7 0/subop/copy *Real-screen-cursor-x 0/imm32 + c7 0/subop/copy *Real-screen-cursor-y 0/imm32 + (main 0 0 Primary-bus-secondary-drive) + } # hang indefinitely { diff --git a/shell/infix.mu b/shell/infix.mu index c9115f39..2239ab77 100644 --- a/shell/infix.mu +++ b/shell/infix.mu @@ -169,6 +169,11 @@ fn transform-infix-2 _x-ah: (addr handle cell), trace: (addr trace), at-head-of- # scan past first three elements var first-ah/ecx: (addr handle cell) <- get x, left var rest-ah/esi: (addr handle cell) <- get x, right + { + var quote-or-unquote?/eax: boolean <- quote-or-unquote? first-ah + compare quote-or-unquote?, 0/false + } + break-if-!= var rest/eax: (addr cell) <- lookup *rest-ah { var continue?/eax: boolean <- not-null-not-nil-pair? rest @@ -392,6 +397,7 @@ fn test-infix { check-infix "~a+b", "(+ (~ a) b)", "F - test-infix/unary-complement" check-infix "(n * n-1)", "(* n (- n 1))", "F - test-infix/no-spaces-over-spaces" check-infix "`(a + b)", "`(+ a b)", "F - test-infix/backquote" + check-infix "`(+ a b)", "`(+ a b)", "F - test-infix/backquote-2" check-infix ",@a+b", ",@(+ a b)", "F - test-infix/unquote-splice" check-infix ",@(a + b)", ",@(+ a b)", "F - test-infix/unquote-splice-2" } diff --git a/shell/macroexpand.mu b/shell/macroexpand.mu index 74f0e9c5..f65ead85 100644 --- a/shell/macroexpand.mu +++ b/shell/macroexpand.mu @@ -416,7 +416,7 @@ fn test-macroexpand { var dummy/eax: boolean <- macroexpand-iter result-ah, globals, trace var error?/eax: boolean <- has-errors? trace check-not error?, "F - test-macroexpand/error" -#? dump-cell-from-cursor-over-full-screen result-ah +#? dump-cell-from-cursor-over-full-screen result-ah, 4/fg 0/bg var _result/eax: (addr cell) <- lookup *result-ah var result/edi: (addr cell) <- copy _result # expected |