From e6cc7371d1685f648e52882568c8330373b6c090 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Fri, 24 Jul 2026 00:38:59 +0900 Subject: refactor(symfony-process): remove unused Process API surface Since Process is php-native with no Rust-fidelity obligation (see plugin-class-classification.md), this port only needs to cover what Rust-ported Composer code actually calls. Made the pipes/process_utils modules pub(crate) (nothing outside symfony/process used them) and rebuilt with `--force-warn dead_code` (normally allowed workspace-wide) to find genuinely unreachable methods: Process lost 17 methods, 5 constants, and a private clone helper; ExecutableFinder lost two unused suffix setters; AbstractPipes lost handle_error, whose only caller (a stream_select error-handler registration) was never wired up. Removing several of those setters (set_pty, set_idle_timeout, disable_output/enable_output, set_options) then left the fields they used to write with no remaining writer, so they hold one constant value on every reachable path: pty always false, idle_timeout always None, output_disabled always false, options always {suppress_errors, bypass_shell}. Audited by value (not just call-graph reachability) and removed everything that depended on the now-constant value: - pty: is_pty(), is_pty_supported(), the PTY descriptor branch in UnixPipes::get_descriptors(), and the now-unconstructed Descriptor::Pty variant in shirabe-php-shim (plus its proc_open match arm). - idle_timeout: get_idle_timeout() and check_timeout()'s idle branch; ProcessTimedOutException collapses to the single reachable timeout type (dropped timeout_type/TYPE_GENERAL/TYPE_IDLE/is_general_timeout/ is_idle_timeout/get_exceeded_timeout). - output_disabled: is_output_disabled(), build_callback()'s disabled variant, get_descriptors()'s output_disabled term, and the always-false guard in read_pipes_for_output()/ProcessFailedException (its output section is now unconditional). - options: Drop::drop()'s create_new_console branch can never fire (that key can no longer exist), so it always just stops the process. - has_callback/last_output_time: left write-only once their only readers (the branches above) were gone. - have_read_support: constant true once output_disabled collapsed, so removed from PipesInterface, UnixPipes (incl. its /dev/null null-stream branch), WindowsPipes, and Process::wait()'s dead guard. No behavior change: every removed item/branch had zero callers, or was constant on every reachable call site. --- crates/shirabe-php-shim/src/process.rs | 7 ------- 1 file changed, 7 deletions(-) (limited to 'crates/shirabe-php-shim') diff --git a/crates/shirabe-php-shim/src/process.rs b/crates/shirabe-php-shim/src/process.rs index 901d345e..4615ff91 100644 --- a/crates/shirabe-php-shim/src/process.rs +++ b/crates/shirabe-php-shim/src/process.rs @@ -147,8 +147,6 @@ pub enum Descriptor { Pipe(String), /// `['file', path, mode]`. File(String, String), - /// `['pty']`. - Pty, /// An already-opened stream resource used directly as the descriptor. Resource(PhpResource), /// A descriptor index left unspecified by a sparse PHP descriptorspec; the child inherits the @@ -224,11 +222,6 @@ pub fn proc_open( std::process::Stdio::from(resource_to_file(resource)?) } Descriptor::Inherit => std::process::Stdio::inherit(), - Descriptor::Pty => { - // TODO(phase-d): pty descriptors need a pseudo-terminal (openpty/ioctl); a syscall - // crate is intentionally not introduced here. - todo!("proc_open: pty descriptors require a pseudo-terminal (syscall)") - } }; match fd { 0 => cmd.stdin(stdio), -- cgit v1.3.1