fez-lisp 1.6.66 → 1.6.67

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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/src/check.js +15 -2
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.66",
5
+ "version": "1.6.67",
6
6
  "type": "module",
7
7
  "main": "index.js",
8
8
  "keywords": [
package/src/check.js CHANGED
@@ -828,6 +828,7 @@ const initArrayTypeRec = ({ rem, env }) => {
828
828
  const initArrayType = ({ rem, env }) => {
829
829
  const ret = initArrayTypeRec({ rem, env })
830
830
  const known = ret.find((x) => x[0] !== ANY && x[0] !== UNKNOWN)
831
+ const isCollection = ret.length && ret[0] && ret[0][0] === COLLECTION
831
832
  if (known && ret.length) {
832
833
  if (Array.isArray(ret[0][0])) {
833
834
  let head = ret[0][0]
@@ -844,12 +845,24 @@ const initArrayType = ({ rem, env }) => {
844
845
  if (isSubType(sub) && sub.types.at(-1) === COLLECTION) sub.types.pop()
845
846
  return {
846
847
  [TYPE_PROP]: [APPLY],
847
- [RETURNS]: [COLLECTION, new SubType(isSubType(sub) ? [...sub] : [main])]
848
+ [RETURNS]: [
849
+ COLLECTION,
850
+ isCollection
851
+ ? new SubType(
852
+ isSubType(sub) ? [COLLECTION, ...sub] : [COLLECTION, main]
853
+ )
854
+ : new SubType(isSubType(sub) ? [...sub] : [main])
855
+ ]
848
856
  }
849
857
  } else
850
858
  return {
851
859
  [TYPE_PROP]: [APPLY],
852
- [RETURNS]: [COLLECTION, new SubType([UNKNOWN])]
860
+ [RETURNS]: [
861
+ COLLECTION,
862
+ isCollection
863
+ ? new SubType([COLLECTION, UNKNOWN])
864
+ : new SubType([UNKNOWN])
865
+ ]
853
866
  }
854
867
  }
855
868
  const resolveReturnType = ({