From 4751b31c40eab5cf1163b4a884130e2a51e26faa Mon Sep 17 00:00:00 2001 From: Brad Nelson Date: Tue, 8 Nov 2022 19:42:44 -0800 Subject: [PATCH] Fixing a bug in CASE. --- common/case.fs | 6 +++--- common/case_tests.fs | 17 +++++++++++++++++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/common/case.fs b/common/case.fs index 84edece..041ab78 100644 --- a/common/case.fs +++ b/common/case.fs @@ -17,9 +17,9 @@ variable cases forth definitions internals : CASE ( n -- ) cases @ 0 cases ! ; immediate -: ENDCASE cases @ for aft postpone then then next - cases ! postpone drop ; immediate -: OF ( n -- ) postpone over postpone = postpone if ; immediate +: ENDCASE postpone drop cases @ for aft postpone then then next + cases ! ; immediate +: OF ( n -- ) postpone over postpone = postpone if postpone drop ; immediate : ENDOF 1 cases +! postpone else ; immediate forth definitions diff --git a/common/case_tests.fs b/common/case_tests.fs index 26c901e..3a8ce3e 100644 --- a/common/case_tests.fs +++ b/common/case_tests.fs @@ -46,3 +46,20 @@ e: test-case-dup 3 foo out: other: 3 ;e + +e: test-case-string + : foo + case + 1 of s" one" endof + 2 of s" two" endof + 1 of s" onemore" endof + >r s" other" r> + endcase + ; + 1 foo type cr + out: one + 2 foo type cr + out: two + 3 foo type cr + out: other +;e