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,
},
hir_expand::{
name::{known, AsName, Name},
name::{known, Name},
ExpandResult, HirFileId, InFile, MacroCallId, MacroCallLoc, /* FIXME */ MacroDefId,
MacroFile, Origin,
},
@ -106,7 +106,10 @@ pub use {
// These are negative re-exports: pub using these names is forbidden, they
// should remain private to hir internals.
#[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
/// a crate's dependencies interact. Mostly, it should be just a proxy for the

View file

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

View file

@ -1,6 +1,6 @@
use std::iter;
use hir::{AsAssocItem, AsName};
use hir::AsAssocItem;
use ide_db::helpers::{import_assets::ImportCandidate, mod_path_to_ast};
use ide_db::RootDatabase;
use syntax::{
@ -160,7 +160,9 @@ fn find_trait_method(
) -> Option<hir::Function> {
if let Some(hir::AssocItem::Function(method)) =
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)

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.
`Analysis` and `AnalysisHost` types define the main API.
`Analysis` and `AnalysisHost` types define the main API for consumers of IDE services.
## Code Map