From a37dac1b41f90b3ee2cf7ee216c1dc35e47ff607 Mon Sep 17 00:00:00 2001 From: David Peter Date: Tue, 17 Dec 2024 17:54:46 +0100 Subject: [PATCH] Fix serde feature compilation problem --- .../red_knot_python_semantic/src/python_platform.rs | 12 +++++++----- .../src/semantic_index/builder.rs | 8 +++++++- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/crates/red_knot_python_semantic/src/python_platform.rs b/crates/red_knot_python_semantic/src/python_platform.rs index 8a1fed6f20..d6affbfceb 100644 --- a/crates/red_knot_python_semantic/src/python_platform.rs +++ b/crates/red_knot_python_semantic/src/python_platform.rs @@ -1,13 +1,15 @@ -use serde::{Deserialize, Serialize}; - /// The target platform to assume when resolving types. -#[derive(Debug, Clone, Default, PartialEq, Eq, Deserialize, Serialize)] -#[serde(rename_all = "kebab-case")] +#[derive(Debug, Clone, Default, PartialEq, Eq)] +#[cfg_attr( + feature = "serde", + derive(serde::Serialize, serde::Deserialize), + serde(rename_all = "kebab-case") +)] pub enum PythonPlatform { /// Do not make any assumptions about the target platform. #[default] All, /// Assume a target platform like `linux`, `darwin`, `win32`, etc. - #[serde(untagged)] + #[cfg_attr(feature = "serde", serde(untagged))] Individual(String), } diff --git a/crates/red_knot_python_semantic/src/semantic_index/builder.rs b/crates/red_knot_python_semantic/src/semantic_index/builder.rs index 36b9cb9013..bd62633d8a 100644 --- a/crates/red_knot_python_semantic/src/semantic_index/builder.rs +++ b/crates/red_knot_python_semantic/src/semantic_index/builder.rs @@ -929,7 +929,7 @@ where // We may execute the `else` clause without ever executing the body, so merge in // the pre-loop state before visiting `else`. - self.flow_merge(pre_loop); + self.flow_merge(pre_loop.clone()); self.record_negated_constraint(constraint); self.visit_body(orelse); @@ -940,6 +940,8 @@ where for break_state in break_states { self.flow_merge(break_state); } + + self.reset_visibility_constraints(pre_loop); } ast::Stmt::With(ast::StmtWith { items, @@ -1387,6 +1389,8 @@ where range: _, op, }) => { + let pre_op = self.flow_snapshot(); + let mut snapshots = vec![]; let mut constraints = vec![]; @@ -1420,6 +1424,8 @@ where for snapshot in snapshots { self.flow_merge(snapshot); } + + self.reset_visibility_constraints(pre_op); } _ => { walk_expr(self, expr);