Skip to content

Commit

Permalink
fix: redeemer could be missing
Browse files Browse the repository at this point in the history
  • Loading branch information
rvcas authored and KtorZ committed Aug 25, 2024
1 parent 00b8a39 commit 90d75d4
Showing 1 changed file with 27 additions and 21 deletions.
48 changes: 27 additions & 21 deletions crates/aiken-project/src/blueprint/validator.rs
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ pub struct Validator {
#[serde(skip_serializing_if = "Option::is_none")]
pub datum: Option<Parameter>,

pub redeemer: Parameter,
#[serde(skip_serializing_if = "Option::is_none")]
pub redeemer: Option<Parameter>,

#[serde(skip_serializing_if = "Vec::is_empty")]
#[serde(default)]
Expand Down Expand Up @@ -92,7 +93,8 @@ impl Validator {
plutus_version: &PlutusVersion,
) -> Result<Validator, Error> {
let mut args = func.arguments.iter().rev();
let (_, redeemer, datum) = (args.next(), args.next().unwrap(), args.next());

let (_, _, redeemer, datum) = (args.next(), args.next(), args.next(), args.next());

let mut definitions = Definitions::new();

Expand Down Expand Up @@ -142,23 +144,27 @@ impl Validator {
schema,
});

let redeemer = Annotated::from_type(
modules.into(),
tipo_or_annotation(module, redeemer),
&mut definitions,
)
.map_err(|error| Error::Schema {
error,
location: redeemer.location,
source_code: NamedSource::new(
module.input_path.display().to_string(),
module.code.clone(),
),
})
.map(|schema| Parameter {
title: Some(redeemer.arg_name.get_label()),
schema,
})?;
let redeemer = redeemer
.map(|redeemer| {
Annotated::from_type(
modules.into(),
tipo_or_annotation(module, redeemer),
&mut definitions,
)
.map_err(|error| Error::Schema {
error,
location: redeemer.location,
source_code: NamedSource::new(
module.input_path.display().to_string(),
module.code.clone(),
),
})
})
.transpose()?
.map(|schema| Parameter {
title: redeemer.map(|redeemer| redeemer.arg_name.get_label()),
schema,
});

Ok(Validator {
title: format!("{}.{}_{}", &module.name, &def.name, &func.name),
Expand Down Expand Up @@ -494,7 +500,7 @@ mod tests {
assert_validator!(
r#"
validator generics {
spend(redeemer: a, ctx: Void) {
mint(redeemer: a, policy_id: ByteArray, ctx: Void) {
True
}
}
Expand Down Expand Up @@ -569,7 +575,7 @@ mod tests {
}
validator opaque_singleton_multi_variants {
spend(redeemer: Rational, ctx: Void) {
spend(redeemer: Rational, oref: Data, ctx: Void) {
True
}
}
Expand Down

0 comments on commit 90d75d4

Please sign in to comment.