ErrorKind::PermissionDenied,
StreamError::ReadFromOutputStream,
)),
- Stream::OutputFile(_)
- | Stream::StandardError(_)
- | Stream::StandardOutput(_)
- | Stream::Null(_) => Err(std::io::Error::new(
- ErrorKind::PermissionDenied,
- StreamError::ReadFromOutputStream,
- )),
+ Stream::Null(_) => Ok(buf.len()),
+ Stream::OutputFile(_) | Stream::StandardError(_) | Stream::StandardOutput(_) => {
+ Err(std::io::Error::new(
+ ErrorKind::PermissionDenied,
+ StreamError::ReadFromOutputStream,
+ ))
+ }
}
}
}
ErrorKind::PermissionDenied,
StreamError::WriteToInputStream,
)),
- Stream::StaticString(_)
- | Stream::Readline(_)
- | Stream::InputFile(..)
- | Stream::Null(_) => Err(std::io::Error::new(
- ErrorKind::PermissionDenied,
- StreamError::WriteToInputStream,
- )),
+ Stream::Null(_) => Ok(buf.len()),
+ Stream::StaticString(_) | Stream::Readline(_) | Stream::InputFile(..) => Err(
+ std::io::Error::new(ErrorKind::PermissionDenied, StreamError::WriteToInputStream),
+ ),
}
}
ErrorKind::PermissionDenied,
StreamError::FlushToInputStream,
)),
- Stream::StaticString(_)
- | Stream::Readline(_)
- | Stream::InputFile(_)
- | Stream::Null(_) => Err(std::io::Error::new(
- ErrorKind::PermissionDenied,
- StreamError::FlushToInputStream,
- )),
+ Stream::Null(_) => Ok(()),
+ Stream::StaticString(_) | Stream::Readline(_) | Stream::InputFile(_) => Err(
+ std::io::Error::new(ErrorKind::PermissionDenied, StreamError::FlushToInputStream),
+ ),
}
}
}
}
}
}
+ Stream::Null(_) => AtEndOfStream::At,
#[cfg(feature = "http")]
Stream::HttpRead(stream_layout) => {
if stream_layout
| Stream::Byte(_)
| Stream::Readline(_)
| Stream::StaticString(_)
- | Stream::InputFile(..) => true,
+ | Stream::InputFile(..)
+ | Stream::Null(_) => true,
_ => false,
}
}
| Stream::StandardOutput(_)
| Stream::NamedTcp(..)
| Stream::Byte(_)
- | Stream::OutputFile(..) => true,
+ | Stream::OutputFile(..)
+ | Stream::Null(_) => true,
_ => false,
}
}
debug_assert_eq!(arity, 0);
return match stream_aliases.get(&name) {
- Some(stream) if !stream.is_null_stream() => Ok(*stream),
+ Some(stream) => Ok(*stream),
_ => {
let stub = functor_stub(caller, arity);
let addr = atom_as_cell!(name);
debug_assert_eq!(arity, 0);
return match stream_aliases.get(&name) {
- Some(stream) if !stream.is_null_stream() => Ok(*stream),
+ Some(stream) => Ok(*stream),
_ => {
let stub = functor_stub(caller, arity);
let addr = atom_as_cell!(name);
(HeapCellValueTag::Cons, ptr) => {
match_untyped_arena_ptr!(ptr,
(ArenaHeaderTag::Stream, stream) => {
- return if stream.is_null_stream() {
- Err(self.open_permission_error(HeapCellValue::from(stream), caller, arity))
- } else {
- Ok(stream)
- };
+ if stream.is_null_stream() {
+ unreachable!("Null streams have no Cons representation");
+ }
+ return Ok(stream);
}
(ArenaHeaderTag::Dropped, _value) => {
let stub = functor_stub(caller, arity);
let results = machine.run_query("get_code(C).").collect::<Vec<_>>();
assert_eq!(results.len(), 1);
- assert!(results[0].is_err());
+ assert!(
+ results[0].is_ok(),
+ "Expected read to succeed, got {:?}",
+ results[0]
+ );
}
#[test]
let results = machine.run_query("write(hello).").collect::<Vec<_>>();
assert_eq!(results.len(), 1);
- assert!(results[0].is_err());
+ assert!(
+ results[0].is_ok(),
+ "Expected write to succeed, got {:?}",
+ results[0]
+ );
}
/// A variant of the [`write_null_stream`] that tries to write to a (null) input stream.
.collect::<Vec<_>>();
assert_eq!(results.len(), 1);
- assert!(results[0].is_err());
+ assert!(
+ results[0].is_ok(),
+ "Expected write to succeed, got {:?}",
+ results[0]
+ );
}
}