Skip to content

Commit fbbb200

Browse files
committed
CHANGE: value of false dynamic function refinement is none, not false (as native code expects none, which is cheaper to compare)
1 parent 7e16fae commit fbbb200

File tree

3 files changed

+17
-17
lines changed

3 files changed

+17
-17
lines changed

src/core/c-do.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -777,7 +777,7 @@ x*/ static REBINT Do_Args_Light(REBVAL *func, REBVAL *path, REBSER *block, REBCN
777777
if (SAME_SYM(path, args)) {
778778
value = Get_Var(path);
779779
useArgs = IS_TRUE(value);
780-
SET_LOGIC(DS_VALUE(ds), useArgs);
780+
if (useArgs) SET_TRUE(DS_VALUE(ds));
781781
path++; // remove processed refinement
782782
continue;
783783
}
@@ -789,7 +789,7 @@ x*/ static REBINT Do_Args_Light(REBVAL *func, REBVAL *path, REBSER *block, REBCN
789789
if (IS_REFINEMENT(args) && VAL_WORD_CANON(args) == VAL_WORD_CANON(path)) {
790790
value = Get_Var(path);
791791
useArgs = IS_TRUE(value);
792-
SET_LOGIC(DS_VALUE(ds), useArgs);
792+
if (useArgs) SET_TRUE(DS_VALUE(ds));
793793
path++; // remove processed refinement
794794
break;
795795
}

src/tests/units/evaluation-test.r3

+4-4
Original file line numberDiff line numberDiff line change
@@ -1161,7 +1161,7 @@ Rebol [
11611161
--test-- "dyn-ref-8"
11621162
ref: no
11631163
--assert (dyn-ref-fun/:ref 10 * 9 "hello" 789)
1164-
== [90 "hello" #[false] #[none] #[none] #[none] #[none] #[none]]
1164+
== [90 "hello" #[none] #[none] #[none] #[none] #[none] #[none]]
11651165

11661166
--test-- "dyn-ref-9"
11671167
ref: ref2: yes
@@ -1171,12 +1171,12 @@ Rebol [
11711171
--test-- "dyn-ref-10"
11721172
ref: no ref2: yes
11731173
--assert (dyn-ref-fun/:ref/:ref2 10 * 9 "hello" 789)
1174-
== [90 "hello" #[false] #[none] #[true] #[none] #[none] #[none]]
1174+
== [90 "hello" #[none] #[none] #[true] #[none] #[none] #[none]]
11751175

11761176
--test-- "dyn-ref-11"
11771177
ref: no ref2: ref3: yes
11781178
--assert (dyn-ref-fun/:ref/:ref2/:ref3 10 * 9 "hello" 789 6 7)
1179-
== [90 "hello" #[false] #[none] #[true] #[true] 6 7]
1179+
== [90 "hello" #[none] #[none] #[true] #[true] 6 7]
11801180

11811181
--test-- "dyn-ref-12"
11821182
dyn-ref-12-obj: context [
@@ -1186,7 +1186,7 @@ Rebol [
11861186
bar: func [/local ref][
11871187
ref: no
11881188
--assert (foo/:ref 10 * 9 "hello" 789)
1189-
== [90 "hello" #[false] #[none] #[none] #[none] #[none] #[none]]
1189+
== [90 "hello" #[none] #[none] #[none] #[none] #[none] #[none]]
11901190

11911191
ref: yes
11921192
--assert (foo/:ref 10 * 9 "hello" 789)

src/tests/units/func-test.r3

+11-11
Original file line numberDiff line numberDiff line change
@@ -29,19 +29,19 @@ Rebol [
2929
ref1: yes --assert all [error? e: try [fce/:ref1 "a" ] e/id = 'no-arg]
3030
ref1: off --assert all [error? e: try [fce/:ref1 "a" ] e/id = 'no-arg]
3131
ref1: yes --assert all [error? e: try [fce/:ref1 "a" ""] e/id = 'expect-arg]
32-
ref1: off --assert (fce/:ref1 "a" "") == ["a" #[false] #[none] #[none] #[none] #[none]]
33-
ref1: yes --assert (fce/:ref1 "a" 1) == ["a" #[true] 1 #[none] #[none] #[none]]
34-
ref1: off --assert (fce/:ref1 "a" 1) == ["a" #[false] #[none] #[none] #[none] #[none]]
35-
ref1: yes --assert all [(fce/:ref1 "a" x: 1 + 1) == ["a" #[true] 2 #[none] #[none] #[none]] x == 2]
36-
ref1: off --assert all [(fce/:ref1 "a" x: 1 + 1) == ["a" #[false] #[none] #[none] #[none] #[none]] x == 2]
32+
ref1: off --assert (fce/:ref1 "a" "") == ["a" #[none] #[none] #[none] #[none] #[none]]
33+
ref1: yes --assert (fce/:ref1 "a" 1) == ["a" #[true] 1 #[none] #[none] #[none]]
34+
ref1: off --assert (fce/:ref1 "a" 1) == ["a" #[none] #[none] #[none] #[none] #[none]]
35+
ref1: yes --assert all [(fce/:ref1 "a" x: 1 + 1) == ["a" #[true] 2 #[none] #[none] #[none]] x == 2]
36+
ref1: off --assert all [(fce/:ref1 "a" x: 1 + 1) == ["a" #[none] #[none] #[none] #[none] #[none]] x == 2]
3737
ref1: yes ref2: yes --assert (fce/:ref1/:ref2 "a" 1 + 1 x y) == ["a" #[true] 2 #[true] x y]
3838
ref1: yes ref2: yes --assert (fce/:ref2/:ref1 "a" x y 1 + 1) == ["a" #[true] 2 #[true] x y]
39-
ref1: yes ref2: off --assert (fce/:ref1/:ref2 "a" 1 + 1 x y) == ["a" #[true] 2 #[false] #[none] #[none]]
40-
ref1: yes ref2: off --assert (fce/:ref2/:ref1 "a" x y 1 + 1) == ["a" #[true] 2 #[false] #[none] #[none]]
41-
ref1: off ref2: yes --assert (fce/:ref1/:ref2 "a" 1 + 1 x y) == ["a" #[false] #[none] #[true] x y]
42-
ref1: off ref2: yes --assert (fce/:ref2/:ref1 "a" x y 1 + 1) == ["a" #[false] #[none] #[true] x y]
43-
ref1: off ref2: off --assert (fce/:ref1/:ref2 "a" 1 + 1 x y) == ["a" #[false] #[none] #[false] #[none] #[none]]
44-
ref1: off ref2: off --assert (fce/:ref2/:ref1 "a" x y 1 + 1) == ["a" #[false] #[none] #[false] #[none] #[none]]
39+
ref1: yes ref2: off --assert (fce/:ref1/:ref2 "a" 1 + 1 x y) == ["a" #[true] 2 #[none] #[none] #[none]]
40+
ref1: yes ref2: off --assert (fce/:ref2/:ref1 "a" x y 1 + 1) == ["a" #[true] 2 #[none] #[none] #[none]]
41+
ref1: off ref2: yes --assert (fce/:ref1/:ref2 "a" 1 + 1 x y) == ["a" #[none] #[none] #[true] x y]
42+
ref1: off ref2: yes --assert (fce/:ref2/:ref1 "a" x y 1 + 1) == ["a" #[none] #[none] #[true] x y]
43+
ref1: off ref2: off --assert (fce/:ref1/:ref2 "a" 1 + 1 x y) == ["a" #[none] #[none] #[none] #[none] #[none]]
44+
ref1: off ref2: off --assert (fce/:ref2/:ref1 "a" x y 1 + 1) == ["a" #[none] #[none] #[none] #[none] #[none]]
4545

4646
===end-group===
4747

0 commit comments

Comments
 (0)