128 lines
2.4 KiB
Rust
128 lines
2.4 KiB
Rust
//! Completions tests for item specifics overall.
|
|
//!
|
|
//! Except for use items which are tested in [super::use_tree] and mod declarations with are tested
|
|
//! in [crate::completions::mod_].
|
|
use expect_test::{expect, Expect};
|
|
|
|
use crate::tests::completion_list;
|
|
|
|
fn check(ra_fixture: &str, expect: Expect) {
|
|
let base = r#"#[rustc_builtin_macro]
|
|
pub macro Clone {}
|
|
enum Enum { Variant }
|
|
struct Struct {}
|
|
#[macro_export]
|
|
macro_rules! foo {}
|
|
mod bar {}
|
|
const CONST: () = ();
|
|
trait Trait {}
|
|
"#;
|
|
let actual = completion_list(&format!("{}{}", base, ra_fixture));
|
|
expect.assert_eq(&actual)
|
|
}
|
|
|
|
#[test]
|
|
fn target_type_or_trait_in_impl_block() {
|
|
check(
|
|
r#"
|
|
impl Tra$0
|
|
"#,
|
|
expect![[r##"
|
|
tt Trait
|
|
en Enum
|
|
st Struct
|
|
md bar
|
|
ma foo!(…) #[macro_export] macro_rules! foo
|
|
ma foo!(…) #[macro_export] macro_rules! foo
|
|
bt u32
|
|
bt bool
|
|
bt u8
|
|
bt isize
|
|
bt u16
|
|
bt u64
|
|
bt u128
|
|
bt f32
|
|
bt i128
|
|
bt i16
|
|
bt str
|
|
bt i64
|
|
bt char
|
|
bt f64
|
|
bt i32
|
|
bt i8
|
|
bt usize
|
|
"##]],
|
|
)
|
|
}
|
|
|
|
#[test]
|
|
fn target_type_in_trait_impl_block() {
|
|
check(
|
|
r#"
|
|
impl Trait for Str$0
|
|
"#,
|
|
expect![[r##"
|
|
tt Trait
|
|
en Enum
|
|
st Struct
|
|
md bar
|
|
ma foo!(…) #[macro_export] macro_rules! foo
|
|
ma foo!(…) #[macro_export] macro_rules! foo
|
|
bt u32
|
|
bt bool
|
|
bt u8
|
|
bt isize
|
|
bt u16
|
|
bt u64
|
|
bt u128
|
|
bt f32
|
|
bt i128
|
|
bt i16
|
|
bt str
|
|
bt i64
|
|
bt char
|
|
bt f64
|
|
bt i32
|
|
bt i8
|
|
bt usize
|
|
"##]],
|
|
)
|
|
}
|
|
|
|
#[test]
|
|
fn after_trait_name_in_trait_def() {
|
|
check(
|
|
r"trait A $0",
|
|
expect![[r#"
|
|
kw where
|
|
"#]],
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn after_trait_or_target_name_in_impl() {
|
|
check(
|
|
r"impl Trait $0",
|
|
expect![[r#"
|
|
kw where
|
|
kw for
|
|
"#]],
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn before_record_field() {
|
|
check(
|
|
r#"
|
|
struct Foo {
|
|
$0
|
|
pub f: i32,
|
|
}
|
|
"#,
|
|
expect![[r#"
|
|
kw pub(crate)
|
|
kw pub
|
|
"#]],
|
|
)
|
|
}
|