Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide/src/hover/tests.rs')
-rw-r--r--crates/ide/src/hover/tests.rs106
1 files changed, 103 insertions, 3 deletions
diff --git a/crates/ide/src/hover/tests.rs b/crates/ide/src/hover/tests.rs
index 516e32ef91..9585bdbe4c 100644
--- a/crates/ide/src/hover/tests.rs
+++ b/crates/ide/src/hover/tests.rs
@@ -8465,7 +8465,7 @@ impl Iterator for S {
file_id: FileId(
1,
),
- full_range: 7800..8008,
+ full_range: 7800..8042,
focus_range: 7865..7871,
name: "Future",
kind: Trait,
@@ -8479,8 +8479,8 @@ impl Iterator for S {
file_id: FileId(
1,
),
- full_range: 8638..9104,
- focus_range: 8682..8690,
+ full_range: 8672..9171,
+ focus_range: 8749..8757,
name: "Iterator",
kind: Trait,
container_name: "iterator",
@@ -8602,3 +8602,103 @@ fn test() {
"#]],
);
}
+
+#[test]
+fn issue_17871() {
+ check(
+ r#"
+trait T {
+ fn f<A>();
+}
+
+struct S {}
+impl T for S {
+ fn f<A>() {}
+}
+
+fn main() {
+ let x$0 = S::f::<i32>;
+}
+"#,
+ expect![[r#"
+ *x*
+
+ ```rust
+ // size = 0, align = 1
+ let x: fn f<S, i32>()
+ ```
+ "#]],
+ );
+}
+
+#[test]
+fn raw_keyword_different_editions() {
+ check(
+ r#"
+//- /lib1.rs crate:with_edition_2015 edition:2015
+pub fn dyn() {}
+
+//- /lib2.rs crate:with_edition_2018 edition:2018 deps:with_edition_2015 new_source_root:local
+fn foo() {
+ with_edition_2015::r#dyn$0();
+}
+ "#,
+ expect![[r#"
+ *r#dyn*
+
+ ```rust
+ with_edition_2015
+ ```
+
+ ```rust
+ pub fn r#dyn()
+ ```
+ "#]],
+ );
+
+ check(
+ r#"
+//- /lib1.rs crate:with_edition_2018 edition:2018
+pub fn r#dyn() {}
+
+//- /lib2.rs crate:with_edition_2015 edition:2015 deps:with_edition_2018 new_source_root:local
+fn foo() {
+ with_edition_2018::dyn$0();
+}
+ "#,
+ expect![[r#"
+ *dyn*
+
+ ```rust
+ with_edition_2018
+ ```
+
+ ```rust
+ pub fn dyn()
+ ```
+ "#]],
+ );
+
+ check(
+ r#"
+//- /lib1.rs crate:escaping_needlessly edition:2015
+pub fn r#dyn() {}
+
+//- /lib2.rs crate:dependent edition:2015 deps:escaping_needlessly new_source_root:local
+fn foo() {
+ escaping_needlessly::dyn$0();
+}
+ "#,
+ expect![[r#"
+ *dyn*
+
+ ```rust
+ escaping_needlessly
+ ```
+
+ ```rust
+ pub fn dyn()
+ ```
+ "#]],
+ );
+}