Hygiene is an internal implementation detail of the compiler

This commit is contained in:
Aleksey Kladov 2021-03-08 22:14:52 +03:00
parent e346a9c5e1
commit 9faf8dd69a
4 changed files with 12 additions and 7 deletions

View file

@ -96,7 +96,7 @@ pub use {
visibility::Visibility, visibility::Visibility,
}, },
hir_expand::{ hir_expand::{
name::{known, AsName, Name}, name::{known, Name},
ExpandResult, HirFileId, InFile, MacroCallId, MacroCallLoc, /* FIXME */ MacroDefId, ExpandResult, HirFileId, InFile, MacroCallId, MacroCallLoc, /* FIXME */ MacroDefId,
MacroFile, Origin, MacroFile, Origin,
}, },
@ -106,7 +106,10 @@ pub use {
// These are negative re-exports: pub using these names is forbidden, they // These are negative re-exports: pub using these names is forbidden, they
// should remain private to hir internals. // should remain private to hir internals.
#[allow(unused)] #[allow(unused)]
use {hir_def::path::Path, hir_expand::hygiene::Hygiene}; use {
hir_def::path::Path,
hir_expand::{hygiene::Hygiene, name::AsName},
};
/// hir::Crate describes a single crate. It's the main interface with which /// hir::Crate describes a single crate. It's the main interface with which
/// a crate's dependencies interact. Mostly, it should be just a proxy for the /// a crate's dependencies interact. Mostly, it should be just a proxy for the

View file

@ -1,7 +1,7 @@
use std::iter; use std::iter;
use either::Either; use either::Either;
use hir::{AsName, Module, ModuleDef, Name, Variant}; use hir::{Module, ModuleDef, Name, Variant};
use ide_db::{ use ide_db::{
defs::Definition, defs::Definition,
helpers::{ helpers::{
@ -133,7 +133,7 @@ fn existing_definition(db: &RootDatabase, variant_name: &ast::Name, variant: &Va
), ),
_ => false, _ => false,
}) })
.any(|(name, _)| name == variant_name.as_name()) .any(|(name, _)| name.to_string() == variant_name.to_string())
} }
fn insert_import( fn insert_import(

View file

@ -1,6 +1,6 @@
use std::iter; use std::iter;
use hir::{AsAssocItem, AsName}; use hir::AsAssocItem;
use ide_db::helpers::{import_assets::ImportCandidate, mod_path_to_ast}; use ide_db::helpers::{import_assets::ImportCandidate, mod_path_to_ast};
use ide_db::RootDatabase; use ide_db::RootDatabase;
use syntax::{ use syntax::{
@ -160,7 +160,9 @@ fn find_trait_method(
) -> Option<hir::Function> { ) -> Option<hir::Function> {
if let Some(hir::AssocItem::Function(method)) = if let Some(hir::AssocItem::Function(method)) =
trait_.items(db).into_iter().find(|item: &hir::AssocItem| { trait_.items(db).into_iter().find(|item: &hir::AssocItem| {
item.name(db).map(|name| name == trait_method_name.as_name()).unwrap_or(false) item.name(db)
.map(|name| name.to_string() == trait_method_name.to_string())
.unwrap_or(false)
}) })
{ {
Some(method) Some(method)

View file

@ -46,7 +46,7 @@ This is *the* entry point, but it front-loads a lot of complexity, so its fine t
`crates/rust-analyzer/src/handlers.rs` implements all LSP requests and is a great place to start if you are already familiar with LSP. `crates/rust-analyzer/src/handlers.rs` implements all LSP requests and is a great place to start if you are already familiar with LSP.
`Analysis` and `AnalysisHost` types define the main API. `Analysis` and `AnalysisHost` types define the main API for consumers of IDE services.
## Code Map ## Code Map