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

  1. Open the disposable-interface fixture at the file and line reported in the full error chain and fix or remove the unparseable member.
  2. Replace the bogus member with the exact supported shape: `[Symbol.dispose](): void` (or `[Symbol.asyncDispose](): Promise<void>` for the async spec).
  3. 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

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


AI-assisted analysis of biomejs/biome@3835945f06 (2026-09-13). Data as JSON: /api/errors/18ccf566cb65e7c7. Report an issue: GitHub.