babel
babel copied to clipboard
[Bug]: do-expressions plugin throws "Couldn't find a Program" in Babel 8
💻
- [ ] Would you like to work on a fix?
How are you using Babel?
Programmatic API (babel.transform
, babel.parse
)
Input code
async () => do {
await 0
while (0) {}
0
}
Configuration file name
babel.config.json
Configuration
{
"plugins": [
[
"@babel/plugin-proposal-do-expressions"
]
]
}
Current and expected behavior
transformAsync
when called with the code above throws a "Couldn't find a Program" error.
Stack trace
.../node_modules/@babel/traverse/lib/index.js:1362
throw new Error("Couldn't find a Program");
^
Error: unknown file: Couldn't find a Program
at Scope.getProgramParent (.../node_modules/@babel/traverse/lib/index.js:1362:11)
at Scope.crawl (.../node_modules/@babel/traverse/lib/index.js:1274:32)
at Scope.init (.../node_modules/@babel/traverse/lib/index.js:1264:12)
at NodePath.setScope (.../node_modules/@babel/traverse/lib/index.js:3652:15)
at NodePath.setContext (.../node_modules/@babel/traverse/lib/index.js:3664:8)
at NodePath.popContext (.../node_modules/@babel/traverse/lib/index.js:3716:10)
at TraversalContext.visitQueue (.../node_modules/@babel/traverse/lib/index.js:4876:12)
at TraversalContext.visitMultiple (.../node_modules/@babel/traverse/lib/index.js:4839:17)
at TraversalContext.visit (.../node_modules/@babel/traverse/lib/index.js:4885:19)
at traverseNode (.../node_modules/@babel/traverse/lib/index.js:4905:17)
at traverse (.../node_modules/@babel/traverse/lib/index.js:4942:3)
at traverse.hasType (.../node_modules/@babel/traverse/lib/index.js:4974:3)
at NodePath.replaceExpressionWithStatements (.../node_modules/@babel/traverse/lib/index.js:2297:57)
at PluginPass.exit (.../node_modules/@babel/plugin-proposal-do-expressions/lib/index.js:20:18)
at newFn (.../node_modules/@babel/traverse/lib/index.js:354:14)
at NodePath._call (.../node_modules/@babel/traverse/lib/index.js:3582:20)
at NodePath.call (.../node_modules/@babel/traverse/lib/index.js:3572:17)
at NodePath.visit (.../node_modules/@babel/traverse/lib/index.js:3624:8)
at TraversalContext.visitQueue (.../node_modules/@babel/traverse/lib/index.js:4864:16)
at TraversalContext.visitSingle (.../node_modules/@babel/traverse/lib/index.js:4843:19)
at TraversalContext.visit (.../node_modules/@babel/traverse/lib/index.js:4887:19)
at traverseNode (.../node_modules/@babel/traverse/lib/index.js:4905:17)
at NodePath.visit (.../node_modules/@babel/traverse/lib/index.js:3622:21)
at TraversalContext.visitQueue (.../node_modules/@babel/traverse/lib/index.js:4864:16)
at TraversalContext.visitSingle (.../node_modules/@babel/traverse/lib/index.js:4843:19)
at TraversalContext.visit (.../node_modules/@babel/traverse/lib/index.js:4887:19)
at traverseNode (.../node_modules/@babel/traverse/lib/index.js:4905:17)
at NodePath.visit (.../node_modules/@babel/traverse/lib/index.js:3622:21)
at TraversalContext.visitQueue (.../node_modules/@babel/traverse/lib/index.js:4864:16)
at TraversalContext.visitMultiple (.../node_modules/@babel/traverse/lib/index.js:4839:17)
at TraversalContext.visit (.../node_modules/@babel/traverse/lib/index.js:4885:19)
at traverseNode (.../node_modules/@babel/traverse/lib/index.js:4905:17)
at NodePath.visit (.../node_modules/@babel/traverse/lib/index.js:3622:21)
at TraversalContext.visitQueue (.../node_modules/@babel/traverse/lib/index.js:4864:16)
at traverseNode (.../node_modules/@babel/traverse/lib/index.js:4901:20)
at traverse (.../node_modules/@babel/traverse/lib/index.js:4942:3)
at transformFile (.../node_modules/@babel/core/lib/transformation/index.js:68:7)
at transformFile.next (<anonymous>)
at run (.../node_modules/@babel/core/lib/transformation/index.js:12:12)
at run.next (<anonymous>)
at transform (.../node_modules/@babel/core/lib/transform.js:8:17)
at transform.next (<anonymous>)
at step (.../node_modules/gensync/index.js:261:32)
at .../node_modules/gensync/index.js:273:13
at async.call.result.err.err (.../node_modules/gensync/index.js:223:11)
at .../node_modules/gensync/index.js:189:28
at .../node_modules/@babel/core/lib/gensync-utils/async.js:42:7
at .../node_modules/gensync/index.js:113:33
at step (.../node_modules/gensync/index.js:287:14)
at .../node_modules/gensync/index.js:273:13
at async.call.result.err.err (.../node_modules/gensync/index.js:223:11) {
code: 'BABEL_TRANSFORM_ERROR'
}
Node.js v21.6.2
The error does not occur in Babel 7.
Environment
System:
OS: macOS 14.1.1
Binaries:
Node: 21.6.2 - /opt/homebrew/bin/node
npm: 10.4.0 - /opt/homebrew/bin/npm
npmPackages:
@babel/core: 8.0.0-alpha.6 => 8.0.0-alpha.6
@babel/plugin-proposal-do-expressions: 8.0.0-alpha.6 => 8.0.0-alpha.6
Possible solution
No response
Additional context
No response
Hey @0f-0b! We really appreciate you taking the time to report an issue. The collaborators on this project attempt to help as many people as possible, but we're a limited number of volunteers, so it's possible this won't be addressed swiftly.
If you need any help, or just have general Babel or JavaScript questions, we have a vibrant Slack community that typically always has someone willing to help. You can sign-up here for an invite.
Thanks for testing Babel 8 :)