Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-def/src/nameres/diagnostics.rs')
-rw-r--r--crates/hir-def/src/nameres/diagnostics.rs25
1 files changed, 10 insertions, 15 deletions
diff --git a/crates/hir-def/src/nameres/diagnostics.rs b/crates/hir-def/src/nameres/diagnostics.rs
index de3d2f4836..c495a07449 100644
--- a/crates/hir-def/src/nameres/diagnostics.rs
+++ b/crates/hir-def/src/nameres/diagnostics.rs
@@ -3,22 +3,18 @@
use std::ops::Not;
use cfg::{CfgExpr, CfgOptions};
-use hir_expand::{ExpandErrorKind, MacroCallKind, attrs::AttrId, mod_path::ModPath};
+use hir_expand::{ErasedAstId, ExpandErrorKind, MacroCallKind, attrs::AttrId, mod_path::ModPath};
use la_arena::Idx;
use syntax::ast;
-use crate::{
- AstId,
- item_tree::{self, AttrOwner, ItemTreeId, TreeId},
- nameres::LocalModuleId,
-};
+use crate::{AstId, nameres::LocalModuleId};
#[derive(Debug, PartialEq, Eq)]
pub enum DefDiagnosticKind {
UnresolvedModule { ast: AstId<ast::Module>, candidates: Box<[String]> },
UnresolvedExternCrate { ast: AstId<ast::ExternCrate> },
- UnresolvedImport { id: ItemTreeId<item_tree::Use>, index: Idx<ast::UseTree> },
- UnconfiguredCode { tree: TreeId, item: AttrOwner, cfg: CfgExpr, opts: CfgOptions },
+ UnresolvedImport { id: AstId<ast::Use>, index: Idx<ast::UseTree> },
+ UnconfiguredCode { ast_id: ErasedAstId, cfg: CfgExpr, opts: CfgOptions },
UnresolvedMacroCall { ast: MacroCallKind, path: ModPath },
UnimplementedBuiltinMacro { ast: AstId<ast::Macro> },
InvalidDeriveTarget { ast: AstId<ast::Item>, id: usize },
@@ -28,7 +24,7 @@ pub enum DefDiagnosticKind {
}
#[derive(Clone, Debug, PartialEq, Eq)]
-pub struct DefDiagnostics(Option<triomphe::Arc<Box<[DefDiagnostic]>>>);
+pub struct DefDiagnostics(Option<triomphe::ThinArc<(), DefDiagnostic>>);
impl DefDiagnostics {
pub fn new(diagnostics: Vec<DefDiagnostic>) -> Self {
@@ -36,12 +32,12 @@ impl DefDiagnostics {
diagnostics
.is_empty()
.not()
- .then(|| triomphe::Arc::new(diagnostics.into_boxed_slice())),
+ .then(|| triomphe::ThinArc::from_header_and_iter((), diagnostics.into_iter())),
)
}
pub fn iter(&self) -> impl Iterator<Item = &DefDiagnostic> {
- self.0.as_ref().into_iter().flat_map(|it| &***it)
+ self.0.as_ref().into_iter().flat_map(|it| &it.slice)
}
}
@@ -75,7 +71,7 @@ impl DefDiagnostic {
pub(super) fn unresolved_import(
container: LocalModuleId,
- id: ItemTreeId<item_tree::Use>,
+ id: AstId<ast::Use>,
index: Idx<ast::UseTree>,
) -> Self {
Self { in_module: container, kind: DefDiagnosticKind::UnresolvedImport { id, index } }
@@ -92,14 +88,13 @@ impl DefDiagnostic {
pub fn unconfigured_code(
container: LocalModuleId,
- tree: TreeId,
- item: AttrOwner,
+ ast_id: ErasedAstId,
cfg: CfgExpr,
opts: CfgOptions,
) -> Self {
Self {
in_module: container,
- kind: DefDiagnosticKind::UnconfiguredCode { tree, item, cfg, opts },
+ kind: DefDiagnosticKind::UnconfiguredCode { ast_id, cfg, opts },
}
}