@@ -3,21 +3,21 @@ mod portable_registry_builder;
33use crate :: Metadata ;
44use crate :: utils:: ordered_map:: OrderedMap ;
55use crate :: utils:: variant_index:: VariantIndex ;
6- use portable_registry_builder:: PortableRegistryBuilder ;
76use alloc:: borrow:: ToOwned ;
8- use alloc:: vec:: Vec ;
9- use alloc:: string:: ToString ;
10- use alloc:: format;
117use alloc:: collections:: BTreeMap ;
12- use scale_info_legacy :: type_registry :: RuntimeApiName ;
13- use frame_metadata :: v15 ;
14- use scale_info_legacy :: TypeRegistrySet ;
15- use frame_decode:: storage :: StorageTypeInfo ;
8+ use alloc :: format ;
9+ use alloc :: string :: ToString ;
10+ use alloc :: vec :: Vec ;
11+ use frame_decode:: constants :: ConstantTypeInfo ;
1612use frame_decode:: extrinsics:: ExtrinsicTypeInfo ;
1713use frame_decode:: runtime_apis:: RuntimeApiTypeInfo ;
18- use frame_decode:: constants:: ConstantTypeInfo ;
14+ use frame_decode:: storage:: StorageTypeInfo ;
15+ use frame_metadata:: v15;
16+ use portable_registry_builder:: PortableRegistryBuilder ;
17+ use scale_info_legacy:: TypeRegistrySet ;
18+ use scale_info_legacy:: type_registry:: RuntimeApiName ;
1919
20- macro_rules! from_vx_to_vx {
20+ macro_rules! from_historic {
2121 ( $vis: vis fn $fn_name: ident( $metadata: path $( , builtin_index: $builtin_index: ident) ? ) ) => {
2222 $vis fn $fn_name( metadata: & $metadata, mut types: TypeRegistrySet <' _>) -> Result <Metadata , Error > {
2323 // Extend the types with important information from the metadata:
@@ -81,21 +81,21 @@ macro_rules! from_vx_to_vx {
8181 . storage_info( & pallet_name, & entry_name)
8282 . map_err( |e| Error :: StorageInfoError ( e. into_owned( ) ) ) ?;
8383 let entry_name = entry_name. into_owned( ) ;
84-
84+
8585 let info = info. map_ids( |old_id| {
8686 portable_registry_builder. add_type( old_id)
8787 } ) . map_err( |e| {
8888 let ctx = format!( "adding type used in storage entry {pallet_name}.{entry_name}" ) ;
8989 Error :: add_type( ctx, e)
9090 } ) ?;
91-
91+
9292 let entry = crate :: StorageEntryMetadata {
9393 name: entry_name. clone( ) ,
9494 info: info. into_owned( ) ,
9595 // We don't expose docs via our storage info yet.
9696 docs: Vec :: new( ) ,
9797 } ;
98-
98+
9999 Ok ( ( entry_name, entry) )
100100 } ) . collect:: <Result <OrderedMap <_, _>, _>>( ) ?;
101101
@@ -298,12 +298,12 @@ macro_rules! from_vx_to_vx {
298298 } }
299299}
300300
301- from_vx_to_vx ! ( pub fn from_v13( frame_metadata:: v13:: RuntimeMetadataV13 , builtin_index: yes) ) ;
302- from_vx_to_vx ! ( pub fn from_v12( frame_metadata:: v12:: RuntimeMetadataV12 , builtin_index: yes) ) ;
303- from_vx_to_vx ! ( pub fn from_v11( frame_metadata:: v11:: RuntimeMetadataV11 ) ) ;
304- from_vx_to_vx ! ( pub fn from_v10( frame_metadata:: v10:: RuntimeMetadataV10 ) ) ;
305- from_vx_to_vx ! ( pub fn from_v9( frame_metadata:: v9:: RuntimeMetadataV9 ) ) ;
306- from_vx_to_vx ! ( pub fn from_v8( frame_metadata:: v8:: RuntimeMetadataV8 ) ) ;
301+ from_historic ! ( pub fn from_v13( frame_metadata:: v13:: RuntimeMetadataV13 , builtin_index: yes) ) ;
302+ from_historic ! ( pub fn from_v12( frame_metadata:: v12:: RuntimeMetadataV12 , builtin_index: yes) ) ;
303+ from_historic ! ( pub fn from_v11( frame_metadata:: v11:: RuntimeMetadataV11 ) ) ;
304+ from_historic ! ( pub fn from_v10( frame_metadata:: v10:: RuntimeMetadataV10 ) ) ;
305+ from_historic ! ( pub fn from_v9( frame_metadata:: v9:: RuntimeMetadataV9 ) ) ;
306+ from_historic ! ( pub fn from_v8( frame_metadata:: v8:: RuntimeMetadataV8 ) ) ;
307307
308308fn as_decoded < A , B > ( item : & frame_metadata:: decode_different:: DecodeDifferent < A , B > ) -> & B {
309309 match item {
@@ -316,8 +316,8 @@ fn as_decoded<A, B>(item: &frame_metadata::decode_different::DecodeDifferent<A,
316316
317317// Obtain Runtime API information from some type registry.
318318pub fn type_registry_to_runtime_apis (
319- types : & TypeRegistrySet < ' _ > ,
320- portable_registry_builder : & mut PortableRegistryBuilder
319+ types : & TypeRegistrySet < ' _ > ,
320+ portable_registry_builder : & mut PortableRegistryBuilder ,
321321) -> Result < OrderedMap < String , crate :: RuntimeApiMetadataInner > , Error > {
322322 let mut apis = OrderedMap :: new ( ) ;
323323 let mut trait_name = "" ;
@@ -327,34 +327,38 @@ pub fn type_registry_to_runtime_apis(
327327 match api {
328328 RuntimeApiName :: Trait ( name) => {
329329 if !trait_methods. is_empty ( ) {
330- apis. push_insert ( trait_name. into ( ) , crate :: RuntimeApiMetadataInner {
331- name : trait_name. into ( ) ,
332- methods : trait_methods,
333- docs : Vec :: new ( )
334- } ) ;
330+ apis. push_insert (
331+ trait_name. into ( ) ,
332+ crate :: RuntimeApiMetadataInner {
333+ name : trait_name. into ( ) ,
334+ methods : trait_methods,
335+ docs : Vec :: new ( ) ,
336+ } ,
337+ ) ;
335338 }
336339 trait_methods = OrderedMap :: new ( ) ;
337340 trait_name = name;
338- } ,
341+ }
339342 RuntimeApiName :: Method ( name) => {
340343 let info = types
341344 . runtime_api_info ( trait_name, name)
342345 . map_err ( |e| Error :: RuntimeApiInfoError ( e. into_owned ( ) ) ) ?;
343346
344347 let info = info. map_ids ( |id| {
345- portable_registry_builder
346- . add_type ( id)
347- . map_err ( |e| {
348- let c = format ! ( "converting type for runtime API {trait_name}.{name}" ) ;
349- Error :: add_type ( c, e)
350- } )
348+ portable_registry_builder. add_type ( id) . map_err ( |e| {
349+ let c = format ! ( "converting type for runtime API {trait_name}.{name}" ) ;
350+ Error :: add_type ( c, e)
351+ } )
351352 } ) ?;
352353
353- trait_methods. push_insert ( name. to_owned ( ) , crate :: RuntimeApiMethodMetadataInner {
354- name : name. into ( ) ,
355- info,
356- docs : Vec :: new ( ) ,
357- } ) ;
354+ trait_methods. push_insert (
355+ name. to_owned ( ) ,
356+ crate :: RuntimeApiMethodMetadataInner {
357+ name : name. into ( ) ,
358+ info,
359+ docs : Vec :: new ( ) ,
360+ } ,
361+ ) ;
358362 }
359363 }
360364 }
@@ -370,15 +374,17 @@ pub enum Error {
370374 #[ error( "Cannot add type ({context}): {error}" ) ]
371375 AddTypeError {
372376 context : String ,
373- error : portable_registry_builder:: PortableRegistryAddTypeError
377+ error : portable_registry_builder:: PortableRegistryAddTypeError ,
374378 } ,
375379 #[ error( "Cannot enhance the types with information from metadata: {0}" ) ]
376380 CannotEnhanceTypesFromMetadata ( scale_info_legacy:: lookup_name:: ParseError ) ,
377381 #[ error( "Cannot find 'hardcoded::ExtrinsicAddress' type in legacy types" ) ]
378382 CannotFindAddressType ,
379383 #[ error( "Cannot find 'hardcoded::ExtrinsicSignature' type in legacy types" ) ]
380384 CannotFindSignatureType ,
381- #[ error( "Cannot find 'builtin::Call' type in legacy types (this should have been automatically added)" ) ]
385+ #[ error(
386+ "Cannot find 'builtin::Call' type in legacy types (this should have been automatically added)"
387+ ) ]
382388 CannotFindCallType ,
383389 #[ error( "Cannot obtain the storage information we need to convert storage entries" ) ]
384390 StorageInfoError ( frame_decode:: storage:: StorageInfoError < ' static > ) ,
@@ -392,7 +398,13 @@ pub enum Error {
392398
393399impl Error {
394400 /// A shorthand for the [`Error::AddTypeError`] variant.
395- fn add_type ( context : impl Into < String > , error : impl Into < portable_registry_builder:: PortableRegistryAddTypeError > ) -> Self {
396- Error :: AddTypeError { context : context. into ( ) , error : error. into ( ) }
401+ fn add_type (
402+ context : impl Into < String > ,
403+ error : impl Into < portable_registry_builder:: PortableRegistryAddTypeError > ,
404+ ) -> Self {
405+ Error :: AddTypeError {
406+ context : context. into ( ) ,
407+ error : error. into ( ) ,
408+ }
397409 }
398410}
0 commit comments