use std::{ops, sync::Arc};
+use cfg::{CfgExpr, CfgOptions};
use either::Either;
use hir_expand::{hygiene::Hygiene, AstId, InFile};
use mbe::ast_to_token_tree;
-use cfg::{CfgExpr, CfgOptions};
use syntax::{
ast::{self, AstNode, AttrsOwner},
SmolStr,
use std::{mem, ops::Index, sync::Arc};
use arena::{map::ArenaMap, Arena};
+use cfg::CfgOptions;
use drop_bomb::DropBomb;
use either::Either;
use hir_expand::{ast_id_map::AstIdMap, hygiene::Hygiene, AstId, HirFileId, InFile, MacroDefId};
-use cfg::CfgOptions;
use ra_db::CrateId;
use rustc_hash::FxHashMap;
use syntax::{ast, AstNode, AstPtr};
//! `DefCollector::collect` contains the fixed-point iteration loop which
//! resolves imports and expands macros.
+use cfg::CfgOptions;
use hir_expand::{
ast_id_map::FileAstId,
builtin_derive::find_builtin_derive,
proc_macro::ProcMacroExpander,
HirFileId, MacroCallId, MacroDefId, MacroDefKind,
};
-use cfg::CfgOptions;
use ra_db::{CrateId, FileId, ProcMacroId};
use rustc_hash::FxHashMap;
use syntax::ast;
use std::fmt;
+use cfg::CfgExpr;
use hir::{AsAssocItem, Attrs, HirFileId, InFile, Semantics};
use itertools::Itertools;
-use cfg::CfgExpr;
use ra_ide_db::RootDatabase;
use syntax::{
ast::{self, AstNode, AttrsOwner, DocCommentsOwner, ModuleItemOwner, NameOwner},
};
use anyhow::{bail, Context, Result};
-use paths::{AbsPath, AbsPathBuf};
use cfg::CfgOptions;
+use paths::{AbsPath, AbsPathBuf};
use ra_db::{CrateGraph, CrateId, CrateName, Edition, Env, FileId};
use rustc_hash::{FxHashMap, FxHashSet};
mod tests {
use super::*;
- use mbe::ast_to_token_tree;
use cfg::CfgExpr;
+ use mbe::ast_to_token_tree;
use syntax::{
ast::{self, AstNode},
SmolStr,