mirror of
https://github.com/rust-lang/rust-analyzer
synced 2025-01-22 09:55:06 +00:00
4cbde4ed8f
aware
131 lines
2.6 KiB
Rust
131 lines
2.6 KiB
Rust
//! Completion tests for predicates and bounds.
|
|
use expect_test::{expect, Expect};
|
|
|
|
use crate::tests::{completion_list, BASE_ITEMS_FIXTURE};
|
|
|
|
fn check(ra_fixture: &str, expect: Expect) {
|
|
let actual = completion_list(&format!("{}\n{}", BASE_ITEMS_FIXTURE, ra_fixture));
|
|
expect.assert_eq(&actual)
|
|
}
|
|
|
|
#[test]
|
|
fn predicate_start() {
|
|
// FIXME: `for` kw
|
|
check(
|
|
r#"
|
|
struct Foo<'lt, T, const C: usize> where $0 {}
|
|
"#,
|
|
expect![[r#"
|
|
en Enum
|
|
ma makro!(…) macro_rules! makro
|
|
md module
|
|
st Foo<…>
|
|
st Record
|
|
st Tuple
|
|
st Unit
|
|
tt Trait
|
|
un Union
|
|
bt u32
|
|
kw crate::
|
|
kw self::
|
|
"#]],
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn bound_for_type_pred() {
|
|
check(
|
|
r#"
|
|
struct Foo<'lt, T, const C: usize> where T: $0 {}
|
|
"#,
|
|
expect![[r#"
|
|
ma makro!(…) macro_rules! makro
|
|
md module
|
|
tt Trait
|
|
kw crate::
|
|
kw self::
|
|
"#]],
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn bound_for_lifetime_pred() {
|
|
// FIXME: should only show lifetimes here, that is we shouldn't get any completions here when not typing
|
|
// a `'`
|
|
check(
|
|
r#"
|
|
struct Foo<'lt, T, const C: usize> where 'lt: $0 {}
|
|
"#,
|
|
expect![[r#"
|
|
ma makro!(…) macro_rules! makro
|
|
md module
|
|
tt Trait
|
|
kw crate::
|
|
kw self::
|
|
"#]],
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn bound_for_for_pred() {
|
|
check(
|
|
r#"
|
|
struct Foo<'lt, T, const C: usize> where for<'a> T: $0 {}
|
|
"#,
|
|
expect![[r#"
|
|
ma makro!(…) macro_rules! makro
|
|
md module
|
|
tt Trait
|
|
kw crate::
|
|
kw self::
|
|
"#]],
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn param_list_for_for_pred() {
|
|
check(
|
|
r#"
|
|
struct Foo<'lt, T, const C: usize> where for<'a> $0 {}
|
|
"#,
|
|
expect![[r#"
|
|
en Enum
|
|
ma makro!(…) macro_rules! makro
|
|
md module
|
|
st Foo<…>
|
|
st Record
|
|
st Tuple
|
|
st Unit
|
|
tt Trait
|
|
un Union
|
|
bt u32
|
|
kw crate::
|
|
kw self::
|
|
"#]],
|
|
);
|
|
}
|
|
|
|
#[test]
|
|
fn pred_on_fn_in_impl() {
|
|
check(
|
|
r#"
|
|
impl Record {
|
|
fn method(self) where $0 {}
|
|
}
|
|
"#,
|
|
expect![[r#"
|
|
en Enum
|
|
ma makro!(…) macro_rules! makro
|
|
md module
|
|
sp Self
|
|
st Record
|
|
st Tuple
|
|
st Unit
|
|
tt Trait
|
|
un Union
|
|
bt u32
|
|
kw crate::
|
|
kw self::
|
|
"#]],
|
|
);
|
|
}
|