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/lib/baked/std-T.js +1 -1
- package/lib/baked/std.js +1 -1
- package/package.json +1 -1
- package/src/check.js +11 -6
- package/src/types.js +1 -0
package/package.json
CHANGED
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
|
-
|
131
|
-
|
132
|
-
|
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
|
-
|
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
|
-
|
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))]
|