From ef70c6b8a8612485d845e49fc9b261fed0d60a74 Mon Sep 17 00:00:00 2001 From: KtorZ Date: Sun, 5 May 2024 13:06:00 +0200 Subject: [PATCH] Re-use generic id across builtin type-definitions. This was somehow wrong and corrected by codegen later on, but we should be re-using the same generic id across an entire definition if the variable refers to the same element. --- crates/aiken-lang/src/builtins.rs | 10 +++------- ...roject__blueprint__validator__tests__free_vars.snap | 2 +- ...project__export__tests__cannot_export_generics.snap | 2 +- 3 files changed, 5 insertions(+), 9 deletions(-) diff --git a/crates/aiken-lang/src/builtins.rs b/crates/aiken-lang/src/builtins.rs index 5e87b41f..e7ea8a13 100644 --- a/crates/aiken-lang/src/builtins.rs +++ b/crates/aiken-lang/src/builtins.rs @@ -394,7 +394,7 @@ pub fn prelude(id_gen: &IdGenerator) -> TypeInfo { TypeConstructor { location: Span::empty(), parameters: vec![option_value.clone()], - tipo: option(option_value), + tipo: option(option_value.clone()), module: "".to_string(), public: true, }, @@ -405,12 +405,10 @@ pub fn prelude(id_gen: &IdGenerator) -> TypeInfo { vec!["Some".to_string(), "None".to_string()], ); - let some = generic_var(id_gen.next()); - prelude.values.insert( "Some".to_string(), ValueConstructor::public( - function(vec![some.clone()], option(some)), + function(vec![option_value.clone()], option(option_value.clone())), ValueConstructorVariant::Record { module: "".into(), name: "Some".to_string(), @@ -422,12 +420,10 @@ pub fn prelude(id_gen: &IdGenerator) -> TypeInfo { ), ); - let some = generic_var(id_gen.next()); - prelude.values.insert( "None".to_string(), ValueConstructor::public( - option(some), + option(option_value), ValueConstructorVariant::Record { module: "".into(), name: "None".to_string(), diff --git a/crates/aiken-project/src/blueprint/snapshots/aiken_project__blueprint__validator__tests__free_vars.snap b/crates/aiken-project/src/blueprint/snapshots/aiken_project__blueprint__validator__tests__free_vars.snap index 9be13fbe..af354a21 100644 --- a/crates/aiken-project/src/blueprint/snapshots/aiken_project__blueprint__validator__tests__free_vars.snap +++ b/crates/aiken-project/src/blueprint/snapshots/aiken_project__blueprint__validator__tests__free_vars.snap @@ -9,7 +9,7 @@ Schema { Var { tipo: RefCell { value: Generic { - id: 37, + id: 35, }, }, alias: None, diff --git a/crates/aiken-project/src/snapshots/aiken_project__export__tests__cannot_export_generics.snap b/crates/aiken-project/src/snapshots/aiken_project__export__tests__cannot_export_generics.snap index d3effaf3..69be98f0 100644 --- a/crates/aiken-project/src/snapshots/aiken_project__export__tests__cannot_export_generics.snap +++ b/crates/aiken-project/src/snapshots/aiken_project__export__tests__cannot_export_generics.snap @@ -9,7 +9,7 @@ Schema { Var { tipo: RefCell { value: Generic { - id: 37, + id: 35, }, }, alias: None,