mirror of
https://github.com/oven-sh/bun
synced 2026-02-09 18:38:55 +00:00
## Summary Fixes a crash (ENG-22243) where calling class constructors marked with `call: false` would create invalid instances instead of throwing an error. ## Root Cause When a class definition has `call: false` (like `Bun.RedisClient`), the code generator was still allowing the constructor to be invoked without `new`. This created invalid instances that caused a buffer overflow during garbage collection. ## The Fix Modified `src/codegen/generate-classes.ts` to properly check the `call` property: - When `call: false`: throws `TypeError: Class constructor X cannot be invoked without 'new'` - When `call: true`: behaves as before, allowing construction without `new` ## Test Plan - [x] Added regression test in `test/regression/issue/22243.test.ts` - [x] Test fails with system bun (has the bug) - [x] Test passes with fixed build - [x] Verified `Bun.RedisClient()` now throws proper error - [x] Verified `new Bun.RedisClient()` still works ## Before ```bash $ bun -e "Bun.RedisClient()" # Creates invalid instance, no error ``` ## After ```bash $ bun -e "Bun.RedisClient()" TypeError: Class constructor RedisClient cannot be invoked without 'new' ``` 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Bot <claude-bot@bun.sh> Co-authored-by: Claude <noreply@anthropic.com>
1.2 KiB
1.2 KiB