Skip to content

Commit

Permalink
Passing around ConstValueId instead of ConstValue. (#6368)
Browse files Browse the repository at this point in the history
  • Loading branch information
orizi authored Sep 9, 2024
1 parent bcee453 commit d22835b
Show file tree
Hide file tree
Showing 5 changed files with 12 additions and 20 deletions.
4 changes: 2 additions & 2 deletions crates/cairo-lang-semantic/src/db.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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};
Expand Down Expand Up @@ -157,7 +157,7 @@ pub trait SemanticGroup:
fn constant_resolver_data(&self, use_id: ConstantId) -> Maybe<Arc<ResolverData>>;
#[salsa::invoke(items::constant::constant_const_value)]
#[salsa::cycle(items::constant::constant_const_value_cycle)]
fn constant_const_value(&self, const_id: ConstantId) -> Maybe<ConstValue>;
fn constant_const_value(&self, const_id: ConstantId) -> Maybe<ConstValueId>;
#[salsa::invoke(items::constant::constant_const_type)]
#[salsa::cycle(items::constant::constant_const_type_cycle)]
fn constant_const_type(&self, const_id: ConstantId) -> Maybe<TypeId>;
Expand Down
3 changes: 1 addition & 2 deletions crates/cairo-lang-semantic/src/expr/compute.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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)?,
),
});
Expand Down
11 changes: 6 additions & 5 deletions crates/cairo-lang-semantic/src/items/constant.rs
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ impl Constant {
pub struct ConstantData {
pub diagnostics: Diagnostics<SemanticDiagnostic>,
pub constant: Maybe<Constant>,
pub const_value: ConstValue,
pub const_value: ConstValueId,
pub resolver_data: Arc<ResolverData>,
}

Expand Down Expand Up @@ -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());
Expand Down Expand Up @@ -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,
})
Expand Down Expand Up @@ -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<ConstValue> {
pub fn constant_const_value(db: &dyn SemanticGroup, const_id: ConstantId) -> Maybe<ConstValueId> {
Ok(db.priv_constant_semantic_data(const_id, false)?.const_value)
}

Expand All @@ -676,7 +677,7 @@ pub fn constant_const_value_cycle(
db: &dyn SemanticGroup,
_cycle: &salsa::Cycle,
const_id: &ConstantId,
) -> Maybe<ConstValue> {
) -> Maybe<ConstValueId> {
// Forwarding cycle handling to `priv_constant_semantic_data` handler.
Ok(db.priv_constant_semantic_data(*const_id, true)?.const_value)
}
Expand Down
12 changes: 2 additions & 10 deletions crates/cairo-lang-semantic/src/items/imp.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2171,11 +2171,7 @@ pub fn impl_constant_def_value(
db: &dyn SemanticGroup,
impl_constant_def_id: ImplConstantDefId,
) -> Maybe<ConstValueId> {
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].
Expand All @@ -2184,11 +2180,7 @@ pub fn impl_constant_def_value_cycle(
_cycle: &salsa::Cycle,
impl_constant_def_id: &ImplConstantDefId,
) -> Maybe<ConstValueId> {
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].
Expand Down
2 changes: 1 addition & 1 deletion crates/cairo-lang-semantic/src/resolve/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -850,7 +850,7 @@ impl<'db> Resolver<'db> {
) -> Maybe<ResolvedConcreteItem> {
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() {
Expand Down

0 comments on commit d22835b

Please sign in to comment.