markw65 / monkeyc-optimizer

Utilities for optimizing monkeyc projects
8 stars 0 forks source link

Error: Got exception `Unexpected enum initializer' #20

Closed flocsy closed 6 months ago

flocsy commented 6 months ago

Starting optimization step... ERROR: Internal: Error: Got exception Unexpected enum initializer' while processing node $:EnumStringBody from key_hint.mc:43:60 Error: Got exceptionUnexpected enum initializer' while processing node $:EnumStringBody from key_hint.mc:43:60 at .vscode/extensions/markw65.prettier-extension-monkeyc-2.0.81/node_modules/@markw65/monkeyc-optimizer/build/chunk-HKWBVOEL.cjs:18709:27 at Array.forEach () at .vscode/extensions/markw65.prettier-extension-monkeyc-2.0.81/node_modules/@markw65/monkeyc-optimizer/build/chunk-HKWBVOEL.cjs:18682:30 at traverseAst (.vscode/extensions/markw65.prettier-extension-monkeyc-2.0.81/node_modules/@markw65/monkeyc-optimizer/build/chunk-MBTLUWXR.cjs:46:24) at traverseAst (.vscode/extensions/markw65.prettier-extension-monkeyc-2.0.81/node_modules/@markw65/monkeyc-optimizer/build/chunk-MBTLUWXR.cjs:84:18) at .vscode/extensions/markw65.prettier-extension-monkeyc-2.0.81/node_modules/@markw65/monkeyc-optimizer/build/chunk-MBTLUWXR.cjs:61:26 at Array.reduce () at traverseAst (.vscode/extensions/markw65.prettier-extension-monkeyc-2.0.81/node_modules/@markw65/monkeyc-optimizer/build/chunk-MBTLUWXR.cjs:58:32) at Object.traverse (.vscode/extensions/markw65.prettier-extension-monkeyc-2.0.81/node_modules/@markw65/monkeyc-optimizer/build/chunk-HKWBVOEL.cjs:18456:52) at collectNamespaces (.vscode/extensions/markw65.prettier-extension-monkeyc-2.0.81/node_modules/@markw65/monkeyc-optimizer/build/chunk-HKWBVOEL.cjs:18825:9) at .vscode/extensions/markw65.prettier-extension-monkeyc-2.0.81/node_modules/@markw65/monkeyc-optimizer/build/chunk-HKWBVOEL.cjs:16383:5 at Array.forEach () at analyze (.vscode/extensions/markw65.prettier-extension-monkeyc-2.0.81/node_modules/@markw65/monkeyc-optimizer/build/chunk-HKWBVOEL.cjs:16377:25) at async optimizeMonkeyCHelper (.vscode/extensions/markw65.prettier-extension-monkeyc-2.0.81/node_modules/@markw65/monkeyc-optimizer/build/chunk-HKWBVOEL.cjs:16559:17) at async Promise.all (index 3) at async generateOptimizedProject (.vscode/extensions/markw65.prettier-extension-monkeyc-2.0.81/node_modules/@markw65/monkeyc-optimizer/build/chunk-HKWBVOEL.cjs:28410:5) at async buildOptimizedProject (.vscode/extensions/markw65.prettier-extension-monkeyc-2.0.81/node_modules/@markw65/monkeyc-optimizer/build/chunk-HKWBVOEL.cjs:28071:59)

Code:

enum KeyHint {
    KEY_HINT_ENTER        = 1<<0,
    KEY_HINT_ESC          = 1<<1,
    KEY_HINT_MENU         = 1<<2,
    KEY_HINT_UP           = 1<<3,
    KEY_HINT_DOWN         = 1<<4,
    KEY_HINT_LAP          = 1<<5,
    KEY_HINT_START        = 1<<6,
    KEY_HINT_CLOCK        = 1<<7,

    KEY_HINT_ONSELECT     = 1<<8,
    KEY_HINT_ONBACK       = 1<<9,
    KEY_HINT_ONMENU       = 1<<10,
    KEY_HINT_PREVIOUSPAGE = 1<<11,
    KEY_HINT_NEXTPAGE     = 1<<12,
}
markw65 commented 6 months ago

Interesting! When I started writing the optimizer, Garmin's compiler didn't accept expressions here. This is from 4.0.9:

ERROR: edge1030plus: bug.mc:2: Attempting to initialize enum constant 'KEY_HINT_ENTER' with an expression.

And I guess I never noticed that they started accepting them. Will fix.

markw65 commented 6 months ago

Fixed by 9a4b7364595bd640af6c39ffd225f045695a0c8c