mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-21 22:34:05 +00:00
Address review comments
This commit is contained in:
parent
e686aee48e
commit
01efe6d5c2
@ -37,7 +37,7 @@ impl Parse for Newtype {
|
||||
braced!(body in input);
|
||||
|
||||
// Any additional `#[derive]` macro paths to apply
|
||||
let mut derive_paths: Option<Vec<Path>> = None;
|
||||
let mut derive_paths: Vec<Path> = Vec::new();
|
||||
let mut debug_format: Option<DebugFormat> = None;
|
||||
let mut max = None;
|
||||
let mut consts = Vec::new();
|
||||
@ -62,28 +62,23 @@ impl Parse for Newtype {
|
||||
let derives: Punctuated<Path, Token![,]> =
|
||||
derives.parse_terminated(Path::parse)?;
|
||||
try_comma()?;
|
||||
if let Some(old) = derive_paths.replace(derives.into_iter().collect()) {
|
||||
panic!("Specified multiple derives: {:?}", old);
|
||||
}
|
||||
derive_paths.extend(derives);
|
||||
continue;
|
||||
}
|
||||
if body.lookahead1().peek(kw::DEBUG_FORMAT) {
|
||||
body.parse::<kw::DEBUG_FORMAT>()?;
|
||||
body.parse::<Token![=]>()?;
|
||||
if body.lookahead1().peek(kw::custom) {
|
||||
let new_debug_format = if body.lookahead1().peek(kw::custom) {
|
||||
body.parse::<kw::custom>()?;
|
||||
if let Some(old) = debug_format.replace(DebugFormat::Custom) {
|
||||
panic!("Specified multiple debug format options: {:?}", old);
|
||||
}
|
||||
DebugFormat::Custom
|
||||
} else {
|
||||
let format_str: LitStr = body.parse()?;
|
||||
if let Some(old) =
|
||||
debug_format.replace(DebugFormat::Format(format_str.value()))
|
||||
{
|
||||
panic!("Specified multiple debug format options: {:?}", old);
|
||||
}
|
||||
}
|
||||
DebugFormat::Format(format_str.value())
|
||||
};
|
||||
try_comma()?;
|
||||
if let Some(old) = debug_format.replace(new_debug_format) {
|
||||
panic!("Specified multiple debug format options: {:?}", old);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if body.lookahead1().peek(kw::MAX) {
|
||||
@ -121,7 +116,6 @@ impl Parse for Newtype {
|
||||
}
|
||||
}
|
||||
|
||||
let derive_paths = derive_paths.unwrap_or_else(Vec::new);
|
||||
let debug_format = debug_format.unwrap_or(DebugFormat::Format("{}".to_string()));
|
||||
// shave off 256 indices at the end to allow space for packing these indices into enums
|
||||
let max = max.unwrap_or_else(|| Lit::Int(LitInt::new("0xFFFF_FF00", Span::call_site())));
|
||||
@ -158,7 +152,7 @@ impl Parse for Newtype {
|
||||
|
||||
Ok(Self(quote! {
|
||||
#(#attrs)*
|
||||
#[derive(Copy, PartialEq, Eq, Hash, PartialOrd, Ord, #(#derive_paths),*)]
|
||||
#[derive(Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord, #(#derive_paths),*)]
|
||||
#[rustc_layout_scalar_valid_range_end(#max)]
|
||||
#vis struct #name {
|
||||
private: u32,
|
||||
@ -166,13 +160,6 @@ impl Parse for Newtype {
|
||||
|
||||
#(#consts)*
|
||||
|
||||
impl Clone for #name {
|
||||
#[inline]
|
||||
fn clone(&self) -> Self {
|
||||
*self
|
||||
}
|
||||
}
|
||||
|
||||
impl #name {
|
||||
/// Maximum value the index can take, as a `u32`.
|
||||
#vis const MAX_AS_U32: u32 = #max;
|
||||
@ -313,7 +300,6 @@ impl Parse for Newtype {
|
||||
|
||||
#encodable_impls
|
||||
#debug_impl
|
||||
|
||||
}))
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user