diff --git a/pyrefly/lib/lsp/wasm/inlay_hints.rs b/pyrefly/lib/lsp/wasm/inlay_hints.rs index e0a5d401ae..09c24ddb46 100644 --- a/pyrefly/lib/lsp/wasm/inlay_hints.rs +++ b/pyrefly/lib/lsp/wasm/inlay_hints.rs @@ -206,6 +206,17 @@ impl<'param> ParamNameMatch<'param> { self.name.as_str().to_owned() } } + + fn matches_arg(&self, arg: &Expr) -> bool { + if self.is_vararg { + matches!( + arg, + Expr::Starred(starred) if matches!(&*starred.value, Expr::Name(name) if name.id == *self.name) + ) + } else { + matches!(arg, Expr::Name(name) if name.id == *self.name) + } + } } impl<'a> Transaction<'a> { @@ -592,6 +603,7 @@ impl<'a> Transaction<'a> { && param_match.name.as_str() != "__self" && param_match.name.as_str() != "cls" && param_match.name.as_str() != "_cls" + && !param_match.matches_arg(arg) { param_hints.push(( arg.range().start(), diff --git a/pyrefly/lib/test/lsp/inlay_hint.rs b/pyrefly/lib/test/lsp/inlay_hint.rs index 0506bcfb74..eca17dae3a 100644 --- a/pyrefly/lib/test/lsp/inlay_hint.rs +++ b/pyrefly/lib/test/lsp/inlay_hint.rs @@ -596,6 +596,118 @@ fn parameter_name_hint_labels(code: &str, assert_zero_errors: bool) -> Vec