From 81b9fc9d92bb74aa8428ae4db39bd84e8c16095c Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sat, 20 Jun 2026 18:34:54 +0900 Subject: refactor(php-shim): drop Box wrapping from PhpMixed List/Array The List and Array variants of PhpMixed boxed their elements unnecessarily. Store PhpMixed values directly and update all callers accordingly. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../src/symfony/console/input/argv_input.rs | 8 ++++---- .../src/symfony/console/input/array_input.rs | 4 ++-- .../src/symfony/console/input/input_option.rs | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) (limited to 'crates/shirabe-external-packages/src/symfony/console/input') diff --git a/crates/shirabe-external-packages/src/symfony/console/input/argv_input.rs b/crates/shirabe-external-packages/src/symfony/console/input/argv_input.rs index d3df9aa..d7ddafc 100644 --- a/crates/shirabe-external-packages/src/symfony/console/input/argv_input.rs +++ b/crates/shirabe-external-packages/src/symfony/console/input/argv_input.rs @@ -211,7 +211,7 @@ impl ArgvInput { if self.inner.definition.has_argument(&PhpMixed::Int(c)) { let arg = self.inner.definition.get_argument(&PhpMixed::Int(c))?; let value = if arg.is_array() { - PhpMixed::List(vec![Box::new(PhpMixed::String(token.to_string()))]) + PhpMixed::List(vec![PhpMixed::String(token.to_string())]) } else { PhpMixed::String(token.to_string()) }; @@ -229,7 +229,7 @@ impl ArgvInput { { let arg = self.inner.definition.get_argument(&PhpMixed::Int(c - 1))?; if let Some(PhpMixed::List(list)) = self.inner.arguments.get_mut(arg.get_name()) { - list.push(Box::new(PhpMixed::String(token.to_string()))); + list.push(PhpMixed::String(token.to_string())); } // unexpected argument @@ -390,12 +390,12 @@ impl ArgvInput { if option.is_array() { match self.inner.options.get_mut(name) { Some(PhpMixed::List(list)) => { - list.push(Box::new(value)); + list.push(value); } _ => { self.inner .options - .insert(name.to_string(), PhpMixed::List(vec![Box::new(value)])); + .insert(name.to_string(), PhpMixed::List(vec![value])); } } } else { diff --git a/crates/shirabe-external-packages/src/symfony/console/input/array_input.rs b/crates/shirabe-external-packages/src/symfony/console/input/array_input.rs index cad26e8..3fc9abb 100644 --- a/crates/shirabe-external-packages/src/symfony/console/input/array_input.rs +++ b/crates/shirabe-external-packages/src/symfony/console/input/array_input.rs @@ -378,8 +378,8 @@ impl InputInterface for ArrayInput { /// PHP `(array) $values` cast: a string becomes a single-element array. fn to_array(values: PhpMixed) -> Vec { match values { - PhpMixed::List(list) => list.into_iter().map(|v| *v).collect(), - PhpMixed::Array(array) => array.into_iter().map(|(_, v)| *v).collect(), + PhpMixed::List(list) => list.into_iter().collect(), + PhpMixed::Array(array) => array.into_iter().map(|(_, v)| v).collect(), PhpMixed::Null => vec![], other => vec![other], } diff --git a/crates/shirabe-external-packages/src/symfony/console/input/input_option.rs b/crates/shirabe-external-packages/src/symfony/console/input/input_option.rs index a90bff0..bd93f49 100644 --- a/crates/shirabe-external-packages/src/symfony/console/input/input_option.rs +++ b/crates/shirabe-external-packages/src/symfony/console/input/input_option.rs @@ -52,7 +52,7 @@ impl InputOption { let parts: Vec = arr .iter() .filter_map(|v| { - if let PhpMixed::String(s) = v.as_ref() { + if let PhpMixed::String(s) = v { Some(s.clone()) } else { None -- cgit v1.3.1