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