fix: validator args unexpectedly unbound

closes #852
This commit is contained in:
rvcas 2024-03-06 14:15:00 -05:00
parent ad4840958c
commit 25ebdc2527
No known key found for this signature in database
GPG Key ID: C09B64E263F7D68C
6 changed files with 95 additions and 0 deletions

View File

@ -968,6 +968,15 @@ impl Annotation {
}
}
pub fn data(location: Span) -> Self {
Annotation::Constructor {
name: "Data".to_string(),
module: None,
arguments: vec![],
location,
}
}
pub fn is_logically_equal(&self, other: &Annotation) -> bool {
match self {
Annotation::Constructor {

View File

@ -1144,10 +1144,21 @@ impl<'a> Environment<'a> {
params,
..
}) if kind.is_validator() => {
let default_annotation = |mut arg: UntypedArg| {
if arg.annotation.is_none() {
arg.annotation = Some(Annotation::data(arg.location));
arg
} else {
arg
}
};
let temp_params: Vec<UntypedArg> = params
.iter()
.cloned()
.chain(fun.arguments.clone())
.map(default_annotation)
.collect();
self.register_function(
@ -1165,6 +1176,7 @@ impl<'a> Environment<'a> {
.iter()
.cloned()
.chain(other.arguments.clone())
.map(default_annotation)
.collect();
self.register_function(

View File

@ -0,0 +1,15 @@
# This file was generated by Aiken
# You typically do not need to edit this file
[[requirements]]
name = "aiken-lang/stdlib"
version = "1.7.0"
source = "github"
[[packages]]
name = "aiken-lang/stdlib"
version = "1.7.0"
requirements = []
source = "github"
[etags]

View File

@ -0,0 +1,14 @@
name = "aiken-lang/acceptance_test_096"
version = "0.0.0"
license = "Apache-2.0"
description = "Aiken contracts for project 'aiken-lang/096'"
[repository]
user = "aiken-lang"
project = "096"
platform = "github"
[[dependencies]]
name = "aiken-lang/stdlib"
version = "1.7.0"
source = "github"

View File

@ -0,0 +1,38 @@
{
"preamble": {
"title": "aiken-lang/acceptance_test_096",
"description": "Aiken contracts for project 'aiken-lang/096'",
"version": "0.0.0",
"plutusVersion": "v2",
"compiler": {
"name": "Aiken",
"version": "v1.0.24-alpha+ad48409"
},
"license": "Apache-2.0"
},
"validators": [
{
"title": "foo.is_fourty_two",
"datum": {
"title": "dat",
"schema": {
"$ref": "#/definitions/Data"
}
},
"redeemer": {
"title": "rdm",
"schema": {
"$ref": "#/definitions/Data"
}
},
"compiledCode": "583c01000032222533300453330043375e004006266e3d22010b68656c6c6f20776f726c640048810b68656c6c6f20776f726c640014a029309b2b2b9a01",
"hash": "d1a4ef5efcf38bdca9dc8eec2684d3c2004390fa6fd1b5bed6faa488"
}
],
"definitions": {
"Data": {
"title": "Data",
"description": "Any Plutus data."
}
}
}

View File

@ -0,0 +1,7 @@
use aiken/transaction.{ScriptContext}
validator {
fn is_fourty_two(dat, rdm, _ctx: ScriptContext) -> Bool {
rdm == dat && #"68656c6c6f20776f726c64" == #"68656c6c6f20776f726c64"
}
}