From 39d992ef559c9cd67551819a9d63ef52ef7b725f Mon Sep 17 00:00:00 2001 From: Jonas Schievink Date: Thu, 1 Apr 2021 20:35:21 +0200 Subject: Intern Attr, MacroCall and Path components --- crates/hir_def/src/attr.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'crates/hir_def/src/attr.rs') diff --git a/crates/hir_def/src/attr.rs b/crates/hir_def/src/attr.rs index 52a2bce9b..2bab121d9 100644 --- a/crates/hir_def/src/attr.rs +++ b/crates/hir_def/src/attr.rs @@ -18,6 +18,7 @@ use tt::Subtree; use crate::{ db::DefDatabase, + intern::Interned, item_tree::{ItemTreeId, ItemTreeNode}, nameres::ModuleSource, path::{ModPath, PathKind}, @@ -98,7 +99,7 @@ impl RawAttrs { Either::Right(comment) => comment.doc_comment().map(|doc| Attr { index: i as u32, input: Some(AttrInput::Literal(SmolStr::new(doc))), - path: ModPath::from(hir_expand::name!(doc)), + path: Interned::new(ModPath::from(hir_expand::name!(doc))), }), }) .collect::>(); @@ -510,7 +511,7 @@ impl AttrSourceMap { #[derive(Debug, Clone, PartialEq, Eq)] pub struct Attr { index: u32, - pub(crate) path: ModPath, + pub(crate) path: Interned, pub(crate) input: Option, } @@ -524,7 +525,7 @@ pub enum AttrInput { impl Attr { fn from_src(ast: ast::Attr, hygiene: &Hygiene, index: u32) -> Option { - let path = ModPath::from_src(ast.path()?, hygiene)?; + let path = Interned::new(ModPath::from_src(ast.path()?, hygiene)?); let input = if let Some(ast::Expr::Literal(lit)) = ast.expr() { let value = match lit.kind() { ast::LiteralKind::String(string) => string.value()?.into(), -- cgit v1.2.3