test + fix for an ifLet regression

This commit is contained in:
2022-09-29 18:38:59 +00:00
parent 417fe965af
commit b2dde14fea
3 changed files with 25 additions and 14 deletions

View File

@@ -699,10 +699,11 @@ class Macros {
var gensym = b.symbol();
return b.let(
[gensym, firstValue],
[b.callSymbol("case", [
[b.callSymbol("if", [
gensym,
b.call(
b.callSymbol("when", [gensym, firstPattern]), [
b.callSymbol("case", [
gensym,
b.call(firstPattern, [
if (bindingList.length == 0) {
thenExp;
} else {
@@ -714,6 +715,8 @@ class Macros {
b.callSymbol("otherwise", [
elseExp
])
]),
elseExp
])]);
}
macros["ifLet"] = ifLet.bind(false);

View File

@@ -364,6 +364,9 @@ class BasicTestCase extends Test {
_testQuickFractions();
}
function testWhenLetGuards() {
_testWhenLetGuards();
}
}

View File

@@ -689,3 +689,8 @@ From:[(assert false (+ \"false \" \"should \" \"have \" \"been \" \"true\"))]" m
(function _testQuickFractions []
(Assert.equals 0.5 (fHalf 1))
(Assert.equals 0 (iHalf 1)))
(function _testWhenLetGuards []
// Guards should be allowed in whenLet patterns
(whenLet [(when true 5) 5]
(Assert.pass)))