mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-17 18:21:02 +00:00
Backport #2015
This commit is contained in:
Generated
+1
@@ -5228,6 +5228,7 @@ dependencies = [
|
|||||||
"pretty_assertions",
|
"pretty_assertions",
|
||||||
"quote",
|
"quote",
|
||||||
"scale-info",
|
"scale-info",
|
||||||
|
"scale-typegen",
|
||||||
"scale-typegen-description",
|
"scale-typegen-description",
|
||||||
"scale-value",
|
"scale-value",
|
||||||
"serde",
|
"serde",
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ chain-spec-pruning = ["smoldot"]
|
|||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
subxt-codegen = { workspace = true }
|
subxt-codegen = { workspace = true }
|
||||||
|
scale-typegen = { workspace = true }
|
||||||
subxt-utils-fetchmetadata = { workspace = true, features = ["url"] }
|
subxt-utils-fetchmetadata = { workspace = true, features = ["url"] }
|
||||||
subxt-metadata = { workspace = true }
|
subxt-metadata = { workspace = true }
|
||||||
subxt = { workspace = true, features = ["default"] }
|
subxt = { workspace = true, features = ["default"] }
|
||||||
|
|||||||
@@ -210,8 +210,18 @@ fn codegen(
|
|||||||
codegen.no_docs()
|
codegen.no_docs()
|
||||||
}
|
}
|
||||||
|
|
||||||
let metadata = subxt_metadata::Metadata::decode(&mut &*metadata_bytes)
|
let metadata = {
|
||||||
.map_err(|e| eyre!("Cannot decode the provided metadata: {e}"))?;
|
let mut metadata = subxt_metadata::Metadata::decode(&mut &*metadata_bytes)
|
||||||
|
.map_err(|e| eyre!("Cannot decode the provided metadata: {e}"))?;
|
||||||
|
|
||||||
|
// Run this first to ensure type paths are unique (which may result in 1,2,3 suffixes being added
|
||||||
|
// to type paths), so that when we validate derives/substitutions below, they are allowed for such
|
||||||
|
// types. See <https://github.com/paritytech/subxt/issues/2011>.
|
||||||
|
scale_typegen::utils::ensure_unique_type_paths(metadata.types_mut())
|
||||||
|
.expect("ensure_unique_type_paths should not fail; please report an issue.");
|
||||||
|
|
||||||
|
metadata
|
||||||
|
};
|
||||||
|
|
||||||
// Configure derives:
|
// Configure derives:
|
||||||
let global_derives = raw_derives
|
let global_derives = raw_derives
|
||||||
|
|||||||
+12
-1
@@ -102,7 +102,17 @@ fn subxt_inner(args: TokenStream, item_mod: syn::ItemMod) -> Result<TokenStream,
|
|||||||
.map_err(|e| TokenStream::from(e.write_errors()))?;
|
.map_err(|e| TokenStream::from(e.write_errors()))?;
|
||||||
|
|
||||||
// Fetch metadata first, because we need it to validate some of the chosen codegen options.
|
// Fetch metadata first, because we need it to validate some of the chosen codegen options.
|
||||||
let metadata = fetch_metadata(&args)?;
|
let metadata = {
|
||||||
|
let mut metadata = fetch_metadata(&args)?;
|
||||||
|
|
||||||
|
// Run this first to ensure type paths are unique (which may result in 1,2,3 suffixes being added
|
||||||
|
// to type paths), so that when we validate derives/substitutions below, they are allowed for such
|
||||||
|
// types. See <https://github.com/paritytech/subxt/issues/2011>.
|
||||||
|
scale_typegen::utils::ensure_unique_type_paths(metadata.types_mut())
|
||||||
|
.expect("ensure_unique_type_paths should not fail; please report an issue.");
|
||||||
|
|
||||||
|
metadata
|
||||||
|
};
|
||||||
|
|
||||||
let mut codegen = CodegenBuilder::new();
|
let mut codegen = CodegenBuilder::new();
|
||||||
|
|
||||||
@@ -135,6 +145,7 @@ fn subxt_inner(args: TokenStream, item_mod: syn::ItemMod) -> Result<TokenStream,
|
|||||||
.into_iter()
|
.into_iter()
|
||||||
.collect(),
|
.collect(),
|
||||||
);
|
);
|
||||||
|
|
||||||
for d in args.derive_for_type {
|
for d in args.derive_for_type {
|
||||||
validate_type_path(&d.path.path, &metadata);
|
validate_type_path(&d.path.path, &metadata);
|
||||||
codegen.add_derives_for_type(d.path, d.derive.into_iter(), d.recursive);
|
codegen.add_derives_for_type(d.path, d.derive.into_iter(), d.recursive);
|
||||||
|
|||||||
Reference in New Issue
Block a user