From ab3af924ef904ff4e9274de3ff8372b5f29a001c Mon Sep 17 00:00:00 2001 From: David Peter Date: Wed, 9 Jul 2025 08:46:33 +0200 Subject: [PATCH] [ty] Fix panic for attribute expressions with empty value (#19069) ## Summary closes https://github.com/astral-sh/ty/issues/738 ## Test Plan Added corpus test --- .../resources/corpus/88_regression_issue_738.py | 1 + crates/ty_python_semantic/src/types/infer.rs | 7 +++++++ 2 files changed, 8 insertions(+) create mode 100644 crates/ty_python_semantic/resources/corpus/88_regression_issue_738.py diff --git a/crates/ty_python_semantic/resources/corpus/88_regression_issue_738.py b/crates/ty_python_semantic/resources/corpus/88_regression_issue_738.py new file mode 100644 index 0000000000..0e13bbf172 --- /dev/null +++ b/crates/ty_python_semantic/resources/corpus/88_regression_issue_738.py @@ -0,0 +1 @@ +[. diff --git a/crates/ty_python_semantic/src/types/infer.rs b/crates/ty_python_semantic/src/types/infer.rs index cad60f6c00..6cc0a6ec3b 100644 --- a/crates/ty_python_semantic/src/types/infer.rs +++ b/crates/ty_python_semantic/src/types/infer.rs @@ -5754,6 +5754,13 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> { }; (place, None) } else { + if expr_ref + .as_name_expr() + .is_some_and(|name| name.is_invalid()) + { + return (Place::Unbound, None); + } + let use_id = expr_ref.scoped_use_id(db, scope); let place = place_from_bindings(db, use_def.bindings_at_use(use_id)); (place, Some(use_id))