Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide_db/src/traits/tests.rs')
| -rw-r--r-- | crates/ide_db/src/traits/tests.rs | 141 |
1 files changed, 0 insertions, 141 deletions
diff --git a/crates/ide_db/src/traits/tests.rs b/crates/ide_db/src/traits/tests.rs deleted file mode 100644 index de994407c7..0000000000 --- a/crates/ide_db/src/traits/tests.rs +++ /dev/null @@ -1,141 +0,0 @@ -use base_db::{fixture::ChangeFixture, FilePosition}; -use expect_test::{expect, Expect}; -use hir::Semantics; -use syntax::ast::{self, AstNode}; - -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); - let mut database = RootDatabase::default(); - database.apply_change(change_fixture.change); - let (file_id, range_or_offset) = change_fixture.file_position.expect("expected a marker ($0)"); - let offset = range_or_offset.expect_offset(); - (database, FilePosition { file_id, offset }) -} - -fn check_trait(ra_fixture: &str, expect: Expect) { - let (db, position) = position(ra_fixture); - let sema = Semantics::new(&db); - let file = sema.parse(position.file_id); - let impl_block: ast::Impl = - sema.find_node_at_offset_with_descend(file.syntax(), position.offset).unwrap(); - let trait_ = crate::traits::resolve_target_trait(&sema, &impl_block); - let actual = match trait_ { - Some(trait_) => trait_.name(&db).to_string(), - None => String::new(), - }; - expect.assert_eq(&actual); -} - -fn check_missing_assoc(ra_fixture: &str, expect: Expect) { - let (db, position) = position(ra_fixture); - let sema = Semantics::new(&db); - let file = sema.parse(position.file_id); - let impl_block: ast::Impl = - sema.find_node_at_offset_with_descend(file.syntax(), position.offset).unwrap(); - let items = crate::traits::get_missing_assoc_items(&sema, &impl_block); - let actual = items - .into_iter() - .map(|item| item.name(&db).unwrap().to_string()) - .collect::<Vec<_>>() - .join("\n"); - expect.assert_eq(&actual); -} - -#[test] -fn resolve_trait() { - check_trait( - r#" -pub trait Foo { - fn bar(); -} -impl Foo for u8 { - $0 -} - "#, - expect![["Foo"]], - ); - check_trait( - r#" -pub trait Foo { - fn bar(); -} -impl Foo for u8 { - fn bar() { - fn baz() { - $0 - } - baz(); - } -} - "#, - expect![["Foo"]], - ); - check_trait( - r#" -pub trait Foo { - fn bar(); -} -pub struct Bar; -impl Bar { - $0 -} - "#, - expect![[""]], - ); -} - -#[test] -fn missing_assoc_items() { - check_missing_assoc( - r#" -pub trait Foo { - const FOO: u8; - fn bar(); -} -impl Foo for u8 { - $0 -}"#, - expect![[r#" - FOO - bar"#]], - ); - - check_missing_assoc( - r#" -pub trait Foo { - const FOO: u8; - fn bar(); -} -impl Foo for u8 { - const FOO: u8 = 10; - $0 -}"#, - expect![[r#" - bar"#]], - ); - - check_missing_assoc( - r#" -pub trait Foo { - const FOO: u8; - fn bar(); -} -impl Foo for u8 { - const FOO: u8 = 10; - fn bar() {$0} -}"#, - expect![[r#""#]], - ); - - check_missing_assoc( - r#" -pub struct Foo; -impl Foo { - fn bar() {$0} -}"#, - expect![[r#""#]], - ); -} |