Rollup merge of #132521 - klensy:times, r=compiler-errors
replace manual time convertions with std ones, comptime time format parsing First commit replaces few manual time conversions with std ones, second makes parsing of time format at compiletime.
This commit is contained in:
commit
3285d12baf
4 changed files with 10 additions and 16 deletions
|
@ -49,7 +49,7 @@ rustc_trait_selection = { path = "../rustc_trait_selection" }
|
||||||
rustc_ty_utils = { path = "../rustc_ty_utils" }
|
rustc_ty_utils = { path = "../rustc_ty_utils" }
|
||||||
serde_json = "1.0.59"
|
serde_json = "1.0.59"
|
||||||
shlex = "1.0"
|
shlex = "1.0"
|
||||||
time = { version = "0.3.36", default-features = false, features = ["alloc", "formatting", "parsing", "macros"] }
|
time = { version = "0.3.36", default-features = false, features = ["alloc", "formatting", "macros"] }
|
||||||
tracing = { version = "0.1.35" }
|
tracing = { version = "0.1.35" }
|
||||||
# tidy-alphabetical-end
|
# tidy-alphabetical-end
|
||||||
|
|
||||||
|
|
|
@ -64,6 +64,7 @@ use rustc_span::source_map::FileLoader;
|
||||||
use rustc_target::json::ToJson;
|
use rustc_target::json::ToJson;
|
||||||
use rustc_target::spec::{Target, TargetTuple};
|
use rustc_target::spec::{Target, TargetTuple};
|
||||||
use time::OffsetDateTime;
|
use time::OffsetDateTime;
|
||||||
|
use time::macros::format_description;
|
||||||
use tracing::trace;
|
use tracing::trace;
|
||||||
|
|
||||||
#[allow(unused_macros)]
|
#[allow(unused_macros)]
|
||||||
|
@ -1356,8 +1357,7 @@ fn ice_path_with_config(config: Option<&UnstableOptions>) -> &'static Option<Pat
|
||||||
let file_now = now
|
let file_now = now
|
||||||
.format(
|
.format(
|
||||||
// Don't use a standard datetime format because Windows doesn't support `:` in paths
|
// Don't use a standard datetime format because Windows doesn't support `:` in paths
|
||||||
&time::format_description::parse("[year]-[month]-[day]T[hour]_[minute]_[second]")
|
&format_description!("[year]-[month]-[day]T[hour]_[minute]_[second]"),
|
||||||
.unwrap(),
|
|
||||||
)
|
)
|
||||||
.unwrap_or_default();
|
.unwrap_or_default();
|
||||||
let pid = std::process::id();
|
let pid = std::process::id();
|
||||||
|
|
|
@ -585,23 +585,17 @@ fn extract_timestamp_from_session_dir(directory_name: &str) -> Result<SystemTime
|
||||||
|
|
||||||
fn timestamp_to_string(timestamp: SystemTime) -> BaseNString {
|
fn timestamp_to_string(timestamp: SystemTime) -> BaseNString {
|
||||||
let duration = timestamp.duration_since(UNIX_EPOCH).unwrap();
|
let duration = timestamp.duration_since(UNIX_EPOCH).unwrap();
|
||||||
let micros = duration.as_secs() * 1_000_000 + (duration.subsec_nanos() as u64) / 1000;
|
let micros: u64 = duration.as_micros().try_into().unwrap();
|
||||||
micros.to_base_fixed_len(CASE_INSENSITIVE)
|
micros.to_base_fixed_len(CASE_INSENSITIVE)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn string_to_timestamp(s: &str) -> Result<SystemTime, &'static str> {
|
fn string_to_timestamp(s: &str) -> Result<SystemTime, &'static str> {
|
||||||
let micros_since_unix_epoch = u64::from_str_radix(s, INT_ENCODE_BASE as u32);
|
let micros_since_unix_epoch = match u64::from_str_radix(s, INT_ENCODE_BASE as u32) {
|
||||||
|
Ok(micros) => micros,
|
||||||
|
Err(_) => return Err("timestamp not an int"),
|
||||||
|
};
|
||||||
|
|
||||||
if micros_since_unix_epoch.is_err() {
|
let duration = Duration::from_micros(micros_since_unix_epoch);
|
||||||
return Err("timestamp not an int");
|
|
||||||
}
|
|
||||||
|
|
||||||
let micros_since_unix_epoch = micros_since_unix_epoch.unwrap();
|
|
||||||
|
|
||||||
let duration = Duration::new(
|
|
||||||
micros_since_unix_epoch / 1_000_000,
|
|
||||||
1000 * (micros_since_unix_epoch % 1_000_000) as u32,
|
|
||||||
);
|
|
||||||
Ok(UNIX_EPOCH + duration)
|
Ok(UNIX_EPOCH + duration)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1098,7 +1098,7 @@ impl<D: Deps> CurrentDepGraph<D> {
|
||||||
use std::time::{SystemTime, UNIX_EPOCH};
|
use std::time::{SystemTime, UNIX_EPOCH};
|
||||||
|
|
||||||
let duration = SystemTime::now().duration_since(UNIX_EPOCH).unwrap();
|
let duration = SystemTime::now().duration_since(UNIX_EPOCH).unwrap();
|
||||||
let nanos = duration.as_secs() * 1_000_000_000 + duration.subsec_nanos() as u64;
|
let nanos = duration.as_nanos();
|
||||||
let mut stable_hasher = StableHasher::new();
|
let mut stable_hasher = StableHasher::new();
|
||||||
nanos.hash(&mut stable_hasher);
|
nanos.hash(&mut stable_hasher);
|
||||||
let anon_id_seed = stable_hasher.finish();
|
let anon_id_seed = stable_hasher.finish();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue