diff --git a/precompiled/serde_derive/src/lib_from_source.rs b/precompiled/serde_derive/src/lib_from_source.rs index da53441e..7dd89e04 100644 --- a/precompiled/serde_derive/src/lib_from_source.rs +++ b/precompiled/serde_derive/src/lib_from_source.rs @@ -2,15 +2,9 @@ extern crate quote; #[macro_use] extern crate syn; - extern crate proc_macro; extern crate proc_macro2; -mod internals; - -use proc_macro::TokenStream; -use syn::DeriveInput; - #[macro_use] mod bound; #[macro_use] @@ -18,11 +12,15 @@ mod fragment; mod de; mod dummy; +mod internals; mod pretend; mod ser; mod this; mod try; +use proc_macro::TokenStream; +use syn::DeriveInput; + #[proc_macro_derive(Serialize, attributes(serde))] pub fn derive_serialize(input: TokenStream) -> TokenStream { let mut input = parse_macro_input!(input as DeriveInput); diff --git a/serde_derive/src/bound.rs b/serde_derive/src/bound.rs index ef64d61f..65bc984e 100644 --- a/serde_derive/src/bound.rs +++ b/serde_derive/src/bound.rs @@ -1,11 +1,8 @@ -use std::collections::HashSet; - -use syn::punctuated::{Pair, Punctuated}; - use crate::internals::ast::{Container, Data}; use crate::internals::{attr, ungroup}; - use proc_macro2::Span; +use std::collections::HashSet; +use syn::punctuated::{Pair, Punctuated}; // Remove the default from every type parameter because in the generated impls // they look like associated types: "error: associated type bindings are not diff --git a/serde_derive/src/de.rs b/serde_derive/src/de.rs index b8af1339..7052d363 100644 --- a/serde_derive/src/de.rs +++ b/serde_derive/src/de.rs @@ -1,19 +1,17 @@ +use crate::fragment::{Expr, Fragment, Match, Stmts}; +use crate::internals::ast::{Container, Data, Field, Style, Variant}; +use crate::internals::{attr, replace_receiver, ungroup, Ctxt, Derive}; +use crate::{bound, dummy, pretend, this}; use proc_macro2::{Literal, Span, TokenStream}; use quote::ToTokens; +use std::collections::BTreeSet; +use std::ptr; #[cfg(precompiled)] use std::sync::atomic::Ordering; use syn::punctuated::Punctuated; use syn::spanned::Spanned; use syn::{self, Ident, Index, Member}; -use crate::fragment::{Expr, Fragment, Match, Stmts}; -use crate::internals::ast::{Container, Data, Field, Style, Variant}; -use crate::internals::{attr, replace_receiver, ungroup, Ctxt, Derive}; -use crate::{bound, dummy, pretend, this}; - -use std::collections::BTreeSet; -use std::ptr; - pub fn expand_derive_deserialize(input: &mut syn::DeriveInput) -> syn::Result { replace_receiver(input); diff --git a/serde_derive/src/dummy.rs b/serde_derive/src/dummy.rs index a30fb5eb..5b888208 100644 --- a/serde_derive/src/dummy.rs +++ b/serde_derive/src/dummy.rs @@ -1,6 +1,5 @@ -use proc_macro2::TokenStream; - use crate::try; +use proc_macro2::TokenStream; pub fn wrap_in_const(serde_path: Option<&syn::Path>, code: TokenStream) -> TokenStream { let try_replacement = try::replacement(); diff --git a/serde_derive/src/internals/case.rs b/serde_derive/src/internals/case.rs index a5f19dc9..094b8d20 100644 --- a/serde_derive/src/internals/case.rs +++ b/serde_derive/src/internals/case.rs @@ -1,9 +1,8 @@ //! Code to convert the Rust-styled field/variant (e.g. `my_field`, `MyType`) to the //! case of the source (e.g. `my-field`, `MY_FIELD`). -use std::fmt::{self, Debug, Display}; - use self::RenameRule::*; +use std::fmt::{self, Debug, Display}; /// The different possible ways to change case of fields in a struct, or variants in an enum. #[derive(Copy, Clone, PartialEq)] diff --git a/serde_derive/src/internals/mod.rs b/serde_derive/src/internals/mod.rs index 5e9f416c..f98ef08e 100644 --- a/serde_derive/src/internals/mod.rs +++ b/serde_derive/src/internals/mod.rs @@ -1,19 +1,18 @@ pub mod ast; pub mod attr; -mod ctxt; -pub use self::ctxt::Ctxt; - -mod receiver; -pub use self::receiver::replace_receiver; - mod case; mod check; +mod ctxt; +mod receiver; mod respan; mod symbol; use syn::Type; +pub use self::ctxt::Ctxt; +pub use self::receiver::replace_receiver; + #[derive(Copy, Clone)] pub enum Derive { Serialize, diff --git a/serde_derive/src/pretend.rs b/serde_derive/src/pretend.rs index 694ad096..7d99dfa7 100644 --- a/serde_derive/src/pretend.rs +++ b/serde_derive/src/pretend.rs @@ -1,8 +1,7 @@ +use crate::internals::ast::{Container, Data, Field, Style, Variant}; use proc_macro2::TokenStream; use quote::format_ident; -use crate::internals::ast::{Container, Data, Field, Style, Variant}; - // Suppress dead_code warnings that would otherwise appear when using a remote // derive. Other than this pretend code, a struct annotated with remote derive // never has its fields referenced and an enum annotated with remote derive diff --git a/serde_derive/src/ser.rs b/serde_derive/src/ser.rs index 4096f0e6..942a4ada 100644 --- a/serde_derive/src/ser.rs +++ b/serde_derive/src/ser.rs @@ -1,11 +1,10 @@ -use proc_macro2::{Span, TokenStream}; -use syn::spanned::Spanned; -use syn::{self, Ident, Index, Member}; - use crate::fragment::{Fragment, Match, Stmts}; use crate::internals::ast::{Container, Data, Field, Style, Variant}; use crate::internals::{attr, replace_receiver, Ctxt, Derive}; use crate::{bound, dummy, pretend, this}; +use proc_macro2::{Span, TokenStream}; +use syn::spanned::Spanned; +use syn::{self, Ident, Index, Member}; pub fn expand_derive_serialize(input: &mut syn::DeriveInput) -> syn::Result { replace_receiver(input); diff --git a/test_suite/tests/test_annotations.rs b/test_suite/tests/test_annotations.rs index 354f82c9..94101315 100644 --- a/test_suite/tests/test_annotations.rs +++ b/test_suite/tests/test_annotations.rs @@ -13,16 +13,14 @@ use serde::de::{self, Deserialize, Deserializer, IgnoredAny, MapAccess, Unexpected, Visitor}; use serde::ser::{Serialize, Serializer}; use serde_derive::{Deserialize, Serialize}; - -use std::collections::{BTreeMap, HashMap}; -use std::convert::TryFrom; -use std::fmt; -use std::marker::PhantomData; - use serde_test::{ assert_de_tokens, assert_de_tokens_error, assert_ser_tokens, assert_ser_tokens_error, assert_tokens, Token, }; +use std::collections::{BTreeMap, HashMap}; +use std::convert::TryFrom; +use std::fmt; +use std::marker::PhantomData; trait MyDefault: Sized { fn my_default() -> Self; diff --git a/test_suite/tests/test_borrow.rs b/test_suite/tests/test_borrow.rs index ded66ef6..f749ec32 100644 --- a/test_suite/tests/test_borrow.rs +++ b/test_suite/tests/test_borrow.rs @@ -8,7 +8,6 @@ use serde::de::value::{BorrowedStrDeserializer, MapDeserializer}; use serde::de::{Deserialize, Deserializer, IntoDeserializer}; use serde_derive::Deserialize; use serde_test::{assert_de_tokens, assert_de_tokens_error, Token}; - use std::borrow::Cow; #[test] diff --git a/test_suite/tests/test_de.rs b/test_suite/tests/test_de.rs index 422d699f..33dc7351 100644 --- a/test_suite/tests/test_de.rs +++ b/test_suite/tests/test_de.rs @@ -10,6 +10,10 @@ )] #![cfg_attr(feature = "unstable", feature(never_type))] +use fnv::FnvHasher; +use serde::de::{Deserialize, DeserializeOwned, Deserializer, IntoDeserializer}; +use serde_derive::Deserialize; +use serde_test::{assert_de_tokens, Configure, Token}; use std::collections::{BTreeMap, BTreeSet, HashMap, HashSet}; use std::default::Default; use std::ffi::{CStr, CString, OsString}; @@ -27,16 +31,10 @@ use std::sync::atomic::{ AtomicBool, AtomicI16, AtomicI32, AtomicI8, AtomicIsize, AtomicU16, AtomicU32, AtomicU8, AtomicUsize, Ordering, }; -use std::sync::{Arc, Weak as ArcWeak}; -use std::time::{Duration, UNIX_EPOCH}; - #[cfg(target_arch = "x86_64")] use std::sync::atomic::{AtomicI64, AtomicU64}; - -use fnv::FnvHasher; -use serde::de::{Deserialize, DeserializeOwned, Deserializer, IntoDeserializer}; -use serde_derive::Deserialize; -use serde_test::{assert_de_tokens, Configure, Token}; +use std::sync::{Arc, Weak as ArcWeak}; +use std::time::{Duration, UNIX_EPOCH}; #[macro_use] mod macros; diff --git a/test_suite/tests/test_gen.rs b/test_suite/tests/test_gen.rs index 9912d455..02354f3c 100644 --- a/test_suite/tests/test_gen.rs +++ b/test_suite/tests/test_gen.rs @@ -23,7 +23,6 @@ use serde::de::{Deserialize, DeserializeOwned, Deserializer}; use serde::ser::{Serialize, Serializer}; use serde_derive::{Deserialize, Serialize}; - use std::borrow::Cow; use std::marker::PhantomData; use std::option::Option as StdOption; diff --git a/test_suite/tests/test_macros.rs b/test_suite/tests/test_macros.rs index c1c730e9..c781f07d 100644 --- a/test_suite/tests/test_macros.rs +++ b/test_suite/tests/test_macros.rs @@ -12,7 +12,6 @@ use serde_derive::{Deserialize, Serialize}; use serde_test::{ assert_de_tokens, assert_de_tokens_error, assert_ser_tokens, assert_tokens, Token, }; - use std::collections::BTreeMap; use std::marker::PhantomData; diff --git a/test_suite/tests/test_roundtrip.rs b/test_suite/tests/test_roundtrip.rs index a54c28e6..00c21892 100644 --- a/test_suite/tests/test_roundtrip.rs +++ b/test_suite/tests/test_roundtrip.rs @@ -1,5 +1,4 @@ use serde_test::{assert_tokens, Configure, Token}; - use std::net; #[macro_use] diff --git a/test_suite/tests/test_ser.rs b/test_suite/tests/test_ser.rs index aa62699b..81fc9ea7 100644 --- a/test_suite/tests/test_ser.rs +++ b/test_suite/tests/test_ser.rs @@ -1,6 +1,9 @@ #![allow(clippy::derive_partial_eq_without_eq, clippy::unreadable_literal)] #![cfg_attr(feature = "unstable", feature(never_type))] +use fnv::FnvHasher; +use serde_derive::Serialize; +use serde_test::{assert_ser_tokens, assert_ser_tokens_error, Configure, Token}; use std::cell::RefCell; use std::collections::{BTreeMap, BTreeSet, HashMap, HashSet}; use std::ffi::CString; @@ -9,21 +12,16 @@ use std::num::Wrapping; use std::ops::Bound; use std::path::{Path, PathBuf}; use std::rc::{Rc, Weak as RcWeak}; +#[cfg(unix)] +use std::str; use std::sync::atomic::{ AtomicBool, AtomicI16, AtomicI32, AtomicI8, AtomicIsize, AtomicU16, AtomicU32, AtomicU8, AtomicUsize, }; -use std::sync::{Arc, Mutex, RwLock, Weak as ArcWeak}; -use std::time::{Duration, UNIX_EPOCH}; - -#[cfg(unix)] -use std::str; #[cfg(target_arch = "x86_64")] use std::sync::atomic::{AtomicI64, AtomicU64}; - -use fnv::FnvHasher; -use serde_derive::Serialize; -use serde_test::{assert_ser_tokens, assert_ser_tokens_error, Configure, Token}; +use std::sync::{Arc, Mutex, RwLock, Weak as ArcWeak}; +use std::time::{Duration, UNIX_EPOCH}; #[macro_use] mod macros; diff --git a/test_suite/tests/ui/conflict/flatten-newtype-struct.rs b/test_suite/tests/ui/conflict/flatten-newtype-struct.rs index 541cbc5d..e3719330 100644 --- a/test_suite/tests/ui/conflict/flatten-newtype-struct.rs +++ b/test_suite/tests/ui/conflict/flatten-newtype-struct.rs @@ -1,5 +1,4 @@ use serde_derive::Serialize; - use std::collections::HashMap; #[derive(Serialize)] diff --git a/test_suite/tests/ui/conflict/flatten-newtype-struct.stderr b/test_suite/tests/ui/conflict/flatten-newtype-struct.stderr index 8b0e2153..852cfb95 100644 --- a/test_suite/tests/ui/conflict/flatten-newtype-struct.stderr +++ b/test_suite/tests/ui/conflict/flatten-newtype-struct.stderr @@ -1,5 +1,5 @@ error: #[serde(flatten)] cannot be used on newtype structs - --> tests/ui/conflict/flatten-newtype-struct.rs:6:12 + --> tests/ui/conflict/flatten-newtype-struct.rs:5:12 | -6 | struct Foo(#[serde(flatten)] HashMap); +5 | struct Foo(#[serde(flatten)] HashMap); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/test_suite/tests/ui/conflict/flatten-tuple-struct.rs b/test_suite/tests/ui/conflict/flatten-tuple-struct.rs index 5d69060d..9e1820d3 100644 --- a/test_suite/tests/ui/conflict/flatten-tuple-struct.rs +++ b/test_suite/tests/ui/conflict/flatten-tuple-struct.rs @@ -1,5 +1,4 @@ use serde_derive::Serialize; - use std::collections::HashMap; #[derive(Serialize)] diff --git a/test_suite/tests/ui/conflict/flatten-tuple-struct.stderr b/test_suite/tests/ui/conflict/flatten-tuple-struct.stderr index b72aaf98..93c110bd 100644 --- a/test_suite/tests/ui/conflict/flatten-tuple-struct.stderr +++ b/test_suite/tests/ui/conflict/flatten-tuple-struct.stderr @@ -1,5 +1,5 @@ error: #[serde(flatten)] cannot be used on tuple structs - --> tests/ui/conflict/flatten-tuple-struct.rs:6:17 + --> tests/ui/conflict/flatten-tuple-struct.rs:5:17 | -6 | struct Foo(u32, #[serde(flatten)] HashMap); +5 | struct Foo(u32, #[serde(flatten)] HashMap); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^