@@ -5203,14 +5203,23 @@ impl<'db, 'ast> TypeInferenceBuilder<'db, 'ast> {
52035203 ast:: Expr :: Compare ( compare) => self . infer_compare_expression ( compare) ,
52045204 ast:: Expr :: Subscript ( subscript) => self . infer_subscript_expression ( subscript) ,
52055205 ast:: Expr :: Slice ( slice) => self . infer_slice_expression ( slice) ,
5206- ast:: Expr :: Named ( named) => self . infer_named_expression ( named) ,
52075206 ast:: Expr :: If ( if_expression) => self . infer_if_expression ( if_expression) ,
52085207 ast:: Expr :: Lambda ( lambda_expression) => self . infer_lambda_expression ( lambda_expression) ,
52095208 ast:: Expr :: Call ( call_expression) => self . infer_call_expression ( call_expression, tcx) ,
52105209 ast:: Expr :: Starred ( starred) => self . infer_starred_expression ( starred) ,
52115210 ast:: Expr :: Yield ( yield_expression) => self . infer_yield_expression ( yield_expression) ,
52125211 ast:: Expr :: YieldFrom ( yield_from) => self . infer_yield_from_expression ( yield_from) ,
52135212 ast:: Expr :: Await ( await_expression) => self . infer_await_expression ( await_expression) ,
5213+ ast:: Expr :: Named ( named) => {
5214+ // Definitions must be unique, so we bypass multi-inference for named expressions.
5215+ if !self . multi_inference_state . is_panic ( )
5216+ && let Some ( ty) = self . expressions . get ( & expression. into ( ) )
5217+ {
5218+ return * ty;
5219+ }
5220+
5221+ self . infer_named_expression ( named)
5222+ }
52145223 ast:: Expr :: IpyEscapeCommand ( _) => {
52155224 todo_type ! ( "Ipy escape command support" )
52165225 }
0 commit comments