diff options
author | David Tolnay <dtolnay@chromium.org> | 2019-04-12 12:03:38 -0700 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2019-04-15 02:06:06 -0700 |
commit | 62041f041956a2ccfdd0a340b65b8a2cb0749655 (patch) | |
tree | eb842ec077889caf9683ad1bbc5a2f729e186355 /msg_socket | |
parent | dc63ca9bfefae3da7b66fce3a0089cd930f7b4e7 (diff) | |
download | crosvm-62041f041956a2ccfdd0a340b65b8a2cb0749655.tar crosvm-62041f041956a2ccfdd0a340b65b8a2cb0749655.tar.gz crosvm-62041f041956a2ccfdd0a340b65b8a2cb0749655.tar.bz2 crosvm-62041f041956a2ccfdd0a340b65b8a2cb0749655.tar.lz crosvm-62041f041956a2ccfdd0a340b65b8a2cb0749655.tar.xz crosvm-62041f041956a2ccfdd0a340b65b8a2cb0749655.tar.zst crosvm-62041f041956a2ccfdd0a340b65b8a2cb0749655.zip |
msg_socket: Simplify derive by removing const namespace
The derive(MsgOnSocket) macro used to expand to something like: const __MSG_ON_SOCKET_IMPL_Typename: () = { extern crate msg_socket as _msg_socket; impl _msg_socket::MsgOnSocket for Typename { ... } }; This was helpful in 2015 edition code by allowing callers to invoke the derive without also writing `use msg_socket` at the top of the file to bring the crate into scope. In 2018 edition, paths beginning with a crate name do not need to be otherwise imported, so this derive can simply expand to: impl msg_socket::MsgOnSocket for Typename { ... } TEST=cargo test msg_socket TEST=cargo test msg_on_socket_derive Change-Id: I61b672b64404523f601de1d538ebe554985a0905 Reviewed-on: https://chromium-review.googlesource.com/1565545 Commit-Ready: David Tolnay <dtolnay@chromium.org> Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com> Tested-by: David Tolnay <dtolnay@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com> Reviewed-by: David Tolnay <dtolnay@chromium.org>
Diffstat (limited to 'msg_socket')
-rw-r--r-- | msg_socket/msg_on_socket_derive/msg_on_socket_derive.rs | 59 |
1 files changed, 23 insertions, 36 deletions
diff --git a/msg_socket/msg_on_socket_derive/msg_on_socket_derive.rs b/msg_socket/msg_on_socket_derive/msg_on_socket_derive.rs index 20ebd4d..724a29c 100644 --- a/msg_socket/msg_on_socket_derive/msg_on_socket_derive.rs +++ b/msg_socket/msg_on_socket_derive/msg_on_socket_derive.rs @@ -21,22 +21,8 @@ use syn::{Data, DataEnum, DataStruct, DeriveInput, Fields, Ident}; #[proc_macro_derive(MsgOnSocket)] pub fn msg_on_socket_derive(input: proc_macro::TokenStream) -> proc_macro::TokenStream { let input = parse_macro_input!(input as DeriveInput); - - let const_namespace = Ident::new( - &format!("__MSG_ON_SOCKET_IMPL_{}", input.ident), - Span::call_site(), - ); - let impl_for_input = socket_msg_impl(input); - - let wrapped_impl = quote! { - const #const_namespace: () = { - extern crate msg_socket as _msg_socket; - #impl_for_input - }; - }; - - wrapped_impl.into() + impl_for_input.into() } fn socket_msg_impl(input: DeriveInput) -> TokenStream { @@ -76,7 +62,7 @@ fn impl_for_named_struct(name: Ident, ds: DataStruct) -> TokenStream { let read_buffer = define_read_buffer_for_struct(&name, &fields); let write_buffer = define_write_buffer_for_struct(&name, &fields); quote! { - impl _msg_socket::MsgOnSocket for #name { + impl msg_socket::MsgOnSocket for #name { #buffer_sizes_impls #read_buffer #write_buffer @@ -138,7 +124,7 @@ fn define_read_buffer_for_struct(_name: &Ident, fields: &[(Ident, syn::Type)]) - unsafe fn read_from_buffer( buffer: &[u8], fds: &[std::os::unix::io::RawFd], - ) -> _msg_socket::MsgResult<(Self, usize)> { + ) -> msg_socket::MsgResult<(Self, usize)> { let mut __offset = 0usize; let mut __fd_offset = 0usize; #(#read_fields)* @@ -163,7 +149,7 @@ fn define_write_buffer_for_struct(_name: &Ident, fields: &[(Ident, syn::Type)]) &self, buffer: &mut [u8], fds: &mut [std::os::unix::io::RawFd], - ) -> _msg_socket::MsgResult<usize> { + ) -> msg_socket::MsgResult<usize> { let mut __offset = 0usize; let mut __fd_offset = 0usize; #(#write_fields)* @@ -180,7 +166,7 @@ fn impl_for_enum(name: Ident, de: DataEnum) -> TokenStream { let read_buffer = define_read_buffer_for_enum(&name, &de); let write_buffer = define_write_buffer_for_enum(&name, &de); quote! { - impl _msg_socket::MsgOnSocket for #name { + impl msg_socket::MsgOnSocket for #name { #buffer_sizes_impls #read_buffer #write_buffer @@ -300,11 +286,11 @@ fn define_read_buffer_for_enum(name: &Ident, de: &DataEnum) -> TokenStream { unsafe fn read_from_buffer( buffer: &[u8], fds: &[std::os::unix::io::RawFd], - ) -> _msg_socket::MsgResult<(Self, usize)> { + ) -> msg_socket::MsgResult<(Self, usize)> { let v = buffer[0]; match v { #(#match_variants)* - _ => Err(_msg_socket::MsgError::InvalidType), + _ => Err(msg_socket::MsgError::InvalidType), } } } @@ -379,7 +365,7 @@ fn define_write_buffer_for_enum(name: &Ident, de: &DataEnum) -> TokenStream { &self, buffer: &mut [u8], fds: &mut [std::os::unix::io::RawFd], - ) -> _msg_socket::MsgResult<usize> { + ) -> msg_socket::MsgResult<usize> { match self { #(#match_variants)* } @@ -404,7 +390,7 @@ fn impl_for_tuple_struct(name: Ident, ds: DataStruct) -> TokenStream { let read_buffer = define_read_buffer_for_tuples(&name, &types); let write_buffer = define_write_buffer_for_tuples(&name, &types); quote! { - impl _msg_socket::MsgOnSocket for #name { + impl msg_socket::MsgOnSocket for #name { #buffer_sizes_impls #read_buffer #write_buffer @@ -442,7 +428,7 @@ fn define_read_buffer_for_tuples(name: &Ident, fields: &[syn::Type]) -> TokenStr unsafe fn read_from_buffer( buffer: &[u8], fds: &[std::os::unix::io::RawFd], - ) -> _msg_socket::MsgResult<(Self, usize)> { + ) -> msg_socket::MsgResult<(Self, usize)> { let mut __offset = 0usize; let mut __fd_offset = 0usize; #(#read_fields)* @@ -471,7 +457,7 @@ fn define_write_buffer_for_tuples(name: &Ident, fields: &[syn::Type]) -> TokenSt &self, buffer: &mut [u8], fds: &mut [std::os::unix::io::RawFd], - ) -> _msg_socket::MsgResult<usize> { + ) -> msg_socket::MsgResult<usize> { let mut __offset = 0usize; let mut __fd_offset = 0usize; let #name( #(#tmp_names),* ) = self; @@ -516,7 +502,8 @@ fn write_to_buffer_and_move_offset(name: &Ident, ty: &syn::Type) -> TokenStream #[cfg(test)] mod tests { use crate::socket_msg_impl; - use syn::DeriveInput; + use quote::quote; + use syn::{parse_quote, DeriveInput}; #[test] fn end_to_end_struct_test() { @@ -529,7 +516,7 @@ mod tests { }; let expected = quote! { - impl _msg_socket::MsgOnSocket for MyMsg { + impl msg_socket::MsgOnSocket for MyMsg { fn msg_size() -> usize { <u8>::msg_size() as usize + <RawFd>::msg_size() as usize @@ -543,7 +530,7 @@ mod tests { unsafe fn read_from_buffer( buffer: &[u8], fds: &[std::os::unix::io::RawFd], - ) -> _msg_socket::MsgResult<(Self, usize)> { + ) -> msg_socket::MsgResult<(Self, usize)> { let mut __offset = 0usize; let mut __fd_offset = 0usize; let t = <u8>::read_from_buffer(&buffer[__offset..], &fds[__fd_offset..])?; @@ -564,7 +551,7 @@ mod tests { &self, buffer: &mut [u8], fds: &mut [std::os::unix::io::RawFd], - ) -> _msg_socket::MsgResult<usize> { + ) -> msg_socket::MsgResult<usize> { let mut __offset = 0usize; let mut __fd_offset = 0usize; let o = self.a @@ -594,7 +581,7 @@ mod tests { }; let expected = quote! { - impl _msg_socket::MsgOnSocket for MyMsg { + impl msg_socket::MsgOnSocket for MyMsg { fn msg_size() -> usize { <u8>::msg_size() as usize + <u32>::msg_size() as usize @@ -608,7 +595,7 @@ mod tests { unsafe fn read_from_buffer( buffer: &[u8], fds: &[std::os::unix::io::RawFd], - ) -> _msg_socket::MsgResult<(Self, usize)> { + ) -> msg_socket::MsgResult<(Self, usize)> { let mut __offset = 0usize; let mut __fd_offset = 0usize; let t = <u8>::read_from_buffer(&buffer[__offset..], &fds[__fd_offset..])?; @@ -629,7 +616,7 @@ mod tests { &self, buffer: &mut [u8], fds: &mut [std::os::unix::io::RawFd], - ) -> _msg_socket::MsgResult<usize> { + ) -> msg_socket::MsgResult<usize> { let mut __offset = 0usize; let mut __fd_offset = 0usize; let MyMsg(tuple_tmp0, tuple_tmp1, tuple_tmp2) = self; @@ -667,7 +654,7 @@ mod tests { }; let expected = quote! { - impl _msg_socket::MsgOnSocket for MyMsg { + impl msg_socket::MsgOnSocket for MyMsg { fn msg_size() -> usize { [ <u8>::msg_size() as usize, @@ -687,7 +674,7 @@ mod tests { unsafe fn read_from_buffer( buffer: &[u8], fds: &[std::os::unix::io::RawFd], - ) -> _msg_socket::MsgResult<(Self, usize)> { + ) -> msg_socket::MsgResult<(Self, usize)> { let v = buffer[0]; match v { 0u8 => { @@ -718,14 +705,14 @@ mod tests { let f1 = t.0; Ok((MyMsg::C { f0, f1 }, __fd_offset)) } - _ => Err(_msg_socket::MsgError::InvalidType), + _ => Err(msg_socket::MsgError::InvalidType), } } fn write_to_buffer( &self, buffer: &mut [u8], fds: &mut [std::os::unix::io::RawFd], - ) -> _msg_socket::MsgResult<usize> { + ) -> msg_socket::MsgResult<usize> { match self { MyMsg::A(enum_variant_tmp0) => { buffer[0] = 0u8; |