microsoft / TypeScript

TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
https://www.typescriptlang.org
Apache License 2.0
101.26k stars 12.52k forks source link

getSpecifierForModuleSymbol failing in 5.5 rc #58819

Closed turadg closed 5 months ago

turadg commented 5 months ago

πŸ”Ž Search Terms

getSpecifierForModuleSymbol, Debug Failure, False expression,

πŸ•— Version & Regression Information

⏯ Playground Link

https://github.com/Agoric/agoric-sdk/actions/runs/9440222557/job/25999288161?pr=9476

πŸ’» Code

My only repro is half-way through the build of a large repo, so I don't think I can isolate it to a code snippet.

https://github.com/Agoric/agoric-sdk/pull/9476 changed the typescript from,

- typescript@^5.5.0-beta
-   version "5.5.0-dev.20240426"
-  resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.0-dev.20240426.tgz#e9ba7d0b3cdaa54021faca61d1bc399e4766c93b"
-  integrity sha512-96cu+y3DrjSNhNSgB3t3nRiesCwBVjZpbjJ6DcQoCgt0crXXPrOMmJQH/E8TZ41U4JzaULD+cB1Z2owh5HANew==
+ typescript@^5.5.1-rc:
+   version "5.5.1-rc"
+   resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.1-rc.tgz#4be420f1ecb5e66c52a7cb11444f06f02294c977"
+   integrity sha512-7cbqBhh2QH0RaI7AD0ElJ2Ww/iRdW1w2wH/S2dv6EbdNQQlv39fx+V5VOepxLgfUvRkU5D5pxzgPuvHSAQOdpQ==

A CI job builds each package topologically.

πŸ™ Actual behavior

The job started failing with:

Error: Debug Failure. False expression.
    at first (/home/runner/work/agoric-sdk/agoric-sdk/node_modules/typescript/lib/tsc.js:605:9)
    at getSpecifierForModuleSymbol (/home/runner/work/agoric-sdk/agoric-sdk/node_modules/typescript/lib/tsc.js:50904:21)
    at rewriteModuleSpecifier (/home/runner/work/agoric-sdk/agoric-sdk/node_modules/typescript/lib/tsc.js:51977:22)
    at visitExistingNodeTreeSymbolsWorker (/home/runner/work/agoric-sdk/agoric-sdk/node_modules/typescript/lib/tsc.js:51827:58)
    at visitExistingNodeTreeSymbols (/home/runner/work/agoric-sdk/agoric-sdk/node_modules/typescript/lib/tsc.js:51535:24)
    at visitArrayWorker (/home/runner/work/agoric-sdk/agoric-sdk/node_modules/typescript/lib/tsc.js:87695:49)
    at visitNodes2 (/home/runner/work/agoric-sdk/agoric-sdk/node_modules/typescript/lib/tsc.js:87666:19)
    at tryVisitTypeReference (/home/runner/work/agoric-sdk/agoric-sdk/node_modules/typescript/lib/tsc.js:51672:33)
    at visitExistingNodeTreeSymbolsWorker (/home/runner/work/agoric-sdk/agoric-sdk/node_modules/typescript/lib/tsc.js:51811:26)
    at visitExistingNodeTreeSymbols (/home/runner/work/agoric-sdk/agoric-sdk/node_modules/typescript/lib/tsc.js:51535:24)

In the debugger I see that it happens while looking for escapedName: 'globalThis' in the context of this file.

πŸ™‚ Expected behavior

Continues to build like the beta and past releases.

Additional information about the issue

Our repo makes use of a hack to make types available both ambiently and by explicit imports. https://github.com/Agoric/agoric-sdk/blob/e7b0cebd17f093793e93f4f236921cb4a3f595b8/packages/internal/exported.d.ts#L17-L29

The motivation for this is in transitioning from ambient types to define exportable types and retain backwards compatibility with consumers expecting ambients.

andrewbranch commented 5 months ago

@turadg are you able to reproduce this locally? I’m hitting something else first when I try. Here’s what I’ve got:

gh pr checkout 9476
yarn
yarn lerna run --reject-cycles --concurrency 1 prepack

...

lerna ERR! npm run prepack exited 1 in '@agoric/zoe'
lerna ERR! npm run prepack stdout:

> @agoric/zoe@0.26.2 prepack
> tsc --build tsconfig.build.json

tools/fakeVatAdmin.js(13,23): error TS2307: Cannot find module '../bundles/bundle-contractFacet.js' or its corresponding type declarations.
lerna ERR! npm run prepack stderr:
npm ERR! Lifecycle script `prepack` failed with error:
npm ERR! Error: command failed
npm ERR!   in workspace: @agoric/zoe@0.26.2
npm ERR!   at location: /Users/andrew/Developer/microsoft/eg/agoric-sdk/packages/zoe
lerna ERR! npm run prepack exited 1 in '@agoric/zoe'
turadg commented 5 months ago

@andrewbranch a yarn build makes the bundles.

I just slimmed https://github.com/Agoric/agoric-sdk/pull/9476 to one commit adopting TS 5.5 rc1 then rebased on master. Here's my local repro,

git checkout ta/typescript-5.5
git clean -dfx
yarn install
yarn build
yarn lerna run --reject-cycles --concurrency 1 prepack

ends with,

> @agoric/inter-protocol@0.16.1 prepack
> tsc --build tsconfig.build.json

lerna ERR! npm run prepack stderr:
/opt/agoric/agoric-sdk/node_modules/typescript/lib/tsc.js:120157
      throw e;
      ^

Error: Debug Failure. False expression.
    at first (/opt/agoric/agoric-sdk/node_modules/typescript/lib/tsc.js:605:9)
    at getSpecifierForModuleSymbol (/opt/agoric/agoric-sdk/node_modules/typescript/lib/tsc.js:50904:21)
    at rewriteModuleSpecifier (/opt/agoric/agoric-sdk/node_modules/typescript/lib/tsc.js:51977:22)
    at visitExistingNodeTreeSymbolsWorker (/opt/agoric/agoric-sdk/node_modules/typescript/lib/tsc.js:51827:58)
    at visitExistingNodeTreeSymbols (/opt/agoric/agoric-sdk/node_modules/typescript/lib/tsc.js:51535:24)
    at visitArrayWorker (/opt/agoric/agoric-sdk/node_modules/typescript/lib/tsc.js:87695:49)
    at visitNodes2 (/opt/agoric/agoric-sdk/node_modules/typescript/lib/tsc.js:87666:19)
    at tryVisitTypeReference (/opt/agoric/agoric-sdk/node_modules/typescript/lib/tsc.js:51672:33)
    at visitExistingNodeTreeSymbolsWorker (/opt/agoric/agoric-sdk/node_modules/typescript/lib/tsc.js:51811:26)
    at visitExistingNodeTreeSymbols (/opt/agoric/agoric-sdk/node_modules/typescript/lib/tsc.js:51535:24)
hossain666 commented 5 months ago

[]()