aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_assists/src
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_assists/src')
-rw-r--r--crates/ra_assists/src/assists/flip_trait_bound.rs76
1 files changed, 76 insertions, 0 deletions
diff --git a/crates/ra_assists/src/assists/flip_trait_bound.rs b/crates/ra_assists/src/assists/flip_trait_bound.rs
index a2c954ec5..203092d03 100644
--- a/crates/ra_assists/src/assists/flip_trait_bound.rs
+++ b/crates/ra_assists/src/assists/flip_trait_bound.rs
@@ -30,3 +30,79 @@ pub(crate) fn flip_trait_bound(mut ctx: AssistCtx<impl HirDatabase>) -> Option<A
30 30
31 ctx.build() 31 ctx.build()
32} 32}
33
34#[cfg(test)]
35mod tests {
36 use super::*;
37
38 use crate::helpers::{check_assist, check_assist_not_applicable, check_assist_target};
39
40 #[test]
41 fn flip_trait_bound_assist_available() {
42 check_assist_target(flip_trait_bound, "struct S<T> where T: A <|>+ B + C { }", "+")
43 }
44
45 #[test]
46 fn flip_trait_bound_not_applicable_for_single_trait_bound() {
47 check_assist_not_applicable(flip_trait_bound, "struct S<T> where T: <|>A { }")
48 }
49
50 #[test]
51 fn flip_trait_bound_works_for_struct() {
52 check_assist(
53 flip_trait_bound,
54 "struct S<T> where T: A <|>+ B { }",
55 "struct S<T> where T: B <|>+ A { }",
56 )
57 }
58
59 #[test]
60 fn flip_trait_bound_works_for_trait_impl() {
61 check_assist(
62 flip_trait_bound,
63 "impl X for S<T> where T: A +<|> B { }",
64 "impl X for S<T> where T: B +<|> A { }",
65 )
66 }
67
68 #[test]
69 fn flip_trait_bound_works_for_fn() {
70 check_assist(flip_trait_bound, "fn f<T: A <|>+ B>(t: T) { }", "fn f<T: B <|>+ A>(t: T) { }")
71 }
72
73 #[test]
74 fn flip_trait_bound_works_for_fn_where_clause() {
75 check_assist(
76 flip_trait_bound,
77 "fn f<T>(t: T) where T: A +<|> B { }",
78 "fn f<T>(t: T) where T: B +<|> A { }",
79 )
80 }
81
82 #[test]
83 fn flip_trait_bound_works_for_lifetime() {
84 check_assist(
85 flip_trait_bound,
86 "fn f<T>(t: T) where T: A <|>+ 'static { }",
87 "fn f<T>(t: T) where T: 'static <|>+ A { }",
88 )
89 }
90
91 #[test]
92 fn flip_trait_bound_works_for_complex_bounds() {
93 check_assist(
94 flip_trait_bound,
95 "struct S<T> where T: A<T> <|>+ b_mod::B<T> + C<T> { }",
96 "struct S<T> where T: b_mod::B<T> <|>+ A<T> + C<T> { }",
97 )
98 }
99
100 #[test]
101 fn flip_trait_bound_works_for_long_bounds() {
102 check_assist(
103 flip_trait_bound,
104 "struct S<T> where T: A + B + C + D + E + F +<|> G + H + I + J { }",
105 "struct S<T> where T: A + B + C + D + E + G +<|> F + H + I + J { }",
106 )
107 }
108}