X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fhelpers.rs;h=4c989db0170b5408c71116555a8fcfc0702aab17;hb=296ba8b1c84f65d123fa5b35f6f2e47e73710b08;hp=f5094b169f9ed0e0956568dbe0b9ffda03886091;hpb=33e928c9ca456f36ac662657333d6ca046be17bd;p=rust.git diff --git a/src/helpers.rs b/src/helpers.rs index f5094b169f9..4c989db0170 100644 --- a/src/helpers.rs +++ b/src/helpers.rs @@ -59,7 +59,7 @@ fn eval_path_scalar( let this = self.eval_context_mut(); let instance = this.resolve_path(path); let cid = GlobalId { instance, promoted: None }; - let const_val = this.const_eval_raw(cid)?; + let const_val = this.eval_to_allocation(cid)?; let const_val = this.read_scalar(const_val.into())?; return Ok(const_val); } @@ -387,7 +387,7 @@ fn check_no_isolation(&self, name: &str) -> InterpResult<'tcx> { /// if this is not the case. fn assert_target_os(&self, target_os: &str, name: &str) { assert_eq!( - self.eval_context_ref().tcx.sess.target.target.target_os, + self.eval_context_ref().tcx.sess.target.os, target_os, "`{}` is only available on the `{}` target OS", name, @@ -430,9 +430,9 @@ fn get_last_error(&mut self) -> InterpResult<'tcx, Scalar> { fn set_last_error_from_io_error(&mut self, e: std::io::Error) -> InterpResult<'tcx> { use std::io::ErrorKind::*; let this = self.eval_context_mut(); - let target = &this.tcx.sess.target.target; - let target_os = &target.target_os; - let last_error = if target.options.target_family == Some("unix".to_owned()) { + let target = &this.tcx.sess.target; + let target_os = &target.os; + let last_error = if target.os_family == Some("unix".to_owned()) { this.eval_libc(match e.kind() { ConnectionRefused => "ECONNREFUSED", ConnectionReset => "ECONNRESET", @@ -530,23 +530,17 @@ fn read_timespec( let nanoseconds_scalar = this.read_scalar(nanoseconds_place.into())?; let nanoseconds = nanoseconds_scalar.to_machine_isize(this)?; - let seconds: u64 = if let Ok(s) = seconds.try_into() { - s - } else { + Ok(try { // tv_sec must be non-negative. - return Ok(None); - }; - let nanoseconds: u32 = if let Ok(ns) = nanoseconds.try_into() { - if ns >= 1_000_000_000 { + let seconds: u64 = seconds.try_into().ok()?; + // tv_nsec must be non-negative. + let nanoseconds: u32 = nanoseconds.try_into().ok()?; + if nanoseconds >= 1_000_000_000 { // tv_nsec must not be greater than 999,999,999. - return Ok(None); + None? } - ns - } else { - // tv_nsec must be non-negative. - return Ok(None); - }; - Ok(Some(Duration::new(seconds, nanoseconds))) + Duration::new(seconds, nanoseconds) + }) } } @@ -561,7 +555,7 @@ fn read_timespec( pub fn isolation_error(name: &str) -> InterpResult<'static> { throw_machine_stop!(TerminationInfo::UnsupportedInIsolation(format!( - "`{}` not available when isolation is enabled", + "{} not available when isolation is enabled", name, ))) }