biomejs/biome · error
bogus members are not supported in {}
Error message
bogus members are not supported in {} What it means
This is emitted by lower_disposable_type_member in Biome's xtask global-types codegen. Only a computed method signature such as `[Symbol.dispose](): void` is supported inside the disposable interface declaration; any other member shape bails. A 'bogus member' is the parser's JsBogusMember node, meaning the declaration source contained a type member the parser could not parse into a known member kind.
Source
Thrown at xtask/codegen/src/generate_global_types/lower.rs:2296
/// Lowers the single member of a disposable interface. Only a computed method signature
/// (`[Symbol.dispose](): void`) is supported; every other member shape bails.
fn lower_disposable_type_member(
member: AnyTsTypeMember,
spec: DisposableGlobalSpec,
) -> Result<LoweredTypeMember> {
match member {
AnyTsTypeMember::TsMethodSignatureTypeMember(member) => {
lower_disposable_method_signature(&member, spec)
}
AnyTsTypeMember::TsPropertySignatureTypeMember(_) => {
bail!("properties are not supported in {}", spec.interface_name)
}
AnyTsTypeMember::TsCallSignatureTypeMember(_)
| AnyTsTypeMember::TsConstructSignatureTypeMember(_) => {
bail!("signatures are not supported in {}", spec.interface_name)
}
AnyTsTypeMember::JsBogusMember(_) => {
bail!("bogus members are not supported in {}", spec.interface_name)
}
AnyTsTypeMember::JsMetavariable(_) => {
bail!("metavariables are not supported in {}", spec.interface_name)
}
AnyTsTypeMember::TsGetterSignatureTypeMember(_) => {
bail!(
"getter signatures are not supported in {}",
spec.interface_name
)
}
AnyTsTypeMember::TsIndexSignatureTypeMember(_) => {
bail!(
"index signatures are not supported in {}",
spec.interface_name
)
}
AnyTsTypeMember::TsSetterSignatureTypeMember(_) => {
bail!(View on GitHub (pinned to 3835945f06)
Solutions
- Open the disposable-interface fixture at the file and line reported in the full error chain and fix or remove the unparseable member.
- Replace the bogus member with the exact supported shape: `[Symbol.dispose](): void` (or `[Symbol.asyncDispose](): Promise<void>` for the async spec).
- Re-run the codegen to confirm the bogus node is gone.
Example fix
// before (fixture)
interface Disposable {
[Symbol.dispose] void;
}
// after
interface Disposable {
[Symbol.dispose](): void;
} Defensive patterns
Strategy: validation
Validate before calling
// Validate the fixture parses cleanly before codegen; in the xtask pipeline the // parse diagnostics of the d.ts file are the check — ensure no bogus nodes: // cargo run -p xtask codegen 2>&1 | grep -i bogus
Prevention
- Never hand-edit interface fixture bodies without immediately running the codegen to confirm they parse.
- Resolve merge conflicts in fixture files completely; search for leftover conflict markers before codegen.
- Keep interface members minimal and limited to the supported `[Symbol.dispose](): void` shape.
When it happens
Trigger: Editing the disposable-interface .d.ts fixture (the file lowering Symbol.dispose/Symbol.asyncDispose globals) so the interface body contains syntactically invalid or unparseable member text, then running `cargo run -p xtask codegen`.
Common situations: A hand-edit to the declaration fixture leaves a typo or truncated member (e.g. `[Symbol.dispose] void;`), or a merge conflict marker / stray text is left inside the interface body, producing a bogus parse node.
Understand the failure class
Background: Schema validation failed / invalid input schema: payload rejected because its shape doesn't match the expected schema — this error's family across 28 libraries.
Related errors
- bogus members are not supported in the Error global
- metavariables are not supported in {}
- getter signatures are not supported in {}
- type aliases are not supported in PromiseConstructor
- value-side PromiseConstructor declarations are not supported
AI-assisted analysis of biomejs/biome@3835945f06 (2026-09-13).
Data as JSON: /api/errors/18ccf566cb65e7c7.
Report an issue: GitHub.