fez-lisp 1.6.71 → 1.6.73

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "fez-lisp",
3
3
  "description": "Lisp interpreted & compiled to JavaScript",
4
4
  "author": "AT290690",
5
- "version": "1.6.71",
5
+ "version": "1.6.73",
6
6
  "type": "module",
7
7
  "main": "index.js",
8
8
  "keywords": [
package/src/check.js CHANGED
@@ -127,10 +127,12 @@ export const setTypeToPredicate = (stats) => {
127
127
  return (stats[RETURNS][1] = BOOLEAN_SUBTYPE())
128
128
  }
129
129
  export const setPropToAbstraction = (stats, prop) => {
130
- return (
131
- (stats[prop][0] === UNKNOWN || stats[prop][0] === ANY) &&
132
- (stats[prop][0] = APPLY)
133
- )
130
+ if (stats[prop][0] === UNKNOWN || stats[prop][0] === ANY) {
131
+ stats[prop][0] = APPLY
132
+ // since we don't know how many they are we just set the args to variadic
133
+ if (!stats[ARG_COUNT]) stats[ARG_COUNT] = VARIADIC
134
+ }
135
+ return APPLY
134
136
  }
135
137
  export const setPropToCollection = (stats, prop) => {
136
138
  return (
@@ -645,7 +647,8 @@ const resolveGetter = ({ rem, prop, name, env, caller, exp }) => {
645
647
  const rec = resolveGetterRec(rem, env)
646
648
  if (!rec) return true
647
649
  const [times, level, type, types] = resolveGetterRec(rem, env)
648
- if (times >= level)
650
+ const isUnknown = types.at(-1) === UNKNOWN
651
+ if (!isUnknown && times >= level)
649
652
  throw new RangeError(
650
653
  `(${caller}) is trying to access nested structure at level (${level}) which is deeper than it's (${
651
654
  times - 1
@@ -889,7 +892,9 @@ const initArrayType = ({ rem, env }) => {
889
892
  if (
890
893
  known &&
891
894
  ret.length &&
892
- !ret.some((x) => known[0][0] !== x[0][0] || known[0].length !== x[0].length)
895
+ (Array.isArray(known[0])
896
+ ? !ret.some((x) => known[0][0] !== x[0][0])
897
+ : !ret.some((x) => known[0] !== x[0]))
893
898
  ) {
894
899
  if (Array.isArray(ret[0][0])) {
895
900
  let head = ret[0][0]
package/src/types.js CHANGED
@@ -119,6 +119,7 @@ export const toTypeCodes = (type) => {
119
119
  const [t, n] = extractArrayType(type)
120
120
  switch (t) {
121
121
  case 'Abstraction':
122
+ if (n) return [COLLECTION, new SubType(fillArrayType(n).concat(APPLY))]
122
123
  return [APPLY]
123
124
  case 'Boolean':
124
125
  if (n) return [COLLECTION, new SubType(fillArrayType(n).concat(BOOLEAN))]