@markw65/monkeyc-optimizer 1.1.37 → 1.1.39

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/CHANGELOG.md CHANGED
@@ -2,6 +2,19 @@
2
2
 
3
3
  All notable changes to the "monkeyc-optimizer" package will be documented in this file.
4
4
 
5
+ ### 1.1.39
6
+
7
+ - Update to [@markw65/prettier-plugin-monkeyc@1.0.54](https://github.com/markw65/prettier-plugin-monkeyc/blob/main/CHANGELOG.md#1054)
8
+
9
+ - Fixes the parser to understand tuples
10
+
11
+ - Add basic type analysis for tuples
12
+
13
+ ### 1.1.38
14
+
15
+ - Fix a bug introduced in 1.1.37 that could lead to duplicate diagnostics, and diagnostics with strange contents.
16
+ - Give `{ :foo => null }` the type `{ :foo => Object? }`, so that subsequent assignments to `:foo` aren't reported as type errors.
17
+
5
18
  ### 1.1.37
6
19
 
7
20
  - Update to [@markw65/prettier-plugin-monkeyc@1.0.53](https://github.com/markw65/prettier-plugin-monkeyc/blob/main/CHANGELOG.md#1053)
package/build/api.cjs CHANGED
@@ -18,45 +18,47 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var api_exports = {};
20
20
  __export(api_exports, {
21
- checkCompilerVersion: () => import_chunk_E67DP34P.checkCompilerVersion,
22
- collectNamespaces: () => import_chunk_E67DP34P.collectNamespaces,
23
- createDocumentationMap: () => import_chunk_E67DP34P.createDocumentationMap,
24
- diagnostic: () => import_chunk_E67DP34P.diagnostic,
25
- diagnosticHelper: () => import_chunk_E67DP34P.diagnosticHelper,
26
- findNamesInScope: () => import_chunk_E67DP34P.findNamesInScope,
27
- findUsingForNode: () => import_chunk_E67DP34P.findUsingForNode,
28
- formatAst: () => import_chunk_E67DP34P.formatAst,
29
- formatAstLongLines: () => import_chunk_E67DP34P.formatAstLongLines,
30
- formatScopedName: () => import_chunk_E67DP34P.formatScopedName,
31
- getApiFunctionInfo: () => import_chunk_E67DP34P.getApiFunctionInfo,
32
- getApiMapping: () => import_chunk_E67DP34P.getApiMapping,
33
- getSuperClasses: () => import_chunk_E67DP34P.getSuperClasses,
21
+ checkCompilerVersion: () => import_chunk_3H4GE7RU.checkCompilerVersion,
22
+ collectNamespaces: () => import_chunk_3H4GE7RU.collectNamespaces,
23
+ createDocumentationMap: () => import_chunk_3H4GE7RU.createDocumentationMap,
24
+ diagnostic: () => import_chunk_3H4GE7RU.diagnostic,
25
+ diagnosticHelper: () => import_chunk_3H4GE7RU.diagnosticHelper,
26
+ findNamesInScope: () => import_chunk_3H4GE7RU.findNamesInScope,
27
+ findUsingForNode: () => import_chunk_3H4GE7RU.findUsingForNode,
28
+ formatAst: () => import_chunk_3H4GE7RU.formatAst,
29
+ formatAstLongLines: () => import_chunk_3H4GE7RU.formatAstLongLines,
30
+ formatScopedName: () => import_chunk_3H4GE7RU.formatScopedName,
31
+ getApiFunctionInfo: () => import_chunk_3H4GE7RU.getApiFunctionInfo,
32
+ getApiMapping: () => import_chunk_3H4GE7RU.getApiMapping,
33
+ getSuperClasses: () => import_chunk_3H4GE7RU.getSuperClasses,
34
34
  hasProperty: () => import_chunk_MBTLUWXR.hasProperty,
35
- isClassVariable: () => import_chunk_E67DP34P.isClassVariable,
36
- isLocal: () => import_chunk_E67DP34P.isLocal,
37
- isLookupCandidate: () => import_chunk_E67DP34P.isLookupCandidate,
38
- isStateNode: () => import_chunk_E67DP34P.isStateNode,
39
- lookupByFullName: () => import_chunk_E67DP34P.lookupByFullName,
40
- lookupNext: () => import_chunk_E67DP34P.lookupNext,
41
- lookupResultContains: () => import_chunk_E67DP34P.lookupResultContains,
42
- lookupWithType: () => import_chunk_E67DP34P.lookupWithType,
43
- makeToyboxLink: () => import_chunk_E67DP34P.makeToyboxLink,
44
- mapVarDeclsByType: () => import_chunk_E67DP34P.mapVarDeclsByType,
45
- markInvokeClassMethod: () => import_chunk_E67DP34P.markInvokeClassMethod,
46
- parseSdkVersion: () => import_chunk_E67DP34P.parseSdkVersion,
47
- sameLookupResult: () => import_chunk_E67DP34P.sameLookupResult,
35
+ isClassVariable: () => import_chunk_3H4GE7RU.isClassVariable,
36
+ isLocal: () => import_chunk_3H4GE7RU.isLocal,
37
+ isLookupCandidate: () => import_chunk_3H4GE7RU.isLookupCandidate,
38
+ isStateNode: () => import_chunk_3H4GE7RU.isStateNode,
39
+ lookupByFullName: () => import_chunk_3H4GE7RU.lookupByFullName,
40
+ lookupNext: () => import_chunk_3H4GE7RU.lookupNext,
41
+ lookupResultContains: () => import_chunk_3H4GE7RU.lookupResultContains,
42
+ lookupWithType: () => import_chunk_3H4GE7RU.lookupWithType,
43
+ makeToyboxLink: () => import_chunk_3H4GE7RU.makeToyboxLink,
44
+ mapVarDeclsByType: () => import_chunk_3H4GE7RU.mapVarDeclsByType,
45
+ markInvokeClassMethod: () => import_chunk_3H4GE7RU.markInvokeClassMethod,
46
+ parseSdkVersion: () => import_chunk_3H4GE7RU.parseSdkVersion,
47
+ resolveDiagnostics: () => import_chunk_3H4GE7RU.resolveDiagnostics,
48
+ resolveDiagnosticsMap: () => import_chunk_3H4GE7RU.resolveDiagnosticsMap,
49
+ sameLookupResult: () => import_chunk_3H4GE7RU.sameLookupResult,
48
50
  traverseAst: () => import_chunk_MBTLUWXR.traverseAst,
49
- variableDeclarationName: () => import_chunk_E67DP34P.variableDeclarationName,
50
- visitReferences: () => import_chunk_E67DP34P.visitReferences,
51
- visit_resources: () => import_chunk_E67DP34P.visit_resources,
52
- visitorNode: () => import_chunk_E67DP34P.visitorNode
51
+ variableDeclarationName: () => import_chunk_3H4GE7RU.variableDeclarationName,
52
+ visitReferences: () => import_chunk_3H4GE7RU.visitReferences,
53
+ visit_resources: () => import_chunk_3H4GE7RU.visit_resources,
54
+ visitorNode: () => import_chunk_3H4GE7RU.visitorNode
53
55
  });
54
56
  module.exports = __toCommonJS(api_exports);
55
- var import_chunk_E67DP34P = require("./chunk-E67DP34P.cjs");
57
+ var import_chunk_3H4GE7RU = require("./chunk-3H4GE7RU.cjs");
56
58
  var import_chunk_SG7ODKRM = require("./chunk-SG7ODKRM.cjs");
57
59
  var import_chunk_MBTLUWXR = require("./chunk-MBTLUWXR.cjs");
58
60
  var import_chunk_ABYVSU2C = require("./chunk-ABYVSU2C.cjs");
59
- (0, import_chunk_E67DP34P.init_api)();
61
+ (0, import_chunk_3H4GE7RU.init_api)();
60
62
  // Annotate the CommonJS export names for ESM import in node:
61
63
  0 && (module.exports = {
62
64
  checkCompilerVersion,
@@ -85,6 +87,8 @@ var import_chunk_ABYVSU2C = require("./chunk-ABYVSU2C.cjs");
85
87
  mapVarDeclsByType,
86
88
  markInvokeClassMethod,
87
89
  parseSdkVersion,
90
+ resolveDiagnostics,
91
+ resolveDiagnosticsMap,
88
92
  sameLookupResult,
89
93
  traverseAst,
90
94
  variableDeclarationName,
@@ -26,8 +26,8 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  mod
27
27
  ));
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var chunk_E67DP34P_exports = {};
30
- __export(chunk_E67DP34P_exports, {
29
+ var chunk_3H4GE7RU_exports = {};
30
+ __export(chunk_3H4GE7RU_exports, {
31
31
  EnumTagsConst: () => EnumTagsConst,
32
32
  LastTypeTag: () => LastTypeTag,
33
33
  ObjectLikeTagsConst: () => ObjectLikeTagsConst,
@@ -113,6 +113,8 @@ __export(chunk_E67DP34P_exports, {
113
113
  performTask: () => performTask,
114
114
  readPrg: () => readPrg,
115
115
  readPrgWithOffsets: () => readPrgWithOffsets,
116
+ resolveDiagnostics: () => resolveDiagnostics,
117
+ resolveDiagnosticsMap: () => resolveDiagnosticsMap,
116
118
  restrictByEquality: () => restrictByEquality,
117
119
  runTaskInPool: () => runTaskInPool,
118
120
  sameLookupResult: () => sameLookupResult,
@@ -128,7 +130,7 @@ __export(chunk_E67DP34P_exports, {
128
130
  visitorNode: () => visitorNode,
129
131
  xml_util_exports: () => xml_util_exports
130
132
  });
131
- module.exports = __toCommonJS(chunk_E67DP34P_exports);
133
+ module.exports = __toCommonJS(chunk_3H4GE7RU_exports);
132
134
  var import_chunk_SG7ODKRM = require("./chunk-SG7ODKRM.cjs");
133
135
  var import_chunk_MBTLUWXR = require("./chunk-MBTLUWXR.cjs");
134
136
  var import_chunk_ABYVSU2C = require("./chunk-ABYVSU2C.cjs");
@@ -10778,6 +10780,12 @@ function cloneType(t) {
10778
10780
  return { ...t };
10779
10781
  }
10780
10782
  function relaxType(type) {
10783
+ if (type.type === 1) {
10784
+ return {
10785
+ type: 1 | 32768
10786
+ /* Object */
10787
+ };
10788
+ }
10781
10789
  const valTypes = type.type & ValueTypeTagsConst;
10782
10790
  if ((!valTypes || hasNoData(type, valTypes)) && (!(type.type & 6) || (type.type & 6) === 6)) {
10783
10791
  return type;
@@ -11069,6 +11077,24 @@ function typeFromSingleTypeSpec(state, type, stack) {
11069
11077
  type = { type: "TypeSpecPart", name: type };
11070
11078
  }
11071
11079
  switch (type.type) {
11080
+ case "ArrayExpression": {
11081
+ return {
11082
+ type: 512,
11083
+ value: type.elements.reduce(
11084
+ (prev, cur) => {
11085
+ unionInto(
11086
+ prev,
11087
+ typeFromTypespec(state, cur)
11088
+ );
11089
+ return prev;
11090
+ },
11091
+ {
11092
+ type: 0
11093
+ /* Never */
11094
+ }
11095
+ )
11096
+ };
11097
+ }
11072
11098
  case "ObjectExpression": {
11073
11099
  const fields = /* @__PURE__ */ new Map();
11074
11100
  type.properties.forEach((property) => {
@@ -16796,40 +16822,6 @@ async function optimizeMonkeyCHelper(fnMap, resourcesMap, manifestXML, config) {
16796
16822
  }
16797
16823
  delete state.inlineDiagnostics;
16798
16824
  }
16799
- const resolveDiagnostics = (diagnostics2) => diagnostics2 ? Promise.all(
16800
- diagnostics2?.filter((diagnostic2) => typeof diagnostic2.message !== "string").map((diagnostic2) => diagnostic2.message)
16801
- ).then(() => {
16802
- const groups = /* @__PURE__ */ new Map();
16803
- diagnostics2.forEach((d) => {
16804
- let key = `${d.loc.start.offset}:${d.loc.end.offset}`;
16805
- if (d.related) {
16806
- key += ":" + d.related.map((r) => `${r.loc.start.offset}:${r.loc.end.offset}`).join(":");
16807
- }
16808
- if (!d.message) {
16809
- groups.delete(key);
16810
- } else {
16811
- const group = groups.get(key);
16812
- if (!group) {
16813
- groups.set(key, [d]);
16814
- } else {
16815
- const index = group.findIndex((g) => g.message === d.message);
16816
- if (index < 0) {
16817
- group.push(d);
16818
- } else {
16819
- group[index] = d;
16820
- }
16821
- }
16822
- }
16823
- });
16824
- diagnostics2.splice(0);
16825
- diagnostics2.push(...Array.from(groups.values()).flat());
16826
- return diagnostics2;
16827
- }) : diagnostics2;
16828
- const resolveDiagnosticsMap = (diagnosticsMap) => Promise.all(
16829
- Object.values(diagnosticsMap).map(
16830
- (diagnostics2) => resolveDiagnostics(diagnostics2)
16831
- )
16832
- ).then(() => diagnosticsMap);
16833
16825
  if (state.config?.checkBuildPragmas) {
16834
16826
  await Object.entries(fnMap).reduce((promise, [name, f]) => {
16835
16827
  return Promise.all([
@@ -18903,6 +18895,44 @@ function isLocal(v) {
18903
18895
  function isClassVariable(v) {
18904
18896
  return v.stack[v.stack.length - 1]?.sn.type === "ClassDeclaration";
18905
18897
  }
18898
+ function resolveDiagnostics(diagnostics) {
18899
+ return diagnostics ? Promise.all(
18900
+ diagnostics?.filter((diagnostic2) => typeof diagnostic2.message !== "string").map((diagnostic2) => diagnostic2.message)
18901
+ ).then(() => {
18902
+ const groups = /* @__PURE__ */ new Map();
18903
+ diagnostics.forEach((d) => {
18904
+ let key = `${d.loc.start.offset}:${d.loc.end.offset}`;
18905
+ if (d.related) {
18906
+ key += ":" + d.related.map((r) => `${r.loc.start.offset}:${r.loc.end.offset}`).join(":");
18907
+ }
18908
+ if (!d.message) {
18909
+ groups.delete(key);
18910
+ } else {
18911
+ const group = groups.get(key);
18912
+ if (!group) {
18913
+ groups.set(key, [d]);
18914
+ } else {
18915
+ const index = group.findIndex((g) => g.message === d.message);
18916
+ if (index < 0) {
18917
+ group.push(d);
18918
+ } else {
18919
+ group[index] = d;
18920
+ }
18921
+ }
18922
+ }
18923
+ });
18924
+ diagnostics.splice(0);
18925
+ diagnostics.push(...Array.from(groups.values()).flat());
18926
+ return diagnostics;
18927
+ }) : diagnostics;
18928
+ }
18929
+ function resolveDiagnosticsMap(diagnosticsMap) {
18930
+ return Promise.all(
18931
+ Object.values(diagnosticsMap).map(
18932
+ (diagnostics) => resolveDiagnostics(diagnostics)
18933
+ )
18934
+ ).then(() => diagnosticsMap);
18935
+ }
18906
18936
  function diagnostic(state, node, message, type = "INFO", extra) {
18907
18937
  if (!state.diagnostics)
18908
18938
  state.diagnostics = {};
@@ -28081,7 +28111,7 @@ async function generateOneConfig(buildConfig, manifestXML, dependencyFiles, conf
28081
28111
  const opt_time = await (0, import_chunk_SG7ODKRM.first_modified)(
28082
28112
  Object.values(fnMap).map((v) => v.output)
28083
28113
  );
28084
- if (source_time < opt_time && 1695852724811 < opt_time) {
28114
+ if (source_time < opt_time && 1706308945548 < opt_time) {
28085
28115
  return {
28086
28116
  hasTests,
28087
28117
  diagnostics: prevDiagnostics,
@@ -28120,7 +28150,7 @@ async function generateOneConfig(buildConfig, manifestXML, dependencyFiles, conf
28120
28150
  hasTests: hasTests2,
28121
28151
  diagnostics,
28122
28152
  sdkVersion,
28123
- optimizerVersion: "1.1.37",
28153
+ optimizerVersion: "1.1.39",
28124
28154
  ...Object.fromEntries(
28125
28155
  configOptionsToCheck.map((option) => [option, config[option]])
28126
28156
  )
@@ -28261,6 +28291,9 @@ async function getProjectAnalysisHelper(targets, analysis, manifestXML, options)
28261
28291
  });
28262
28292
  delete state.pre;
28263
28293
  }
28294
+ if (state.diagnostics) {
28295
+ await resolveDiagnosticsMap(state.diagnostics);
28296
+ }
28264
28297
  return { fnMap, paths, state, typeMap };
28265
28298
  }
28266
28299
  var defaultConfig, configOptionsToCheck;
@@ -29031,6 +29064,8 @@ var init_sdk_util = (0, import_chunk_ABYVSU2C.__esm)({
29031
29064
  performTask,
29032
29065
  readPrg,
29033
29066
  readPrgWithOffsets,
29067
+ resolveDiagnostics,
29068
+ resolveDiagnosticsMap,
29034
29069
  restrictByEquality,
29035
29070
  runTaskInPool,
29036
29071
  sameLookupResult,
@@ -18,28 +18,28 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var optimizer_exports = {};
20
20
  __export(optimizer_exports, {
21
- StateNodeAttributes: () => import_chunk_E67DP34P.StateNodeAttributes,
22
- buildOptimizedProject: () => import_chunk_E67DP34P.buildOptimizedProject,
21
+ StateNodeAttributes: () => import_chunk_3H4GE7RU.StateNodeAttributes,
22
+ buildOptimizedProject: () => import_chunk_3H4GE7RU.buildOptimizedProject,
23
23
  copyRecursiveAsNeeded: () => import_chunk_SG7ODKRM.copyRecursiveAsNeeded,
24
- defaultConfig: () => import_chunk_E67DP34P.defaultConfig,
25
- display: () => import_chunk_E67DP34P.display,
26
- generateOneConfig: () => import_chunk_E67DP34P.generateOneConfig,
27
- generateOptimizedProject: () => import_chunk_E67DP34P.generateOptimizedProject,
28
- getConfig: () => import_chunk_E67DP34P.getConfig,
29
- getProjectAnalysis: () => import_chunk_E67DP34P.getProjectAnalysis,
30
- get_jungle: () => import_chunk_E67DP34P.get_jungle,
31
- isErrorWithLocation: () => import_chunk_E67DP34P.isErrorWithLocation,
32
- launchSimulator: () => import_chunk_E67DP34P.launchSimulator,
33
- manifestProducts: () => import_chunk_E67DP34P.manifestProducts,
34
- mctree: () => import_chunk_E67DP34P.mctree,
35
- simulateProgram: () => import_chunk_E67DP34P.simulateProgram
24
+ defaultConfig: () => import_chunk_3H4GE7RU.defaultConfig,
25
+ display: () => import_chunk_3H4GE7RU.display,
26
+ generateOneConfig: () => import_chunk_3H4GE7RU.generateOneConfig,
27
+ generateOptimizedProject: () => import_chunk_3H4GE7RU.generateOptimizedProject,
28
+ getConfig: () => import_chunk_3H4GE7RU.getConfig,
29
+ getProjectAnalysis: () => import_chunk_3H4GE7RU.getProjectAnalysis,
30
+ get_jungle: () => import_chunk_3H4GE7RU.get_jungle,
31
+ isErrorWithLocation: () => import_chunk_3H4GE7RU.isErrorWithLocation,
32
+ launchSimulator: () => import_chunk_3H4GE7RU.launchSimulator,
33
+ manifestProducts: () => import_chunk_3H4GE7RU.manifestProducts,
34
+ mctree: () => import_chunk_3H4GE7RU.mctree,
35
+ simulateProgram: () => import_chunk_3H4GE7RU.simulateProgram
36
36
  });
37
37
  module.exports = __toCommonJS(optimizer_exports);
38
- var import_chunk_E67DP34P = require("./chunk-E67DP34P.cjs");
38
+ var import_chunk_3H4GE7RU = require("./chunk-3H4GE7RU.cjs");
39
39
  var import_chunk_SG7ODKRM = require("./chunk-SG7ODKRM.cjs");
40
40
  var import_chunk_MBTLUWXR = require("./chunk-MBTLUWXR.cjs");
41
41
  var import_chunk_ABYVSU2C = require("./chunk-ABYVSU2C.cjs");
42
- (0, import_chunk_E67DP34P.init_optimizer)();
42
+ (0, import_chunk_3H4GE7RU.init_optimizer)();
43
43
  // Annotate the CommonJS export names for ESM import in node:
44
44
  0 && (module.exports = {
45
45
  StateNodeAttributes,
@@ -18,25 +18,25 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var sdk_util_exports = {};
20
20
  __export(sdk_util_exports, {
21
- SectionKinds: () => import_chunk_E67DP34P.SectionKinds,
22
- appSupport: () => import_chunk_E67DP34P.appSupport,
23
- connectiq: () => import_chunk_E67DP34P.connectiq,
24
- getDeviceInfo: () => import_chunk_E67DP34P.getDeviceInfo,
25
- getFunctionDocumentation: () => import_chunk_E67DP34P.getFunctionDocumentation,
26
- getLanguages: () => import_chunk_E67DP34P.getLanguages,
27
- getSdkPath: () => import_chunk_E67DP34P.getSdkPath,
28
- isWin: () => import_chunk_E67DP34P.isWin,
29
- optimizeProgram: () => import_chunk_E67DP34P.optimizeProgram,
30
- readPrg: () => import_chunk_E67DP34P.readPrg,
31
- readPrgWithOffsets: () => import_chunk_E67DP34P.readPrgWithOffsets,
32
- xmlUtil: () => import_chunk_E67DP34P.xml_util_exports
21
+ SectionKinds: () => import_chunk_3H4GE7RU.SectionKinds,
22
+ appSupport: () => import_chunk_3H4GE7RU.appSupport,
23
+ connectiq: () => import_chunk_3H4GE7RU.connectiq,
24
+ getDeviceInfo: () => import_chunk_3H4GE7RU.getDeviceInfo,
25
+ getFunctionDocumentation: () => import_chunk_3H4GE7RU.getFunctionDocumentation,
26
+ getLanguages: () => import_chunk_3H4GE7RU.getLanguages,
27
+ getSdkPath: () => import_chunk_3H4GE7RU.getSdkPath,
28
+ isWin: () => import_chunk_3H4GE7RU.isWin,
29
+ optimizeProgram: () => import_chunk_3H4GE7RU.optimizeProgram,
30
+ readPrg: () => import_chunk_3H4GE7RU.readPrg,
31
+ readPrgWithOffsets: () => import_chunk_3H4GE7RU.readPrgWithOffsets,
32
+ xmlUtil: () => import_chunk_3H4GE7RU.xml_util_exports
33
33
  });
34
34
  module.exports = __toCommonJS(sdk_util_exports);
35
- var import_chunk_E67DP34P = require("./chunk-E67DP34P.cjs");
35
+ var import_chunk_3H4GE7RU = require("./chunk-3H4GE7RU.cjs");
36
36
  var import_chunk_SG7ODKRM = require("./chunk-SG7ODKRM.cjs");
37
37
  var import_chunk_MBTLUWXR = require("./chunk-MBTLUWXR.cjs");
38
38
  var import_chunk_ABYVSU2C = require("./chunk-ABYVSU2C.cjs");
39
- (0, import_chunk_E67DP34P.init_sdk_util)();
39
+ (0, import_chunk_3H4GE7RU.init_sdk_util)();
40
40
  // Annotate the CommonJS export names for ESM import in node:
41
41
  0 && (module.exports = {
42
42
  SectionKinds,
@@ -47,6 +47,8 @@ export declare function getApiFunctionInfo(state: ProgramState, func: FunctionSt
47
47
  export declare function markInvokeClassMethod(state: ProgramStateAnalysis, func: FunctionStateNode): void;
48
48
  export declare function isLocal(v: VariableStateNode): boolean;
49
49
  export declare function isClassVariable(v: VariableStateNode): boolean;
50
+ export declare function resolveDiagnostics(diagnostics?: PreDiagnostic[]): Promise<Diagnostic[]> | undefined;
51
+ export declare function resolveDiagnosticsMap(diagnosticsMap: Record<string, PreDiagnostic[]>): Promise<Record<string, Diagnostic[]>>;
50
52
  export declare function diagnostic(state: ProgramState, node: mctree.Node, message: string | Promise<string> | null, type?: DiagnosticType, extra?: Diagnostic["extra"]): void;
51
53
  export declare function diagnosticHelper(diagnostics: Record<string, PreDiagnostic[]>, node: mctree.Node, message: string | Promise<string> | null, type: DiagnosticType | undefined, extra: Diagnostic["extra"] | undefined): void;
52
54
  export declare function getSuperClasses(klass: ClassStateNode): Set<StateNode> | null;
@@ -187,15 +187,13 @@ export declare function isSingleton(v: AbstractValue): v is SingletonType;
187
187
  export declare function hasValue(v: AbstractValue): v is WithValue<ExactTypes>;
188
188
  export declare function hasNoData(v: AbstractValue, t: TypeTag): boolean;
189
189
  export declare function cloneType<T extends ExactOrUnion>(t: T): T;
190
- export declare function relaxType(type: ExactOrUnion): {
191
- type: number;
192
- };
190
+ export declare function relaxType(type: ExactOrUnion): ExactOrUnion;
193
191
  export declare function typeFromTypeStateNode(state: ProgramStateAnalysis, sn: StateNodeDecl, classVsObj?: boolean): ExactOrUnion;
194
192
  export declare function typeFromTypeStateNodes(state: ProgramStateAnalysis, sns: StateNodeDecl[], classVsObj?: boolean): ExactOrUnion;
195
193
  export declare function objectLiteralKeyFromExpr(key: mctree.Expression): string | null;
196
194
  export declare function objectLiteralKeyFromType(key: ExactOrUnion): string | null;
197
195
  export declare function typeFromObjectLiteralKey(key: string): ValueTypes;
198
- export declare function typeFromSingleTypeSpec(state: ProgramStateAnalysis, type: mctree.TypeSpecPart | mctree.ObjectExpression, stack?: ProgramStateStack | undefined): ExactOrUnion;
196
+ export declare function typeFromSingleTypeSpec(state: ProgramStateAnalysis, type: mctree.SingleTypeSpec, stack?: ProgramStateStack | undefined): ExactOrUnion;
199
197
  export declare function typeFromTypespec(state: ProgramStateAnalysis, ts: mctree.TypeSpecList, stack?: ProgramStateStack | undefined): ExactOrUnion;
200
198
  export declare function typeFromLiteral(literal: mctree.Literal): ExactTypes;
201
199
  export declare function mcExprFromType(type: ValueTypes): mctree.Expression | null;
@@ -21,17 +21,17 @@ __export(worker_thread_exports, {
21
21
  default: () => worker_thread_default
22
22
  });
23
23
  module.exports = __toCommonJS(worker_thread_exports);
24
- var import_chunk_E67DP34P = require("./chunk-E67DP34P.cjs");
24
+ var import_chunk_3H4GE7RU = require("./chunk-3H4GE7RU.cjs");
25
25
  var import_chunk_SG7ODKRM = require("./chunk-SG7ODKRM.cjs");
26
26
  var import_chunk_MBTLUWXR = require("./chunk-MBTLUWXR.cjs");
27
27
  var import_chunk_ABYVSU2C = require("./chunk-ABYVSU2C.cjs");
28
28
  var import_node_worker_threads = require("node:worker_threads");
29
29
  var require_worker_thread = (0, import_chunk_ABYVSU2C.__commonJS)({
30
30
  "src/worker-thread.ts"() {
31
- (0, import_chunk_E67DP34P.init_worker_task)();
31
+ (0, import_chunk_3H4GE7RU.init_worker_task)();
32
32
  if (import_node_worker_threads.parentPort) {
33
33
  import_node_worker_threads.parentPort.on("message", async (task) => {
34
- return import_node_worker_threads.parentPort.postMessage(await (0, import_chunk_E67DP34P.performTask)(task));
34
+ return import_node_worker_threads.parentPort.postMessage(await (0, import_chunk_3H4GE7RU.performTask)(task));
35
35
  });
36
36
  }
37
37
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@markw65/monkeyc-optimizer",
3
3
  "type": "commonjs",
4
- "version": "1.1.37",
4
+ "version": "1.1.39",
5
5
  "description": "Source to source optimizer for Garmin Monkey C code",
6
6
  "main": "build/optimizer.cjs",
7
7
  "types": "build/src/optimizer.d.ts",
@@ -18,6 +18,7 @@
18
18
  "scripts": {
19
19
  "watch": "node esbuild.mjs --watch",
20
20
  "prettier-live": "test -z \"$(git status --untracked-files=no --porcelain || echo dirty)\" && npm install ../prettier-plugin-monkeyc && git commit -am 'prettier-plugin-monkeyc-live'",
21
+ "prettier-package": "npm install; npm install @markw65/prettier-plugin-monkeyc; git commit -am \"Update to $(npm list @markw65/prettier-plugin-monkeyc | sed -ne 's/^.*\\(@markw65\\/prettier-plugin-monkeyc\\)/\\1/p')\"",
21
22
  "build-debug": "node esbuild.mjs",
22
23
  "build-release": "node esbuild.mjs --release",
23
24
  "prepack": "node esbuild.mjs --release && mkdir -p bin && cp test/cft-font-info.js bin",
@@ -50,7 +51,7 @@
50
51
  "license": "MIT",
51
52
  "dependencies": {
52
53
  "@markw65/peggy-optimizer": "^1.0.1",
53
- "@markw65/prettier-plugin-monkeyc": "^1.0.53"
54
+ "@markw65/prettier-plugin-monkeyc": "^1.0.54"
54
55
  },
55
56
  "devDependencies": {
56
57
  "@types/chai": "^4.3.4",