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
- Rewrite the getter as the supported computed method signature: `[Symbol.dispose](): void` (no `get` keyword).
- Remove the getter member entirely if it is not the dispose/asyncDispose method the spec requires.
- 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
- Model dispose helpers as computed method signatures, not getters, in global fixtures.
- Consult the lowering spec (lower_disposable_type_member) before adding new member kinds; extend the match arm deliberately if a new shape is genuinely needed.
- Run the codegen immediately after any fixture change.
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
- declare var Promise is missing a type annotation
- Promise global must include declare var Promise
- bogus members are not supported in {}
- metavariables are not supported in {}
- bogus members are not supported in the Error global
AI-assisted analysis of biomejs/biome@3835945f06 (2026-09-13).
Data as JSON: /api/errors/b3e5cfc2d2080e9a.
Report an issue: GitHub.