From 6363deb70ae81df20e9aaff4467a778c0f43e0b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastian=20K=C3=B6cher?= Date: Fri, 20 Oct 2023 11:21:19 +0200 Subject: [PATCH] `xcm`: Change `TypeInfo::path` to not include `staging` (#1948) The `xcm` crate was renamed to `staging-xcm` to be able to publish it to crates.io as someone as squatted `xcm`. The problem with this rename is that the `TypeInfo` includes the crate name which ultimately lands in the metadata. The metadata is consumed by downstream users like `polkadot-js` or people building on top of `polkadot-js`. These people are using the entire `path` to find the type in the type registry. Thus, their code would break as the type path would now be [`staging_xcm`, `VersionedXcm`] instead of [`xcm`, `VersionedXcm`]. This pull request fixes this by renaming the path segment `staging_xcm` to `xcm`. This requires: https://github.com/paritytech/scale-info/pull/197 --------- Co-authored-by: Francisco Aguirre --- Cargo.toml | 2 +- pallet-xcm-benchmarks/Cargo.toml | 2 +- pallet-xcm/Cargo.toml | 2 +- src/double_encoded.rs | 1 + src/lib.rs | 3 +++ src/tests.rs | 9 +++++++++ src/v2/junction.rs | 1 + src/v2/mod.rs | 8 ++++++++ src/v2/multiasset.rs | 8 ++++++++ src/v2/multilocation.rs | 2 ++ src/v2/traits.rs | 3 +++ src/v3/junction.rs | 4 ++++ src/v3/junctions.rs | 1 + src/v3/mod.rs | 7 +++++++ src/v3/multiasset.rs | 8 ++++++++ src/v3/traits.rs | 3 +++ xcm-builder/Cargo.toml | 2 +- xcm-simulator/example/Cargo.toml | 2 +- xcm-simulator/fuzzer/Cargo.toml | 2 +- 19 files changed, 64 insertions(+), 6 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index f04f31c3e..92024e69c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,7 +12,7 @@ derivative = { version = "2.2.0", default-features = false, features = [ "use_co impl-trait-for-tuples = "0.2.2" log = { version = "0.4.17", default-features = false } parity-scale-codec = { version = "3.6.1", default-features = false, features = [ "derive", "max-encoded-len" ] } -scale-info = { version = "2.5.0", default-features = false, features = ["derive", "serde"] } +scale-info = { version = "2.10.0", default-features = false, features = ["derive", "serde"] } sp-weights = { path = "../../substrate/primitives/weights", default-features = false, features = ["serde"] } serde = { version = "1.0.188", default-features = false, features = ["alloc", "derive"] } xcm-procedural = { path = "procedural" } diff --git a/pallet-xcm-benchmarks/Cargo.toml b/pallet-xcm-benchmarks/Cargo.toml index 35b0b7dc5..fb4f389b2 100644 --- a/pallet-xcm-benchmarks/Cargo.toml +++ b/pallet-xcm-benchmarks/Cargo.toml @@ -10,7 +10,7 @@ targets = ["x86_64-unknown-linux-gnu"] [dependencies] codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false } -scale-info = { version = "2.5.0", default-features = false, features = ["derive"] } +scale-info = { version = "2.10.0", default-features = false, features = ["derive"] } frame-support = { path = "../../../substrate/frame/support", default-features = false} frame-system = { path = "../../../substrate/frame/system", default-features = false} sp-runtime = { path = "../../../substrate/primitives/runtime", default-features = false} diff --git a/pallet-xcm/Cargo.toml b/pallet-xcm/Cargo.toml index 7e69d5edd..e471e8cf2 100644 --- a/pallet-xcm/Cargo.toml +++ b/pallet-xcm/Cargo.toml @@ -9,7 +9,7 @@ license.workspace = true [dependencies] bounded-collections = { version = "0.1.8", default-features = false } codec = { package = "parity-scale-codec", version = "3.6.1", default-features = false, features = ["derive"] } -scale-info = { version = "2.5.0", default-features = false, features = ["derive"] } +scale-info = { version = "2.10.0", default-features = false, features = ["derive"] } serde = { version = "1.0.188", optional = true, features = ["derive"] } log = { version = "0.4.17", default-features = false } diff --git a/src/double_encoded.rs b/src/double_encoded.rs index c4c1276fa..2dc9b0122 100644 --- a/src/double_encoded.rs +++ b/src/double_encoded.rs @@ -24,6 +24,7 @@ use parity_scale_codec::{Decode, DecodeLimit, Encode}; #[codec(encode_bound())] #[codec(decode_bound())] #[scale_info(bounds(), skip_type_params(T))] +#[scale_info(replace_segment("staging_xcm", "xcm"))] pub struct DoubleEncoded { encoded: Vec, #[codec(skip)] diff --git a/src/lib.rs b/src/lib.rs index d3e2baf4f..d804e4bf7 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -89,6 +89,7 @@ macro_rules! versioned_type { )] #[codec(encode_bound())] #[codec(decode_bound())] + #[scale_info(replace_segment("staging_xcm", "xcm"))] $(#[$attr])* pub enum $n { $(#[$index3])* @@ -150,6 +151,7 @@ macro_rules! versioned_type { )] #[codec(encode_bound())] #[codec(decode_bound())] + #[scale_info(replace_segment("staging_xcm", "xcm"))] $(#[$attr])* pub enum $n { $(#[$index2])* @@ -310,6 +312,7 @@ versioned_type! { #[codec(encode_bound())] #[codec(decode_bound())] #[scale_info(bounds(), skip_type_params(RuntimeCall))] +#[scale_info(replace_segment("staging_xcm", "xcm"))] pub enum VersionedXcm { #[codec(index = 2)] V2(v2::Xcm), diff --git a/src/tests.rs b/src/tests.rs index 10b14ffec..a3a60f647 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -181,3 +181,12 @@ fn encode_decode_versioned_xcm_v3() { let decoded = VersionedXcm::decode(&mut &encoded[..]).unwrap(); assert_eq!(xcm, decoded); } + +// With the renaming of the crate to `staging-xcm` the naming in the metadata changed as well and +// this broke downstream users. This test ensures that the name in the metadata isn't changed. +#[test] +fn ensure_type_info_is_correct() { + let type_info = VersionedXcm::<()>::type_info(); + + assert_eq!(type_info.path.segments, vec!["xcm", "VersionedXcm"]); +} diff --git a/src/v2/junction.rs b/src/v2/junction.rs index 73a502999..771931f4b 100644 --- a/src/v2/junction.rs +++ b/src/v2/junction.rs @@ -27,6 +27,7 @@ use scale_info::TypeInfo; /// Each item assumes a pre-existing location as its context and is defined in terms of it. #[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Encode, Decode, Debug, TypeInfo, MaxEncodedLen)] #[cfg_attr(feature = "std", derive(serde::Serialize, serde::Deserialize))] +#[scale_info(replace_segment("staging_xcm", "xcm"))] pub enum Junction { /// An indexed parachain belonging to and operated by the context. /// diff --git a/src/v2/mod.rs b/src/v2/mod.rs index a81468cd4..7f654ebfd 100644 --- a/src/v2/mod.rs +++ b/src/v2/mod.rs @@ -81,6 +81,7 @@ pub use traits::{Error, ExecuteXcm, GetWeight, Outcome, Result, SendError, SendR /// Basically just the XCM (more general) version of `ParachainDispatchOrigin`. #[derive(Copy, Clone, Eq, PartialEq, Encode, Decode, Debug, TypeInfo)] +#[scale_info(replace_segment("staging_xcm", "xcm"))] pub enum OriginKind { /// Origin should just be the native dispatch origin representation for the sender in the /// local runtime framework. For Cumulus/Frame chains this is the `Parachain` or `Relay` origin @@ -105,6 +106,7 @@ pub enum OriginKind { /// A global identifier of an account-bearing consensus system. #[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Encode, Decode, Debug, TypeInfo, MaxEncodedLen)] #[cfg_attr(feature = "std", derive(serde::Serialize, serde::Deserialize))] +#[scale_info(replace_segment("staging_xcm", "xcm"))] pub enum NetworkId { /// Unidentified/any. Any, @@ -141,6 +143,7 @@ impl TryFrom for NetworkId { /// An identifier of a pluralistic body. #[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Encode, Decode, Debug, TypeInfo, MaxEncodedLen)] #[cfg_attr(feature = "std", derive(serde::Serialize, serde::Deserialize))] +#[scale_info(replace_segment("staging_xcm", "xcm"))] pub enum BodyId { /// The only body in its context. Unit, @@ -195,6 +198,7 @@ impl From for BodyId { /// A part of a pluralistic body. #[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Encode, Decode, Debug, TypeInfo, MaxEncodedLen)] #[cfg_attr(feature = "std", derive(serde::Serialize, serde::Deserialize))] +#[scale_info(replace_segment("staging_xcm", "xcm"))] pub enum BodyPart { /// The body's declaration, under whatever means it decides. Voice, @@ -262,6 +266,7 @@ pub type QueryId = u64; #[codec(encode_bound())] #[codec(decode_bound())] #[scale_info(bounds(), skip_type_params(RuntimeCall))] +#[scale_info(replace_segment("staging_xcm", "xcm"))] pub struct Xcm(pub Vec>); impl Xcm { @@ -357,6 +362,7 @@ pub mod prelude { /// Response data to a query. #[derive(Clone, Eq, PartialEq, Encode, Decode, Debug, TypeInfo)] +#[scale_info(replace_segment("staging_xcm", "xcm"))] pub enum Response { /// No response. Serves as a neutral default. Null, @@ -376,6 +382,7 @@ impl Default for Response { /// An optional weight limit. #[derive(Clone, Eq, PartialEq, Encode, Decode, Debug, TypeInfo)] +#[scale_info(replace_segment("staging_xcm", "xcm"))] pub enum WeightLimit { /// No weight limit imposed. Unlimited, @@ -428,6 +435,7 @@ pub type Weight = u64; #[codec(encode_bound())] #[codec(decode_bound())] #[scale_info(bounds(), skip_type_params(RuntimeCall))] +#[scale_info(replace_segment("staging_xcm", "xcm"))] pub enum Instruction { /// Withdraw asset(s) (`assets`) from the ownership of `origin` and place them into the Holding /// Register. diff --git a/src/v2/multiasset.rs b/src/v2/multiasset.rs index fdd7797a1..5681e9ef8 100644 --- a/src/v2/multiasset.rs +++ b/src/v2/multiasset.rs @@ -41,6 +41,7 @@ use scale_info::TypeInfo; /// A general identifier for an instance of a non-fungible asset class. #[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Encode, Decode, Debug, TypeInfo)] #[cfg_attr(feature = "std", derive(serde::Serialize, serde::Deserialize))] +#[scale_info(replace_segment("staging_xcm", "xcm"))] pub enum AssetInstance { /// Undefined - used if the non-fungible asset class has only one instance. Undefined, @@ -119,6 +120,7 @@ impl TryFrom for AssetInstance { /// Classification of an asset being concrete or abstract. #[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Debug, Encode, Decode, TypeInfo)] #[cfg_attr(feature = "std", derive(serde::Serialize, serde::Deserialize))] +#[scale_info(replace_segment("staging_xcm", "xcm"))] pub enum AssetId { Concrete(MultiLocation), Abstract(Vec), @@ -185,6 +187,7 @@ impl AssetId { /// instance. #[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Debug, Encode, Decode, TypeInfo)] #[cfg_attr(feature = "std", derive(serde::Serialize, serde::Deserialize))] +#[scale_info(replace_segment("staging_xcm", "xcm"))] pub enum Fungibility { Fungible(#[codec(compact)] u128), NonFungible(AssetInstance), @@ -224,6 +227,7 @@ impl TryFrom for Fungibility { #[derive(Clone, Eq, PartialEq, Debug, Encode, Decode, TypeInfo)] #[cfg_attr(feature = "std", derive(serde::Serialize, serde::Deserialize))] +#[scale_info(replace_segment("staging_xcm", "xcm"))] pub struct MultiAsset { pub id: AssetId, pub fun: Fungibility, @@ -309,6 +313,7 @@ impl TryFrom for MultiAsset { /// they must be sorted. #[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Debug, Encode, TypeInfo)] #[cfg_attr(feature = "std", derive(serde::Serialize, serde::Deserialize))] +#[scale_info(replace_segment("staging_xcm", "xcm"))] pub struct MultiAssets(Vec); impl Decode for MultiAssets { @@ -479,6 +484,7 @@ impl MultiAssets { /// Classification of whether an asset is fungible or not. #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Debug, Encode, Decode, TypeInfo)] #[cfg_attr(feature = "std", derive(serde::Serialize, serde::Deserialize))] +#[scale_info(replace_segment("staging_xcm", "xcm"))] pub enum WildFungibility { Fungible, NonFungible, @@ -498,6 +504,7 @@ impl TryFrom for WildFungibility { /// A wildcard representing a set of assets. #[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Debug, Encode, Decode, TypeInfo)] #[cfg_attr(feature = "std", derive(serde::Serialize, serde::Deserialize))] +#[scale_info(replace_segment("staging_xcm", "xcm"))] pub enum WildMultiAsset { /// All assets in the holding register, up to `usize` individual assets (different instances of /// non-fungibles could be separate assets). @@ -543,6 +550,7 @@ impl, B: Into> From<(A, B)> for WildMultiAsset /// in this implementation and will result in a decode error. #[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Debug, Encode, Decode, TypeInfo)] #[cfg_attr(feature = "std", derive(serde::Serialize, serde::Deserialize))] +#[scale_info(replace_segment("staging_xcm", "xcm"))] pub enum MultiAssetFilter { Definite(MultiAssets), Wild(WildMultiAsset), diff --git a/src/v2/multilocation.rs b/src/v2/multilocation.rs index 7d6bdece3..81b67eee9 100644 --- a/src/v2/multilocation.rs +++ b/src/v2/multilocation.rs @@ -50,6 +50,7 @@ use scale_info::TypeInfo; /// The `MultiLocation` value of `Null` simply refers to the interpreting consensus system. #[derive(Clone, Decode, Encode, Eq, PartialEq, Ord, PartialOrd, Debug, TypeInfo, MaxEncodedLen)] #[cfg_attr(feature = "std", derive(serde::Serialize, serde::Deserialize))] +#[scale_info(replace_segment("staging_xcm", "xcm"))] pub struct MultiLocation { /// The number of parent junctions at the beginning of this `MultiLocation`. pub parents: u8, @@ -465,6 +466,7 @@ const MAX_JUNCTIONS: usize = 8; /// instructions on constructing parent junctions. #[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Encode, Decode, Debug, TypeInfo, MaxEncodedLen)] #[cfg_attr(feature = "std", derive(serde::Serialize, serde::Deserialize))] +#[scale_info(replace_segment("staging_xcm", "xcm"))] pub enum Junctions { /// The interpreting consensus system. Here, diff --git a/src/v2/traits.rs b/src/v2/traits.rs index 8173beb19..6453f91a1 100644 --- a/src/v2/traits.rs +++ b/src/v2/traits.rs @@ -29,6 +29,7 @@ pub trait GetWeight { } #[derive(Copy, Clone, Encode, Decode, Eq, PartialEq, Debug, TypeInfo)] +#[scale_info(replace_segment("staging_xcm", "xcm"))] pub enum Error { // Errors that happen due to instructions being executed. These alone are defined in the // XCM specification. @@ -165,6 +166,7 @@ pub type Result = result::Result<(), Error>; /// Outcome of an XCM execution. #[derive(Clone, Encode, Decode, Eq, PartialEq, Debug, TypeInfo)] +#[scale_info(replace_segment("staging_xcm", "xcm"))] pub enum Outcome { /// Execution completed successfully; given weight was used. Complete(Weight), @@ -246,6 +248,7 @@ impl ExecuteXcm for () { /// Error result value when attempting to send an XCM message. #[derive(Clone, Encode, Decode, Eq, PartialEq, Debug, scale_info::TypeInfo)] +#[scale_info(replace_segment("staging_xcm", "xcm"))] pub enum SendError { /// The message and destination combination was not recognized as being reachable. /// diff --git a/src/v3/junction.rs b/src/v3/junction.rs index b5dd5bc7c..47429a8c3 100644 --- a/src/v3/junction.rs +++ b/src/v3/junction.rs @@ -49,6 +49,7 @@ use serde::{Deserialize, Serialize}; Serialize, Deserialize, )] +#[scale_info(replace_segment("staging_xcm", "xcm"))] pub enum NetworkId { /// Network specified by the first 32 bytes of its genesis block. ByGenesis([u8; 32]), @@ -116,6 +117,7 @@ impl TryFrom for NetworkId { Serialize, Deserialize, )] +#[scale_info(replace_segment("staging_xcm", "xcm"))] pub enum BodyId { /// The only body in its context. Unit, @@ -186,6 +188,7 @@ impl TryFrom for BodyId { Serialize, Deserialize, )] +#[scale_info(replace_segment("staging_xcm", "xcm"))] pub enum BodyPart { /// The body's declaration, under whatever means it decides. Voice, @@ -261,6 +264,7 @@ impl TryFrom for BodyPart { Serialize, Deserialize, )] +#[scale_info(replace_segment("staging_xcm", "xcm"))] pub enum Junction { /// An indexed parachain belonging to and operated by the context. /// diff --git a/src/v3/junctions.rs b/src/v3/junctions.rs index f7624c91c..d1cbc2dbe 100644 --- a/src/v3/junctions.rs +++ b/src/v3/junctions.rs @@ -44,6 +44,7 @@ pub(crate) const MAX_JUNCTIONS: usize = 8; serde::Serialize, serde::Deserialize, )] +#[scale_info(replace_segment("staging_xcm", "xcm"))] pub enum Junctions { /// The interpreting consensus system. Here, diff --git a/src/v3/mod.rs b/src/v3/mod.rs index a3490108e..f9f31b752 100644 --- a/src/v3/mod.rs +++ b/src/v3/mod.rs @@ -68,6 +68,7 @@ pub type QueryId = u64; #[derivative(Clone(bound = ""), Eq(bound = ""), PartialEq(bound = ""), Debug(bound = ""))] #[codec(encode_bound())] #[scale_info(bounds(), skip_type_params(Call))] +#[scale_info(replace_segment("staging_xcm", "xcm"))] pub struct Xcm(pub Vec>); pub const MAX_INSTRUCTIONS_TO_DECODE: u8 = 100; @@ -236,6 +237,7 @@ parameter_types! { } #[derive(Clone, Eq, PartialEq, Encode, Decode, Debug, TypeInfo, MaxEncodedLen)] +#[scale_info(replace_segment("staging_xcm", "xcm"))] pub struct PalletInfo { #[codec(compact)] index: u32, @@ -266,6 +268,7 @@ impl PalletInfo { } #[derive(Clone, Eq, PartialEq, Encode, Decode, Debug, TypeInfo, MaxEncodedLen)] +#[scale_info(replace_segment("staging_xcm", "xcm"))] pub enum MaybeErrorCode { Success, Error(BoundedVec), @@ -289,6 +292,7 @@ impl Default for MaybeErrorCode { /// Response data to a query. #[derive(Clone, Eq, PartialEq, Encode, Decode, Debug, TypeInfo, MaxEncodedLen)] +#[scale_info(replace_segment("staging_xcm", "xcm"))] pub enum Response { /// No response. Serves as a neutral default. Null, @@ -312,6 +316,7 @@ impl Default for Response { /// Information regarding the composition of a query response. #[derive(Clone, Eq, PartialEq, Encode, Decode, Debug, TypeInfo)] +#[scale_info(replace_segment("staging_xcm", "xcm"))] pub struct QueryResponseInfo { /// The destination to which the query response message should be send. pub destination: MultiLocation, @@ -324,6 +329,7 @@ pub struct QueryResponseInfo { /// An optional weight limit. #[derive(Clone, Eq, PartialEq, Encode, Decode, Debug, TypeInfo)] +#[scale_info(replace_segment("staging_xcm", "xcm"))] pub enum WeightLimit { /// No weight limit imposed. Unlimited, @@ -400,6 +406,7 @@ impl XcmContext { #[codec(encode_bound())] #[codec(decode_bound())] #[scale_info(bounds(), skip_type_params(Call))] +#[scale_info(replace_segment("staging_xcm", "xcm"))] pub enum Instruction { /// Withdraw asset(s) (`assets`) from the ownership of `origin` and place them into the Holding /// Register. diff --git a/src/v3/multiasset.rs b/src/v3/multiasset.rs index 188555318..9d86fb8de 100644 --- a/src/v3/multiasset.rs +++ b/src/v3/multiasset.rs @@ -47,6 +47,7 @@ use scale_info::TypeInfo; Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Encode, Decode, Debug, TypeInfo, MaxEncodedLen, )] #[cfg_attr(feature = "std", derive(serde::Serialize, serde::Deserialize))] +#[scale_info(replace_segment("staging_xcm", "xcm"))] pub enum AssetInstance { /// Undefined - used if the non-fungible asset class has only one instance. Undefined, @@ -242,6 +243,7 @@ impl TryFrom for u128 { /// instance. #[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Debug, Encode, TypeInfo, MaxEncodedLen)] #[cfg_attr(feature = "std", derive(serde::Serialize, serde::Deserialize))] +#[scale_info(replace_segment("staging_xcm", "xcm"))] pub enum Fungibility { /// A fungible asset; we record a number of units, as a `u128` in the inner item. Fungible(#[codec(compact)] u128), @@ -311,6 +313,7 @@ impl TryFrom for Fungibility { Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Debug, Encode, Decode, TypeInfo, MaxEncodedLen, )] #[cfg_attr(feature = "std", derive(serde::Serialize, serde::Deserialize))] +#[scale_info(replace_segment("staging_xcm", "xcm"))] pub enum WildFungibility { /// The asset is fungible. Fungible, @@ -334,6 +337,7 @@ impl TryFrom for WildFungibility { Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Debug, Encode, Decode, TypeInfo, MaxEncodedLen, )] #[cfg_attr(feature = "std", derive(serde::Serialize, serde::Deserialize))] +#[scale_info(replace_segment("staging_xcm", "xcm"))] pub enum AssetId { /// A specific location identifying an asset. Concrete(MultiLocation), @@ -408,6 +412,7 @@ impl AssetId { /// Either an amount of a single fungible asset, or a single well-identified non-fungible asset. #[derive(Clone, Eq, PartialEq, Debug, Encode, Decode, TypeInfo, MaxEncodedLen)] #[cfg_attr(feature = "std", derive(serde::Serialize, serde::Deserialize))] +#[scale_info(replace_segment("staging_xcm", "xcm"))] pub struct MultiAsset { /// The overall asset identity (aka *class*, in the case of a non-fungible). pub id: AssetId, @@ -505,6 +510,7 @@ impl TryFrom for MultiAsset { /// - The number of items should grow no larger than `MAX_ITEMS_IN_MULTIASSETS`. #[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Debug, Encode, TypeInfo, Default)] #[cfg_attr(feature = "std", derive(serde::Serialize, serde::Deserialize))] +#[scale_info(replace_segment("staging_xcm", "xcm"))] pub struct MultiAssets(Vec); /// Maximum number of items in a single `MultiAssets` value that can be decoded. @@ -700,6 +706,7 @@ impl MultiAssets { /// A wildcard representing a set of assets. #[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Debug, Encode, Decode, TypeInfo, MaxEncodedLen)] #[cfg_attr(feature = "std", derive(serde::Serialize, serde::Deserialize))] +#[scale_info(replace_segment("staging_xcm", "xcm"))] pub enum WildMultiAsset { /// All assets in Holding. All, @@ -812,6 +819,7 @@ impl, B: Into> From<(A, B)> for WildMultiAsset /// `MultiAsset` collection, defined either by a number of `MultiAssets` or a single wildcard. #[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Debug, Encode, Decode, TypeInfo, MaxEncodedLen)] #[cfg_attr(feature = "std", derive(serde::Serialize, serde::Deserialize))] +#[scale_info(replace_segment("staging_xcm", "xcm"))] pub enum MultiAssetFilter { /// Specify the filter as being everything contained by the given `MultiAssets` inner. Definite(MultiAssets), diff --git a/src/v3/traits.rs b/src/v3/traits.rs index a3cbeada9..1043d17b7 100644 --- a/src/v3/traits.rs +++ b/src/v3/traits.rs @@ -29,6 +29,7 @@ use super::*; /// format. Those trailing are merely part of the XCM implementation; there is no expectation that /// they will retain the same index over time. #[derive(Copy, Clone, Encode, Decode, Eq, PartialEq, Debug, TypeInfo)] +#[scale_info(replace_segment("staging_xcm", "xcm"))] pub enum Error { // Errors that happen due to instructions being executed. These alone are defined in the // XCM specification. @@ -262,6 +263,7 @@ impl From for Outcome { /// Outcome of an XCM execution. #[derive(Clone, Encode, Decode, Eq, PartialEq, Debug, TypeInfo)] +#[scale_info(replace_segment("staging_xcm", "xcm"))] pub enum Outcome { /// Execution completed successfully; given weight was used. Complete(Weight), @@ -410,6 +412,7 @@ impl ExecuteXcm for () { /// Error result value when attempting to send an XCM message. #[derive(Clone, Encode, Decode, Eq, PartialEq, Debug, scale_info::TypeInfo)] +#[scale_info(replace_segment("staging_xcm", "xcm"))] pub enum SendError { /// The message and destination combination was not recognized as being reachable. /// diff --git a/xcm-builder/Cargo.toml b/xcm-builder/Cargo.toml index 1f0e1cf34..7d6c40eb8 100644 --- a/xcm-builder/Cargo.toml +++ b/xcm-builder/Cargo.toml @@ -9,7 +9,7 @@ version = "1.0.0" [dependencies] impl-trait-for-tuples = "0.2.1" parity-scale-codec = { version = "3.6.1", default-features = false, features = ["derive"] } -scale-info = { version = "2.5.0", default-features = false, features = ["derive"] } +scale-info = { version = "2.10.0", default-features = false, features = ["derive"] } xcm = { package = "staging-xcm", path = "..", default-features = false } xcm-executor = { package = "staging-xcm-executor", path = "../xcm-executor", default-features = false } sp-std = { path = "../../../substrate/primitives/std", default-features = false } diff --git a/xcm-simulator/example/Cargo.toml b/xcm-simulator/example/Cargo.toml index 9c48b11f6..f0caa5ab4 100644 --- a/xcm-simulator/example/Cargo.toml +++ b/xcm-simulator/example/Cargo.toml @@ -8,7 +8,7 @@ version = "1.0.0" [dependencies] codec = { package = "parity-scale-codec", version = "3.6.1" } -scale-info = { version = "2.5.0", features = ["derive"] } +scale-info = { version = "2.10.0", features = ["derive"] } log = { version = "0.4.14", default-features = false } frame-system = { path = "../../../../substrate/frame/system" } diff --git a/xcm-simulator/fuzzer/Cargo.toml b/xcm-simulator/fuzzer/Cargo.toml index 0ca57e680..acf28bec4 100644 --- a/xcm-simulator/fuzzer/Cargo.toml +++ b/xcm-simulator/fuzzer/Cargo.toml @@ -11,7 +11,7 @@ publish = false codec = { package = "parity-scale-codec", version = "3.6.1" } honggfuzz = "0.5.55" arbitrary = "1.2.0" -scale-info = { version = "2.5.0", features = ["derive"] } +scale-info = { version = "2.10.0", features = ["derive"] } frame-system = { path = "../../../../substrate/frame/system" } frame-support = { path = "../../../../substrate/frame/support" }