diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:19:43 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:19:43 +0000 |
commit | 3e3e70d529d8c7d7c4d7bc4fefc9f109393b9245 (patch) | |
tree | daf049b282ab10e8c3d03e409b3cd84ff3f7690c /vendor/time-macros/src/offset.rs | |
parent | Adding debian version 1.68.2+dfsg1-1. (diff) | |
download | rustc-3e3e70d529d8c7d7c4d7bc4fefc9f109393b9245.tar.xz rustc-3e3e70d529d8c7d7c4d7bc4fefc9f109393b9245.zip |
Merging upstream version 1.69.0+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/time-macros/src/offset.rs')
-rw-r--r-- | vendor/time-macros/src/offset.rs | 95 |
1 files changed, 0 insertions, 95 deletions
diff --git a/vendor/time-macros/src/offset.rs b/vendor/time-macros/src/offset.rs deleted file mode 100644 index c2099073f..000000000 --- a/vendor/time-macros/src/offset.rs +++ /dev/null @@ -1,95 +0,0 @@ -use std::iter::Peekable; - -use proc_macro::{token_stream, Span, TokenTree}; - -use crate::helpers::{consume_any_ident, consume_number, consume_punct}; -use crate::to_tokens::ToTokenTree; -use crate::Error; - -pub(crate) struct Offset { - pub(crate) hours: i8, - pub(crate) minutes: i8, - pub(crate) seconds: i8, -} - -pub(crate) fn parse(chars: &mut Peekable<token_stream::IntoIter>) -> Result<Offset, Error> { - if consume_any_ident(&["utc", "UTC"], chars).is_ok() { - return Ok(Offset { - hours: 0, - minutes: 0, - seconds: 0, - }); - } - - let sign = if consume_punct('+', chars).is_ok() { - 1 - } else if consume_punct('-', chars).is_ok() { - -1 - } else if let Some(tree) = chars.next() { - return Err(Error::UnexpectedToken { tree }); - } else { - return Err(Error::MissingComponent { - name: "sign", - span_start: None, - span_end: None, - }); - }; - - let (hours_span, hours) = consume_number::<i8>("hour", chars)?; - let (mut minutes_span, mut minutes) = (Span::mixed_site(), 0); - let (mut seconds_span, mut seconds) = (Span::mixed_site(), 0); - - if consume_punct(':', chars).is_ok() { - let min = consume_number::<i8>("minute", chars)?; - minutes_span = min.0; - minutes = min.1; - - if consume_punct(':', chars).is_ok() { - let sec = consume_number::<i8>("second", chars)?; - seconds_span = sec.0; - seconds = sec.1; - } - } - - if hours >= 24 { - Err(Error::InvalidComponent { - name: "hour", - value: hours.to_string(), - span_start: Some(hours_span), - span_end: Some(hours_span), - }) - } else if minutes >= 60 { - Err(Error::InvalidComponent { - name: "minute", - value: minutes.to_string(), - span_start: Some(minutes_span), - span_end: Some(minutes_span), - }) - } else if seconds >= 60 { - Err(Error::InvalidComponent { - name: "second", - value: seconds.to_string(), - span_start: Some(seconds_span), - span_end: Some(seconds_span), - }) - } else { - Ok(Offset { - hours: sign * hours, - minutes: sign * minutes, - seconds: sign * seconds, - }) - } -} - -impl ToTokenTree for Offset { - fn into_token_tree(self) -> TokenTree { - quote_group! {{ - const OFFSET: ::time::UtcOffset = ::time::UtcOffset::__from_hms_unchecked( - #(self.hours), - #(self.minutes), - #(self.seconds), - ); - OFFSET - }} - } -} |