Skip to content

Commit de8bebb

Browse files
author
Ramanpreet Nara
committed
fix(destructure): Destructuring doesn't default falsey values to undefined
1 parent 6d2d744 commit de8bebb

3 files changed

Lines changed: 10 additions & 2 deletions

File tree

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "glisp",
3-
"version": "0.2.1",
3+
"version": "0.2.2",
44
"description": "A simple lisp interpreter in JS.",
55
"main": "lib/index.js",
66
"author": "Ramanpreet Nara",

src/evaluate/special-forms/fn.test.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,14 @@ test('should default elements to undefined if they cannot be destructured', (ass
159159
assert.truthy(I.is(result, expected));
160160
});
161161

162+
test('should accept falsey arguments', (assert) => {
163+
const result = run({}, `
164+
((fn [x] x) false)
165+
`);
166+
167+
assert.is(result, false);
168+
});
169+
162170
function run(env, code) {
163171
return evaluate(env, parse(code));
164172
}

src/util/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ export function executableForm(name, ...body) {
130130
}
131131

132132
export function zip(keys, values, factory) {
133-
return keys.map((key, i) => [ key, values[i] || factory() ]);
133+
return keys.map((key, i) => [ key, i >= values.length ? factory() : values[i] ]);
134134
}
135135

136136
export function isGlobalRef(symbol) {

0 commit comments

Comments
 (0)