diff --git a/crates/iota-graphql-rpc/schema.graphql b/crates/iota-graphql-rpc/schema.graphql index 286251819a62..4bfdeee25160 100644 --- a/crates/iota-graphql-rpc/schema.graphql +++ b/crates/iota-graphql-rpc/schema.graphql @@ -2561,12 +2561,10 @@ type MoveType { signature: MoveTypeSignature! """ Structured representation of the "shape" of values that match this type. - May return MoveTypeLayout::InvalidType for malformed types. """ layout: MoveTypeLayout! """ - The abilities this concrete type has. Returns no abilities if the type - is invalid. + The abilities this concrete type has. """ abilities: [MoveAbility!]! } diff --git a/crates/iota-graphql-rpc/src/types/move_object.rs b/crates/iota-graphql-rpc/src/types/move_object.rs index 4c580c65db5b..6da6e96167d1 100644 --- a/crates/iota-graphql-rpc/src/types/move_object.rs +++ b/crates/iota-graphql-rpc/src/types/move_object.rs @@ -438,7 +438,7 @@ impl MoveObjectImpl<'_> { pub(crate) async fn has_public_transfer(&self, ctx: &Context<'_>) -> Result { let type_: MoveType = self.0.native.struct_tag().clone().into(); let set = type_.abilities_impl(ctx.data_unchecked()).await.extend()?; - Ok(set.is_some_and(|s| s.has_key() && s.has_store())) + Ok(set.has_key() && set.has_store()) } } diff --git a/crates/iota-graphql-rpc/src/types/move_type.rs b/crates/iota-graphql-rpc/src/types/move_type.rs index 3400224e6f86..2ded254f9aeb 100644 --- a/crates/iota-graphql-rpc/src/types/move_type.rs +++ b/crates/iota-graphql-rpc/src/types/move_type.rs @@ -144,31 +144,25 @@ impl MoveType { } /// Structured representation of the "shape" of values that match this type. - /// May return MoveTypeLayout::InvalidType for malformed types. async fn layout(&self, ctx: &Context<'_>) -> Result { let resolver: &PackageResolver = ctx .data() .map_err(|_| Error::Internal("Unable to fetch Package Cache.".to_string())) .extend()?; - let Some(layout) = self.layout_impl(resolver).await.extend()? else { - return Ok(MoveTypeLayout::InvalidType); - }; + let layout = self.layout_impl(resolver).await.extend()?; MoveTypeLayout::try_from(layout).extend() } - /// The abilities this concrete type has. Returns no abilities if the type - /// is invalid. + /// The abilities this concrete type has. async fn abilities(&self, ctx: &Context<'_>) -> Result> { let resolver: &PackageResolver = ctx .data() .map_err(|_| Error::Internal("Unable to fetch Package Cache.".to_string())) .extend()?; - let Some(abilities) = self.abilities_impl(resolver).await.extend()? else { - return Ok(vec![]); - }; + let abilities = self.abilities_impl(resolver).await.extend()?; Ok(abilities.into_iter().map(MoveAbility::from).collect()) } @@ -182,32 +176,28 @@ impl MoveType { pub(crate) async fn layout_impl( &self, resolver: &PackageResolver, - ) -> Result, Error> { - Ok(Some( - resolver - .type_layout(self.native.clone()) - .await - .map_err(|e| { - Error::Internal(format!( - "Error calculating layout for {}: {e}", - self.native.to_canonical_string(/* with_prefix */ true), - )) - })?, - )) + ) -> Result { + resolver + .type_layout(self.native.clone()) + .await + .map_err(|e| { + Error::Internal(format!( + "Error calculating layout for {}: {e}", + self.native.to_canonical_string(/* with_prefix */ true), + )) + }) } pub(crate) async fn abilities_impl( &self, resolver: &PackageResolver, - ) -> Result, Error> { - Ok(Some( - resolver.abilities(self.native.clone()).await.map_err(|e| { - Error::Internal(format!( - "Error calculating abilities for {}: {e}", - self.native.to_canonical_string(/* with_prefix */ true), - )) - })?, - )) + ) -> Result { + resolver.abilities(self.native.clone()).await.map_err(|e| { + Error::Internal(format!( + "Error calculating abilities for {}: {e}", + self.native.to_canonical_string(/* with_prefix */ true), + )) + }) } } diff --git a/crates/iota-graphql-rpc/src/types/move_value.rs b/crates/iota-graphql-rpc/src/types/move_value.rs index df323240f633..b7aefbf53c7f 100644 --- a/crates/iota-graphql-rpc/src/types/move_value.rs +++ b/crates/iota-graphql-rpc/src/types/move_value.rs @@ -111,12 +111,7 @@ impl MoveValue { .map_err(|_| Error::Internal("Unable to fetch Package Cache.".to_string())) .extend()?; - let Some(layout) = self.type_.layout_impl(resolver).await.extend()? else { - return Err(Error::Internal( - "Move value must have valid layout".to_string(), - )) - .extend(); - }; + let layout = self.type_.layout_impl(resolver).await.extend()?; // Factor out into its own non-GraphQL, non-async function for better // testability @@ -143,12 +138,7 @@ impl MoveValue { .map_err(|_| Error::Internal("Unable to fetch Package Cache.".to_string())) .extend()?; - let Some(layout) = self.type_.layout_impl(resolver).await.extend()? else { - return Err(Error::Internal( - "Move value must have valid layout".to_string(), - )) - .extend(); - }; + let layout = self.type_.layout_impl(resolver).await.extend()?; // Factor out into its own non-GraphQL, non-async function for better // testability diff --git a/crates/iota-graphql-rpc/tests/snapshots/snapshot_tests__schema_sdl_export.snap b/crates/iota-graphql-rpc/tests/snapshots/snapshot_tests__schema_sdl_export.snap index 29a24c12be17..ee0e047482ec 100644 --- a/crates/iota-graphql-rpc/tests/snapshots/snapshot_tests__schema_sdl_export.snap +++ b/crates/iota-graphql-rpc/tests/snapshots/snapshot_tests__schema_sdl_export.snap @@ -2565,12 +2565,10 @@ type MoveType { signature: MoveTypeSignature! """ Structured representation of the "shape" of values that match this type. - May return MoveTypeLayout::InvalidType for malformed types. """ layout: MoveTypeLayout! """ - The abilities this concrete type has. Returns no abilities if the type - is invalid. + The abilities this concrete type has. """ abilities: [MoveAbility!]! }