feat: add plutus version to aiken.toml

relates to #907
This commit is contained in:
rvcas
2024-05-21 17:01:09 -04:00
parent 4ca73c4cdf
commit 3bc3792aa3
14 changed files with 366 additions and 81 deletions

View File

@@ -29,6 +29,7 @@ use crate::{
},
},
line_numbers::LineNumbers,
plutus_version::PlutusVersion,
tipo::{
check_replaceable_opaque_type, convert_opaque_type, find_and_replace_generics,
get_arg_type_name, get_generic_id_and_type, lookup_data_type_by_tipo,
@@ -51,6 +52,8 @@ use uplc::{
#[derive(Clone)]
pub struct CodeGenerator<'a> {
#[allow(dead_code)]
plutus_version: PlutusVersion,
/// immutable index maps
functions: IndexMap<&'a FunctionAccessKey, &'a TypedFunction>,
data_types: IndexMap<&'a DataTypeKey, &'a TypedDataType>,
@@ -75,6 +78,7 @@ impl<'a> CodeGenerator<'a> {
}
pub fn new(
plutus_version: PlutusVersion,
functions: IndexMap<&'a FunctionAccessKey, &'a TypedFunction>,
data_types: IndexMap<&'a DataTypeKey, &'a TypedDataType>,
module_types: IndexMap<&'a str, &'a TypeInfo>,
@@ -82,6 +86,7 @@ impl<'a> CodeGenerator<'a> {
tracing: Tracing,
) -> Self {
CodeGenerator {
plutus_version,
functions,
data_types,
module_types,

View File

@@ -12,6 +12,7 @@ pub mod gen_uplc;
pub mod levenshtein;
pub mod line_numbers;
pub mod parser;
pub mod plutus_version;
pub mod pretty;
pub mod tipo;

View File

@@ -0,0 +1,51 @@
use pallas::ledger::primitives::conway::Language;
use serde::{Deserialize, Serialize};
#[derive(Debug, Default, Deserialize, Serialize, Clone, Copy, PartialEq)]
#[serde(rename_all = "camelCase")]
pub enum PlutusVersion {
V1,
#[default]
V2,
V3,
}
impl From<PlutusVersion> for Language {
fn from(value: PlutusVersion) -> Self {
match value {
PlutusVersion::V1 => Language::PlutusV1,
PlutusVersion::V2 => Language::PlutusV2,
PlutusVersion::V3 => Language::PlutusV3,
}
}
}
impl From<&PlutusVersion> for Language {
fn from(value: &PlutusVersion) -> Self {
match value {
PlutusVersion::V1 => Language::PlutusV1,
PlutusVersion::V2 => Language::PlutusV2,
PlutusVersion::V3 => Language::PlutusV3,
}
}
}
impl From<Language> for PlutusVersion {
fn from(value: Language) -> Self {
match value {
Language::PlutusV1 => PlutusVersion::V2,
Language::PlutusV2 => PlutusVersion::V2,
Language::PlutusV3 => PlutusVersion::V3,
}
}
}
impl PlutusVersion {
pub fn cardano_cli_type(&self) -> String {
match self {
PlutusVersion::V1 => "PlutusScriptV1".to_string(),
PlutusVersion::V2 => "PlutusScriptV2".to_string(),
PlutusVersion::V3 => "PlutusScriptV3".to_string(),
}
}
}