biomejs/biome · error

getter signatures are not supported in {}

Error message

getter signatures are not supported in {}

What it means

Emitted by lower_disposable_type_member when a member of the disposable interface declaration is a getter signature. The lowering pipeline supports exactly one computed method signature (`[Symbol.dispose](): void`); getter signatures (e.g. `[Symbol.toStringTag]: getter` style members) are not modeled and cause the codegen to bail.

Source

Thrown at xtask/codegen/src/generate_global_types/lower.rs:2302

    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!(
                "setter signatures are not supported in {}",
                spec.interface_name
            )
        }
    }
}

View on GitHub (pinned to 3835945f06)

Solutions

  1. Rewrite the getter as the supported computed method signature: `[Symbol.dispose](): void` (no `get` keyword).
  2. Remove the getter member entirely if it is not the dispose/asyncDispose method the spec requires.
  3. Re-run `cargo run -p xtask codegen` to verify lowering succeeds.

Example fix

// before (fixture)
interface Disposable {
  get [Symbol.dispose](): () => void;
}
// after
interface Disposable {
  [Symbol.dispose](): void;
}
Defensive patterns

Strategy: validation

Validate before calling

// Before codegen, reject getter members in the disposable fixture:
//   grep -nE '\bget\b' disposable.d.ts
// The command must return no matches inside interface bodies.

Prevention

When it happens

Trigger: Adding a getter member like `get [Symbol.dispose]() { ... }` or a `get x(): T;` signature to the disposable-interface d.ts fixture, then running the xtask codegen.

Common situations: A contributor models a lazily-computed dispose helper as a getter in the declaration fixture, or copies a lib.esnext.disposable.d.ts-style declaration that uses a getter, without realizing the lowering only handles method signatures.

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/b3e5cfc2d2080e9a. Report an issue: GitHub.