-use crate::RootDatabase;
use base_db::{fixture::ChangeFixture, FilePosition};
use expect_test::{expect, Expect};
use test_utils::RangeOrOffset;
+use crate::RootDatabase;
+
/// Creates analysis from a multi-file fixture, returns positions marked with $0.
pub(crate) fn position(ra_fixture: &str) -> (RootDatabase, FilePosition) {
let change_fixture = ChangeFixture::parse(ra_fixture);
//! Handle syntactic aspects of inserting a new `use`.
use std::{cmp::Ordering, iter::successors};
-use crate::RootDatabase;
use hir::Semantics;
use itertools::{EitherOrBoth, Itertools};
use syntax::{
AstToken, InsertPosition, NodeOrToken, SyntaxElement, SyntaxNode, SyntaxToken,
};
+use crate::RootDatabase;
+
pub use hir::PrefixKind;
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
-//! See `Label`
+//! See [`Label`]
use std::fmt;
/// A type to specify UI label, like an entry in the list of assists. Enforces
use rustc_hash::FxHashMap;
use syntax::{ast, match_ast, AstNode, TextRange, TextSize};
-use crate::defs::NameClass;
use crate::{
- defs::{Definition, NameRefClass},
+ defs::{Definition, NameClass, NameRefClass},
RootDatabase,
};
}
}
+ /// Inserts a [`TextEdit`] for the given [`FileId`]. This properly handles merging existing
+ /// edits for a file if some already exist.
pub fn insert_source_edit(&mut self, file_id: FileId, edit: TextEdit) {
match self.source_file_edits.entry(file_id) {
Entry::Occupied(mut entry) => {
resolve_target_trait(sema, impl_def).map_or(vec![], |target_trait| {
target_trait
.items(sema.db)
- .iter()
+ .into_iter()
.filter(|i| match i {
hir::AssocItem::Function(f) => {
!impl_fns_consts.contains(&f.name(sema.db).to_string())
.map(|n| !impl_fns_consts.contains(&n.to_string()))
.unwrap_or_default(),
})
- .cloned()
.collect()
})
}
-use crate::RootDatabase;
use base_db::{fixture::ChangeFixture, FilePosition};
use expect_test::{expect, Expect};
use hir::Semantics;
use syntax::ast::{self, AstNode};
use test_utils::RangeOrOffset;
+use crate::RootDatabase;
+
/// Creates analysis from a multi-file fixture, returns positions marked with $0.
pub(crate) fn position(ra_fixture: &str) -> (RootDatabase, FilePosition) {
let change_fixture = ChangeFixture::parse(ra_fixture);
//! Use case for structures in this module is, for example, situation when you need to process
//! only certain `Enum`s.
-use crate::RootDatabase;
-use hir::{Adt, Semantics, Type};
use std::iter;
+
+use hir::{Adt, Semantics, Type};
use syntax::ast::{self, make};
+use crate::RootDatabase;
+
/// Enum types that implement `std::ops::Try` trait.
#[derive(Clone, Copy)]
pub enum TryEnum {