Skip to content

Commit

Permalink
Merge pull request #2442 from taiki-e/derive-build-script
Browse files Browse the repository at this point in the history
Remove build script from serde_derive
  • Loading branch information
dtolnay committed May 5, 2023
2 parents 99f165b + ef2a7c7 commit 25381be
Show file tree
Hide file tree
Showing 5 changed files with 10 additions and 83 deletions.
38 changes: 0 additions & 38 deletions serde_derive/build.rs

This file was deleted.

2 changes: 0 additions & 2 deletions serde_derive/src/de.rs
Expand Up @@ -69,8 +69,6 @@ pub fn expand_derive_deserialize(

Ok(dummy::wrap_in_const(
cont.attrs.custom_serde_path(),
"DESERIALIZE",
ident,
impl_block,
))
}
Expand Down
22 changes: 3 additions & 19 deletions serde_derive/src/dummy.rs
@@ -1,23 +1,11 @@
use proc_macro2::{Ident, TokenStream};
use quote::format_ident;
use proc_macro2::TokenStream;

use syn;
use try;

pub fn wrap_in_const(
serde_path: Option<&syn::Path>,
trait_: &str,
ty: &Ident,
code: TokenStream,
) -> TokenStream {
pub fn wrap_in_const(serde_path: Option<&syn::Path>, code: TokenStream) -> TokenStream {
let try_replacement = try::replacement();

let dummy_const = if cfg!(no_underscore_consts) {
format_ident!("_IMPL_{}_FOR_{}", trait_, unraw(ty))
} else {
format_ident!("_")
};

let use_serde = match serde_path {
Some(path) => quote! {
use #path as _serde;
Expand All @@ -31,14 +19,10 @@ pub fn wrap_in_const(
quote! {
#[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications)]
const #dummy_const: () = {
const _: () = {
#use_serde
#try_replacement
#code
};
}
}

fn unraw(ident: &Ident) -> String {
ident.to_string().trim_start_matches("r#").to_owned()
}
29 changes: 7 additions & 22 deletions serde_derive/src/pretend.rs
Expand Up @@ -97,29 +97,14 @@ fn pretend_fields_used_struct_packed(cont: &Container, fields: &[Field]) -> Toke

let members = fields.iter().map(|field| &field.member).collect::<Vec<_>>();

#[cfg(not(no_ptr_addr_of))]
{
quote! {
match _serde::__private::None::<&#type_ident #ty_generics> {
_serde::__private::Some(__v @ #type_ident { #(#members: _),* }) => {
#(
let _ = _serde::__private::ptr::addr_of!(__v.#members);
)*
}
_ => {}
}
}
}

#[cfg(no_ptr_addr_of)]
{
let placeholders = (0usize..).map(|i| format_ident!("__v{}", i));

quote! {
match _serde::__private::None::<#type_ident #ty_generics> {
_serde::__private::Some(#type_ident { #(#members: #placeholders),* }) => {}
_ => {}
quote! {
match _serde::__private::None::<&#type_ident #ty_generics> {
_serde::__private::Some(__v @ #type_ident { #(#members: _),* }) => {
#(
let _ = _serde::__private::ptr::addr_of!(__v.#members);
)*
}
_ => {}
}
}
}
Expand Down
2 changes: 0 additions & 2 deletions serde_derive/src/ser.rs
Expand Up @@ -59,8 +59,6 @@ pub fn expand_derive_serialize(

Ok(dummy::wrap_in_const(
cont.attrs.custom_serde_path(),
"SERIALIZE",
ident,
impl_block,
))
}
Expand Down

0 comments on commit 25381be

Please sign in to comment.