@magnusopera/fscript 0.79.0 → 0.80.1
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/dist/FScript.Language/Ast.js +2 -2
- package/dist/FScript.Language/BuiltinFunctions.js +91 -66
- package/dist/FScript.Language/BuiltinSignatures.js +1 -1
- package/dist/FScript.Language/Eval.js +261 -174
- package/dist/FScript.Language/IncludeResolver.js +4 -2
- package/dist/FScript.Language/Parser.js +34 -27
- package/dist/FScript.Language/Pretty.js +1 -1
- package/dist/FScript.Language/TypeInfer.js +188 -61
- package/dist/FScript.Language/Types.js +3 -3
- package/dist/FScript.Language/Value.js +3 -3
- package/dist/Library.js +28 -14
- package/dist/fable_modules/project_cracked.json +1 -1
- package/package.json +1 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
|
|
2
2
|
import { Span_$reflection, Span, Position } from "./Span.js";
|
|
3
|
-
import { iterate as iterate_2, FSharpMap__Add, values, FSharpMap__get_Keys, keys, FSharpMap__TryFind, ofList, toList, FSharpMap__get_Item, FSharpMap__ContainsKey, FSharpMap__get_Count, exists as exists_1, add, fold as fold_1, remove, map as map_1, tryFind, isEmpty, empty } from "../fable_modules/fable-library-js.5.13.0/Map.js";
|
|
3
|
+
import { iterate as iterate_2, FSharpMap__Add, values, forAll, FSharpMap__get_Keys, keys, FSharpMap__TryFind, ofList, toList, FSharpMap__get_Item, FSharpMap__ContainsKey, FSharpMap__get_Count, exists as exists_1, add, fold as fold_1, remove, map as map_1, tryFind, isEmpty, empty } from "../fable_modules/fable-library-js.5.13.0/Map.js";
|
|
4
4
|
import { disposeSafe, getEnumerator, stringHash, compareArrays, equals, comparePrimitives } from "../fable_modules/fable-library-js.5.13.0/Util.js";
|
|
5
5
|
import { Types_generalize, Types_freshNumeric, Type_$reflection, Types_freshVar, Types_typeToString, Scheme, Type } from "./Types.js";
|
|
6
|
-
import { tryFind as tryFind_1, indexed, ofArray, collect, append,
|
|
6
|
+
import { tryFind as tryFind_1, indexed, ofArray, collect, append, reverse, iterate, tryFindIndex, choose, tail as tail_2, cons, head as head_1, isEmpty as isEmpty_1, empty as empty_2, singleton, zip, length, exists, fold, map } from "../fable_modules/fable-library-js.5.13.0/List.js";
|
|
7
7
|
import { toList as toList_2, ofSeq, contains, add as add_1, empty as empty_1, FSharpSet__Add, FSharpSet__Contains } from "../fable_modules/fable-library-js.5.13.0/Set.js";
|
|
8
8
|
import { TypeException, TypeError$ } from "./Error.js";
|
|
9
9
|
import { endsWith, split, join, concat, isNullOrWhiteSpace, printf, toText } from "../fable_modules/fable-library-js.5.13.0/String.js";
|
|
@@ -1283,11 +1283,15 @@ function annotationTypeFromRef(typeDefs, span, tref) {
|
|
|
1283
1283
|
default:
|
|
1284
1284
|
throw new TypeException(new TypeError$(concat("Unknown type suffix \'", tref.fields[1], "\'"), span));
|
|
1285
1285
|
}
|
|
1286
|
-
case 4:
|
|
1286
|
+
case 4: {
|
|
1287
|
+
const key = annotationTypeFromRef(typeDefs, span, tref.fields[0]);
|
|
1288
|
+
return new Type(/* TMap */ 9, [(key.tag === 16) ? Type.TInt : key, annotationTypeFromRef(typeDefs, span, tref.fields[1])]);
|
|
1289
|
+
}
|
|
1290
|
+
case 5:
|
|
1287
1291
|
return resolveNamedRecordByShape(typeDefs, ofList(map((tupledArg) => [tupledArg[0], annotationTypeFromRef(typeDefs, span, tupledArg[1])], tref.fields[0]), {
|
|
1288
1292
|
Compare: (x, y) => (comparePrimitives(x, y) | 0),
|
|
1289
1293
|
}), span);
|
|
1290
|
-
case
|
|
1294
|
+
case 6:
|
|
1291
1295
|
return new Type(/* TRecord */ 8, [ofList(map((tupledArg_1) => [tupledArg_1[0], annotationTypeFromRef(typeDefs, span, tupledArg_1[1])], tref.fields[0]), {
|
|
1292
1296
|
Compare: (x_1, y_1) => (comparePrimitives(x_1, y_1) | 0),
|
|
1293
1297
|
})]);
|
|
@@ -1348,11 +1352,15 @@ function typeFromRef(decls, stack, tref) {
|
|
|
1348
1352
|
throw new TypeException(new TypeError$(concat("Unknown type suffix \'", suffix, "\'"), unknownSpan));
|
|
1349
1353
|
}
|
|
1350
1354
|
}
|
|
1351
|
-
case 4:
|
|
1355
|
+
case 4: {
|
|
1356
|
+
const key = typeFromRef(decls, stack, tref.fields[0]);
|
|
1357
|
+
return new Type(/* TMap */ 9, [(key.tag === 16) ? Type.TInt : key, typeFromRef(decls, stack, tref.fields[1])]);
|
|
1358
|
+
}
|
|
1359
|
+
case 5:
|
|
1352
1360
|
return new Type(/* TRecord */ 8, [ofList(map((tupledArg_1) => [tupledArg_1[0], typeFromRef(decls, stack, tupledArg_1[1])], tref.fields[0]), {
|
|
1353
1361
|
Compare: (x_1, y_2) => (comparePrimitives(x_1, y_2) | 0),
|
|
1354
1362
|
})]);
|
|
1355
|
-
case
|
|
1363
|
+
case 6:
|
|
1356
1364
|
return new Type(/* TRecord */ 8, [ofList(map((tupledArg_2) => [tupledArg_2[0], typeFromRef(decls, stack, tupledArg_2[1])], tref.fields[0]), {
|
|
1357
1365
|
Compare: (x_2, y_3) => (comparePrimitives(x_2, y_3) | 0),
|
|
1358
1366
|
})]);
|
|
@@ -1398,6 +1406,137 @@ function typeFromRef(decls, stack, tref) {
|
|
|
1398
1406
|
}
|
|
1399
1407
|
}
|
|
1400
1408
|
|
|
1409
|
+
function ensureSupportedMapKeyType(typeDefs, span, t) {
|
|
1410
|
+
switch (t.tag) {
|
|
1411
|
+
case 4:
|
|
1412
|
+
case 1:
|
|
1413
|
+
case 3:
|
|
1414
|
+
case 15:
|
|
1415
|
+
case 16: {
|
|
1416
|
+
break;
|
|
1417
|
+
}
|
|
1418
|
+
case 12: {
|
|
1419
|
+
const matchValue = FSharpMap__TryFind(typeDefs, t.fields[0]);
|
|
1420
|
+
let matchResult, cases_1;
|
|
1421
|
+
if (matchValue != null) {
|
|
1422
|
+
if (matchValue.tag === 13) {
|
|
1423
|
+
if (forAll((_arg, payload) => (payload == null), matchValue.fields[1])) {
|
|
1424
|
+
matchResult = 0;
|
|
1425
|
+
cases_1 = matchValue.fields[1];
|
|
1426
|
+
}
|
|
1427
|
+
else {
|
|
1428
|
+
matchResult = 1;
|
|
1429
|
+
}
|
|
1430
|
+
}
|
|
1431
|
+
else {
|
|
1432
|
+
matchResult = 1;
|
|
1433
|
+
}
|
|
1434
|
+
}
|
|
1435
|
+
else {
|
|
1436
|
+
matchResult = 1;
|
|
1437
|
+
}
|
|
1438
|
+
switch (matchResult) {
|
|
1439
|
+
case 0: {
|
|
1440
|
+
break;
|
|
1441
|
+
}
|
|
1442
|
+
case 1: {
|
|
1443
|
+
throw new TypeException(new TypeError$(concat("Map key type must be string, int, bool, or a payload-free union, got ", Types_typeToString(t)), span));
|
|
1444
|
+
break;
|
|
1445
|
+
}
|
|
1446
|
+
}
|
|
1447
|
+
break;
|
|
1448
|
+
}
|
|
1449
|
+
default:
|
|
1450
|
+
throw new TypeException(new TypeError$(concat("Map key type must be string, int, bool, or a payload-free union, got ", Types_typeToString(t)), span));
|
|
1451
|
+
}
|
|
1452
|
+
}
|
|
1453
|
+
|
|
1454
|
+
function constrainMapKeyTypes(typeDefs, span, t) {
|
|
1455
|
+
let subst = emptySubst;
|
|
1456
|
+
const loop = (current_mut) => {
|
|
1457
|
+
loop:
|
|
1458
|
+
while (true) {
|
|
1459
|
+
const current = current_mut;
|
|
1460
|
+
const matchValue = applyType(subst, current);
|
|
1461
|
+
let matchResult, inner;
|
|
1462
|
+
switch (matchValue.tag) {
|
|
1463
|
+
case 9: {
|
|
1464
|
+
matchResult = 0;
|
|
1465
|
+
break;
|
|
1466
|
+
}
|
|
1467
|
+
case 5: {
|
|
1468
|
+
matchResult = 1;
|
|
1469
|
+
inner = matchValue.fields[0];
|
|
1470
|
+
break;
|
|
1471
|
+
}
|
|
1472
|
+
case 6: {
|
|
1473
|
+
matchResult = 1;
|
|
1474
|
+
inner = matchValue.fields[0];
|
|
1475
|
+
break;
|
|
1476
|
+
}
|
|
1477
|
+
case 10: {
|
|
1478
|
+
matchResult = 1;
|
|
1479
|
+
inner = matchValue.fields[0];
|
|
1480
|
+
break;
|
|
1481
|
+
}
|
|
1482
|
+
case 7: {
|
|
1483
|
+
matchResult = 2;
|
|
1484
|
+
break;
|
|
1485
|
+
}
|
|
1486
|
+
case 8: {
|
|
1487
|
+
matchResult = 3;
|
|
1488
|
+
break;
|
|
1489
|
+
}
|
|
1490
|
+
case 11: {
|
|
1491
|
+
matchResult = 4;
|
|
1492
|
+
break;
|
|
1493
|
+
}
|
|
1494
|
+
default:
|
|
1495
|
+
matchResult = 5;
|
|
1496
|
+
}
|
|
1497
|
+
switch (matchResult) {
|
|
1498
|
+
case 0: {
|
|
1499
|
+
const keyType = matchValue.fields[0];
|
|
1500
|
+
if (keyType.tag === 16) {
|
|
1501
|
+
subst = compose(unify(typeDefs, keyType, Type.TInt, span), subst);
|
|
1502
|
+
}
|
|
1503
|
+
else {
|
|
1504
|
+
ensureSupportedMapKeyType(typeDefs, span, keyType);
|
|
1505
|
+
}
|
|
1506
|
+
current_mut = matchValue.fields[1];
|
|
1507
|
+
continue loop;
|
|
1508
|
+
break;
|
|
1509
|
+
}
|
|
1510
|
+
case 1: {
|
|
1511
|
+
current_mut = inner;
|
|
1512
|
+
continue loop;
|
|
1513
|
+
break;
|
|
1514
|
+
}
|
|
1515
|
+
case 2: {
|
|
1516
|
+
iterate(loop, matchValue.fields[0]);
|
|
1517
|
+
break;
|
|
1518
|
+
}
|
|
1519
|
+
case 3: {
|
|
1520
|
+
iterate_1(loop, values(matchValue.fields[0]));
|
|
1521
|
+
break;
|
|
1522
|
+
}
|
|
1523
|
+
case 4: {
|
|
1524
|
+
loop(matchValue.fields[0]);
|
|
1525
|
+
current_mut = matchValue.fields[1];
|
|
1526
|
+
continue loop;
|
|
1527
|
+
break;
|
|
1528
|
+
}
|
|
1529
|
+
case 5: {
|
|
1530
|
+
break;
|
|
1531
|
+
}
|
|
1532
|
+
}
|
|
1533
|
+
break;
|
|
1534
|
+
}
|
|
1535
|
+
};
|
|
1536
|
+
loop(t);
|
|
1537
|
+
return subst;
|
|
1538
|
+
}
|
|
1539
|
+
|
|
1401
1540
|
function inferPattern(telemetry, typeDefs, constructors, pat) {
|
|
1402
1541
|
let table_5;
|
|
1403
1542
|
switch (pat.tag) {
|
|
@@ -1457,15 +1596,8 @@ function inferPattern(telemetry, typeDefs, constructors, pat) {
|
|
|
1457
1596
|
const tailPattern = pat.fields[1];
|
|
1458
1597
|
const span_1 = pat.fields[2];
|
|
1459
1598
|
const startIndex_1 = currentTelemetryCaptureCount(telemetry) | 0;
|
|
1460
|
-
const
|
|
1461
|
-
|
|
1462
|
-
case 4:
|
|
1463
|
-
case 15: {
|
|
1464
|
-
break;
|
|
1465
|
-
}
|
|
1466
|
-
default:
|
|
1467
|
-
throw new TypeException(new TypeError$(concat("Map key type must be string, got ", Types_typeToString(t_1)), span_1));
|
|
1468
|
-
}
|
|
1599
|
+
const ensureSupportedMapKeyType_1 = (t_1) => {
|
|
1600
|
+
ensureSupportedMapKeyType(typeDefs, span_1, t_1);
|
|
1469
1601
|
};
|
|
1470
1602
|
const mapKeyType = Types_freshVar();
|
|
1471
1603
|
const valueType = Types_freshVar();
|
|
@@ -1481,7 +1613,7 @@ function inferPattern(telemetry, typeDefs, constructors, pat) {
|
|
|
1481
1613
|
const patternInput_7 = inferPattern(telemetry, typeDefs, constructors, forLoopVar[1]);
|
|
1482
1614
|
const sKey = unify(typeDefs, applyType(sAcc, patternInput_6[1]), applyType(sAcc, mapKeyType), span_1);
|
|
1483
1615
|
sAcc = compose(sKey, sAcc);
|
|
1484
|
-
|
|
1616
|
+
ensureSupportedMapKeyType_1(applyType(sAcc, mapKeyType));
|
|
1485
1617
|
const sValue = unify(typeDefs, applyType(sAcc, patternInput_7[1]), applyType(sAcc, valueType), span_1);
|
|
1486
1618
|
sAcc = compose(sValue, sAcc);
|
|
1487
1619
|
const mergedClauseEnv = map_1((_arg_1, t_2) => applyType(sAcc, t_2), fold_1((acc_3, k_3, v_3) => add(k_3, v_3, acc_3), patternInput_7[0], patternInput_6[0]));
|
|
@@ -1500,7 +1632,7 @@ function inferPattern(telemetry, typeDefs, constructors, pat) {
|
|
|
1500
1632
|
sAcc = compose(sTail, sAcc);
|
|
1501
1633
|
envAcc_2 = ((table_5 = map_1((_arg_2, t_3) => applyType(sAcc, t_3), patternInput_8[0]), fold_1((acc_5, k_5, v_5) => add(k_5, v_5, acc_5), envAcc_2, table_5)));
|
|
1502
1634
|
}
|
|
1503
|
-
|
|
1635
|
+
ensureSupportedMapKeyType_1(applyType(sAcc, mapKeyType));
|
|
1504
1636
|
applySubstToCapturedLocals(telemetry, startIndex_1, sAcc);
|
|
1505
1637
|
return [map_1((_arg_3, t_4) => applyType(sAcc, t_4), envAcc_2), new Type(/* TMap */ 9, [applyType(sAcc, mapKeyType), applyType(sAcc, valueType)])];
|
|
1506
1638
|
}
|
|
@@ -1577,7 +1709,7 @@ function constrainNumeric(typeDefs, t, span) {
|
|
|
1577
1709
|
}
|
|
1578
1710
|
}
|
|
1579
1711
|
|
|
1580
|
-
function validateMapKeyTypes(span, t) {
|
|
1712
|
+
function validateMapKeyTypes(typeDefs, span, t) {
|
|
1581
1713
|
const loop = (t_1_mut) => {
|
|
1582
1714
|
loop:
|
|
1583
1715
|
while (true) {
|
|
@@ -1587,14 +1719,7 @@ function validateMapKeyTypes(span, t) {
|
|
|
1587
1719
|
const keyType = t_1.fields[0];
|
|
1588
1720
|
loop(keyType);
|
|
1589
1721
|
loop(t_1.fields[1]);
|
|
1590
|
-
|
|
1591
|
-
case 4:
|
|
1592
|
-
case 15: {
|
|
1593
|
-
break;
|
|
1594
|
-
}
|
|
1595
|
-
default:
|
|
1596
|
-
throw new TypeException(new TypeError$(concat("Map key type must be string, got ", Types_typeToString(keyType)), span));
|
|
1597
|
-
}
|
|
1722
|
+
ensureSupportedMapKeyType(typeDefs, span, keyType);
|
|
1598
1723
|
break;
|
|
1599
1724
|
}
|
|
1600
1725
|
case 5: {
|
|
@@ -1636,6 +1761,15 @@ function validateMapKeyTypes(span, t) {
|
|
|
1636
1761
|
}
|
|
1637
1762
|
|
|
1638
1763
|
function inferExpr(telemetry, typeDefs, constructors, env, expr) {
|
|
1764
|
+
const patternInput = inferExprRaw(telemetry, typeDefs, constructors, env, expr);
|
|
1765
|
+
const subst = patternInput[0];
|
|
1766
|
+
const inferred = patternInput[1];
|
|
1767
|
+
const combined = compose(constrainMapKeyTypes(typeDefs, Ast_spanOfExpr(expr), applyType(subst, inferred)), subst);
|
|
1768
|
+
const resolved = applyType(combined, inferred);
|
|
1769
|
+
return [combined, resolved, asTyped(expr, resolved)];
|
|
1770
|
+
}
|
|
1771
|
+
|
|
1772
|
+
function inferExprRaw(telemetry, typeDefs, constructors, env, expr) {
|
|
1639
1773
|
let expectedReturn, expectedReturn_1;
|
|
1640
1774
|
switch (expr.tag) {
|
|
1641
1775
|
case 1: {
|
|
@@ -1709,12 +1843,15 @@ function inferExpr(telemetry, typeDefs, constructors, env, expr) {
|
|
|
1709
1843
|
return [s1_1, tFun, asTyped(expr, tFun)];
|
|
1710
1844
|
}
|
|
1711
1845
|
case 5: {
|
|
1846
|
+
const span_4 = expr.fields[2];
|
|
1712
1847
|
const patternInput_3 = inferExpr(telemetry, typeDefs, constructors, env, expr.fields[0]);
|
|
1713
1848
|
const s1_2 = patternInput_3[0];
|
|
1714
1849
|
const patternInput_4 = inferExpr(telemetry, typeDefs, constructors, applyEnv(s1_2, env), expr.fields[1]);
|
|
1850
|
+
const t2 = patternInput_4[1];
|
|
1715
1851
|
const s2 = patternInput_4[0];
|
|
1716
1852
|
const tv_1 = Types_freshVar();
|
|
1717
|
-
const
|
|
1853
|
+
const combined = compose(unify(typeDefs, applyType(s2, patternInput_3[1]), new Type(/* TFun */ 11, [t2, tv_1]), span_4), compose(s2, s1_2));
|
|
1854
|
+
const s_1 = compose(constrainMapKeyTypes(typeDefs, span_4, applyType(combined, new Type(/* TFun */ 11, [t2, tv_1]))), combined);
|
|
1718
1855
|
const tRes = applyType(s_1, tv_1);
|
|
1719
1856
|
return [s_1, tRes, asTyped(expr, tRes)];
|
|
1720
1857
|
}
|
|
@@ -2078,15 +2215,8 @@ function inferExpr(telemetry, typeDefs, constructors, env, expr) {
|
|
|
2078
2215
|
return [sAcc_5, tRes_8, asTyped(expr, tRes_8)];
|
|
2079
2216
|
}
|
|
2080
2217
|
case 18: {
|
|
2081
|
-
const
|
|
2082
|
-
|
|
2083
|
-
case 4:
|
|
2084
|
-
case 15: {
|
|
2085
|
-
break;
|
|
2086
|
-
}
|
|
2087
|
-
default:
|
|
2088
|
-
throw new TypeException(new TypeError$(concat("Map key type must be string, got ", Types_typeToString(t_3)), expr.fields[1]));
|
|
2089
|
-
}
|
|
2218
|
+
const ensureSupportedMapKeyType_1 = (t_3) => {
|
|
2219
|
+
ensureSupportedMapKeyType(typeDefs, expr.fields[1], t_3);
|
|
2090
2220
|
};
|
|
2091
2221
|
const keyType = Types_freshVar();
|
|
2092
2222
|
const valueType = Types_freshVar();
|
|
@@ -2109,7 +2239,7 @@ function inferExpr(telemetry, typeDefs, constructors, env, expr) {
|
|
|
2109
2239
|
const patternInput_30 = inferExpr(telemetry, typeDefs, constructors, applyEnv(sAcc_6, env), keyExpr);
|
|
2110
2240
|
const sKey = patternInput_30[0];
|
|
2111
2241
|
const sAfterKey = compose(unify(typeDefs, applyType(sKey, patternInput_30[1]), applyType(sKey, applyType(sAcc_6, keyType)), Ast_spanOfExpr(keyExpr)), compose(sKey, sAcc_6));
|
|
2112
|
-
|
|
2242
|
+
ensureSupportedMapKeyType_1(applyType(sAfterKey, keyType));
|
|
2113
2243
|
const patternInput_31 = inferExpr(telemetry, typeDefs, constructors, applyEnv(sAfterKey, env), valueExpr_3);
|
|
2114
2244
|
const sValue_3 = patternInput_31[0];
|
|
2115
2245
|
const sValueType = unify(typeDefs, applyType(sValue_3, applyType(sAfterKey, valueType)), patternInput_31[1], Ast_spanOfExpr(valueExpr_3));
|
|
@@ -2120,7 +2250,7 @@ function inferExpr(telemetry, typeDefs, constructors, env, expr) {
|
|
|
2120
2250
|
finally {
|
|
2121
2251
|
disposeSafe(enumerator_8);
|
|
2122
2252
|
}
|
|
2123
|
-
|
|
2253
|
+
ensureSupportedMapKeyType_1(applyType(sAcc_6, keyType));
|
|
2124
2254
|
const tRes_9 = new Type(/* TMap */ 9, [applyType(sAcc_6, keyType), applyType(sAcc_6, valueType)]);
|
|
2125
2255
|
return [sAcc_6, tRes_9, asTyped(expr, tRes_9)];
|
|
2126
2256
|
}
|
|
@@ -2369,7 +2499,9 @@ function inferExpr(telemetry, typeDefs, constructors, env, expr) {
|
|
|
2369
2499
|
matchResult_6 = 2;
|
|
2370
2500
|
break;
|
|
2371
2501
|
}
|
|
2372
|
-
case 4:
|
|
2502
|
+
case 4:
|
|
2503
|
+
case 3:
|
|
2504
|
+
case 12: {
|
|
2373
2505
|
matchResult_6 = 3;
|
|
2374
2506
|
break;
|
|
2375
2507
|
}
|
|
@@ -2393,15 +2525,7 @@ function inferExpr(telemetry, typeDefs, constructors, env, expr) {
|
|
|
2393
2525
|
}
|
|
2394
2526
|
case 1: {
|
|
2395
2527
|
const s_13 = compose(unify(typeDefs, keyType_1, mapKeyType, span_19), compose(s2_10, s1_19));
|
|
2396
|
-
|
|
2397
|
-
switch (matchValue_19.tag) {
|
|
2398
|
-
case 4:
|
|
2399
|
-
case 15: {
|
|
2400
|
-
break;
|
|
2401
|
-
}
|
|
2402
|
-
default:
|
|
2403
|
-
throw new TypeException(new TypeError$(concat("Map key type must be string, got ", Types_typeToString(matchValue_19)), span_19));
|
|
2404
|
-
}
|
|
2528
|
+
ensureSupportedMapKeyType(typeDefs, span_19, applyType(s_13, mapKeyType));
|
|
2405
2529
|
const tRes_13 = new Type(/* TOption */ 10, [applyType(s_13, valueType_1)]);
|
|
2406
2530
|
return [s_13, tRes_13, asTyped(expr, tRes_13)];
|
|
2407
2531
|
}
|
|
@@ -2413,12 +2537,13 @@ function inferExpr(telemetry, typeDefs, constructors, env, expr) {
|
|
|
2413
2537
|
}
|
|
2414
2538
|
case 3: {
|
|
2415
2539
|
const valueType_2 = Types_freshVar();
|
|
2416
|
-
|
|
2540
|
+
ensureSupportedMapKeyType(typeDefs, span_19, keyType_1);
|
|
2541
|
+
const s_15 = compose(unify(typeDefs, targetType, new Type(/* TMap */ 9, [keyType_1, valueType_2]), span_19), compose(s2_10, s1_19));
|
|
2417
2542
|
const tRes_15 = new Type(/* TOption */ 10, [applyType(s_15, valueType_2)]);
|
|
2418
2543
|
return [s_15, tRes_15, asTyped(expr, tRes_15)];
|
|
2419
2544
|
}
|
|
2420
2545
|
case 4:
|
|
2421
|
-
throw new TypeException(new TypeError$("Ambiguous index access:
|
|
2546
|
+
throw new TypeException(new TypeError$("Ambiguous index access: annotate the list or map target", span_19));
|
|
2422
2547
|
default:
|
|
2423
2548
|
throw new TypeException(new TypeError$(concat("Index access requires a ", (keyType_1.tag === 1) ? "list" : ((keyType_1.tag === 4) ? "map" : "list or map"), " target with a compatible index type"), span_19));
|
|
2424
2549
|
}
|
|
@@ -2431,11 +2556,13 @@ function inferExpr(telemetry, typeDefs, constructors, env, expr) {
|
|
|
2431
2556
|
switch (op) {
|
|
2432
2557
|
case "|>": {
|
|
2433
2558
|
const patternInput_43 = inferExpr(telemetry, typeDefs, constructors, env, a);
|
|
2559
|
+
const tLeft = patternInput_43[1];
|
|
2434
2560
|
const s1_20 = patternInput_43[0];
|
|
2435
2561
|
const patternInput_44 = inferExpr(telemetry, typeDefs, constructors, applyEnv(s1_20, env), b);
|
|
2436
2562
|
const s2_11 = patternInput_44[0];
|
|
2437
2563
|
const tv_7 = Types_freshVar();
|
|
2438
|
-
const
|
|
2564
|
+
const combined_1 = compose(unify(typeDefs, applyType(s2_11, patternInput_44[1]), new Type(/* TFun */ 11, [applyType(s2_11, tLeft), tv_7]), span_20), compose(s2_11, s1_20));
|
|
2565
|
+
const s_16 = compose(constrainMapKeyTypes(typeDefs, span_20, applyType(combined_1, new Type(/* TFun */ 11, [tLeft, tv_7]))), combined_1);
|
|
2439
2566
|
const tRes_16 = applyType(s_16, tv_7);
|
|
2440
2567
|
return [s_16, tRes_16, asTyped(expr, tRes_16)];
|
|
2441
2568
|
}
|
|
@@ -2467,18 +2594,18 @@ function inferExpr(telemetry, typeDefs, constructors, env, expr) {
|
|
|
2467
2594
|
const t2_3 = patternInput_50[1];
|
|
2468
2595
|
const s2_14 = patternInput_50[0];
|
|
2469
2596
|
const s3_11 = unify(typeDefs, applyType(s2_14, patternInput_49[1]), t2_3, span_20);
|
|
2470
|
-
const
|
|
2597
|
+
const t_8 = applyType(s3_11, t2_3);
|
|
2471
2598
|
let patternInput_52;
|
|
2472
2599
|
switch (op) {
|
|
2473
2600
|
case "+":
|
|
2474
2601
|
case "-":
|
|
2475
2602
|
case "*":
|
|
2476
2603
|
case "/": {
|
|
2477
|
-
patternInput_52 = constrainNumeric(typeDefs,
|
|
2604
|
+
patternInput_52 = constrainNumeric(typeDefs, t_8, span_20);
|
|
2478
2605
|
break;
|
|
2479
2606
|
}
|
|
2480
2607
|
case "%": {
|
|
2481
|
-
patternInput_52 = [unify(typeDefs,
|
|
2608
|
+
patternInput_52 = [unify(typeDefs, t_8, Type.TInt, span_20), Type.TInt];
|
|
2482
2609
|
break;
|
|
2483
2610
|
}
|
|
2484
2611
|
case "=": {
|
|
@@ -2489,12 +2616,12 @@ function inferExpr(telemetry, typeDefs, constructors, env, expr) {
|
|
|
2489
2616
|
case ">":
|
|
2490
2617
|
case "<=":
|
|
2491
2618
|
case ">=": {
|
|
2492
|
-
patternInput_52 = [constrainNumeric(typeDefs,
|
|
2619
|
+
patternInput_52 = [constrainNumeric(typeDefs, t_8, span_20)[0], Type.TBool];
|
|
2493
2620
|
break;
|
|
2494
2621
|
}
|
|
2495
2622
|
case "&&":
|
|
2496
2623
|
case "||": {
|
|
2497
|
-
patternInput_52 = [unify(typeDefs,
|
|
2624
|
+
patternInput_52 = [unify(typeDefs, t_8, Type.TBool, span_20), Type.TBool];
|
|
2498
2625
|
break;
|
|
2499
2626
|
}
|
|
2500
2627
|
default:
|
|
@@ -2697,7 +2824,7 @@ function inferProgramWithExternsRawAndLocals(captureLocalVariables, externs, pro
|
|
|
2697
2824
|
applySubstToCapturedLocals(telemetry, startIndex, s);
|
|
2698
2825
|
const env$0027 = applyEnv(s, env);
|
|
2699
2826
|
const inferred = applyType(s, t1);
|
|
2700
|
-
validateMapKeyTypes(span_1, inferred);
|
|
2827
|
+
validateMapKeyTypes(typeDefs, span_1, inferred);
|
|
2701
2828
|
const scheme_1 = Types_generalize(env$0027, inferred);
|
|
2702
2829
|
env = add(name_2, scheme_1, env$0027);
|
|
2703
2830
|
void (typed.push(new TypedStmt(/* TSLet */ 1, [name_2, exprVal, inferred, true, isExported, span_1])));
|
|
@@ -2710,7 +2837,7 @@ function inferProgramWithExternsRawAndLocals(captureLocalVariables, externs, pro
|
|
|
2710
2837
|
applySubstToCapturedLocals(telemetry, startIndex, s_1);
|
|
2711
2838
|
const env$0027_1 = applyEnv(s_1, env);
|
|
2712
2839
|
const inferred_1 = applyType(s_1, t1_1);
|
|
2713
|
-
validateMapKeyTypes(span_1, inferred_1);
|
|
2840
|
+
validateMapKeyTypes(typeDefs, span_1, inferred_1);
|
|
2714
2841
|
const scheme_2 = Types_generalize(env$0027_1, inferred_1);
|
|
2715
2842
|
env = add(name_2, scheme_2, env$0027_1);
|
|
2716
2843
|
void (typed.push(new TypedStmt(/* TSLet */ 1, [name_2, exprVal, inferred_1, false, isExported, span_1])));
|
|
@@ -2737,7 +2864,7 @@ function inferProgramWithExternsRawAndLocals(captureLocalVariables, externs, pro
|
|
|
2737
2864
|
const envBase = applyEnv(s_2, env);
|
|
2738
2865
|
const typedBindings = map_1((_arg_1, ty) => applyType(s_2, ty), patternInput_3[0]);
|
|
2739
2866
|
iterate_2((_arg_2, ty_1) => {
|
|
2740
|
-
validateMapKeyTypes(span_2, ty_1);
|
|
2867
|
+
validateMapKeyTypes(typeDefs, span_2, ty_1);
|
|
2741
2868
|
}, typedBindings);
|
|
2742
2869
|
env = fold_1((state_1, name_3, bindingType) => add(name_3, Types_generalize(envBase, bindingType), state_1), envBase, typedBindings);
|
|
2743
2870
|
void (typed.push(new TypedStmt(/* TSLetPattern */ 2, [pattern, expr_1, typedBindings, stmt.fields[2], span_2])));
|
|
@@ -2802,7 +2929,7 @@ function inferProgramWithExternsRawAndLocals(captureLocalVariables, externs, pro
|
|
|
2802
2929
|
const schemes = map((tupledArg_8) => {
|
|
2803
2930
|
const name_9 = tupledArg_8[0];
|
|
2804
2931
|
const inferred_2 = applyType(sRec, FSharpMap__get_Item(freshByName, name_9));
|
|
2805
|
-
validateMapKeyTypes(span_3, inferred_2);
|
|
2932
|
+
validateMapKeyTypes(typeDefs, span_3, inferred_2);
|
|
2806
2933
|
return [name_9, Types_generalize(envGeneralize, inferred_2)];
|
|
2807
2934
|
}, foldedBindings);
|
|
2808
2935
|
const typedBindings_1 = map((tupledArg_9) => {
|
|
@@ -2828,7 +2955,7 @@ function inferProgramWithExternsRawAndLocals(captureLocalVariables, externs, pro
|
|
|
2828
2955
|
const s1_4 = patternInput_5[0];
|
|
2829
2956
|
const s_3 = compose((forLoopVar[0] < (length(program) - 1)) ? unify(typeDefs, applyType(s1_4, t1_3), Type.TUnit, Ast_spanOfExpr(expr_2)) : emptySubst, s1_4);
|
|
2830
2957
|
applySubstToCapturedLocals(telemetry, startIndex_3, s_3);
|
|
2831
|
-
validateMapKeyTypes(Ast_spanOfExpr(expr_2), applyType(s_3, t1_3));
|
|
2958
|
+
validateMapKeyTypes(typeDefs, Ast_spanOfExpr(expr_2), applyType(s_3, t1_3));
|
|
2832
2959
|
env = applyEnv(s_3, env);
|
|
2833
2960
|
void (typed.push(new TypedStmt(/* TSExpr */ 4, [patternInput_5[2]])));
|
|
2834
2961
|
break;
|
|
@@ -222,9 +222,9 @@ export function Types_typeToString(t) {
|
|
|
222
222
|
return toText(printf("%s map"))(arg_6);
|
|
223
223
|
}
|
|
224
224
|
else {
|
|
225
|
-
const arg_7 =
|
|
226
|
-
const arg_8 = go(
|
|
227
|
-
return toText(printf("
|
|
225
|
+
const arg_7 = postfixArg(tv);
|
|
226
|
+
const arg_8 = go(tk);
|
|
227
|
+
return toText(printf("%s map[%s]"))(arg_7)(arg_8);
|
|
228
228
|
}
|
|
229
229
|
}
|
|
230
230
|
case 10: {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|
|
2
2
|
import { Record, FSharpRef, Union } from "../fable_modules/fable-library-js.5.13.0/Types.js";
|
|
3
|
-
import { int32_type, unit_type, lambda_type, record_type, option_type, class_type, list_type,
|
|
3
|
+
import { int32_type, unit_type, lambda_type, record_type, option_type, class_type, list_type, float64_type, union_type, bool_type, int64_type, string_type } from "../fable_modules/fable-library-js.5.13.0/Reflection.js";
|
|
4
4
|
import { Scheme_$reflection, Type_$reflection } from "./Types.js";
|
|
5
5
|
import { Expr_$reflection } from "./Ast.js";
|
|
6
6
|
import { EvalError$_$reflection } from "./Error.js";
|
|
@@ -12,12 +12,12 @@ export class MapKey extends Union {
|
|
|
12
12
|
this.fields = fields;
|
|
13
13
|
}
|
|
14
14
|
cases() {
|
|
15
|
-
return ["MKString", "MKInt"];
|
|
15
|
+
return ["MKString", "MKInt", "MKBool", "MKUnionCase"];
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
export function MapKey_$reflection() {
|
|
20
|
-
return union_type("FScript.Language.MapKey", [], MapKey, () => [[["Item", string_type]], [["Item", int64_type]]]);
|
|
20
|
+
return union_type("FScript.Language.MapKey", [], MapKey, () => [[["Item", string_type]], [["Item", int64_type]], [["Item", bool_type]], [["Item1", string_type], ["Item2", string_type]]]);
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
export class Value extends Union {
|
package/dist/Library.js
CHANGED
|
@@ -214,17 +214,29 @@ function intFromObj(value) {
|
|
|
214
214
|
}
|
|
215
215
|
|
|
216
216
|
function mapKeyToTagged(key) {
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
217
|
+
switch (key.tag) {
|
|
218
|
+
case 1:
|
|
219
|
+
return {
|
|
220
|
+
kind: "int",
|
|
221
|
+
value: key.fields[0],
|
|
222
|
+
};
|
|
223
|
+
case 2:
|
|
224
|
+
return {
|
|
225
|
+
kind: "bool",
|
|
226
|
+
value: key.fields[0],
|
|
227
|
+
};
|
|
228
|
+
case 3:
|
|
229
|
+
return {
|
|
230
|
+
kind: "union",
|
|
231
|
+
typeName: key.fields[0],
|
|
232
|
+
caseName: key.fields[1],
|
|
233
|
+
value: null,
|
|
234
|
+
};
|
|
235
|
+
default:
|
|
236
|
+
return {
|
|
237
|
+
kind: "string",
|
|
238
|
+
value: key.fields[0],
|
|
239
|
+
};
|
|
228
240
|
}
|
|
229
241
|
}
|
|
230
242
|
|
|
@@ -389,9 +401,11 @@ function valueFromJs(value) {
|
|
|
389
401
|
case "map":
|
|
390
402
|
return new Value(/* VMap */ 8, [ofList(map((entry) => {
|
|
391
403
|
const keyValue = valueFromJs(getRequiredProperty("key", entry));
|
|
392
|
-
return [(keyValue.tag === 4) ? (new MapKey(/* MKString */ 0, [keyValue.fields[0]])) : ((keyValue.tag === 1) ? (new MapKey(/* MKInt */ 1, [keyValue.fields[0]])) : (() => {
|
|
393
|
-
throw new Exception("Map key must be string or
|
|
394
|
-
})())
|
|
404
|
+
return [(keyValue.tag === 4) ? (new MapKey(/* MKString */ 0, [keyValue.fields[0]])) : ((keyValue.tag === 1) ? (new MapKey(/* MKInt */ 1, [keyValue.fields[0]])) : ((keyValue.tag === 3) ? (new MapKey(/* MKBool */ 2, [keyValue.fields[0]])) : ((keyValue.tag === 10) ? ((keyValue.fields[2] == null) ? (new MapKey(/* MKUnionCase */ 3, [keyValue.fields[0], keyValue.fields[1]])) : (() => {
|
|
405
|
+
throw new Exception("Map key must be string, int, bool, or a payload-free union case");
|
|
406
|
+
})()) : (() => {
|
|
407
|
+
throw new Exception("Map key must be string, int, bool, or a payload-free union case");
|
|
408
|
+
})()))), valueFromJs(getRequiredProperty("value", entry))];
|
|
395
409
|
}, ofArray(getRequiredProperty("entries", value))), {
|
|
396
410
|
Compare: (x_1, y_1) => (compare(x_1, y_1) | 0),
|
|
397
411
|
})]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"Version":"5.13.0","FableOptions":{"TypedArrays":true,"ClampByteArrays":false,"Language":["JavaScript"],"Define":["FABLE_COMPILER","FABLE_COMPILER_5","FABLE_COMPILER_JAVASCRIPT"],"DebugMode":false,"OptimizeFSharpAst":false,"Verbosity":["Normal"],"FileExtension":".js","TriggeredByDependency":false,"NoReflection":false},"ProjectPath":"/home/runner/work/FScript/FScript/src/FScript.JavaScript/FScript.JavaScript.fsproj","SourcePaths":["/home/runner/work/FScript/FScript/src/FScript.Language/Span.fs","/home/runner/work/FScript/FScript/src/FScript.Language/Error.fs","/home/runner/work/FScript/FScript/src/FScript.Language/Token.fs","/home/runner/work/FScript/FScript/src/FScript.Language/Ast.fs","/home/runner/work/FScript/FScript/src/FScript.Language/Types.fs","/home/runner/work/FScript/FScript/src/FScript.Language/Value.fs","/home/runner/work/FScript/FScript/src/FScript.Language/Lexer.fs","/home/runner/work/FScript/FScript/src/FScript.Language/Parser.fs","/home/runner/work/FScript/FScript/src/FScript.Language/IncludeResolver.fs","/home/runner/work/FScript/FScript/src/FScript.Language/BuiltinTypes.fs","/home/runner/work/FScript/FScript/src/FScript.Language/BuiltinSignatures.fs","/home/runner/work/FScript/FScript/src/FScript.Language/BuiltinFunctions.fs","/home/runner/work/FScript/FScript/src/FScript.Language/TypeInfer.fs","/home/runner/work/FScript/FScript/src/FScript.Language/Eval.fs","/home/runner/work/FScript/FScript/src/FScript.Language/Interactive.fs","/home/runner/work/FScript/FScript/src/FScript.Language/Pretty.fs","/home/runner/work/FScript/FScript/src/FScript.Language/Library.fs","/home/runner/work/FScript/FScript/src/FScript.JavaScript/Library.fs"],"FSharpOptions":["--define:FABLE_COMPILER","--define:FABLE_COMPILER_5","--define:FABLE_COMPILER_JAVASCRIPT","--define:TRACE","--define:RELEASE","--define:NETSTANDARD","--define:NETSTANDARD2_1","--define:NETSTANDARD1_0_OR_GREATER","--define:NETSTANDARD1_1_OR_GREATER","--define:NETSTANDARD1_2_OR_GREATER","--define:NETSTANDARD1_3_OR_GREATER","--define:NETSTANDARD1_4_OR_GREATER","--define:NETSTANDARD1_5_OR_GREATER","--define:NETSTANDARD1_6_OR_GREATER","--define:NETSTANDARD2_0_OR_GREATER","--define:NETSTANDARD2_1_OR_GREATER","--define:NULLABLE","--langversion:preview","--nowarn:FS0988","--noframework","--nologo","--simpleresolution","--nocopyfsharpcore","--nowin32manifest","--warn:3","--fullpaths","--flaterrors","--optimize-","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.ValueTuple.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.Threading.Thread.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.Threading.Tasks.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.Threading.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.Text.RegularExpressions.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.Text.Encoding.Extensions.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.Text.Encoding.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.Runtime.Numerics.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.Runtime.InteropServices.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.Runtime.Extensions.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.Runtime.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.Reflection.Primitives.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.Reflection.Extensions.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.Reflection.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.Numerics.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.Net.Requests.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.IO.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.Globalization.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.Diagnostics.Tracing.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.Diagnostics.Tools.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.Diagnostics.Debug.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.Core.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.Console.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.ComponentModel.TypeConverter.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.ComponentModel.Primitives.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.ComponentModel.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.Collections.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.Collections.Concurrent.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/netstandard.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/mscorlib.dll","-r:/home/runner/.nuget/packages/fable.core/5.
|
|
1
|
+
{"Version":"5.13.0","FableOptions":{"TypedArrays":true,"ClampByteArrays":false,"Language":["JavaScript"],"Define":["FABLE_COMPILER","FABLE_COMPILER_5","FABLE_COMPILER_JAVASCRIPT"],"DebugMode":false,"OptimizeFSharpAst":false,"Verbosity":["Normal"],"FileExtension":".js","TriggeredByDependency":false,"NoReflection":false},"ProjectPath":"/home/runner/work/FScript/FScript/src/FScript.JavaScript/FScript.JavaScript.fsproj","SourcePaths":["/home/runner/work/FScript/FScript/src/FScript.Language/Span.fs","/home/runner/work/FScript/FScript/src/FScript.Language/Error.fs","/home/runner/work/FScript/FScript/src/FScript.Language/Token.fs","/home/runner/work/FScript/FScript/src/FScript.Language/Ast.fs","/home/runner/work/FScript/FScript/src/FScript.Language/Types.fs","/home/runner/work/FScript/FScript/src/FScript.Language/Value.fs","/home/runner/work/FScript/FScript/src/FScript.Language/Lexer.fs","/home/runner/work/FScript/FScript/src/FScript.Language/Parser.fs","/home/runner/work/FScript/FScript/src/FScript.Language/IncludeResolver.fs","/home/runner/work/FScript/FScript/src/FScript.Language/BuiltinTypes.fs","/home/runner/work/FScript/FScript/src/FScript.Language/BuiltinSignatures.fs","/home/runner/work/FScript/FScript/src/FScript.Language/BuiltinFunctions.fs","/home/runner/work/FScript/FScript/src/FScript.Language/TypeInfer.fs","/home/runner/work/FScript/FScript/src/FScript.Language/Eval.fs","/home/runner/work/FScript/FScript/src/FScript.Language/Interactive.fs","/home/runner/work/FScript/FScript/src/FScript.Language/Pretty.fs","/home/runner/work/FScript/FScript/src/FScript.Language/Library.fs","/home/runner/work/FScript/FScript/src/FScript.JavaScript/Library.fs"],"FSharpOptions":["--define:FABLE_COMPILER","--define:FABLE_COMPILER_5","--define:FABLE_COMPILER_JAVASCRIPT","--define:TRACE","--define:RELEASE","--define:NETSTANDARD","--define:NETSTANDARD2_1","--define:NETSTANDARD1_0_OR_GREATER","--define:NETSTANDARD1_1_OR_GREATER","--define:NETSTANDARD1_2_OR_GREATER","--define:NETSTANDARD1_3_OR_GREATER","--define:NETSTANDARD1_4_OR_GREATER","--define:NETSTANDARD1_5_OR_GREATER","--define:NETSTANDARD1_6_OR_GREATER","--define:NETSTANDARD2_0_OR_GREATER","--define:NETSTANDARD2_1_OR_GREATER","--define:NULLABLE","--langversion:preview","--nowarn:FS0988","--noframework","--nologo","--simpleresolution","--nocopyfsharpcore","--nowin32manifest","--warn:3","--fullpaths","--flaterrors","--optimize-","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.ValueTuple.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.Threading.Thread.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.Threading.Tasks.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.Threading.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.Text.RegularExpressions.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.Text.Encoding.Extensions.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.Text.Encoding.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.Runtime.Numerics.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.Runtime.InteropServices.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.Runtime.Extensions.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.Runtime.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.Reflection.Primitives.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.Reflection.Extensions.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.Reflection.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.Numerics.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.Net.Requests.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.IO.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.Globalization.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.Diagnostics.Tracing.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.Diagnostics.Tools.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.Diagnostics.Debug.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.Core.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.Console.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.ComponentModel.TypeConverter.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.ComponentModel.Primitives.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.ComponentModel.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.Collections.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/System.Collections.Concurrent.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/netstandard.dll","-r:/usr/share/dotnet/packs/NETStandard.Library.Ref/2.1.0/ref/netstandard2.1/mscorlib.dll","-r:/home/runner/.nuget/packages/fable.core/5.3.0/lib/netstandard2.0/Fable.Core.dll","-r:/home/runner/.nuget/packages/fable/5.13.0/tools/net10.0/any/FSharp.Core.dll"],"References":["/home/runner/work/FScript/FScript/src/FScript.Language/FScript.Language.fsproj"],"OutDir":["Some","/home/runner/work/FScript/FScript/src/FScript.JavaScript/dist"],"FableLibDir":"/home/runner/work/FScript/FScript/src/FScript.JavaScript/dist/fable_modules/fable-library-js.5.13.0","FableModulesDir":"/home/runner/work/FScript/FScript/src/FScript.JavaScript/dist/fable_modules","OutputType":["Library"],"TargetFramework":["Some","netstandard2.1"],"Exclude":[],"SourceMaps":false,"SourceMapsRoot":null,"TreatWarningsAsErrors":true}
|