Skip to content

Commit 01b6f2c

Browse files
definition_named_data_type use Type::definition + reference::custom
1 parent aa6676c commit 01b6f2c

File tree

2 files changed

+14
-4
lines changed

2 files changed

+14
-4
lines changed

macros/src/type/mod.rs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -167,9 +167,13 @@ pub fn derive(input: proc_macro::TokenStream) -> syn::Result<proc_macro::TokenSt
167167
}
168168

169169
fn definition_named_data_type(type_map: &mut #crate_ref::TypeMap) -> #crate_ref::NamedDataType {
170-
Self::named_data_type(
171-
type_map,
172-
&DEFINITION_GENERICS
170+
#crate_ref::internal::construct::named_data_type(
171+
#name.into(),
172+
#comments.into(),
173+
#deprecated,
174+
SID,
175+
IMPL_LOCATION,
176+
<Self as #crate_ref::Type>::definition(type_map)
173177
)
174178
}
175179
}

src/datatype/reference.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ pub fn inline<T: Type + ?Sized>(type_map: &mut TypeMap, generics: &[DataType]) -
1919
pub fn reference<T: NamedType>(type_map: &mut TypeMap, reference: DataTypeReference) -> Reference {
2020
if type_map.map.get(&T::SID).is_none() {
2121
type_map.map.entry(T::SID).or_insert(None);
22-
2322
let dt = T::definition_named_data_type(type_map);
2423
type_map.map.insert(T::SID, Some(dt));
2524
}
@@ -28,3 +27,10 @@ pub fn reference<T: NamedType>(type_map: &mut TypeMap, reference: DataTypeRefere
2827
inner: DataType::Reference(reference),
2928
}
3029
}
30+
31+
/// Construct a reference from a custom [DataType].
32+
///
33+
/// This function is advanced and should only be used if you know what you're doing.
34+
pub fn custom(inner: DataType) -> Reference {
35+
Reference { inner }
36+
}

0 commit comments

Comments
 (0)