Skip to content

Commit 1317e13

Browse files
committed
FIX: Path expression with path! does not work with all supported key types
fixes: Oldes/Rebol-issues#2421
1 parent 3468c72 commit 1317e13

File tree

2 files changed

+19
-11
lines changed

2 files changed

+19
-11
lines changed

src/core/t-map.c

+5-3
Original file line numberDiff line numberDiff line change
@@ -309,9 +309,11 @@
309309
if (IS_END(pvs->path+1)) val = pvs->setval;
310310
if (IS_NONE(pvs->select)) return PE_NONE;
311311

312-
if (!ANY_WORD(pvs->select) && !ANY_BINSTR(pvs->select) &&
313-
!IS_INTEGER(pvs->select) && !IS_CHAR(pvs->select))
314-
return PE_BAD_SELECT;
312+
// O: No type limit enymore!
313+
// O: https://github.com/Oldes/Rebol-issues/issues/2421
314+
//if (!ANY_WORD(pvs->select) && !ANY_BINSTR(pvs->select) &&
315+
// !IS_INTEGER(pvs->select) && !IS_CHAR(pvs->select))
316+
// return PE_BAD_SELECT;
315317

316318
n = Find_Entry(VAL_SERIES(data), pvs->select, val, FALSE);
317319

src/tests/units/map-test.r3

+14-8
Original file line numberDiff line numberDiff line change
@@ -219,19 +219,25 @@ Rebol [
219219

220220
===start-group=== "reflection"
221221
;@@ https://github.com/Oldes/Rebol-issues/issues/774
222-
m: make map! b: [a 1 b: 2 :c 3 'd 4 #e 5 /f 6 "a" 7 <b> 8 9 9 #"c" 10 a@b 11 3.14 12 1x0 13]
222+
m: make map! b: [a 1 b: 2 :c 3 'd 4 #e 5 /f 6 "a" 7 <b> 8 9 9 #"c" 10 a@b 11 3.14 12 1x0 13 $1 14]
223223
--test-- "body of map"
224-
--assert [a 1 b: 2 :c 3 'd 4 #e 5 /f 6 "a" 7 <b> 8 9 9 #"c" 10 a@b 11 3.14 12 1x0 13] = b
225-
--assert [a: 1 b: 2 c: 3 d: 4 e: 5 f: 6 "a" 7 <b> 8 9 9 #"c" 10 a@b 11 3.14 12 1x0 13] = body-of m
226-
--assert [a: 1 b: 2 c: 3 d: 4 e: 5 f: 6 "a" 7 <b> 8 9 9 #"c" 10 a@b 11 3.14 12 1x0 13] = reflect m 'body
224+
--assert [a 1 b: 2 :c 3 'd 4 #e 5 /f 6 "a" 7 <b> 8 9 9 #"c" 10 a@b 11 3.14 12 1x0 13 $1 14] = b
225+
--assert [a: 1 b: 2 c: 3 d: 4 e: 5 f: 6 "a" 7 <b> 8 9 9 #"c" 10 a@b 11 3.14 12 1x0 13 $1 14] = body-of m
226+
--assert [a: 1 b: 2 c: 3 d: 4 e: 5 f: 6 "a" 7 <b> 8 9 9 #"c" 10 a@b 11 3.14 12 1x0 13 $1 14] = reflect m 'body
227227

228228
--test-- "values of map"
229-
--assert [1 2 3 4 5 6 7 8 9 10 11 12 13] = values-of m
230-
--assert [1 2 3 4 5 6 7 8 9 10 11 12 13] = reflect m 'values
229+
--assert [1 2 3 4 5 6 7 8 9 10 11 12 13 14] = values-of m
230+
--assert [1 2 3 4 5 6 7 8 9 10 11 12 13 14] = reflect m 'values
231231

232232
--test-- "keys of map"
233-
--assert [a b c d e f "a" <b> 9 #"c" a@b 3.14 1x0] = keys-of m
234-
--assert [a b c d e f "a" <b> 9 #"c" a@b 3.14 1x0] = reflect m 'words
233+
--assert [a b c d e f "a" <b> 9 #"c" a@b 3.14 1x0 $1] = keys-of m
234+
--assert [a b c d e f "a" <b> 9 #"c" a@b 3.14 1x0 $1] = reflect m 'words
235+
236+
--test-- "path expression on map!"
237+
;@@ https://github.com/Oldes/Rebol-issues/issues/2421
238+
foreach k keys-of m [
239+
--assert not error? try [m/:k]
240+
]
235241

236242
===end-group===
237243

0 commit comments

Comments
 (0)