oxc-project/oxc · error · OxcDiagnostic
This overload can be combined with another overload into one
Error message
This overload can be combined with another overload into one signature taking `{type1} | {type2}`. What it means
Raised by typescript/unified_signatures when two overloads of a function/method differ only in that one accepts type A and the other type B at the same parameter position, so they can be merged into a single signature accepting `A | B`. At the throw site the redundant overload increases API surface and maintenance cost; report_failure builds the message with the two type names and multi-label span pointing at both overload signatures. unified_signatures_diagnostic is the generic constructor used for all rule findings.
Source
Thrown at crates/oxc_linter/src/rules/typescript/unified_signatures.rs:30
};
use oxc_diagnostics::{LabeledSpan, OxcDiagnostic};
use oxc_macros::declare_oxc_lint;
use oxc_span::{GetSpan, Span};
use rustc_hash::{FxHashMap, FxHashSet};
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use crate::{
AstNode,
context::{ContextHost, LintContext},
rule::{DefaultRuleConfig, Rule},
};
fn unified_signatures_diagnostic<L: Into<LabeledSpan>, T: IntoIterator<Item = L>>(
message: String,
labels: T,
) -> OxcDiagnostic {
OxcDiagnostic::warn(message).with_labels(labels)
}
#[derive(Debug, Default, Clone, Deserialize, Serialize, JsonSchema)]
#[serde(default, rename_all = "camelCase", deny_unknown_fields)]
pub struct UnifiedSignaturesOptions {
/// Whether to ignore parameter name differences when comparing signatures. If `false`, signatures
/// will not be considered unifiable if they have parameters in the same position with different
/// names, even if the parameter types are the same.
ignore_differently_named_parameters: bool,
/// Whether to ignore JSDoc differences when comparing signatures. If `false`, signatures will not
/// be considered unifiable if the closest leading block comments for the signatures are different,
/// even if the signatures themselves are identical.
#[serde(rename = "ignoreOverloadsWithDifferentJSDoc")]
ignore_overloads_with_different_jsdoc: bool,
}
#[derive(Debug, Default, Clone, Deserialize, Serialize)]
pub struct UnifiedSignatures(UnifiedSignaturesOptions);View on GitHub (pinned to e1e7af627c)
Solutions
- Combine the two overloads into one signature using a union type for the differing parameter.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at crates/oxc_linter/src/rules/typescript/unified_signatures.rs:30 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of oxc-project/oxc@e1e7af627c (2026-08-20).
Data as JSON: /api/errors/bd72802e557621f4.
Report an issue: GitHub.