Skip to content

Commit

Permalink
don't use named fields for enum SignatureVariant variant Function, si…
Browse files Browse the repository at this point in the history
…nce that yields Clippy warnings, apparently due to a hidden bug in one of the derived trait macros invoked here (dearbitrary)
  • Loading branch information
brmataptos committed Dec 7, 2024
1 parent 844871b commit fdd0ca9
Show file tree
Hide file tree
Showing 29 changed files with 157 additions and 116 deletions.
2 changes: 1 addition & 1 deletion api/types/src/bytecode.rs
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ pub trait Bytecode {
mutable: true,
to: Box::new(self.new_move_type(t.borrow())),
},
SignatureToken::Function { .. } => {
SignatureToken::Function( .. ) => {
// TODO(LAMBDA)
unimplemented!("signature token function to API MoveType")
},
Expand Down
2 changes: 1 addition & 1 deletion aptos-move/script-composer/src/decompiler.rs
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,7 @@ impl LocalState {
SignatureToken::Vector(s) => {
TypeTag::Vector(Box::new(Self::type_tag_from_sig_token(script, s)?))
},
SignatureToken::Function { .. } => {
SignatureToken::Function(..) => {
// TODO(LAMBDA)
bail!("function types not yet implemented for script composer")
},
Expand Down
10 changes: 6 additions & 4 deletions third_party/move/move-binary-format/src/binary_views.rs
Original file line number Diff line number Diff line change
Expand Up @@ -340,10 +340,12 @@ impl<'a> BinaryIndexedView<'a> {
Reference(_) | MutableReference(_) => Ok(AbilitySet::REFERENCES),
Signer => Ok(AbilitySet::SIGNER),
TypeParameter(idx) => Ok(constraints[*idx as usize]),
Vector(ty) => AbilitySet::polymorphic_abilities(AbilitySet::VECTOR, vec![false], vec![
self.abilities(ty, constraints)?,
]),
Function { abilities, .. } => Ok(*abilities),
Vector(ty) => AbilitySet::polymorphic_abilities(
AbilitySet::VECTOR,
vec![false],
vec![self.abilities(ty, constraints)?],
),
Function(_, _, abilities) => Ok(*abilities),
Struct(idx) => {
let sh = self.struct_handle_at(*idx);
Ok(sh.abilities)
Expand Down
14 changes: 5 additions & 9 deletions third_party/move/move-binary-format/src/builders.rs
Original file line number Diff line number Diff line change
Expand Up @@ -235,15 +235,11 @@ impl CompiledScriptBuilder {
MutableReference(Box::new(self.import_signature_token(module, ty)?))
},
Vector(ty) => Vector(Box::new(self.import_signature_token(module, ty)?)),
Function {
args,
results,
abilities,
} => Function {
args: import_vec(self, args)?,
results: import_vec(self, results)?,
abilities: *abilities,
},
Function(args, results, abilities) => Function(
import_vec(self, args)?,
import_vec(self, results)?,
*abilities,
),
Struct(idx) => Struct(self.import_struct(module, *idx)?),
StructInstantiation(idx, inst_tys) => StructInstantiation(
self.import_struct(module, *idx)?,
Expand Down
2 changes: 1 addition & 1 deletion third_party/move/move-binary-format/src/constant.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ fn sig_to_ty(sig: &SignatureToken) -> Option<MoveTypeLayout> {
SignatureToken::U128 => Some(MoveTypeLayout::U128),
SignatureToken::U256 => Some(MoveTypeLayout::U256),
SignatureToken::Vector(v) => Some(MoveTypeLayout::Vector(Box::new(sig_to_ty(v.as_ref())?))),
SignatureToken::Function { .. } => {
SignatureToken::Function(..) => {
// TODO(LAMBDA): do we need representation in MoveTypeLayout?
None
},
Expand Down
4 changes: 2 additions & 2 deletions third_party/move/move-binary-format/src/deserializer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1180,11 +1180,11 @@ fn load_signature_token(cursor: &mut VersionedCursor) -> BinaryLoaderResult<Sign
if args.len() >= args_arity as usize {
results.push(tok);
if results.len() >= res_arity as usize {
T::Saturated(SignatureToken::Function {
T::Saturated(SignatureToken::Function(
args,
results,
abilities,
})
))
} else {
T::Function {
args_arity,
Expand Down
36 changes: 18 additions & 18 deletions third_party/move/move-binary-format/src/file_format.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1263,11 +1263,11 @@ pub enum SignatureToken {
/// Vector
Vector(Box<SignatureToken>),
/// Function, with n argument types and m result types, and an associated ability set.
Function {
args: Vec<SignatureToken>,
results: Vec<SignatureToken>,
abilities: AbilitySet,
},
Function(
Vec<SignatureToken>, // args
Vec<SignatureToken>, // results
AbilitySet, // abilities
),
/// User defined type
Struct(StructHandleIndex),
StructInstantiation(StructHandleIndex, Vec<SignatureToken>),
Expand Down Expand Up @@ -1310,7 +1310,7 @@ impl<'a> Iterator for SignatureTokenPreorderTraversalIter<'a> {
self.stack.extend(inner_toks.iter().rev())
},

Function { args, results, .. } => {
Function( args, results, .. ) => {
self.stack.extend(args.iter().rev());
self.stack.extend(results.iter().rev());
},
Expand Down Expand Up @@ -1348,7 +1348,7 @@ impl<'a> Iterator for SignatureTokenPreorderTraversalIterWithDepth<'a> {
.stack
.extend(inner_toks.iter().map(|tok| (tok, depth + 1)).rev()),

Function { args, results, .. } => {
Function( args, results, .. ) => {
self.stack
.extend(args.iter().map(|tok| (tok, depth + 1)).rev());
self.stack
Expand Down Expand Up @@ -1415,11 +1415,11 @@ impl std::fmt::Debug for SignatureToken {
SignatureToken::Address => write!(f, "Address"),
SignatureToken::Signer => write!(f, "Signer"),
SignatureToken::Vector(boxed) => write!(f, "Vector({:?})", boxed),
SignatureToken::Function {
SignatureToken::Function (
args,
results,
abilities,
} => {
) => {
write!(f, "Function({:?}, {:?}, {})", args, results, abilities)
},
SignatureToken::Reference(boxed) => write!(f, "Reference({:?})", boxed),
Expand All @@ -1443,7 +1443,7 @@ impl SignatureToken {
| Address
| Signer
| Vector(_)
| Function { .. }
| Function ( .. )
| Struct(_)
| StructInstantiation(_, _)
| Reference(_)
Expand Down Expand Up @@ -1482,7 +1482,7 @@ impl SignatureToken {
Bool | U8 | U16 | U32 | U64 | U128 | U256 | Address => true,
Vector(inner) => inner.is_valid_for_constant(),
Signer
| Function { .. }
| Function ( .. )
| Struct(_)
| StructInstantiation(_, _)
| Reference(_)
Expand All @@ -1495,7 +1495,7 @@ impl SignatureToken {
pub fn is_function(&self) -> bool {
use SignatureToken::*;

matches!(self, Function { .. })
matches!(self, Function ( .. ))
}

/// Set the index to this one. Useful for random testing.
Expand Down Expand Up @@ -1546,15 +1546,15 @@ impl SignatureToken {
Address => Address,
Signer => Signer,
Vector(ty) => Vector(Box::new(ty.instantiate(subst_mapping))),
Function {
Function (
args,
results,
abilities,
} => Function {
args: inst_vec(args),
results: inst_vec(results),
abilities: *abilities,
},
) => Function (
inst_vec(args),
inst_vec(results),
*abilities,
),
Struct(idx) => Struct(*idx),
StructInstantiation(idx, struct_type_args) => {
StructInstantiation(*idx, inst_vec(struct_type_args))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ impl StDefnMaterializeState {
let inner = self.potential_abilities(ty);
inner.intersect(AbilitySet::VECTOR)
},
Function { abilities, .. } => *abilities,
Function(_, _, abilities) => *abilities,
Struct(idx) => {
let sh = &self.struct_handles[idx.0 as usize];
sh.abilities
Expand Down
4 changes: 2 additions & 2 deletions third_party/move/move-binary-format/src/serializer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -800,11 +800,11 @@ fn serialize_signature_token_single_node_impl(
binary.push(SerializedType::TYPE_PARAMETER as u8)?;
serialize_type_parameter_index(binary, *idx)?;
},
SignatureToken::Function {
SignatureToken::Function(
args,
results,
abilities,
} => {
) => {
binary.push(SerializedType::FUNCTION as u8)?;
serialize_signature_size(binary, args.len())?;
serialize_signature_size(binary, results.len())?;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,21 +12,21 @@ use move_core_types::{identifier::Identifier, vm_status::StatusCode};
fn get_fun_type_bool_to_bool() -> SignatureToken {
let bool_token = SignatureToken::Bool;
let abilities = AbilitySet::PUBLIC_FUNCTIONS;
SignatureToken::Function {
args: vec![bool_token.clone()],
results: vec![bool_token.clone()],
SignatureToken::Function(
vec![bool_token.clone()],
vec![bool_token.clone()],
abilities,
}
)
}

fn get_fun_type_nothing_to_bool() -> SignatureToken {
let bool_token = SignatureToken::Bool;
let abilities = AbilitySet::PUBLIC_FUNCTIONS;
SignatureToken::Function {
args: vec![],
results: vec![bool_token.clone()],
SignatureToken::Function(
vec![],
vec![bool_token.clone()],
abilities,
}
)
}

#[test]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -369,6 +369,6 @@ fn struct_handle(token: &SignatureToken) -> Option<StructHandleIndex> {
| Signer
| Vector(_)
| TypeParameter(_)
| Function { .. } => None,
| Function(..) => None,
}
}
22 changes: 11 additions & 11 deletions third_party/move/move-bytecode-verifier/src/dependencies.rs
Original file line number Diff line number Diff line change
Expand Up @@ -456,16 +456,16 @@ fn compare_types(
compare_types(context, ty1, ty2, def_module)
},
(
SignatureToken::Function {
args: args1,
results: result1,
abilities: abilities1,
},
SignatureToken::Function {
args: args2,
results: result2,
abilities: abilities2,
},
SignatureToken::Function(
args1,
result1,
abilities1,
),
SignatureToken::Function(
args2,
result2,
abilities2,
),
) => {
compare_cross_module_signatures(context, args1, args2, def_module)?;
compare_cross_module_signatures(context, result1, result2, def_module)?;
Expand Down Expand Up @@ -504,7 +504,7 @@ fn compare_types(
| (SignatureToken::Address, _)
| (SignatureToken::Signer, _)
| (SignatureToken::Vector(_), _)
| (SignatureToken::Function { .. }, _)
| (SignatureToken::Function(..), _)
| (SignatureToken::Struct(_), _)
| (SignatureToken::StructInstantiation(_, _), _)
| (SignatureToken::Reference(_), _)
Expand Down
2 changes: 1 addition & 1 deletion third_party/move/move-bytecode-verifier/src/features.rs
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ impl<'a> FeatureVerifier<'a> {
if !self.config.enable_function_values {
for (idx, signature) in self.code.signatures().iter().enumerate() {
for signature_token in signature.0.iter() {
if matches!(signature_token, SignatureToken::Function { .. }) {
if matches!(signature_token, SignatureToken::Function(..)) {
return Err(PartialVMError::new(StatusCode::FEATURE_NOT_ENABLED)
.at_index(IndexKind::Signature, idx as u16)
.with_message("function values feature not enabled".to_string()));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ impl<'a> InstantiationLoopChecker<'a> {
type_params.insert(*idx);
},
Vector(ty) => rec(type_params, ty),
Function { args, results, .. } => {
Function(args, results, ..) => {
for ty in args {
rec(type_params, ty);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -289,7 +289,7 @@ impl<'a> InstructionConsistency<'a> {
) -> PartialVMResult<()> {
let signature = self.resolver.signature_at(sig_index);
if let Some(sig_token) = signature.0.first() {
if let SignatureToken::Function { args: params, .. } = sig_token {
if let SignatureToken::Function(params, ..) = sig_token {
if count as usize > params.len() {
return Err(
PartialVMError::new(StatusCode::NUMBER_OF_TYPE_ARGUMENTS_MISMATCH)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -250,7 +250,7 @@ fn fun_type(
idx: SignatureIndex,
) -> PartialVMResult<(Vec<SignatureToken>, Vec<SignatureToken>)> {
match verifier.resolver.signature_at(idx).0.first() {
Some(SignatureToken::Function { args, results, .. }) => Ok((args.clone(), results.clone())),
Some(SignatureToken::Function(args, results, ..)) => Ok((args.clone(), results.clone())),
_ => Err(PartialVMError::new(
StatusCode::VERIFIER_INVARIANT_VIOLATION,
)),
Expand Down
6 changes: 3 additions & 3 deletions third_party/move/move-bytecode-verifier/src/signature.rs
Original file line number Diff line number Diff line change
Expand Up @@ -372,7 +372,7 @@ impl<'a> SignatureChecker<'a> {
}
},

SignatureToken::Function { .. } => {
SignatureToken::Function(..) => {
return Err(PartialVMError::new(StatusCode::UNEXPECTED_VERIFIER_ERROR)
.with_message("function types not supported".to_string()));
},
Expand Down Expand Up @@ -429,7 +429,7 @@ impl<'a> SignatureChecker<'a> {
Err(PartialVMError::new(StatusCode::INVALID_SIGNATURE_TOKEN)
.with_message("reference not allowed".to_string()))
},
Function { .. } => Err(PartialVMError::new(StatusCode::UNEXPECTED_VERIFIER_ERROR)
Function(..) => Err(PartialVMError::new(StatusCode::UNEXPECTED_VERIFIER_ERROR)
.with_message("function types not supported".to_string())),
Vector(ty) => self.check_signature_token(ty),
StructInstantiation(_, type_arguments) => self.check_signature_tokens(type_arguments),
Expand Down Expand Up @@ -481,7 +481,7 @@ impl<'a> SignatureChecker<'a> {
type_parameters,
)
},
SignatureToken::Function { .. } => {
SignatureToken::Function(..) => {
Err(PartialVMError::new(StatusCode::UNEXPECTED_VERIFIER_ERROR)
.with_message("function types not supported".to_string()))
},
Expand Down
8 changes: 4 additions & 4 deletions third_party/move/move-bytecode-verifier/src/signature_v2.rs
Original file line number Diff line number Diff line change
Expand Up @@ -173,11 +173,11 @@ fn check_ty<const N: usize>(
param_constraints,
)?;
},
Function {
Function(
args,
results,
abilities,
} => {
) => {
assert_abilities(*abilities, required_abilities)?;
for ty in args.iter().chain(results.iter()) {
check_ty(
Expand Down Expand Up @@ -275,7 +275,7 @@ fn check_phantom_params(

match ty {
Vector(ty) => check_phantom_params(struct_handles, context, false, ty)?,
Function { args, results, .. } => {
Function(args, results, ..) => {
for ty in args.iter().chain(results) {
check_phantom_params(struct_handles, context, false, ty)?
}
Expand Down Expand Up @@ -919,7 +919,7 @@ impl<'a, const N: usize> SignatureChecker<'a, N> {
checked_early_bind_insts.entry((*idx, *count))
{
// Note non-function case is checked in `verify_fun_sig_idx` above.
if let Some(SignatureToken::Function { args, .. }) =
if let Some(SignatureToken::Function(args, ..)) =
self.resolver.signature_at(*idx).0.first()
{
if *count as usize > args.len() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -242,7 +242,7 @@ impl<'a> StackUsageVerifier<'a> {
// InvokeFunction pops a function and the number of arguments and pushes the results of the
// given function type
Bytecode::InvokeFunction(idx) => {
if let Some(SignatureToken::Function { args, results, .. }) =
if let Some(SignatureToken::Function(args, results, ..)) =
self.resolver.signature_at(*idx).0.first()
{
((1 + args.len()) as u64, results.len() as u64)
Expand All @@ -255,7 +255,7 @@ impl<'a> StackUsageVerifier<'a> {

// EarlyBindFunction pops a function value and the captured arguments and returns 1 value
Bytecode::EarlyBindFunction(idx, arg_count) => {
if let Some(SignatureToken::Function { args, .. }) =
if let Some(SignatureToken::Function(args, ..)) =
self.resolver.signature_at(*idx).0.first()
{
if args.len() <= *arg_count as usize {
Expand Down
2 changes: 1 addition & 1 deletion third_party/move/move-bytecode-verifier/src/struct_defs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ impl<'a> StructDefGraphBuilder<'a> {
)
},
T::Vector(inner) => self.add_signature_token(neighbors, cur_idx, inner)?,
T::Function { args, results, .. } => {
T::Function(args, results, ..) => {
for t in args.iter().chain(results) {
self.add_signature_token(neighbors, cur_idx, t)?
}
Expand Down
Loading

0 comments on commit fdd0ca9

Please sign in to comment.