1 #![deny(
2     anonymous_parameters,
3     clippy::all,
4     const_err,
5     illegal_floating_point_literal_pattern,
6     late_bound_lifetime_arguments,
7     path_statements,
8     patterns_in_fns_without_body,
9     rust_2018_idioms,
10     trivial_casts,
11     trivial_numeric_casts,
12     unreachable_pub,
13     unsafe_code,
14     unused_extern_crates
15 )]
16 #![warn(
17     clippy::dbg_macro,
18     clippy::decimal_literal_representation,
19     clippy::get_unwrap,
20     clippy::nursery,
21     clippy::pedantic,
22     clippy::print_stdout,
23     clippy::todo,
24     clippy::unimplemented,
25     clippy::unwrap_used,
26     clippy::use_debug,
27     missing_copy_implementations,
28     missing_debug_implementations,
29     single_use_lifetimes,
30     unused_qualifications,
31     variant_size_differences
32 )]
33 #![allow(
34     clippy::cast_lossless,
35     clippy::cast_possible_truncation,
36     clippy::cast_possible_wrap,
37     clippy::cast_precision_loss,
38     clippy::cast_sign_loss,
39     clippy::enum_glob_use,
40     clippy::inline_always,
41     clippy::missing_const_for_fn,
42     clippy::missing_errors_doc,
43     clippy::module_name_repetitions,
44     clippy::must_use_candidate,
45     clippy::redundant_pub_crate,
46     clippy::suspicious_arithmetic_impl,
47     clippy::use_self,
48     clippy::wildcard_imports,
49     clippy::zero_prefixed_literal,
50     unstable_name_collisions
51 )]
52 
53 // This is required on rustc < 1.42.0.
54 #[allow(unused_extern_crates)]
55 extern crate proc_macro;
56 
57 macro_rules! error {
58     ($message:literal) => {
59         error!(::proc_macro2::Span::call_site(), $message)
60     };
61 
62     ($span:expr, $message:literal) => {
63         Err(::syn::Error::new($span, $message))
64     };
65 
66     ($span:expr, $($args:expr),+) => {
67         Err(::syn::Error::new($span, format!($($args),+)))
68     };
69 }
70 
71 mod kw {
72     use syn::custom_keyword;
73     custom_keyword!(am);
74     custom_keyword!(pm);
75     custom_keyword!(AM);
76     custom_keyword!(PM);
77     custom_keyword!(utc);
78     custom_keyword!(UTC);
79 }
80 
81 mod date;
82 mod ext;
83 mod offset;
84 mod time;
85 mod time_crate;
86 
87 use date::Date;
88 use offset::Offset;
89 use proc_macro_hack::proc_macro_hack;
90 use quote::ToTokens;
91 use syn::parse_macro_input;
92 use time::Time;
93 
94 #[proc_macro_hack]
95 #[allow(clippy::unimplemented)]
time(input: proc_macro::TokenStream) -> proc_macro::TokenStream96 pub fn time(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
97     parse_macro_input!(input as Time).to_token_stream().into()
98 }
99 
100 #[proc_macro_hack]
101 #[allow(clippy::unimplemented)]
offset(input: proc_macro::TokenStream) -> proc_macro::TokenStream102 pub fn offset(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
103     parse_macro_input!(input as Offset).to_token_stream().into()
104 }
105 
106 #[proc_macro_hack]
107 #[allow(clippy::unimplemented)]
date(input: proc_macro::TokenStream) -> proc_macro::TokenStream108 pub fn date(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
109     parse_macro_input!(input as Date).to_token_stream().into()
110 }
111