cipherxof / wc3-ts-template

A template to code in TypeScript for Warcraft III maps.
MIT License
52 stars 14 forks source link

Trouble debugging transpiler crashes #8

Closed jejanim closed 3 years ago

jejanim commented 3 years ago

Thanks for this template, I had a great time getting my existing map to work in here and I really enjoy w3ts.

However, now I reached a point where one change I made rendered the build unstable and permanently crashes the transpiling process. I cannot find the source of the issue here and the output does not help me find it either despite using "sourceMapTraceback": true in tsconfig.json.

Is there any way I can find the statement / line / file that causes the transpiler to crash?

The feedback I get on the cli is the following by the way:

info: Transpiling TypeScript to Lua...
Error: Debug Failure. Branch in 'resolveSignature' should be unreachable. SyntaxKind: ParenthesizedExpression
    at resolveSignature (C:\Users\user\projects\shatter-td\node_modules\typescript-to-lua\node_modules\typescript\lib\typescript.js:59155:28)
    at getResolvedSignature (C:\Users\user\projects\shatter-td\node_modules\typescript-to-lua\node_modules\typescript\lib\typescript.js:59175:26)
    at getResolvedSignatureWorker (C:\Users\user\projects\shatter-td\node_modules\typescript-to-lua\node_modules\typescript\lib\typescript.js:35416:30)
dules\typescript\lib\typescript.js:75101:46)
    at visitor (C:\Users\user\projects\shatter-td\node_modules\war3-transformer\dist\transformer.js:110:23)
    at visitNode (C:\Users\user\projects\shatter-td\node_modules\war3-transformer\node_modules\typescript\lib\typescript.js:74798:23)
C:\Users\user\projects\shatter-td\node_modules\typescript-to-lua\node_modules\typescript\lib\typescript.js:100920
                throw e;
                ^

Error: Debug Failure. Branch in 'resolveSignature' should be unreachable. SyntaxKind: ParenthesizedExpression
    at resolveSignature (C:\Users\user\projects\shatter-td\node_modules\typescript-to-lua\node_modules\typescript\lib\typescript.js:59155:28)
    at getResolvedSignature (C:\Users\user\projects\shatter-td\node_modules\typescript-to-lua\node_modules\typescript\lib\typescript.js:59175:26)
    at getResolvedSignatureWorker (C:\Users\user\projects\shatter-td\node_modules\typescript-to-lua\node_modules\typescript\lib\typescript.js:35416:30)
    at Object.getResolvedSignature (C:\Users\user\projects\shatter-td\node_modules\typescript-to-lua\node_modules\typescript\lib\typescript.js:35276:24)
    at processNode (C:\Users\user\projects\shatter-td\node_modules\war3-transformer\dist\transformer.js:63:37)
    at visitor (C:\Users\user\projects\shatter-td\node_modules\war3-transformer\dist\transformer.js:106:27)
    at visitNode (C:\Users\user\projects\shatter-td\node_modules\war3-transformer\node_modules\typescript\lib\typescript.js:74798:23)
    at Object.visitEachChild (C:\Users\user\projects\shatter-td\node_modules\war3-transformer\node_modules\typescript\lib\typescript.js:75101:46)
    at visitor (C:\Users\user\projects\shatter-td\node_modules\war3-transformer\dist\transformer.js:110:23)
    at visitNode (C:\Users\user\projects\shatter-td\node_modules\war3-transformer\node_modules\typescript\lib\typescript.js:74798:23)
Error: Command failed: tstl -p tsconfig.json
    at checkExecSyncError (child_process.js:630:11)
    at Object.execSync (child_process.js:666:15)
    at Object.compileMap (C:\Users\user\projects\shatter-td\scripts\utils.ts:106:3)
    at main (C:\Users\user\projects\shatter-td\scripts\test.ts:6:18)
    at Object.<anonymous> (C:\Users\user\projects\shatter-td\scripts\test.ts:25:1)
    at Module._compile (internal/modules/cjs/loader.js:1137:30)
    at Module.m._compile (C:\Users\user\projects\shatter-td\node_modules\ts-node\src\index.ts:858:23)
    at Module._extensions..js (internal/modules/cjs/loader.js:1157:10)
    at Object.require.extensions.<computed> [as .ts] (C:\Users\user\projects\shatter-td\node_modules\ts-node\src\index.ts:861:12)    at Module.load (internal/modules/cjs/loader.js:985:32)
cipherxof commented 3 years ago

It looks like there's some issue with war3-transformer. Do you have your code available publicly somewhere?

If not, you might be able to find which file is causing the error by adding a debug line which prints the current file to https://github.com/cipherxof/war3-transformer/blob/master/dist/transformer.js#L110

If you do figure it out please let me know.

jejanim commented 3 years ago

I did not push it yet, so that's a no for question one.

I will try to pin down the issue and keep you updated, thanks for the hint with the transformer.


Update: I pinned it down to the following file by inserting the logs: node_modules/w3ts/hooks/index.ts. However, that seems unlikely as that file did not change 🤔

Logs ``` [2020-09-19 08:54:08] info: Transpiling TypeScript to Lua... FileName: C:/Users/user/projects/warcraft 3/shatter-td/node_modules/w3ts/handles/handle.ts FileName: C:/Users/user/projects/warcraft 3/shatter-td/node_modules/w3ts/handles/point.ts FileName: C:/Users/user/projects/warcraft 3/shatter-td/node_modules/w3ts/handles/camera.ts FileName: C:/Users/user/projects/warcraft 3/shatter-td/node_modules/w3ts/handles/widget.ts FileName: C:/Users/user/projects/warcraft 3/shatter-td/node_modules/w3ts/handles/destructable.ts FileName: C:/Users/user/projects/warcraft 3/shatter-td/node_modules/w3ts/handles/force.ts FileName: C:/Users/user/projects/warcraft 3/shatter-td/node_modules/w3ts/handles/player.ts FileName: C:/Users/user/projects/warcraft 3/shatter-td/node_modules/w3ts/handles/dialog.ts FileName: C:/Users/user/projects/warcraft 3/shatter-td/node_modules/w3ts/handles/effect.ts FileName: C:/Users/user/projects/warcraft 3/shatter-td/node_modules/w3ts/handles/rect.ts FileName: C:/Users/user/projects/warcraft 3/shatter-td/node_modules/w3ts/handles/fogmodifier.ts FileName: C:/Users/user/projects/warcraft 3/shatter-td/node_modules/w3ts/handles/frame.ts FileName: C:/Users/user/projects/warcraft 3/shatter-td/node_modules/w3ts/handles/gamecache.ts FileName: C:/Users/user/projects/warcraft 3/shatter-td/node_modules/w3ts/handles/item.ts FileName: C:/Users/user/projects/warcraft 3/shatter-td/node_modules/w3ts/handles/sound.ts FileName: C:/Users/user/projects/warcraft 3/shatter-td/node_modules/w3ts/handles/unit.ts FileName: C:/Users/user/projects/warcraft 3/shatter-td/node_modules/w3ts/handles/group.ts FileName: C:/Users/user/projects/warcraft 3/shatter-td/node_modules/w3ts/handles/image.ts FileName: C:/Users/user/projects/warcraft 3/shatter-td/node_modules/w3ts/handles/leaderboard.ts FileName: C:/Users/user/projects/warcraft 3/shatter-td/node_modules/w3ts/handles/quest.ts FileName: C:/Users/user/projects/warcraft 3/shatter-td/node_modules/w3ts/handles/region.ts FileName: C:/Users/user/projects/warcraft 3/shatter-td/node_modules/w3ts/handles/timer.ts FileName: C:/Users/user/projects/warcraft 3/shatter-td/node_modules/w3ts/handles/timerdialog.ts FileName: C:/Users/user/projects/warcraft 3/shatter-td/node_modules/w3ts/handles/trigger.ts FileName: C:/Users/user/projects/warcraft 3/shatter-td/node_modules/w3ts/handles/ubersplat.ts FileName: C:/Users/user/projects/warcraft 3/shatter-td/node_modules/w3ts/handles/index.ts FileName: C:/Users/user/projects/warcraft 3/shatter-td/node_modules/w3ts/hooks/index.ts Error: Debug Failure. Branch in 'resolveSignature' should be unreachable. SyntaxKind: ParenthesizedExpression at resolveSignature (G:\nextcloud\projects\warcraft 3\shatter-td\node_modules\typescript-to-lua\node_modules\typescript\lib\typescript.js:59155:28) at getResolvedSignature (G:\nextcloud\projects\warcraft 3\shatter-td\node_modules\typescript-to-lua\node_modules\typescript\lib\typescript.js:59175:26) at getResolvedSignatureWorker (G:\nextcloud\projects\warcraft 3\shatter-td\node_modules\typescript-to-lua\node_modules\typescript\lib\typescript.js:35416:30) at Object.getResolvedSignature (G:\nextcloud\projects\warcraft 3\shatter-td\node_modules\typescript-to-lua\node_modules\typescript\lib\typescript.js:35276:24) at processNode (G:\nextcloud\projects\warcraft 3\shatter-td\node_modules\war3-transformer\dist\transformer.js:63:37) at visitor (G:\nextcloud\projects\warcraft 3\shatter-td\node_modules\war3-transformer\dist\transformer.js:106:27) at visitNode (G:\nextcloud\projects\warcraft 3\shatter-td\node_modules\war3-transformer\node_modules\typescript\lib\typescript.js:74798:23) at Object.visitEachChild (G:\nextcloud\projects\warcraft 3\shatter-td\node_modules\war3-transformer\node_modules\typescript\lib\typescript.js:75101:46) at visitor (G:\nextcloud\projects\warcraft 3\shatter-td\node_modules\war3-transformer\dist\transformer.js:110:23) at visitNode (G:\nextcloud\projects\warcraft 3\shatter-td\node_modules\war3-transformer\node_modules\typescript\lib\typescript.js:74798:23) G:\nextcloud\projects\warcraft 3\shatter-td\node_modules\typescript-to-lua\node_modules\typescript\lib\typescript.js:100920 throw e; ^ ```

The code is available here: https://github.com/jejanim/shatter-td/tree/typescript2

jejanim commented 3 years ago

I found the issue to be related to the new typescript version: war3-transformer uses 3.8.3 while I used 4.0.3 Downgrading did fix it. 😄

The one thing that brought me to this was that this log here was the last thing that happened:

file: transformer.js (package war3-transformer)

function runTransformer(program) {
    var checker = program.getTypeChecker();
    function processNode(node, file) {
        if (utils.isCallExpression(node)) {
            console.log('getting signature of node in file: ' + file.fileName) // <---
            var signature = checker.getResolvedSignature(node);