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