Skip to content

Commit

Permalink
chore!: rename "nil" -> "()", "string" -> "String", `"nonzero…
Browse files Browse the repository at this point in the history
…_u16"` -> `"NonZeroU16"` (`schema::Declaration`) (#233)

* chore!: rename `"nil"` -> `"()"` (`schema::Declaration`)

* chore!: rename `"string"` -> `"String"` (`schema::Declaration`)

* chore!: rename `"nonzero_u16"` -> `"NonZeroU16"` ... (`schema::Declaration`)
  • Loading branch information
dj8yfo committed Sep 26, 2023
1 parent 7afe64a commit 499f446
Show file tree
Hide file tree
Showing 8 changed files with 165 additions and 145 deletions.
124 changes: 69 additions & 55 deletions borsh/src/schema.rs
Original file line number Diff line number Diff line change
Expand Up @@ -334,6 +334,20 @@ macro_rules! impl_for_renamed_primitives {
}
)+
};

($($ty: ty : $name: expr, $size: expr);+) => {
$(
impl BorshSchema for $ty {
#[inline]
fn add_definitions_recursively(definitions: &mut BTreeMap<Declaration, Definition>) {
let definition = Definition::Primitive($size);
add_definition(Self::declaration(), definition, definitions);
}
#[inline]
fn declaration() -> Declaration { $name.into() }
}
)+
};
}

macro_rules! impl_for_primitives {
Expand All @@ -347,20 +361,20 @@ impl_for_primitives!(u8 => 1; u16 => 2; u32 => 4; u64 => 8; u128 => 16);
impl_for_renamed_primitives!(isize: i64 => 8);
impl_for_renamed_primitives!(usize: u64 => 8);

impl_for_renamed_primitives!(core::num::NonZeroI8: nonzero_i8 => 1);
impl_for_renamed_primitives!(core::num::NonZeroI16: nonzero_i16 => 2);
impl_for_renamed_primitives!(core::num::NonZeroI32: nonzero_i32 => 4);
impl_for_renamed_primitives!(core::num::NonZeroI64: nonzero_i64 => 8);
impl_for_renamed_primitives!(core::num::NonZeroI128: nonzero_i128 => 16);
impl_for_renamed_primitives!(core::num::NonZeroU8: nonzero_u8 => 1);
impl_for_renamed_primitives!(core::num::NonZeroU16: nonzero_u16 => 2);
impl_for_renamed_primitives!(core::num::NonZeroU32: nonzero_u32 => 4);
impl_for_renamed_primitives!(core::num::NonZeroU64: nonzero_u64 => 8);
impl_for_renamed_primitives!(core::num::NonZeroU128: nonzero_u128 => 16);
impl_for_renamed_primitives!(core::num::NonZeroI8: NonZeroI8 => 1);
impl_for_renamed_primitives!(core::num::NonZeroI16: NonZeroI16 => 2);
impl_for_renamed_primitives!(core::num::NonZeroI32: NonZeroI32 => 4);
impl_for_renamed_primitives!(core::num::NonZeroI64: NonZeroI64 => 8);
impl_for_renamed_primitives!(core::num::NonZeroI128: NonZeroI128 => 16);
impl_for_renamed_primitives!(core::num::NonZeroU8: NonZeroU8 => 1);
impl_for_renamed_primitives!(core::num::NonZeroU16: NonZeroU16 => 2);
impl_for_renamed_primitives!(core::num::NonZeroU32: NonZeroU32 => 4);
impl_for_renamed_primitives!(core::num::NonZeroU64: NonZeroU64 => 8);
impl_for_renamed_primitives!(core::num::NonZeroU128: NonZeroU128 => 16);
// see 12 lines above
impl_for_renamed_primitives!(core::num::NonZeroUsize: nonzero_u64 => 8);
impl_for_renamed_primitives!(core::num::NonZeroUsize: NonZeroUsize => 8);

impl_for_renamed_primitives!((): nil => 0);
impl_for_renamed_primitives!((): "()", 0);

impl BorshSchema for String {
#[inline]
Expand All @@ -369,7 +383,7 @@ impl BorshSchema for String {
}
#[inline]
fn declaration() -> Declaration {
"string".into()
str::declaration()
}
}
impl BorshSchema for str {
Expand All @@ -385,7 +399,7 @@ impl BorshSchema for str {
}
#[inline]
fn declaration() -> Declaration {
"string".into()
"String".into()
}
}

Expand Down Expand Up @@ -715,12 +729,12 @@ mod tests {
"Option<u64>" => Definition::Enum {
tag_width: 1,
variants: vec![
(0, "None".to_string(), "nil".to_string()),
(0, "None".to_string(), "()".to_string()),
(1, "Some".to_string(), "u64".to_string()),
]
},
"u64" => Definition::Primitive(8),
"nil" => Definition::Primitive(0)
"()" => Definition::Primitive(0)
},
actual_defs
);
Expand All @@ -737,19 +751,19 @@ mod tests {
"Option<u64>" => Definition::Enum {
tag_width: 1,
variants: vec![
(0, "None".to_string(), "nil".to_string()),
(0, "None".to_string(), "()".to_string()),
(1, "Some".to_string(), "u64".to_string()),
]
},
"Option<Option<u64>>" => Definition::Enum {
tag_width: 1,
variants: vec![
(0, "None".to_string(), "nil".to_string()),
(0, "None".to_string(), "()".to_string()),
(1, "Some".to_string(), "Option<u64>".to_string()),
]
},
"u64" => Definition::Primitive(8),
"nil" => Definition::Primitive(0)
"()" => Definition::Primitive(0)
},
actual_defs
);
Expand Down Expand Up @@ -803,19 +817,19 @@ mod tests {
let actual_name = <(u64, core::num::NonZeroU16, String)>::declaration();
let mut actual_defs = map!();
<(u64, core::num::NonZeroU16, String)>::add_definitions_recursively(&mut actual_defs);
assert_eq!("Tuple<u64, nonzero_u16, string>", actual_name);
assert_eq!("Tuple<u64, NonZeroU16, String>", actual_name);
assert_eq!(
map! {
"Tuple<u64, nonzero_u16, string>" => Definition::Tuple {
"Tuple<u64, NonZeroU16, String>" => Definition::Tuple {
elements: vec![
"u64".to_string(),
"nonzero_u16".to_string(),
"string".to_string()
"NonZeroU16".to_string(),
"String".to_string()
]
},
"u64" => Definition::Primitive(8),
"nonzero_u16" => Definition::Primitive(2),
"string" => Definition::Sequence {
"NonZeroU16" => Definition::Primitive(2),
"String" => Definition::Sequence {
length_width: Definition::DEFAULT_LENGTH_WIDTH,
length_range: Definition::DEFAULT_LENGTH_RANGE,
elements: "u8".to_string()
Expand All @@ -831,19 +845,19 @@ mod tests {
let actual_name = <(u64, (u8, bool), String)>::declaration();
let mut actual_defs = map!();
<(u64, (u8, bool), String)>::add_definitions_recursively(&mut actual_defs);
assert_eq!("Tuple<u64, Tuple<u8, bool>, string>", actual_name);
assert_eq!("Tuple<u64, Tuple<u8, bool>, String>", actual_name);
assert_eq!(
map! {
"Tuple<u64, Tuple<u8, bool>, string>" => Definition::Tuple { elements: vec![
"Tuple<u64, Tuple<u8, bool>, String>" => Definition::Tuple { elements: vec![
"u64".to_string(),
"Tuple<u8, bool>".to_string(),
"string".to_string(),
"String".to_string(),
]},
"Tuple<u8, bool>" => Definition::Tuple { elements: vec![ "u8".to_string(), "bool".to_string()]},
"u64" => Definition::Primitive(8),
"u8" => Definition::Primitive(1),
"bool" => Definition::Primitive(1),
"string" => Definition::Sequence {
"String" => Definition::Sequence {
length_width: Definition::DEFAULT_LENGTH_WIDTH,
length_range: Definition::DEFAULT_LENGTH_RANGE,
elements: "u8".to_string()
Expand All @@ -859,19 +873,19 @@ mod tests {
let actual_name = HashMap::<u64, String>::declaration();
let mut actual_defs = map!();
HashMap::<u64, String>::add_definitions_recursively(&mut actual_defs);
assert_eq!("HashMap<u64, string>", actual_name);
assert_eq!("HashMap<u64, String>", actual_name);
assert_eq!(
map! {
"HashMap<u64, string>" => Definition::Sequence {
"HashMap<u64, String>" => Definition::Sequence {
length_width: Definition::DEFAULT_LENGTH_WIDTH,
length_range: Definition::DEFAULT_LENGTH_RANGE,
elements: "Tuple<u64, string>".to_string(),
elements: "Tuple<u64, String>".to_string(),
} ,
"Tuple<u64, string>" => Definition::Tuple {
elements: vec![ "u64".to_string(), "string".to_string()],
"Tuple<u64, String>" => Definition::Tuple {
elements: vec![ "u64".to_string(), "String".to_string()],
},
"u64" => Definition::Primitive(8),
"string" => Definition::Sequence {
"String" => Definition::Sequence {
length_width: Definition::DEFAULT_LENGTH_WIDTH,
length_range: Definition::DEFAULT_LENGTH_RANGE,
elements: "u8".to_string()
Expand All @@ -889,15 +903,15 @@ mod tests {
let actual_name = HashSet::<String>::declaration();
let mut actual_defs = map!();
HashSet::<String>::add_definitions_recursively(&mut actual_defs);
assert_eq!("HashSet<string>", actual_name);
assert_eq!("HashSet<String>", actual_name);
assert_eq!(
map! {
"HashSet<string>" => Definition::Sequence {
"HashSet<String>" => Definition::Sequence {
length_width: Definition::DEFAULT_LENGTH_WIDTH,
length_range: Definition::DEFAULT_LENGTH_RANGE,
elements: "string".to_string(),
elements: "String".to_string(),
},
"string" => Definition::Sequence {
"String" => Definition::Sequence {
length_width: Definition::DEFAULT_LENGTH_WIDTH,
length_range: Definition::DEFAULT_LENGTH_RANGE,
elements: "u8".to_string()
Expand All @@ -913,17 +927,17 @@ mod tests {
let actual_name = BTreeMap::<u64, String>::declaration();
let mut actual_defs = map!();
BTreeMap::<u64, String>::add_definitions_recursively(&mut actual_defs);
assert_eq!("BTreeMap<u64, string>", actual_name);
assert_eq!("BTreeMap<u64, String>", actual_name);
assert_eq!(
map! {
"BTreeMap<u64, string>" => Definition::Sequence {
"BTreeMap<u64, String>" => Definition::Sequence {
length_width: Definition::DEFAULT_LENGTH_WIDTH,
length_range: Definition::DEFAULT_LENGTH_RANGE,
elements: "Tuple<u64, string>".to_string(),
elements: "Tuple<u64, String>".to_string(),
} ,
"Tuple<u64, string>" => Definition::Tuple { elements: vec![ "u64".to_string(), "string".to_string()]},
"Tuple<u64, String>" => Definition::Tuple { elements: vec![ "u64".to_string(), "String".to_string()]},
"u64" => Definition::Primitive(8),
"string" => Definition::Sequence {
"String" => Definition::Sequence {
length_width: Definition::DEFAULT_LENGTH_WIDTH,
length_range: Definition::DEFAULT_LENGTH_RANGE,
elements: "u8".to_string()
Expand All @@ -939,15 +953,15 @@ mod tests {
let actual_name = BTreeSet::<String>::declaration();
let mut actual_defs = map!();
BTreeSet::<String>::add_definitions_recursively(&mut actual_defs);
assert_eq!("BTreeSet<string>", actual_name);
assert_eq!("BTreeSet<String>", actual_name);
assert_eq!(
map! {
"BTreeSet<string>" => Definition::Sequence {
"BTreeSet<String>" => Definition::Sequence {
length_width: Definition::DEFAULT_LENGTH_WIDTH,
length_range: Definition::DEFAULT_LENGTH_RANGE,
elements: "string".to_string(),
elements: "String".to_string(),
},
"string" => Definition::Sequence {
"String" => Definition::Sequence {
length_width: Definition::DEFAULT_LENGTH_WIDTH,
length_range: Definition::DEFAULT_LENGTH_RANGE,
elements: "u8".to_string()
Expand Down Expand Up @@ -1009,14 +1023,14 @@ mod tests {
#[test]
fn string() {
let actual_name = str::declaration();
assert_eq!("string", actual_name);
assert_eq!("String", actual_name);
let actual_name = String::declaration();
assert_eq!("string", actual_name);
assert_eq!("String", actual_name);
let mut actual_defs = map!();
String::add_definitions_recursively(&mut actual_defs);
assert_eq!(
map! {
"string" => Definition::Sequence {
"String" => Definition::Sequence {
length_width: Definition::DEFAULT_LENGTH_WIDTH,
length_range: Definition::DEFAULT_LENGTH_RANGE,
elements: "u8".to_string()
Expand All @@ -1030,7 +1044,7 @@ mod tests {
str::add_definitions_recursively(&mut actual_defs);
assert_eq!(
map! {
"string" => Definition::Sequence {
"String" => Definition::Sequence {
length_width: Definition::DEFAULT_LENGTH_WIDTH,
length_range: Definition::DEFAULT_LENGTH_RANGE,
elements: "u8".to_string()
Expand All @@ -1044,17 +1058,17 @@ mod tests {
#[test]
fn boxed_schema() {
let boxed_declaration = Box::<str>::declaration();
assert_eq!("string", boxed_declaration);
assert_eq!("String", boxed_declaration);
let boxed_declaration = Box::<[u8]>::declaration();
assert_eq!("Vec<u8>", boxed_declaration);
}

#[test]
fn phantom_data_schema() {
let phantom_declaration = PhantomData::<String>::declaration();
assert_eq!("nil", phantom_declaration);
assert_eq!("()", phantom_declaration);
let phantom_declaration = PhantomData::<Vec<u8>>::declaration();
assert_eq!("nil", phantom_declaration);
assert_eq!("()", phantom_declaration);
}

#[test]
Expand Down
2 changes: 1 addition & 1 deletion borsh/src/schema/container_ext/max_size.rs
Original file line number Diff line number Diff line change
Expand Up @@ -450,7 +450,7 @@ mod tests {
tag_width: N,
variants: vec![
(0, "Just".into(), T::declaration()),
(1, "Nothing".into(), "nil".into()),
(1, "Nothing".into(), <()>::declaration()),
],
};
crate::schema::add_definition(Self::declaration(), definition, definitions);
Expand Down
18 changes: 12 additions & 6 deletions borsh/tests/test_schema_enums.rs
Original file line number Diff line number Diff line change
Expand Up @@ -270,19 +270,19 @@ pub fn complex_enum_generics() {

fn common_map() -> BTreeMap<String, Definition> {
map! {
"EnumParametrized<string, u32, i8, u16>" => Definition::Enum {
"EnumParametrized<String, u32, i8, u16>" => Definition::Enum {
tag_width: 1,
variants: vec![
(0, "B".to_string(), "EnumParametrizedB<u32, i8, u16>".to_string()),
(1, "C".to_string(), "EnumParametrizedC<string>".to_string())
(1, "C".to_string(), "EnumParametrizedC<String>".to_string())
]
},
"EnumParametrizedB<u32, i8, u16>" => Definition::Struct { fields: Fields::NamedFields(vec![
("x".to_string(), "BTreeMap<u32, u16>".to_string()),
("y".to_string(), "string".to_string()),
("y".to_string(), "String".to_string()),
("z".to_string(), "i8".to_string())
])},
"EnumParametrizedC<string>" => Definition::Struct{ fields: Fields::UnnamedFields(vec!["string".to_string(), "u16".to_string()])},
"EnumParametrizedC<String>" => Definition::Struct{ fields: Fields::UnnamedFields(vec!["String".to_string(), "u16".to_string()])},
"BTreeMap<u32, u16>" => Definition::Sequence {
length_width: Definition::DEFAULT_LENGTH_WIDTH,
length_range: Definition::DEFAULT_LENGTH_RANGE,
Expand All @@ -292,7 +292,7 @@ fn common_map() -> BTreeMap<String, Definition> {
"u32" => Definition::Primitive(4),
"i8" => Definition::Primitive(1),
"u16" => Definition::Primitive(2),
"string" => Definition::Sequence {
"String" => Definition::Sequence {
length_width: Definition::DEFAULT_LENGTH_WIDTH,
length_range: Definition::DEFAULT_LENGTH_RANGE,
elements: "u8".to_string()
Expand Down Expand Up @@ -330,7 +330,7 @@ pub fn generic_associated_item1() {
}

assert_eq!(
"EnumParametrized<string, u32, i8, u16>".to_string(),
"EnumParametrized<String, u32, i8, u16>".to_string(),
<EnumParametrized<String, u32, u16>>::declaration()
);

Expand Down Expand Up @@ -367,6 +367,12 @@ pub fn generic_associated_item2() {
},
C(T, u16),
}

assert_eq!(
"EnumParametrized<String, u32, i8, u16>".to_string(),
<EnumParametrized<String, u32, u16>>::declaration()
);

let mut defs = Default::default();
<EnumParametrized<String, u32, u16>>::add_definitions_recursively(&mut defs);

Expand Down
Loading

0 comments on commit 499f446

Please sign in to comment.