From 67e4ff8317f799146ed5660162538c422e192e24 Mon Sep 17 00:00:00 2001 From: Kasey White Date: Fri, 30 Dec 2022 23:55:20 -0500 Subject: [PATCH] feat: allow functions from prelude Co-authored-by: rvcas --- crates/aiken-lang/src/builtins.rs | 2 +- crates/aiken-lang/src/uplc.rs | 15 +++++---------- crates/aiken-project/src/lib.rs | 24 +++--------------------- 3 files changed, 9 insertions(+), 32 deletions(-) diff --git a/crates/aiken-lang/src/builtins.rs b/crates/aiken-lang/src/builtins.rs index 854aeb58..fd75a1d2 100644 --- a/crates/aiken-lang/src/builtins.rs +++ b/crates/aiken-lang/src/builtins.rs @@ -505,7 +505,7 @@ pub fn prelude_functions() -> HashMap { body: TypedExpr::UnOp { location: Span::empty(), tipo: bool(), - op: UnOp::Negate, + op: UnOp::Not, value: Box::new(TypedExpr::Var { location: Span::empty(), constructor: ValueConstructor { diff --git a/crates/aiken-lang/src/uplc.rs b/crates/aiken-lang/src/uplc.rs index 8550f4ba..5458fd26 100644 --- a/crates/aiken-lang/src/uplc.rs +++ b/crates/aiken-lang/src/uplc.rs @@ -45,8 +45,6 @@ pub struct CodeGenerator<'a> { functions: &'a HashMap, // type_aliases: &'a HashMap<(String, String), &'a TypeAlias>>, data_types: &'a HashMap, - // imports: &'a HashMap<(String, String), &'a Use>, - // constants: &'a HashMap<(String, String), &'a ModuleConstant, String>>, module_types: &'a HashMap, id_gen: IdGenerator, needs_field_access: bool, @@ -58,8 +56,6 @@ impl<'a> CodeGenerator<'a> { functions: &'a HashMap, // type_aliases: &'a HashMap<(String, String), &'a TypeAlias>>, data_types: &'a HashMap, - // imports: &'a HashMap<(String, String), &'a Use>, - // constants: &'a HashMap<(String, String), &'a ModuleConstant, String>>, module_types: &'a HashMap, ) -> Self { CodeGenerator { @@ -67,8 +63,6 @@ impl<'a> CodeGenerator<'a> { functions, // type_aliases, data_types, - // imports, - // constants, module_types, id_gen: IdGenerator::new(), needs_field_access: false, @@ -525,14 +519,13 @@ impl<'a> CodeGenerator<'a> { self.build_ir(then, ir_stack, scope); } - TypedExpr::TupleIndex { - tipo, index, tuple, .. - } => { + TypedExpr::TupleIndex { index, tuple, .. } => { ir_stack.push(Air::TupleIndex { scope: scope.clone(), tipo: tuple.tipo(), index: *index, }); + self.build_ir(tuple, ir_stack, scope); } @@ -2337,7 +2330,9 @@ impl<'a> CodeGenerator<'a> { module, .. } => { - let name = if *func_name == name || name == format!("{module}_{func_name}") + let name = if (*func_name == name + || name == format!("{module}_{func_name}")) + && !module.is_empty() { format!("{module}_{func_name}{variant_name}") } else { diff --git a/crates/aiken-project/src/lib.rs b/crates/aiken-project/src/lib.rs index 73a60fde..6fc60fab 100644 --- a/crates/aiken-project/src/lib.rs +++ b/crates/aiken-project/src/lib.rs @@ -483,8 +483,6 @@ where let mut functions = HashMap::new(); let mut type_aliases = HashMap::new(); let mut data_types = HashMap::new(); - let mut imports = HashMap::new(); - let mut constants = HashMap::new(); let prelude_functions = builtins::prelude_functions(); for (access_key, func) in prelude_functions.iter() { @@ -513,7 +511,6 @@ where func, ); } - Definition::Test(_) => {} Definition::TypeAlias(ta) => { type_aliases.insert((module.name.clone(), ta.alias.clone()), ta); } @@ -526,12 +523,8 @@ where dt, ); } - Definition::Use(import) => { - imports.insert((module.name.clone(), import.module.join("/")), import); - } - Definition::ModuleConstant(mc) => { - constants.insert((module.name.clone(), mc.name.clone()), mc); - } + + Definition::ModuleConstant(_) | Definition::Test(_) | Definition::Use(_) => {} } } } @@ -548,8 +541,6 @@ where &functions, // &type_aliases, &data_types, - // &imports, - // &constants, &self.module_types, ); @@ -583,8 +574,6 @@ where let mut functions = HashMap::new(); let mut type_aliases = HashMap::new(); let mut data_types = HashMap::new(); - let mut imports = HashMap::new(); - let mut constants = HashMap::new(); let prelude_functions = builtins::prelude_functions(); for (access_key, func) in prelude_functions.iter() { @@ -637,12 +626,7 @@ where dt, ); } - Definition::Use(import) => { - imports.insert((module.name.clone(), import.module.join("/")), import); - } - Definition::ModuleConstant(mc) => { - constants.insert((module.name.clone(), mc.name.clone()), mc); - } + Definition::Use(_) | Definition::ModuleConstant(_) => (), } } } @@ -666,8 +650,6 @@ where &functions, // &type_aliases, &data_types, - // &imports, - // &constants, &self.module_types, );