aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarshall Lochbaum <mwlochbaum@gmail.com>2021-09-28 08:12:42 -0400
committerMarshall Lochbaum <mwlochbaum@gmail.com>2021-09-28 08:12:42 -0400
commitb40a6414b3b8a145ec0ab63fc48007f23a695348 (patch)
treef50eb1ee8f9f4dce96ed7f8715b8951f708c436e
parent4cc11c4b6bda679bfd0bce86b8a075f380298896 (diff)
Make non-boolean predicate value an error
-rw-r--r--docs/bqn.js2
-rw-r--r--test/cases/header.bqn1
2 files changed, 2 insertions, 1 deletions
diff --git a/docs/bqn.js b/docs/bqn.js
index a4b9bae2..530e9142 100644
--- a/docs/bqn.js
+++ b/docs/bqn.js
@@ -100,7 +100,7 @@ let genjs = (B, p, L) => { // Bytecode -> Javascript compiler
case 22: { r+= "if(undefined==="+rV(rD-1)+")throw Error('Left argument required');"; break; }
case 32:case 34: { r+= rP("getv("+ge(num())+","+num()+")"); break; }
case 33: { r+= rP("{e:"+ge(num())+",p:"+num()+"}"); break; }
- case 42: { let p=rG(); r+="if(1!=="+p+")break;"; break; }
+ case 42: { let p=rG(); r+="if(1!=="+p+"){if(0!=="+p+")throw Error('Predicate value must be 0 or 1');break;}"; break; }
case 43: { let m=rG(); r+=rP("{match:1,v:"+m+"}"); break; }
case 47: { let i=rG(), v=rG(); r+="try{set(1,"+i+","+v+");}catch(e){break;}"; break; }
case 48: { let i=rG(), v=rG(); r+=rP("set(1,"+i+","+v +")"); break; }
diff --git a/test/cases/header.bqn b/test/cases/header.bqn
index 303ba0fe..1be7ca77 100644
--- a/test/cases/header.bqn
+++ b/test/cases/header.bqn
@@ -117,6 +117,7 @@
# Predicates
4 % {0 ? 3;4}
+! % {2 ? 3;4}
! % {a←1?5;a}
! % {5;1<2?6}
! % {x←4⋄x=x?;4}