feat: handler withdraw purpose
This commit is contained in:
parent
be7c0c8012
commit
5b61a75088
|
@ -1,5 +1,8 @@
|
|||
use crate::{
|
||||
builtins::{self, g1_element, g2_element},
|
||||
builtins::{
|
||||
self, g1_element, g2_element, SCRIPT_CONTEXT, SCRIPT_PURPOSE, SCRIPT_PURPOSE_MINT,
|
||||
SCRIPT_PURPOSE_SPEND, SCRIPT_PURPOSE_WITHDRAW,
|
||||
},
|
||||
expr::{TypedExpr, UntypedExpr},
|
||||
line_numbers::LineNumbers,
|
||||
parser::token::{Base, Token},
|
||||
|
@ -429,14 +432,21 @@ impl TypedDataType {
|
|||
constructors: vec![
|
||||
RecordConstructor {
|
||||
location: Span::empty(),
|
||||
name: "__Mint".to_string(),
|
||||
name: SCRIPT_PURPOSE_MINT.to_string(),
|
||||
arguments: vec![],
|
||||
doc: None,
|
||||
sugar: false,
|
||||
},
|
||||
RecordConstructor {
|
||||
location: Span::empty(),
|
||||
name: "__Spend".to_string(),
|
||||
name: SCRIPT_PURPOSE_SPEND.to_string(),
|
||||
arguments: vec![],
|
||||
doc: None,
|
||||
sugar: false,
|
||||
},
|
||||
RecordConstructor {
|
||||
location: Span::empty(),
|
||||
name: SCRIPT_PURPOSE_WITHDRAW.to_string(),
|
||||
arguments: vec![],
|
||||
doc: None,
|
||||
sugar: false,
|
||||
|
@ -444,7 +454,7 @@ impl TypedDataType {
|
|||
],
|
||||
doc: None,
|
||||
location: Span::empty(),
|
||||
name: "__ScriptPurpose".to_string(),
|
||||
name: SCRIPT_PURPOSE.to_string(),
|
||||
opaque: false,
|
||||
parameters: vec![],
|
||||
public: true,
|
||||
|
@ -456,14 +466,14 @@ impl TypedDataType {
|
|||
DataType {
|
||||
constructors: vec![RecordConstructor {
|
||||
location: Span::empty(),
|
||||
name: "__ScriptContext".to_string(),
|
||||
name: SCRIPT_CONTEXT.to_string(),
|
||||
arguments: vec![],
|
||||
doc: None,
|
||||
sugar: false,
|
||||
}],
|
||||
doc: None,
|
||||
location: Span::empty(),
|
||||
name: "__ScriptContext".to_string(),
|
||||
name: SCRIPT_CONTEXT.to_string(),
|
||||
opaque: false,
|
||||
parameters: vec![],
|
||||
public: true,
|
||||
|
|
|
@ -40,6 +40,10 @@ pub const FUZZER: &str = "Fuzzer";
|
|||
pub const SCRIPT_PURPOSE: &str = "__ScriptPurpose";
|
||||
pub const SCRIPT_PURPOSE_SPEND: &str = "__Spend";
|
||||
pub const SCRIPT_PURPOSE_MINT: &str = "__Mint";
|
||||
pub const SCRIPT_PURPOSE_WITHDRAW: &str = "__Withdraw";
|
||||
pub const SCRIPT_PURPOSE_PUBLISH: &str = "__Publish";
|
||||
pub const SCRIPT_PURPOSE_VOTE: &str = "__Vote";
|
||||
pub const SCRIPT_PURPOSE_PROPOSE: &str = "__Propose";
|
||||
pub const SCRIPT_PURPOSES_COUNT: u16 = 6;
|
||||
|
||||
pub const SCRIPT_CONTEXT: &str = "__ScriptContext";
|
||||
|
|
|
@ -19,7 +19,7 @@ use crate::{
|
|||
},
|
||||
builtins::{
|
||||
bool, byte_array, data, function, int, list, option, pair, script_context, script_purpose,
|
||||
void, PRELUDE, SCRIPT_PURPOSE_MINT, SCRIPT_PURPOSE_SPEND,
|
||||
void, PRELUDE, SCRIPT_PURPOSE_MINT, SCRIPT_PURPOSE_SPEND, SCRIPT_PURPOSE_WITHDRAW,
|
||||
},
|
||||
expr::TypedExpr,
|
||||
gen_uplc::{
|
||||
|
@ -293,6 +293,27 @@ impl<'a> CodeGenerator<'a> {
|
|||
tipo: function(vec![byte_array()], script_purpose()),
|
||||
},
|
||||
|
||||
"withdraw" => TypedPattern::Constructor {
|
||||
is_record: false,
|
||||
location: Span::empty(),
|
||||
name: SCRIPT_PURPOSE_WITHDRAW.to_string(),
|
||||
arguments: vec![CallArg {
|
||||
label: None,
|
||||
location: Span::empty(),
|
||||
value: TypedPattern::Var {
|
||||
name: "__purpose_arg__".to_string(),
|
||||
location: Span::empty(),
|
||||
},
|
||||
}],
|
||||
module: None,
|
||||
constructor: PatternConstructor::Record {
|
||||
name: SCRIPT_PURPOSE_WITHDRAW.to_string(),
|
||||
field_map: None,
|
||||
},
|
||||
spread_location: None,
|
||||
tipo: function(vec![data()], script_purpose()),
|
||||
},
|
||||
|
||||
purpose => {
|
||||
unreachable!("unexpected/unknown purpose: {:?}", purpose)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue