Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir/src/lib.rs')
-rw-r--r--crates/hir/src/lib.rs14
1 files changed, 9 insertions, 5 deletions
diff --git a/crates/hir/src/lib.rs b/crates/hir/src/lib.rs
index 258224a758..1b06dbd908 100644
--- a/crates/hir/src/lib.rs
+++ b/crates/hir/src/lib.rs
@@ -967,11 +967,6 @@ pub struct Variant {
}
impl Variant {
- pub fn value(self, db: &dyn HirDatabase) -> Option<Expr> {
- // TODO(ole): Handle missing exprs (+1 to the prev)
- self.source(db)?.value.expr()
- }
-
pub fn module(self, db: &dyn HirDatabase) -> Module {
self.parent.module(db)
}
@@ -999,6 +994,15 @@ impl Variant {
pub(crate) fn variant_data(self, db: &dyn HirDatabase) -> Arc<VariantData> {
db.enum_data(self.parent.id).variants[self.id].variant_data.clone()
}
+
+ pub fn value(self, db: &dyn HirDatabase) -> Option<Expr> {
+ // TODO(ole): Handle missing exprs (+1 to the prev)
+ self.source(db)?.value.expr()
+ }
+
+ pub fn eval(self, db: &dyn HirDatabase) -> Result<ComputedExpr, ConstEvalError> {
+ db.const_eval_variant(self.into())
+ }
}
/// Variants inherit visibility from the parent enum.