@markw65/monkeyc-optimizer 1.1.38 → 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,14 @@
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
+
5
13
  ### 1.1.38
6
14
 
7
15
  - Fix a bug introduced in 1.1.37 that could lead to duplicate diagnostics, and diagnostics with strange contents.
package/build/api.cjs CHANGED
@@ -18,47 +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_IMIM4BE2.checkCompilerVersion,
22
- collectNamespaces: () => import_chunk_IMIM4BE2.collectNamespaces,
23
- createDocumentationMap: () => import_chunk_IMIM4BE2.createDocumentationMap,
24
- diagnostic: () => import_chunk_IMIM4BE2.diagnostic,
25
- diagnosticHelper: () => import_chunk_IMIM4BE2.diagnosticHelper,
26
- findNamesInScope: () => import_chunk_IMIM4BE2.findNamesInScope,
27
- findUsingForNode: () => import_chunk_IMIM4BE2.findUsingForNode,
28
- formatAst: () => import_chunk_IMIM4BE2.formatAst,
29
- formatAstLongLines: () => import_chunk_IMIM4BE2.formatAstLongLines,
30
- formatScopedName: () => import_chunk_IMIM4BE2.formatScopedName,
31
- getApiFunctionInfo: () => import_chunk_IMIM4BE2.getApiFunctionInfo,
32
- getApiMapping: () => import_chunk_IMIM4BE2.getApiMapping,
33
- getSuperClasses: () => import_chunk_IMIM4BE2.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_IMIM4BE2.isClassVariable,
36
- isLocal: () => import_chunk_IMIM4BE2.isLocal,
37
- isLookupCandidate: () => import_chunk_IMIM4BE2.isLookupCandidate,
38
- isStateNode: () => import_chunk_IMIM4BE2.isStateNode,
39
- lookupByFullName: () => import_chunk_IMIM4BE2.lookupByFullName,
40
- lookupNext: () => import_chunk_IMIM4BE2.lookupNext,
41
- lookupResultContains: () => import_chunk_IMIM4BE2.lookupResultContains,
42
- lookupWithType: () => import_chunk_IMIM4BE2.lookupWithType,
43
- makeToyboxLink: () => import_chunk_IMIM4BE2.makeToyboxLink,
44
- mapVarDeclsByType: () => import_chunk_IMIM4BE2.mapVarDeclsByType,
45
- markInvokeClassMethod: () => import_chunk_IMIM4BE2.markInvokeClassMethod,
46
- parseSdkVersion: () => import_chunk_IMIM4BE2.parseSdkVersion,
47
- resolveDiagnostics: () => import_chunk_IMIM4BE2.resolveDiagnostics,
48
- resolveDiagnosticsMap: () => import_chunk_IMIM4BE2.resolveDiagnosticsMap,
49
- sameLookupResult: () => import_chunk_IMIM4BE2.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,
50
50
  traverseAst: () => import_chunk_MBTLUWXR.traverseAst,
51
- variableDeclarationName: () => import_chunk_IMIM4BE2.variableDeclarationName,
52
- visitReferences: () => import_chunk_IMIM4BE2.visitReferences,
53
- visit_resources: () => import_chunk_IMIM4BE2.visit_resources,
54
- visitorNode: () => import_chunk_IMIM4BE2.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
55
55
  });
56
56
  module.exports = __toCommonJS(api_exports);
57
- var import_chunk_IMIM4BE2 = require("./chunk-IMIM4BE2.cjs");
57
+ var import_chunk_3H4GE7RU = require("./chunk-3H4GE7RU.cjs");
58
58
  var import_chunk_SG7ODKRM = require("./chunk-SG7ODKRM.cjs");
59
59
  var import_chunk_MBTLUWXR = require("./chunk-MBTLUWXR.cjs");
60
60
  var import_chunk_ABYVSU2C = require("./chunk-ABYVSU2C.cjs");
61
- (0, import_chunk_IMIM4BE2.init_api)();
61
+ (0, import_chunk_3H4GE7RU.init_api)();
62
62
  // Annotate the CommonJS export names for ESM import in node:
63
63
  0 && (module.exports = {
64
64
  checkCompilerVersion,
@@ -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_IMIM4BE2_exports = {};
30
- __export(chunk_IMIM4BE2_exports, {
29
+ var chunk_3H4GE7RU_exports = {};
30
+ __export(chunk_3H4GE7RU_exports, {
31
31
  EnumTagsConst: () => EnumTagsConst,
32
32
  LastTypeTag: () => LastTypeTag,
33
33
  ObjectLikeTagsConst: () => ObjectLikeTagsConst,
@@ -130,7 +130,7 @@ __export(chunk_IMIM4BE2_exports, {
130
130
  visitorNode: () => visitorNode,
131
131
  xml_util_exports: () => xml_util_exports
132
132
  });
133
- module.exports = __toCommonJS(chunk_IMIM4BE2_exports);
133
+ module.exports = __toCommonJS(chunk_3H4GE7RU_exports);
134
134
  var import_chunk_SG7ODKRM = require("./chunk-SG7ODKRM.cjs");
135
135
  var import_chunk_MBTLUWXR = require("./chunk-MBTLUWXR.cjs");
136
136
  var import_chunk_ABYVSU2C = require("./chunk-ABYVSU2C.cjs");
@@ -11077,6 +11077,24 @@ function typeFromSingleTypeSpec(state, type, stack) {
11077
11077
  type = { type: "TypeSpecPart", name: type };
11078
11078
  }
11079
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
+ }
11080
11098
  case "ObjectExpression": {
11081
11099
  const fields = /* @__PURE__ */ new Map();
11082
11100
  type.properties.forEach((property) => {
@@ -28093,7 +28111,7 @@ async function generateOneConfig(buildConfig, manifestXML, dependencyFiles, conf
28093
28111
  const opt_time = await (0, import_chunk_SG7ODKRM.first_modified)(
28094
28112
  Object.values(fnMap).map((v) => v.output)
28095
28113
  );
28096
- if (source_time < opt_time && 1695857383506 < opt_time) {
28114
+ if (source_time < opt_time && 1706308945548 < opt_time) {
28097
28115
  return {
28098
28116
  hasTests,
28099
28117
  diagnostics: prevDiagnostics,
@@ -28132,7 +28150,7 @@ async function generateOneConfig(buildConfig, manifestXML, dependencyFiles, conf
28132
28150
  hasTests: hasTests2,
28133
28151
  diagnostics,
28134
28152
  sdkVersion,
28135
- optimizerVersion: "1.1.38",
28153
+ optimizerVersion: "1.1.39",
28136
28154
  ...Object.fromEntries(
28137
28155
  configOptionsToCheck.map((option) => [option, config[option]])
28138
28156
  )
@@ -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_IMIM4BE2.StateNodeAttributes,
22
- buildOptimizedProject: () => import_chunk_IMIM4BE2.buildOptimizedProject,
21
+ StateNodeAttributes: () => import_chunk_3H4GE7RU.StateNodeAttributes,
22
+ buildOptimizedProject: () => import_chunk_3H4GE7RU.buildOptimizedProject,
23
23
  copyRecursiveAsNeeded: () => import_chunk_SG7ODKRM.copyRecursiveAsNeeded,
24
- defaultConfig: () => import_chunk_IMIM4BE2.defaultConfig,
25
- display: () => import_chunk_IMIM4BE2.display,
26
- generateOneConfig: () => import_chunk_IMIM4BE2.generateOneConfig,
27
- generateOptimizedProject: () => import_chunk_IMIM4BE2.generateOptimizedProject,
28
- getConfig: () => import_chunk_IMIM4BE2.getConfig,
29
- getProjectAnalysis: () => import_chunk_IMIM4BE2.getProjectAnalysis,
30
- get_jungle: () => import_chunk_IMIM4BE2.get_jungle,
31
- isErrorWithLocation: () => import_chunk_IMIM4BE2.isErrorWithLocation,
32
- launchSimulator: () => import_chunk_IMIM4BE2.launchSimulator,
33
- manifestProducts: () => import_chunk_IMIM4BE2.manifestProducts,
34
- mctree: () => import_chunk_IMIM4BE2.mctree,
35
- simulateProgram: () => import_chunk_IMIM4BE2.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_IMIM4BE2 = require("./chunk-IMIM4BE2.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_IMIM4BE2.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_IMIM4BE2.SectionKinds,
22
- appSupport: () => import_chunk_IMIM4BE2.appSupport,
23
- connectiq: () => import_chunk_IMIM4BE2.connectiq,
24
- getDeviceInfo: () => import_chunk_IMIM4BE2.getDeviceInfo,
25
- getFunctionDocumentation: () => import_chunk_IMIM4BE2.getFunctionDocumentation,
26
- getLanguages: () => import_chunk_IMIM4BE2.getLanguages,
27
- getSdkPath: () => import_chunk_IMIM4BE2.getSdkPath,
28
- isWin: () => import_chunk_IMIM4BE2.isWin,
29
- optimizeProgram: () => import_chunk_IMIM4BE2.optimizeProgram,
30
- readPrg: () => import_chunk_IMIM4BE2.readPrg,
31
- readPrgWithOffsets: () => import_chunk_IMIM4BE2.readPrgWithOffsets,
32
- xmlUtil: () => import_chunk_IMIM4BE2.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_IMIM4BE2 = require("./chunk-IMIM4BE2.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_IMIM4BE2.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,
@@ -193,7 +193,7 @@ export declare function typeFromTypeStateNodes(state: ProgramStateAnalysis, sns:
193
193
  export declare function objectLiteralKeyFromExpr(key: mctree.Expression): string | null;
194
194
  export declare function objectLiteralKeyFromType(key: ExactOrUnion): string | null;
195
195
  export declare function typeFromObjectLiteralKey(key: string): ValueTypes;
196
- 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;
197
197
  export declare function typeFromTypespec(state: ProgramStateAnalysis, ts: mctree.TypeSpecList, stack?: ProgramStateStack | undefined): ExactOrUnion;
198
198
  export declare function typeFromLiteral(literal: mctree.Literal): ExactTypes;
199
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_IMIM4BE2 = require("./chunk-IMIM4BE2.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_IMIM4BE2.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_IMIM4BE2.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.38",
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",