cleanup after msrv bump

This commit is contained in:
Skgland
2026-06-05 20:44:38 +02:00
parent 03f796e9ff
commit bb5a59170a
4 changed files with 19 additions and 95 deletions

View File

@@ -8850,13 +8850,7 @@ impl Machine {
.stderr(stderr);
match command.spawn() {
#[cfg_attr(rust_version = "1.87.0", expect(unused_mut))]
Ok(mut child) => {
#[cfg(not(rust_version = "1.87.0"))]
{
self.anon_pipe_compat(&mut child, &stdin_args, &stdout_args, &stderr_args)?;
}
Ok(child) => {
let child_process_alloc: TypedArenaPtr<Child> =
arena_alloc!(child, &mut self.machine_st.arena);
@@ -8879,94 +8873,32 @@ impl Machine {
}
}
#[cfg(not(rust_version = "1.87.0"))]
fn anon_pipe_compat(
&mut self,
child: &mut std::process::Child,
stdin_args: &[HeapCellValue],
stdout_args: &[HeapCellValue],
stderr_args: &[HeapCellValue],
) -> CallResult {
if let Some(atom!("pipe")) = stdin_args[0].to_atom() {
let writer = child.stdin.take().expect("Should have captured stdin");
let stream = Stream::from_pipe_writer(writer, &mut self.machine_st.arena);
self.indices
.add_stream(stream, atom!("process_create"), 3)
.map_err(|stub_gen| stub_gen(&mut self.machine_st))?;
unify!(self.machine_st, stdin_args[1], HeapCellValue::from(stream));
}
if let Some(atom!("pipe")) = stdout_args[0].to_atom() {
let writer = child.stdout.take().expect("Should have captured stdout");
let stream = Stream::from_pipe_reader(
PipeReader(PipeReaderInner::Stdout(writer)),
&mut self.machine_st.arena,
);
self.indices
.add_stream(stream, atom!("process_create"), 3)
.map_err(|stub_gen| stub_gen(&mut self.machine_st))?;
unify!(self.machine_st, stdout_args[1], HeapCellValue::from(stream));
}
if let Some(atom!("pipe")) = stderr_args[0].to_atom() {
let writer = child.stderr.take().expect("Should have captured stderr");
let stream = Stream::from_pipe_reader(
PipeReader(PipeReaderInner::Stderr(writer)),
&mut self.machine_st.arena,
);
self.indices
.add_stream(stream, atom!("process_create"), 3)
.map_err(|stub_gen| stub_gen(&mut self.machine_st))?;
unify!(self.machine_st, stderr_args[1], HeapCellValue::from(stream));
}
Ok(())
}
fn handle_output_stream(&mut self, args: &[HeapCellValue]) -> Result<Stdio, MachineStub> {
Ok(match args[0].to_atom() {
Some(atom!("std")) => Stdio::inherit(),
Some(atom!("null")) => Stdio::null(),
Some(atom!("pipe")) => {
#[cfg(rust_version = "1.87.0")]
#[allow(clippy::incompatible_msrv)]
{
let (reader, writer) = match std::io::pipe() {
Ok(pipe_pair) => pipe_pair,
Err(_) => {
return Err(self.machine_st.open_permission_error(
atom!("anonymous_pipe"),
atom!("process_create"),
3,
));
}
};
let (reader, writer) = match std::io::pipe() {
Ok(pipe_pair) => pipe_pair,
Err(_) => {
return Err(self.machine_st.open_permission_error(
atom!("anonymous_pipe"),
atom!("process_create"),
3,
));
}
};
let stream = Stream::from_pipe_reader(reader, &mut self.machine_st.arena);
let stream = Stream::from_pipe_reader(reader, &mut self.machine_st.arena);
self.indices
.add_stream(stream, atom!("process_create"), 3)
.map_err(|stub_gen| stub_gen(&mut self.machine_st))?;
self.indices
.add_stream(stream, atom!("process_create"), 3)
.map_err(|stub_gen| stub_gen(&mut self.machine_st))?;
self.machine_st
.bind(args[1].as_var().unwrap(), stream.into());
self.machine_st
.bind(args[1].as_var().unwrap(), stream.into());
Stdio::from(writer)
}
#[cfg(not(rust_version = "1.87.0"))]
{
Stdio::piped()
}
Stdio::from(writer)
}
Some(atom!("file")) => {
let path = self.machine_st.value_to_str_like(args[1]).unwrap();