@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.
@@ -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, iterate, reverse, 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";
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 5:
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 5:
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 ensureSupportedMapKeyType = (t_1) => {
1461
- switch (t_1.tag) {
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
- ensureSupportedMapKeyType(applyType(sAcc, mapKeyType));
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
- ensureSupportedMapKeyType(applyType(sAcc, mapKeyType));
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
- switch (keyType.tag) {
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 s_1 = compose(unify(typeDefs, applyType(s2, patternInput_3[1]), new Type(/* TFun */ 11, [patternInput_4[1], tv_1]), expr.fields[2]), compose(s2, s1_2));
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 ensureSupportedMapKeyType = (t_3) => {
2082
- switch (t_3.tag) {
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
- ensureSupportedMapKeyType(applyType(sAfterKey, keyType));
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
- ensureSupportedMapKeyType(applyType(sAcc_6, keyType));
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
- const matchValue_19 = applyType(s_13, mapKeyType);
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
- const s_15 = compose(unify(typeDefs, targetType, new Type(/* TMap */ 9, [Type.TString, valueType_2]), span_19), compose(s2_10, s1_19));
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: use a list with int index or a map with string key", span_19));
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 s_16 = compose(unify(typeDefs, applyType(s2_11, patternInput_44[1]), new Type(/* TFun */ 11, [applyType(s2_11, patternInput_43[1]), tv_7]), span_20), compose(s2_11, s1_20));
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 t_9 = applyType(s3_11, t2_3);
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, t_9, span_20);
2604
+ patternInput_52 = constrainNumeric(typeDefs, t_8, span_20);
2478
2605
  break;
2479
2606
  }
2480
2607
  case "%": {
2481
- patternInput_52 = [unify(typeDefs, t_9, Type.TInt, span_20), Type.TInt];
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, t_9, span_20)[0], Type.TBool];
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, t_9, Type.TBool, span_20), Type.TBool];
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 = go(tk);
226
- const arg_8 = go(tv);
227
- return toText(printf("map<%s, %s>"))(arg_7)(arg_8);
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, bool_type, float64_type, union_type, int64_type, string_type } from "../fable_modules/fable-library-js.5.13.0/Reflection.js";
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
- if (key.tag === 1) {
218
- return {
219
- kind: "int",
220
- value: key.fields[0],
221
- };
222
- }
223
- else {
224
- return {
225
- kind: "string",
226
- value: key.fields[0],
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 int");
394
- })()), valueFromJs(getRequiredProperty("value", entry))];
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.2.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}
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}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@magnusopera/fscript",
3
- "version": "0.79.0",
3
+ "version": "0.80.1",
4
4
  "description": "Embeddable FScript language engine: parser, type inference, and evaluator.",
5
5
  "type": "module",
6
6
  "main": "./dist/Library.js",