From 11c0a5bb60f9377526a588c11c68d5471ae46aa3 Mon Sep 17 00:00:00 2001 From: Matthew Jasper Date: Sun, 10 May 2020 16:08:28 +0100 Subject: Highlight mutable statics as mutable --- crates/ra_hir_def/src/data.rs | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) (limited to 'crates/ra_hir_def/src/data.rs') diff --git a/crates/ra_hir_def/src/data.rs b/crates/ra_hir_def/src/data.rs index e7eb2bb11..e2130d931 100644 --- a/crates/ra_hir_def/src/data.rs +++ b/crates/ra_hir_def/src/data.rs @@ -251,11 +251,6 @@ impl ConstData { Arc::new(ConstData::new(db, vis_default, node)) } - pub(crate) fn static_data_query(db: &dyn DefDatabase, konst: StaticId) -> Arc { - let node = konst.lookup(db).source(db); - Arc::new(ConstData::new(db, RawVisibility::private(), node)) - } - fn new( db: &dyn DefDatabase, vis_default: RawVisibility, @@ -270,6 +265,32 @@ impl ConstData { } } +#[derive(Debug, Clone, PartialEq, Eq)] +pub struct StaticData { + pub name: Option, + pub type_ref: TypeRef, + pub visibility: RawVisibility, + pub mutable: bool, +} + +impl StaticData { + pub(crate) fn static_data_query(db: &dyn DefDatabase, konst: StaticId) -> Arc { + let node = konst.lookup(db).source(db); + let ctx = LowerCtx::new(db, node.file_id); + + let name = node.value.name().map(|n| n.as_name()); + let type_ref = TypeRef::from_ast_opt(&ctx, node.value.ascribed_type()); + let mutable = node.value.mut_token().is_some(); + let visibility = RawVisibility::from_ast_with_default( + db, + RawVisibility::private(), + node.map(|n| n.visibility()), + ); + + Arc::new(StaticData { name, type_ref, visibility, mutable }) + } +} + fn collect_items_in_macros( db: &dyn DefDatabase, expander: &mut Expander, -- cgit v1.2.3