Skip to content

Commit fcb50cd

Browse files
committed
fix lists:keyfind/3, dont assume member is a tuple
1 parent b74ca93 commit fcb50cd

File tree

2 files changed

+20
-4
lines changed

2 files changed

+20
-4
lines changed

src/javascript/lib/core/erlang_compat/lists.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,10 @@ function foldr(fun, acc0, list) {
4141
return foldl(fun, acc0, reverse(list));
4242
}
4343

44-
function keyfind(key, n, tupleList) {
45-
for (const tuple of tupleList) {
46-
if (tuple.get(n - 1) === key) {
47-
return tuple;
44+
function keyfind(key, n, list) {
45+
for (const ele of list) {
46+
if (ele instanceof ErlangTypes.Tuple && ele.get(n - 1) === key) {
47+
return ele;
4848
}
4949
}
5050

src/javascript/tests/core/erlang_compat/lists_spec.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,19 @@ test('foldl', (t) => {
2323
test('foldr', (t) => {
2424
t.deepEqual(Core.lists.foldr((v, acc) => acc + v.toString(), '', [1, 2, 3]), '321');
2525
});
26+
27+
test('member/2', (t) => {
28+
let result = Core.lists.member('abc', ['abc']);
29+
t.deepEqual(result, true);
30+
31+
result = Core.lists.member('abc', ['abcd']);
32+
t.deepEqual(result, false);
33+
});
34+
35+
test('keyfind/3', (t) => {
36+
let result = Core.lists.keyfind('abc', 1, ['abc']);
37+
t.deepEqual(result, false);
38+
39+
result = Core.lists.keyfind('abc', 1, [{'abc'}]);
40+
t.deepEqual(result, true);
41+
});

0 commit comments

Comments
 (0)