Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Put GetWeight where it belongs #1212

Merged
merged 5 commits into from
Aug 31, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 0 additions & 5 deletions polkadot/xcm/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -447,11 +447,6 @@ pub mod opaque {
pub type VersionedXcm = super::VersionedXcm<()>;
}

// A simple trait to get the weight of some object.
pub trait GetWeight<W> {
fn weight(&self) -> latest::Weight;
}

#[test]
fn conversion_works() {
use latest::prelude::*;
Expand Down
4 changes: 2 additions & 2 deletions polkadot/xcm/src/v2/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ use super::{
NetworkId as NewNetworkId, Response as NewResponse, WeightLimit as NewWeightLimit,
Xcm as NewXcm,
},
DoubleEncoded, GetWeight,
DoubleEncoded,
};
use alloc::{vec, vec::Vec};
use bounded_collections::{ConstU32, WeakBoundedVec};
Expand All @@ -77,7 +77,7 @@ pub use multiasset::{
pub use multilocation::{
Ancestor, AncestorThen, InteriorMultiLocation, Junctions, MultiLocation, Parent, ParentThen,
};
pub use traits::{Error, ExecuteXcm, Outcome, Result, SendError, SendResult, SendXcm};
pub use traits::{Error, ExecuteXcm, GetWeight, Outcome, Result, SendError, SendResult, SendXcm};

/// Basically just the XCM (more general) version of `ParachainDispatchOrigin`.
#[derive(Copy, Clone, Eq, PartialEq, Encode, Decode, Debug, TypeInfo)]
Expand Down
5 changes: 5 additions & 0 deletions polkadot/xcm/src/v2/traits.rs
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,11 @@ use scale_info::TypeInfo;

use super::*;

// A simple trait to get the weight of some object.
pub trait GetWeight<W> {
fn weight(&self) -> sp_weights::Weight;
}

#[derive(Copy, Clone, Encode, Decode, Eq, PartialEq, Debug, TypeInfo)]
pub enum Error {
// Errors that happen due to instructions being executed. These alone are defined in the
Expand Down
5 changes: 3 additions & 2 deletions polkadot/xcm/src/v3/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ use super::v2::{
Instruction as OldInstruction, Response as OldResponse, WeightLimit as OldWeightLimit,
Xcm as OldXcm,
};
use crate::{DoubleEncoded, GetWeight};
use crate::DoubleEncoded;
use alloc::{vec, vec::Vec};
use bounded_collections::{parameter_types, BoundedVec, ConstU32};
use core::{
Expand Down Expand Up @@ -54,7 +54,7 @@ pub use traits::{
SendResult, SendXcm, Weight, XcmHash,
};
// These parts of XCM v2 are unchanged in XCM v3, and are re-imported here.
pub use super::v2::OriginKind;
pub use super::v2::{GetWeight, OriginKind};

/// This module's XCM version.
pub const VERSION: super::Version = 3;
Expand Down Expand Up @@ -186,6 +186,7 @@ pub mod prelude {
AssetInstance::{self, *},
BodyId, BodyPart, Error as XcmError, ExecuteXcm,
Fungibility::{self, *},
GetWeight,
Instruction::*,
InteriorMultiLocation,
Junction::{self, *},
Expand Down
5 changes: 2 additions & 3 deletions polkadot/xcm/xcm-builder/src/weight.rs
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ where
W: XcmWeightInfo<C>,
C: Decode + GetDispatchInfo,
M: Get<u32>,
Instruction<C>: xcm::GetWeight<W>,
Instruction<C>: xcm::latest::GetWeight<W>,
{
fn weight(message: &mut Xcm<C>) -> Result<Weight, ()> {
log::trace!(target: "xcm::weight", "WeightInfoBounds message: {:?}", message);
Expand All @@ -90,7 +90,7 @@ where
W: XcmWeightInfo<C>,
C: Decode + GetDispatchInfo,
M: Get<u32>,
Instruction<C>: xcm::GetWeight<W>,
Instruction<C>: xcm::latest::GetWeight<W>,
{
fn weight_with_limit(message: &Xcm<C>, instrs_limit: &mut u32) -> Result<Weight, ()> {
let mut r: Weight = Weight::zero();
Expand All @@ -104,7 +104,6 @@ where
instruction: &Instruction<C>,
instrs_limit: &mut u32,
) -> Result<Weight, ()> {
use xcm::GetWeight;
let instr_weight = match instruction {
Transact { require_weight_at_most, .. } => *require_weight_at_most,
SetErrorHandler(xcm) | SetAppendix(xcm) => Self::weight_with_limit(xcm, instrs_limit)?,
Expand Down