From d22835b5494e976dbff7b967f3027cc04a7a04a6 Mon Sep 17 00:00:00 2001 From: orizi <104711814+orizi@users.noreply.github.com> Date: Mon, 9 Sep 2024 10:52:56 +0300 Subject: [PATCH] Passing around `ConstValueId` instead of `ConstValue`. (#6368) --- crates/cairo-lang-semantic/src/db.rs | 4 ++-- crates/cairo-lang-semantic/src/expr/compute.rs | 3 +-- crates/cairo-lang-semantic/src/items/constant.rs | 11 ++++++----- crates/cairo-lang-semantic/src/items/imp.rs | 12 ++---------- crates/cairo-lang-semantic/src/resolve/mod.rs | 2 +- 5 files changed, 12 insertions(+), 20 deletions(-) diff --git a/crates/cairo-lang-semantic/src/db.rs b/crates/cairo-lang-semantic/src/db.rs index cd39d13c798..cb8b722cc21 100644 --- a/crates/cairo-lang-semantic/src/db.rs +++ b/crates/cairo-lang-semantic/src/db.rs @@ -22,7 +22,7 @@ use smol_str::SmolStr; use crate::diagnostic::SemanticDiagnosticKind; use crate::expr::inference::{self, ImplVar, ImplVarId}; -use crate::items::constant::{ConstValue, ConstValueId, Constant, ImplConstantId}; +use crate::items::constant::{ConstValueId, Constant, ImplConstantId}; use crate::items::function_with_body::FunctionBody; use crate::items::functions::{ImplicitPrecedence, InlineConfiguration}; use crate::items::generics::{GenericParam, GenericParamData, GenericParamsData}; @@ -157,7 +157,7 @@ pub trait SemanticGroup: fn constant_resolver_data(&self, use_id: ConstantId) -> Maybe>; #[salsa::invoke(items::constant::constant_const_value)] #[salsa::cycle(items::constant::constant_const_value_cycle)] - fn constant_const_value(&self, const_id: ConstantId) -> Maybe; + fn constant_const_value(&self, const_id: ConstantId) -> Maybe; #[salsa::invoke(items::constant::constant_const_type)] #[salsa::cycle(items::constant::constant_const_type_cycle)] fn constant_const_type(&self, const_id: ConstantId) -> Maybe; diff --git a/crates/cairo-lang-semantic/src/expr/compute.rs b/crates/cairo-lang-semantic/src/expr/compute.rs index 91cd44d161e..20f6a16b886 100644 --- a/crates/cairo-lang-semantic/src/expr/compute.rs +++ b/crates/cairo-lang-semantic/src/expr/compute.rs @@ -3544,11 +3544,10 @@ pub fn compute_statement_semantic( let name = var_def_id.name(db.upcast()); match resolved_item { ResolvedGenericItem::GenericConstant(const_id) => { - let const_value = db.constant_const_value(const_id)?; let var_def = Binding::LocalItem(LocalItem { id: var_def_id, kind: StatementItemKind::Constant( - db.intern_const_value(const_value), + db.constant_const_value(const_id)?, db.constant_const_type(const_id)?, ), }); diff --git a/crates/cairo-lang-semantic/src/items/constant.rs b/crates/cairo-lang-semantic/src/items/constant.rs index 1596c72122c..ed849d64647 100644 --- a/crates/cairo-lang-semantic/src/items/constant.rs +++ b/crates/cairo-lang-semantic/src/items/constant.rs @@ -64,7 +64,7 @@ impl Constant { pub struct ConstantData { pub diagnostics: Diagnostics, pub constant: Maybe, - pub const_value: ConstValue, + pub const_value: ConstValueId, pub resolver_data: Arc, } @@ -312,7 +312,8 @@ pub fn constant_semantic_data_helper( &value, constant_ast.stable_ptr().untyped(), constant_type, - ); + ) + .intern(db); // Check fully resolved. ctx.resolver.inference().finalize(ctx.diagnostics, constant_ast.stable_ptr().untyped()); @@ -352,7 +353,7 @@ pub fn constant_semantic_data_cycle_helper( let diagnostic_added = diagnostics.report(constant_ast, SemanticDiagnosticKind::ConstCycle); Ok(ConstantData { constant: Err(diagnostic_added), - const_value: ConstValue::Missing(diagnostic_added), + const_value: ConstValue::Missing(diagnostic_added).intern(db), diagnostics: diagnostics.build(), resolver_data, }) @@ -667,7 +668,7 @@ pub fn constant_resolver_data_cycle( } /// Query implementation of [crate::db::SemanticGroup::constant_const_value]. -pub fn constant_const_value(db: &dyn SemanticGroup, const_id: ConstantId) -> Maybe { +pub fn constant_const_value(db: &dyn SemanticGroup, const_id: ConstantId) -> Maybe { Ok(db.priv_constant_semantic_data(const_id, false)?.const_value) } @@ -676,7 +677,7 @@ pub fn constant_const_value_cycle( db: &dyn SemanticGroup, _cycle: &salsa::Cycle, const_id: &ConstantId, -) -> Maybe { +) -> Maybe { // Forwarding cycle handling to `priv_constant_semantic_data` handler. Ok(db.priv_constant_semantic_data(*const_id, true)?.const_value) } diff --git a/crates/cairo-lang-semantic/src/items/imp.rs b/crates/cairo-lang-semantic/src/items/imp.rs index 8944f7fce27..d2daafc47d0 100644 --- a/crates/cairo-lang-semantic/src/items/imp.rs +++ b/crates/cairo-lang-semantic/src/items/imp.rs @@ -2171,11 +2171,7 @@ pub fn impl_constant_def_value( db: &dyn SemanticGroup, impl_constant_def_id: ImplConstantDefId, ) -> Maybe { - Ok(db - .priv_impl_constant_semantic_data(impl_constant_def_id, false)? - .constant_data - .const_value - .intern(db)) + Ok(db.priv_impl_constant_semantic_data(impl_constant_def_id, false)?.constant_data.const_value) } /// Cycle handling for [crate::db::SemanticGroup::impl_constant_def_value]. @@ -2184,11 +2180,7 @@ pub fn impl_constant_def_value_cycle( _cycle: &salsa::Cycle, impl_constant_def_id: &ImplConstantDefId, ) -> Maybe { - Ok(db - .priv_impl_constant_semantic_data(*impl_constant_def_id, true)? - .constant_data - .const_value - .intern(db)) + Ok(db.priv_impl_constant_semantic_data(*impl_constant_def_id, true)?.constant_data.const_value) } /// Query implementation of [crate::db::SemanticGroup::impl_constant_def_resolver_data]. diff --git a/crates/cairo-lang-semantic/src/resolve/mod.rs b/crates/cairo-lang-semantic/src/resolve/mod.rs index 7cf7d2eb02c..53608cf75db 100644 --- a/crates/cairo-lang-semantic/src/resolve/mod.rs +++ b/crates/cairo-lang-semantic/src/resolve/mod.rs @@ -850,7 +850,7 @@ impl<'db> Resolver<'db> { ) -> Maybe { Ok(match generic_item { ResolvedGenericItem::GenericConstant(id) => { - ResolvedConcreteItem::Constant(self.db.constant_const_value(id)?.intern(self.db)) + ResolvedConcreteItem::Constant(self.db.constant_const_value(id)?) } ResolvedGenericItem::Module(module_id) => { if generic_args_syntax.is_some() {