feat: expect on a type now can take in a msg when in trace mode

This commit is contained in:
microproofs 2024-01-04 10:12:58 -05:00 committed by Kasey
parent 4fc65cc600
commit 394cac86b8
39 changed files with 169 additions and 129 deletions

View File

@ -478,10 +478,10 @@ impl<'a> CodeGenerator<'a> {
string(), string(),
); );
let msg_func = if self.tracing { let msg_func = if self.tracing && kind.is_expect() {
self.special_functions.use_function_tree(msg_func_name) self.special_functions.use_function_tree(msg_func_name)
} else { } else {
AirTree::no_op() AirTree::void_msg()
}; };
self.assignment( self.assignment(
@ -534,7 +534,7 @@ impl<'a> CodeGenerator<'a> {
kind: AssignmentKind::Let, kind: AssignmentKind::Let,
remove_unused: false, remove_unused: false,
full_check: false, full_check: false,
msg_func: AirTree::no_op(), msg_func: AirTree::void_msg(),
}, },
); );
@ -2752,10 +2752,10 @@ impl<'a> CodeGenerator<'a> {
string(), string(),
); );
let msg_func = if self.tracing { let msg_func = if self.tracing && !actual_type.is_data() {
self.special_functions.use_function_tree(msg_func_name) self.special_functions.use_function_tree(msg_func_name)
} else { } else {
AirTree::no_op() AirTree::void_msg()
}; };
let assign = self.assignment( let assign = self.assignment(
@ -5255,7 +5255,7 @@ impl<'a> CodeGenerator<'a> {
} }
} }
Air::NoOp => {} Air::NoOp | Air::VoidMsg => {}
} }
} }
} }

View File

@ -183,4 +183,5 @@ pub enum Air {
NoOp, NoOp,
FieldsEmpty, FieldsEmpty,
ListEmpty, ListEmpty,
VoidMsg,
} }

View File

@ -332,6 +332,7 @@ pub enum AirExpression {
msg: Box<AirTree>, msg: Box<AirTree>,
then: Box<AirTree>, then: Box<AirTree>,
}, },
VoidMsg,
} }
impl AirTree { impl AirTree {
@ -824,6 +825,10 @@ impl AirTree {
hoisted_over: None, hoisted_over: None,
} }
} }
pub fn void_msg() -> AirTree {
AirTree::Expression(AirExpression::VoidMsg)
}
pub fn hoist_over(mut self, next_exp: AirTree) -> AirTree { pub fn hoist_over(mut self, next_exp: AirTree) -> AirTree {
match &mut self { match &mut self {
AirTree::Statement { hoisted_over, .. } => { AirTree::Statement { hoisted_over, .. } => {
@ -1312,6 +1317,7 @@ impl AirTree {
msg.create_air_vec(air_vec); msg.create_air_vec(air_vec);
then.create_air_vec(air_vec); then.create_air_vec(air_vec);
} }
AirExpression::VoidMsg => air_vec.push(Air::VoidMsg),
}, },
AirTree::UnhoistedSequence(_) => { AirTree::UnhoistedSequence(_) => {
unreachable!("FIRST RESOLVE ALL UNHOISTED SEQUENCES") unreachable!("FIRST RESOLVE ALL UNHOISTED SEQUENCES")
@ -1344,7 +1350,7 @@ impl AirTree {
| AirExpression::RecordUpdate { tipo, .. } | AirExpression::RecordUpdate { tipo, .. }
| AirExpression::ErrorTerm { tipo, .. } | AirExpression::ErrorTerm { tipo, .. }
| AirExpression::Trace { tipo, .. } => tipo.clone(), | AirExpression::Trace { tipo, .. } => tipo.clone(),
AirExpression::Void => void(), AirExpression::Void | AirExpression::VoidMsg => void(),
AirExpression::Var { constructor, .. } => constructor.tipo.clone(), AirExpression::Var { constructor, .. } => constructor.tipo.clone(),
AirExpression::Fn { func_body, .. } => func_body.return_type(), AirExpression::Fn { func_body, .. } => func_body.return_type(),
AirExpression::UnOp { op, .. } => match op { AirExpression::UnOp { op, .. } => match op {

View File

@ -10,8 +10,8 @@ description: "Code:\n\ntype Either<left, right> {\n Left(left)\n Right(rig
"$ref": "#/definitions/test_module~1Either$ByteArray_test_module~1Interval$Int" "$ref": "#/definitions/test_module~1Either$ByteArray_test_module~1Interval$Int"
} }
}, },
"compiledCode": "59016f0100003232323232323232323232223253330084a22930a99804a4811856616c696461746f722072657475726e65642066616c736500136563253330083370e900000089919299980718080010a4c2a6601600e2c6eb8c038004c01800c54ccc020cdc3a400400226464a66601c60200042649319299980599b87480000044c8c94ccc044c04c008526153300e00a16375a602200260120042a66601666e1d20020011533300f3009002149854cc0312411d4578706563746564206e6f206669656c647320666f7220436f6e7374720016153300c007163009001153300b00716300e00130060031533009004163006002490128436f6e73747220696e646578206469646e2774206d61746368206120747970652076617269616e74004901334c6973742f5475706c652f436f6e73747220636f6e7461696e73206d6f7265206974656d73207468616e20657870656374656400230063754002460086ea80055cd2b9c5573aaae7955cfaba157441", "compiledCode": "59011a010000323232323232323232223253330064a22930a99803a4811856616c696461746f722072657475726e65642066616c73650013656323253330073370e900000089919299980698078010a4c2a660140082c6eb8c034004c01401054ccc01ccdc3a400400226464a66601a601e0042649319299980519b87480000044c8c94ccc040c048008526153300d00716375a602000260100042a66601466e1d20020011533300e3008002149854cc02c0145854cc02c01458c02000454cc02801058c034004c01401054cc02000858c01400d24012a72656465656d65723a204569746865723c4279746541727261792c20496e74657276616c3c496e743e3e00230063754002460086ea80055cd2b9c5573aaae7955cfaba157441",
"hash": "6b2032fcc8875dfe34dc93e4c9709188e60734ad668a31866ff14487", "hash": "a7f32d9d3ceada0a98ad4d125680692fa368de7504c9616f053cbcc2",
"definitions": { "definitions": {
"ByteArray": { "ByteArray": {
"dataType": "bytes" "dataType": "bytes"

View File

@ -10,8 +10,8 @@ description: "Code:\n\ntype Dict<key, value> {\n inner: List<(ByteArray, valu
"$ref": "#/definitions/test_module~1Dict$test_module~1UUID_Int" "$ref": "#/definitions/test_module~1Dict$test_module~1UUID_Int"
} }
}, },
"compiledCode": "58fe01000032323232323232223253330044a22930a99802a4811856616c696461746f722072657475726e65642066616c736500136563253330043370e9000000899192999805180600109924c646600200200444a66601800229309919801801980780119191bad300d002375c6016002601a0022a6600e921334c6973742f5475706c652f436f6e73747220636f6e7461696e73206d6f7265206974656d73207468616e206578706563746564001637566014002600e6ea800c54cc01524128436f6e73747220696e646578206469646e2774206d61746368206120747970652076617269616e74001630053754004ae695ce2ab9d5573caae7d5d0aba201", "compiledCode": "58bc01000032323232323232223253330044a22930a99802a4811856616c696461746f722072657475726e65642066616c73650013656323253330053370e9000000899192999805980680109924c646600200200444a66601a00229309919801801980800119191bad300e002375c6018002601c0022a660100082c6eacc02c004c020dd50020a998030010b18031baa00349011972656465656d65723a20446963743c555549442c20496e743e005734ae7155ceaab9e5573eae855d11",
"hash": "216d9334e8daaa401663667302f26cfb53c63d88fe4b14cd8e2a9c1e", "hash": "764465e16d4d85649f7e6bd982bb3620ca0ff51a54d442bc6c54147a",
"definitions": { "definitions": {
"ByteArray": { "ByteArray": {
"dataType": "bytes" "dataType": "bytes"

View File

@ -16,8 +16,8 @@ description: "Code:\n\npub type Foo {\n foo: Data\n}\n\nvalidator {\n fn nes
"$ref": "#/definitions/Int" "$ref": "#/definitions/Int"
} }
}, },
"compiledCode": "58d801000032323232323232222323253330064a22930a99803a491856616c696461746f722072657475726e65642066616c73650013656375a00664a66600a66e1d200000113232533300b300d002149854cc021241334c6973742f5475706c652f436f6e73747220636f6e7461696e73206d6f7265206974656d73207468616e2065787065637465640016300b001300837540082a6600c92128436f6e73747220696e646578206469646e2774206d61746368206120747970652076617269616e74001630063754006ae695ce2ab9d5573caae7d5d0aba201", "compiledCode": "588701000032323232323232222323253330064a22930a99803a491856616c696461746f722072657475726e65642066616c73650013656375a0066464a66600c66e1d200000113232533300c300e002149854cc02401058c030004c024dd50028a998038010b18039baa00449010a646174756d3a20466f6f005734ae7155ceaab9e5573eae855d11",
"hash": "d61d9c4c310ef538d7c4e49b44836251d0c9ac61dad25692ac9bb69a", "hash": "7cec07afed8610f8ffea541bedaaef8598f4ea254e440315b325bb82",
"definitions": { "definitions": {
"Data": { "Data": {
"title": "Data", "title": "Data",

View File

@ -16,8 +16,8 @@ description: "Code:\n\npub type LinkedList<a> {\n Cons(a, LinkedList<a>)\n Nil
"$ref": "#/definitions/test_module~1LinkedList$Int" "$ref": "#/definitions/test_module~1LinkedList$Int"
} }
}, },
"compiledCode": "59023601000032323232323232323232323222232323232533300d4a22930a998072491856616c696461746f722072657475726e65642066616c736500136563002005323232533300e3370e900000089919299980a180b00109924c60080022a660220182c602800260160102a66601c66e1d200200113232323253330163018002132498c8c8c8cc004004008894ccc06800452613233003003301d002300c301b0013758602c0046eb8c05000454cc04c03858c8cdd8180b800980b980c0009bac30160013016002375a602800260160102a6601e0122c601600e60020024464a66601c66e1d200000113232323253330163018002132498cc01c01c00454cc04c03858c058004c058008cdc3a400460226ea8c050004c02c00854ccc038cdc3a40040022a66602460160042930a998078068b0a998078048b180580098008009119299980619b87480000044c8c8c8c94ccc050c0580084c92633007007001153301100c1630140013014002375a602400260120042a66601866e1d2002001153330103009002149854cc03402c5854cc03401c58c024005240128436f6e73747220696e646578206469646e2774206d61746368206120747970652076617269616e74004901334c6973742f5475706c652f436f6e73747220636f6e7461696e73206d6f7265206974656d73207468616e206578706563746564002300737540024600a6ea800524011d4578706563746564206e6f206669656c647320666f7220436f6e737472005734ae7155ceaab9e5573eae855d11", "compiledCode": "5901dd01000032323232323232323222232323253330094a22930a998052491856616c696461746f722072657475726e65642066616c73650013656330020044911972656465656d65723a204c696e6b65644c6973743c496e743e00323253330093370e9000000899192999807980880109924c64660020020044464a66601c66e1d200000113232323253330163018002132498cc01c01c00454cc04c02c58c058004c058008cdc3a400460226ea8c050004c03000854ccc038cdc3a40040022a66602460180042930a998078038b0a998078038b18060008a998060020b180780098038030a99980499b87480080044c8c8c8c94ccc044c04c0084c9263232323300100100222533301500114984c8cc00c00cc060008cc02cc058004028dd618088011bae300f001153300e0061632337606024002602460260026eb0c044004c044008dd6980780098038030a998050010b1803802a490a646174756d3a20466f6f002232330010010032232533300b3370e90000008991919192999809980a80109924c6600e00e0022a660200102c602600260260046eb4c044004c02400854ccc02ccdc3a40040022a66601e60120042930a998060020b0a998060020b1804800918031baa001230043754002ae695ce2ab9d5573caae7d5d0aba201",
"hash": "795b1438b585aebb4e296e3ee180d1308718541ceca4225dfdd6d472", "hash": "1b1cf024d6b864069416563b74b21c2e02dc8eef089c202f402b63ce",
"definitions": { "definitions": {
"Bool": { "Bool": {
"title": "Bool", "title": "Bool",

View File

@ -10,8 +10,8 @@ description: "Code:\n\npub type Expr {\n Val(Int)\n Sum(Expr, Expr)\n Mul(Exp
"$ref": "#/definitions/test_module~1Expr" "$ref": "#/definitions/test_module~1Expr"
} }
}, },
"compiledCode": "590155010000323232323232323232223253330064a22930a99803a4811856616c696461746f722072657475726e65642066616c736500136563323001001223253330083370e900000089919299980718080010a4c2a660160102c6eb4c038004c01c00854ccc020cdc3a4004002264646464a6660206024004264649319804004001198038038018a998068050b18080009808001180700098038010a99980419b87480100044c8c8c8c94ccc040c0480084c8c9263300800800233007007003153300d00a1630100013010002300e0013007002153300949128436f6e73747220696e646578206469646e2774206d61746368206120747970652076617269616e740016300937540020049201334c6973742f5475706c652f436f6e73747220636f6e7461696e73206d6f7265206974656d73207468616e20657870656374656400230053754002ae695ce2ab9d5573caae7d5d0aba21", "compiledCode": "5901060100003232323232323232223253330054a22930a9980324811856616c696461746f722072657475726e65642066616c73650013656323233001001004223253330083370e900000089919299980718080010a4c2a6601600c2c6eb4c038004c01c00854ccc020cdc3a4004002264646464a6660206024004264649319804004001198038038018a998068040b18080009808001180700098038010a99980419b87480100044c8c8c8c94ccc040c0480084c8c9263300800800233007007003153300d0081630100013010002300e00130070021533009004163009375400292010e72656465656d65723a204578707200230053754002ae695ce2ab9d5573caae7d5d0aba21",
"hash": "32815bdafe7e6e86659e3f73eda8f176fd8ad17aeb2bfa4b1325f6eb", "hash": "2f1489f27f8ba5f0fb9530cf06162816e8bd250aaa50e4a8aa093f27",
"definitions": { "definitions": {
"Int": { "Int": {
"dataType": "integer" "dataType": "integer"

View File

@ -16,8 +16,8 @@ description: "Code:\n\n/// On-chain state\ntype State {\n /// The contestatio
"$ref": "#/definitions/test_module~1Input" "$ref": "#/definitions/test_module~1Input"
} }
}, },
"compiledCode": "5901be0100003232323232323232323232322223232533300b4a22930a998062491856616c696461746f722072657475726e65642066616c7365001365632533300b3370e90000008a99980798040020a4c2a6601800e2c2a66601666e1d20020011533300f3008004149854cc03001c5854ccc02ccdc3a40080022a66601e60100082930a998060038b0a998060030b180400199299980519b87480000044c8c8c8c8c8c94ccc050c0580084c8c926323300100100522533301700114984c8cc00c00cc068008dd7180c00099299980899b87480000044c8c94ccc05cc064008526153301401216375a602e002601c00c2a660240182c601c00a2a6602201e2c6eb8c050004c050008dd618090009809001180800098038020a998058028b1803801a4928436f6e73747220696e646578206469646e2774206d61746368206120747970652076617269616e740049011d4578706563746564206e6f206669656c647320666f7220436f6e737472002300737540024600a6ea80052401334c6973742f5475706c652f436f6e73747220636f6e7461696e73206d6f7265206974656d73207468616e206578706563746564005734ae7155ceaab9e5573eae855d11", "compiledCode": "59015c010000323232323232323232222323253330084a22930a99804a491856616c696461746f722072657475726e65642066616c73650013656323253330093370e90000008a99980698038028a4c2a660140042c2a66601266e1d20020011533300d3007005149854cc0280085854ccc024cdc3a40080022a66601a600e00a2930a998050010b0a998050010b18038022490f72656465656d65723a20496e70757400323253330083370e900000089919191919192999809180a0010991924c646600200200a44a66602a00229309919801801980c0011bae301600132533300f3370e900000089919299980a980b8010a4c2a660240162c6eb4c054004c03401854cc04002458c03401454cc03c02058dd7180900098090011bac30100013010002300e0013006005153300900216300600449010c646174756d3a20537461746500230063754002460086ea80055cd2b9c5573aaae7955cfaba157441",
"hash": "a2d6e5c1e686ffe47d6ad6d4c17df246d38169545c7d66af32c5aedc", "hash": "1aaeefe08859ba932c33615d0c3ccd7e63472ae2815c5dc4bc40d994",
"definitions": { "definitions": {
"ByteArray": { "ByteArray": {
"dataType": "bytes" "dataType": "bytes"

View File

@ -16,8 +16,8 @@ description: "Code:\n\nvalidator {\n fn tuples(datum: (Int, ByteArray), redeeme
"$ref": "#/definitions/Tuple$Int_Int_Int" "$ref": "#/definitions/Tuple$Int_Int_Int"
} }
}, },
"compiledCode": "58c6010000323232323232322223232323253330084a22930a99804a491856616c696461746f722072657475726e65642066616c73650013656323232323253330103012002149854cc0352401334c6973742f5475706c652f436f6e73747220636f6e7461696e73206d6f7265206974656d73207468616e2065787065637465640016375a602000260200046eb4c038004c038008dd698060009bac00432375c60120046eb4c01c004c8cdd81805000980518058009bac0035734ae7155ceaab9e5573eae855d11", "compiledCode": "58ac010000323232323232322223232323253330084a22930a99804a491856616c696461746f722072657475726e65642066616c73650013656323232323253330103012002149854cc03524011972656465656d65723a2028496e742c20496e742c20496e74290016375a602000260200046eb4c038004c038008dd698060009bac00432375c60120046eb4c01c004c8cdd81805000980518058009bac0035734ae7155ceaab9e5573eae855d11",
"hash": "4b4cf15504b916aff5ce2cad8cd93a57dd9d124fbdaa88837d255ed4", "hash": "57605cf52e1d8a0d787d798282021853265d8d4c5dd99460b55e125d",
"definitions": { "definitions": {
"ByteArray": { "ByteArray": {
"dataType": "bytes" "dataType": "bytes"

View File

@ -3207,7 +3207,7 @@ fn when_tuple_deconstruction() {
.apply(Term::var("red_constr_fields")) .apply(Term::var("red_constr_fields"))
.delayed_choose_list( .delayed_choose_list(
Term::unit(), Term::unit(),
Term::Error.delayed_trace(Term::var("red:RedSpend")), Term::Error.delayed_trace(Term::var("param_msg")),
) )
.lambda("field_1") .lambda("field_1")
.apply(Term::un_i_data().apply( .apply(Term::un_i_data().apply(
@ -3225,17 +3225,18 @@ fn when_tuple_deconstruction() {
.apply(Term::var("red")) .apply(Term::var("red"))
.delayed_choose_list( .delayed_choose_list(
Term::unit(), Term::unit(),
Term::Error Term::Error.delayed_trace(Term::var("param_msg")),
.delayed_trace(Term::var("red:RedSpend")),
), ),
Term::Error.delayed_trace(Term::var("red:RedSpend")), Term::Error.delayed_trace(Term::var("param_msg")),
), ),
) )
.lambda("subject") .lambda("subject")
.apply(Term::var(CONSTR_INDEX_EXPOSER).apply(Term::var("red"))) .apply(Term::var(CONSTR_INDEX_EXPOSER).apply(Term::var("red")))
.lambda("param_msg")
.lambda("red"), .lambda("red"),
) )
.apply(Term::var("red")), .apply(Term::var("red"))
.apply(Term::var("red:RedSpend")),
) )
.lambda("red") .lambda("red")
.apply(Term::var("red")) .apply(Term::var("red"))
@ -3252,9 +3253,11 @@ fn when_tuple_deconstruction() {
.apply(Term::var("dat_constr_fields")) .apply(Term::var("dat_constr_fields"))
.delayed_choose_list( .delayed_choose_list(
Term::unit().lambda("_").apply( Term::unit().lambda("_").apply(
Term::var("expect_Thing").apply(Term::var("field_1")), Term::var("expect_Thing")
.apply(Term::var("field_1"))
.apply(Term::var("param_msg")),
), ),
Term::Error.delayed_trace(Term::var("dat:Datum")), Term::Error.delayed_trace(Term::var("param_msg")),
) )
.lambda("field_1") .lambda("field_1")
.apply(Term::head_list().apply(Term::var("dat_constr_fields"))) .apply(Term::head_list().apply(Term::var("dat_constr_fields")))
@ -3270,13 +3273,14 @@ fn when_tuple_deconstruction() {
.apply(Term::var("dat")) .apply(Term::var("dat"))
.delayed_choose_list( .delayed_choose_list(
Term::unit(), Term::unit(),
Term::Error.delayed_trace(Term::var("dat:Datum")), Term::Error.delayed_trace(Term::var("param_msg")),
), ),
Term::Error.delayed_trace(Term::var("dat:Datum")), Term::Error.delayed_trace(Term::var("param_msg")),
), ),
) )
.lambda("subject") .lambda("subject")
.apply(Term::var(CONSTR_INDEX_EXPOSER).apply(Term::var("dat"))) .apply(Term::var(CONSTR_INDEX_EXPOSER).apply(Term::var("dat")))
.lambda("param_msg")
.lambda("dat"), .lambda("dat"),
) )
.lambda("expect_Thing") .lambda("expect_Thing")
@ -3289,7 +3293,7 @@ fn when_tuple_deconstruction() {
.apply(Term::var("field_1_constr_fields")) .apply(Term::var("field_1_constr_fields"))
.delayed_choose_list( .delayed_choose_list(
Term::unit(), Term::unit(),
Term::Error.delayed_trace(Term::var("dat:Datum")), Term::Error.delayed_trace(Term::var("param_msg")),
) )
.lambda("idx") .lambda("idx")
.apply(Term::un_i_data().apply( .apply(Term::un_i_data().apply(
@ -3300,13 +3304,15 @@ fn when_tuple_deconstruction() {
Term::var(CONSTR_FIELDS_EXPOSER) Term::var(CONSTR_FIELDS_EXPOSER)
.apply(Term::var("field_1")), .apply(Term::var("field_1")),
), ),
Term::Error.delayed_trace(Term::var("dat:Datum")), Term::Error.delayed_trace(Term::var("param_msg")),
) )
.lambda("subject") .lambda("subject")
.apply(Term::var(CONSTR_INDEX_EXPOSER).apply(Term::var("field_1"))) .apply(Term::var(CONSTR_INDEX_EXPOSER).apply(Term::var("field_1")))
.lambda("param_msg")
.lambda("field_1"), .lambda("field_1"),
) )
.apply(Term::var("dat")), .apply(Term::var("dat"))
.apply(Term::var("dat:Datum")),
) )
.lambda("dat") .lambda("dat")
.apply(Term::var("dat")) .apply(Term::var("dat"))
@ -3481,10 +3487,10 @@ fn generic_validator_type_test() {
.apply(Term::var("subject")) .apply(Term::var("subject"))
.delayed_if_then_else( .delayed_if_then_else(
Term::var(CONSTR_FIELDS_EXPOSER) Term::var(CONSTR_FIELDS_EXPOSER)
.apply(Term::var("r")) .apply(Term::var("param_0"))
.delayed_choose_list( .delayed_choose_list(
Term::unit(), Term::unit(),
Term::Error.delayed_trace(Term::var("r:A<B>")), Term::Error.delayed_trace(Term::var("param_msg")),
), ),
Term::equals_integer() Term::equals_integer()
.apply(Term::integer(1.into())) .apply(Term::integer(1.into()))
@ -3495,9 +3501,10 @@ fn generic_validator_type_test() {
.delayed_choose_list( .delayed_choose_list(
Term::unit().lambda("_").apply( Term::unit().lambda("_").apply(
Term::var("__expect_B") Term::var("__expect_B")
.apply(Term::var("field_B")), .apply(Term::var("field_B"))
.apply(Term::var("param_msg")),
), ),
Term::Error.delayed_trace(Term::var("r:A<B>")), Term::Error.delayed_trace(Term::var("param_msg")),
) )
.lambda("field_B") .lambda("field_B")
.apply(Term::head_list().apply(Term::var("tail_1"))) .apply(Term::head_list().apply(Term::var("tail_1")))
@ -3523,14 +3530,15 @@ fn generic_validator_type_test() {
.lambda("r_fields") .lambda("r_fields")
.apply( .apply(
Term::var(CONSTR_FIELDS_EXPOSER) Term::var(CONSTR_FIELDS_EXPOSER)
.apply(Term::var("r")), .apply(Term::var("param_0")),
), ),
Term::Error.delayed_trace(Term::var("r:A<B>")), Term::Error.delayed_trace(Term::var("param_msg")),
), ),
) )
.lambda("subject") .lambda("subject")
.apply(Term::var(CONSTR_INDEX_EXPOSER).apply(Term::var("r"))) .apply(Term::var(CONSTR_INDEX_EXPOSER).apply(Term::var("param_0")))
.lambda("r"), .lambda("param_msg")
.lambda("param_0"),
) )
.lambda("__expect_B") .lambda("__expect_B")
.apply( .apply(
@ -3542,7 +3550,7 @@ fn generic_validator_type_test() {
.apply(Term::var("B_fields")) .apply(Term::var("B_fields"))
.delayed_choose_list( .delayed_choose_list(
Term::unit(), Term::unit(),
Term::Error.delayed_trace(Term::var("r:A<B>")), Term::Error.delayed_trace(Term::var("param_msg")),
) )
.lambda("something") .lambda("something")
.apply( .apply(
@ -3558,15 +3566,17 @@ fn generic_validator_type_test() {
.lambda("B_fields") .lambda("B_fields")
.apply( .apply(
Term::var(CONSTR_FIELDS_EXPOSER) Term::var(CONSTR_FIELDS_EXPOSER)
.apply(Term::var("field_B")), .apply(Term::var("param_0")),
), ),
Term::Error.delayed_trace(Term::var("r:A<B>")), Term::Error.delayed_trace(Term::var("param_msg")),
) )
.lambda("subject") .lambda("subject")
.apply(Term::var(CONSTR_INDEX_EXPOSER).apply(Term::var("field_B"))) .apply(Term::var(CONSTR_INDEX_EXPOSER).apply(Term::var("param_0")))
.lambda("field_B"), .lambda("param_msg")
.lambda("param_0"),
) )
.apply(Term::var("r")), .apply(Term::var("r"))
.apply(Term::var("r:A<B>")),
) )
.lambda("r") .lambda("r")
.apply(Term::var("r")) .apply(Term::var("r"))
@ -5306,6 +5316,9 @@ fn opaque_value_in_datum() {
.delayed_trace(Term::string("Validator returned false")), .delayed_trace(Term::string("Validator returned false")),
) )
.lambda("_") .lambda("_")
.apply(
Term::var("expect_Dat")
.lambda("expect_Dat")
.apply( .apply(
Term::equals_integer() Term::equals_integer()
.apply(Term::integer(0.into())) .apply(Term::integer(0.into()))
@ -5315,32 +5328,45 @@ fn opaque_value_in_datum() {
.apply(Term::var("tail_1")) .apply(Term::var("tail_1"))
.delayed_choose_list( .delayed_choose_list(
Term::unit().lambda("_").apply( Term::unit().lambda("_").apply(
Term::var("expect_on_list").apply(Term::var("a")).apply( Term::var("expect_on_list")
.apply(Term::var("a"))
.apply(
Term::var("expect_on_list") Term::var("expect_on_list")
.apply(Term::var("pair_snd_outer")) .apply(Term::var("pair_snd_outer"))
.apply( .apply(
Term::un_i_data() Term::un_i_data()
.apply( .apply(
Term::snd_pair().apply(Term::var("pair")), Term::snd_pair()
.apply(Term::var("pair")),
) )
.lambda("pair_fst") .lambda("pair_fst")
.apply(Term::un_b_data().apply( .apply(
Term::fst_pair().apply(Term::var("pair")), Term::un_b_data().apply(
)) Term::fst_pair().apply(
Term::var("pair"),
),
),
)
.lambda("pair"), .lambda("pair"),
) )
.lambda("pair_snd_outer") .lambda("pair_snd_outer")
.apply(Term::unmap_data().apply( .apply(
Term::snd_pair().apply(Term::var("pair_outer")), Term::unmap_data()
)) .apply(Term::snd_pair().apply(
Term::var("pair_outer"),
)),
)
.lambda("pair_fst_outer") .lambda("pair_fst_outer")
.apply(Term::un_b_data().apply( .apply(
Term::fst_pair().apply(Term::var("pair_outer")), Term::un_b_data()
)) .apply(Term::fst_pair().apply(
Term::var("pair_outer"),
)),
)
.lambda("pair_outer"), .lambda("pair_outer"),
), ),
), ),
Term::Error.delayed_trace(Term::var("dat:Dat")), Term::Error.delayed_trace(Term::var("param_msg")),
) )
.lambda("a") .lambda("a")
.apply( .apply(
@ -5351,16 +5377,22 @@ fn opaque_value_in_datum() {
.apply(Term::tail_list().apply(Term::var("dat_fields"))) .apply(Term::tail_list().apply(Term::var("dat_fields")))
.lambda("c") .lambda("c")
.apply( .apply(
Term::un_i_data() Term::un_i_data().apply(
.apply(Term::head_list().apply(Term::var("dat_fields"))), Term::head_list().apply(Term::var("dat_fields")),
),
) )
.lambda("dat_fields") .lambda("dat_fields")
.apply(Term::var(CONSTR_FIELDS_EXPOSER).apply(Term::var("param_0"))), .apply(
Term::Error.delayed_trace(Term::var("dat:Dat")), Term::var(CONSTR_FIELDS_EXPOSER)
.apply(Term::var("param_0")),
),
Term::Error.delayed_trace(Term::var("param_msg")),
) )
.lambda("subject") .lambda("subject")
.apply(Term::var(CONSTR_INDEX_EXPOSER).apply(Term::var("param_0"))) .apply(Term::var(CONSTR_INDEX_EXPOSER).apply(Term::var("param_0")))
.lambda("param_0") .lambda("param_msg")
.lambda("param_0"),
)
.lambda("expect_on_list") .lambda("expect_on_list")
.apply( .apply(
Term::var("expect_on_list") Term::var("expect_on_list")
@ -5387,15 +5419,16 @@ fn opaque_value_in_datum() {
.lambda("check_with") .lambda("check_with")
.lambda("list_to_check"), .lambda("list_to_check"),
) )
.apply(Term::var("dat")), .apply(Term::var("dat"))
.apply(Term::var("dat:Dat")),
) )
.lambda("ctx") .lambda("ctx")
.lambda("red") .lambda("red")
.lambda("dat") .lambda("dat")
.constr_fields_exposer() .constr_fields_exposer()
.constr_index_exposer()
.lambda("dat:Dat") .lambda("dat:Dat")
.apply(Term::string("dat: Dat")), .apply(Term::string("dat: Dat"))
.constr_index_exposer(),
false, false,
); );
} }

View File

@ -175,7 +175,7 @@ impl Program<Name> {
self.traverse_uplc_with(&mut |id, term, mut arg_stack, _scope| { self.traverse_uplc_with(&mut |id, term, mut arg_stack, _scope| {
match term { match term {
Term::Apply { function, .. } => { Term::Apply { function, .. } => {
// We are apply some arg so now we unwrap the id of the applied arg // We are applying some arg so now we unwrap the id of the applied arg
let id = id.unwrap(); let id = id.unwrap();
if lambda_applied_ids.contains(&id) { if lambda_applied_ids.contains(&id) {

View File

@ -13,4 +13,4 @@ requirements = []
source = "github" source = "github"
[etags] [etags]
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1701741983, nanos_since_epoch = 847191000 }, "cf946239d3dd481ed41f20e56bf24910b5229ea35aa171a708edc2a47fc20a7b"] "aiken-lang/stdlib@main" = [{ secs_since_epoch = 1704340543, nanos_since_epoch = 17966000 }, "cf946239d3dd481ed41f20e56bf24910b5229ea35aa171a708edc2a47fc20a7b"]

View File

@ -5,7 +5,7 @@
"plutusVersion": "v2", "plutusVersion": "v2",
"compiler": { "compiler": {
"name": "Aiken", "name": "Aiken",
"version": "v1.0.20-alpha+7c4caba" "version": "v1.0.21-alpha+631757e"
} }
}, },
"validators": [ "validators": [

View File

@ -5,7 +5,7 @@
"plutusVersion": "v2", "plutusVersion": "v2",
"compiler": { "compiler": {
"name": "Aiken", "name": "Aiken",
"version": "v1.0.20-alpha+7c4caba" "version": "v1.0.21-alpha+631757e"
} }
}, },
"validators": [ "validators": [

View File

@ -13,4 +13,4 @@ requirements = []
source = "github" source = "github"
[etags] [etags]
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1701741976, nanos_since_epoch = 519405000 }, "cf946239d3dd481ed41f20e56bf24910b5229ea35aa171a708edc2a47fc20a7b"] "aiken-lang/stdlib@main" = [{ secs_since_epoch = 1704340540, nanos_since_epoch = 434572000 }, "cf946239d3dd481ed41f20e56bf24910b5229ea35aa171a708edc2a47fc20a7b"]

View File

@ -13,4 +13,4 @@ requirements = []
source = "github" source = "github"
[etags] [etags]
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1701741994, nanos_since_epoch = 718037000 }, "cf946239d3dd481ed41f20e56bf24910b5229ea35aa171a708edc2a47fc20a7b"] "aiken-lang/stdlib@main" = [{ secs_since_epoch = 1704340543, nanos_since_epoch = 225382000 }, "cf946239d3dd481ed41f20e56bf24910b5229ea35aa171a708edc2a47fc20a7b"]

View File

@ -13,4 +13,4 @@ requirements = []
source = "github" source = "github"
[etags] [etags]
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1701742056, nanos_since_epoch = 893131000 }, "cf946239d3dd481ed41f20e56bf24910b5229ea35aa171a708edc2a47fc20a7b"] "aiken-lang/stdlib@main" = [{ secs_since_epoch = 1704340554, nanos_since_epoch = 369598000 }, "cf946239d3dd481ed41f20e56bf24910b5229ea35aa171a708edc2a47fc20a7b"]

View File

@ -13,4 +13,4 @@ requirements = []
source = "github" source = "github"
[etags] [etags]
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1701741999, nanos_since_epoch = 805781000 }, "cf946239d3dd481ed41f20e56bf24910b5229ea35aa171a708edc2a47fc20a7b"] "aiken-lang/stdlib@main" = [{ secs_since_epoch = 1704340543, nanos_since_epoch = 584877000 }, "cf946239d3dd481ed41f20e56bf24910b5229ea35aa171a708edc2a47fc20a7b"]

View File

@ -13,4 +13,4 @@ requirements = []
source = "github" source = "github"
[etags] [etags]
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1701742073, nanos_since_epoch = 323097000 }, "cf946239d3dd481ed41f20e56bf24910b5229ea35aa171a708edc2a47fc20a7b"] "aiken-lang/stdlib@main" = [{ secs_since_epoch = 1704340557, nanos_since_epoch = 10227000 }, "cf946239d3dd481ed41f20e56bf24910b5229ea35aa171a708edc2a47fc20a7b"]

View File

@ -13,4 +13,4 @@ requirements = []
source = "github" source = "github"
[etags] [etags]
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1701742064, nanos_since_epoch = 420249000 }, "cf946239d3dd481ed41f20e56bf24910b5229ea35aa171a708edc2a47fc20a7b"] "aiken-lang/stdlib@main" = [{ secs_since_epoch = 1704340555, nanos_since_epoch = 229103000 }, "cf946239d3dd481ed41f20e56bf24910b5229ea35aa171a708edc2a47fc20a7b"]

View File

@ -13,4 +13,4 @@ requirements = []
source = "github" source = "github"
[etags] [etags]
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1701741951, nanos_since_epoch = 987923000 }, "cf946239d3dd481ed41f20e56bf24910b5229ea35aa171a708edc2a47fc20a7b"] "aiken-lang/stdlib@main" = [{ secs_since_epoch = 1704340537, nanos_since_epoch = 228257000 }, "cf946239d3dd481ed41f20e56bf24910b5229ea35aa171a708edc2a47fc20a7b"]

View File

@ -5,7 +5,7 @@
"plutusVersion": "v2", "plutusVersion": "v2",
"compiler": { "compiler": {
"name": "Aiken", "name": "Aiken",
"version": "v1.0.20-alpha+7c4caba" "version": "v1.0.21-alpha+631757e"
} }
}, },
"validators": [ "validators": [

View File

@ -13,4 +13,4 @@ requirements = []
source = "github" source = "github"
[etags] [etags]
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1701742030, nanos_since_epoch = 79945000 }, "cf946239d3dd481ed41f20e56bf24910b5229ea35aa171a708edc2a47fc20a7b"] "aiken-lang/stdlib@main" = [{ secs_since_epoch = 1704340550, nanos_since_epoch = 584623000 }, "cf946239d3dd481ed41f20e56bf24910b5229ea35aa171a708edc2a47fc20a7b"]

View File

@ -13,4 +13,4 @@ requirements = []
source = "github" source = "github"
[etags] [etags]
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1701742020, nanos_since_epoch = 285117000 }, "cf946239d3dd481ed41f20e56bf24910b5229ea35aa171a708edc2a47fc20a7b"] "aiken-lang/stdlib@main" = [{ secs_since_epoch = 1704340547, nanos_since_epoch = 394912000 }, "cf946239d3dd481ed41f20e56bf24910b5229ea35aa171a708edc2a47fc20a7b"]

View File

@ -13,4 +13,4 @@ requirements = []
source = "github" source = "github"
[etags] [etags]
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1701741929, nanos_since_epoch = 986786000 }, "cf946239d3dd481ed41f20e56bf24910b5229ea35aa171a708edc2a47fc20a7b"] "aiken-lang/stdlib@main" = [{ secs_since_epoch = 1704340535, nanos_since_epoch = 549750000 }, "cf946239d3dd481ed41f20e56bf24910b5229ea35aa171a708edc2a47fc20a7b"]

View File

@ -5,7 +5,7 @@
"plutusVersion": "v2", "plutusVersion": "v2",
"compiler": { "compiler": {
"name": "Aiken", "name": "Aiken",
"version": "v1.0.20-alpha+7c4caba" "version": "v1.0.21-alpha+631757e"
} }
}, },
"validators": [ "validators": [

View File

@ -5,7 +5,7 @@
"plutusVersion": "v2", "plutusVersion": "v2",
"compiler": { "compiler": {
"name": "Aiken", "name": "Aiken",
"version": "v1.0.20-alpha+7c4caba" "version": "v1.0.21-alpha+631757e"
} }
}, },
"validators": [ "validators": [

View File

@ -13,4 +13,4 @@ requirements = []
source = "github" source = "github"
[etags] [etags]
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1701741967, nanos_since_epoch = 184400000 }, "cf946239d3dd481ed41f20e56bf24910b5229ea35aa171a708edc2a47fc20a7b"] "aiken-lang/stdlib@main" = [{ secs_since_epoch = 1704340537, nanos_since_epoch = 243457000 }, "cf946239d3dd481ed41f20e56bf24910b5229ea35aa171a708edc2a47fc20a7b"]

View File

@ -13,4 +13,4 @@ requirements = []
source = "github" source = "github"
[etags] [etags]
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1701741939, nanos_since_epoch = 499979000 }, "cf946239d3dd481ed41f20e56bf24910b5229ea35aa171a708edc2a47fc20a7b"] "aiken-lang/stdlib@main" = [{ secs_since_epoch = 1704340535, nanos_since_epoch = 540401000 }, "cf946239d3dd481ed41f20e56bf24910b5229ea35aa171a708edc2a47fc20a7b"]

View File

@ -13,4 +13,4 @@ requirements = []
source = "github" source = "github"
[etags] [etags]
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1701741944, nanos_since_epoch = 693189000 }, "cf946239d3dd481ed41f20e56bf24910b5229ea35aa171a708edc2a47fc20a7b"] "aiken-lang/stdlib@main" = [{ secs_since_epoch = 1704340536, nanos_since_epoch = 374601000 }, "cf946239d3dd481ed41f20e56bf24910b5229ea35aa171a708edc2a47fc20a7b"]

View File

@ -13,4 +13,4 @@ requirements = []
source = "github" source = "github"
[etags] [etags]
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1701741961, nanos_since_epoch = 618410000 }, "cf946239d3dd481ed41f20e56bf24910b5229ea35aa171a708edc2a47fc20a7b"] "aiken-lang/stdlib@main" = [{ secs_since_epoch = 1704340537, nanos_since_epoch = 11039000 }, "cf946239d3dd481ed41f20e56bf24910b5229ea35aa171a708edc2a47fc20a7b"]

View File

@ -13,4 +13,4 @@ requirements = []
source = "github" source = "github"
[etags] [etags]
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1701742035, nanos_since_epoch = 215347000 }, "cf946239d3dd481ed41f20e56bf24910b5229ea35aa171a708edc2a47fc20a7b"] "aiken-lang/stdlib@main" = [{ secs_since_epoch = 1704340550, nanos_since_epoch = 288401000 }, "cf946239d3dd481ed41f20e56bf24910b5229ea35aa171a708edc2a47fc20a7b"]

View File

@ -5,7 +5,7 @@
"plutusVersion": "v2", "plutusVersion": "v2",
"compiler": { "compiler": {
"name": "Aiken", "name": "Aiken",
"version": "v1.0.20-alpha+7c4caba" "version": "v1.0.21-alpha+631757e"
} }
}, },
"validators": [ "validators": [

View File

@ -13,4 +13,4 @@ requirements = []
source = "github" source = "github"
[etags] [etags]
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1701742015, nanos_since_epoch = 172116000 }, "cf946239d3dd481ed41f20e56bf24910b5229ea35aa171a708edc2a47fc20a7b"] "aiken-lang/stdlib@main" = [{ secs_since_epoch = 1704340546, nanos_since_epoch = 592776000 }, "cf946239d3dd481ed41f20e56bf24910b5229ea35aa171a708edc2a47fc20a7b"]

View File

@ -13,4 +13,4 @@ requirements = []
source = "github" source = "github"
[etags] [etags]
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1701742045, nanos_since_epoch = 459654000 }, "cf946239d3dd481ed41f20e56bf24910b5229ea35aa171a708edc2a47fc20a7b"] "aiken-lang/stdlib@main" = [{ secs_since_epoch = 1704340551, nanos_since_epoch = 543964000 }, "cf946239d3dd481ed41f20e56bf24910b5229ea35aa171a708edc2a47fc20a7b"]

View File

@ -13,4 +13,4 @@ requirements = []
source = "github" source = "github"
[etags] [etags]
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1701742008, nanos_since_epoch = 941815000 }, "cf946239d3dd481ed41f20e56bf24910b5229ea35aa171a708edc2a47fc20a7b"] "aiken-lang/stdlib@main" = [{ secs_since_epoch = 1704340546, nanos_since_epoch = 51186000 }, "cf946239d3dd481ed41f20e56bf24910b5229ea35aa171a708edc2a47fc20a7b"]

View File

@ -13,4 +13,4 @@ requirements = []
source = "github" source = "github"
[etags] [etags]
"aiken-lang/stdlib@main" = [{ secs_since_epoch = 1701742080, nanos_since_epoch = 264836000 }, "cf946239d3dd481ed41f20e56bf24910b5229ea35aa171a708edc2a47fc20a7b"] "aiken-lang/stdlib@main" = [{ secs_since_epoch = 1704341807, nanos_since_epoch = 247364000 }, "cf946239d3dd481ed41f20e56bf24910b5229ea35aa171a708edc2a47fc20a7b"]

View File

@ -5,7 +5,7 @@
"plutusVersion": "v2", "plutusVersion": "v2",
"compiler": { "compiler": {
"name": "Aiken", "name": "Aiken",
"version": "v1.0.20-alpha+7c4caba" "version": "v1.0.21-alpha+631757e"
} }
}, },
"validators": [ "validators": [