]> git.lizzy.rs Git - rust.git/commitdiff
fix completion bugs
authorgfreezy <gfreezy@gmail.com>
Wed, 23 Jan 2019 05:21:29 +0000 (13:21 +0800)
committergfreezy <gfreezy@gmail.com>
Wed, 23 Jan 2019 07:43:47 +0000 (15:43 +0800)
30 files changed:
crates/ra_hir/src/code_model_impl/module.rs
crates/ra_hir/src/nameres.rs
crates/ra_hir/src/path.rs
crates/ra_ide_api/src/completion/complete_snippet.rs
crates/ra_ide_api/src/completion/completion_context.rs
crates/ra_ide_api/src/completion/snapshots/completion_item__bindings_from_for.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__bindings_from_if_let.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__bindings_from_let.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__completes_break_and_continue_in_loops1.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__completes_break_and_continue_in_loops2.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__dont_add_semi_after_return_if_not_a_statement.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__dont_show_both_completions_for_shadowing.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__filter_postfix_completion3.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__keywords_in_function1.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__keywords_in_function2.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__keywords_in_function3.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__keywords_in_function4.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__keywords_in_use_stmt1.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__keywords_in_use_stmt3.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__last_return_in_block_has_semi1.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__last_return_in_block_has_semi2.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__module_items.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__module_items_in_nested_modules.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__return_type.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__self_in_methods.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__should_not_complete_snippets_in_path.snap [new file with mode: 0644]
crates/ra_ide_api/src/completion/snapshots/completion_item__should_not_complete_snippets_in_path2.snap [new file with mode: 0644]
crates/ra_ide_api/src/completion/snapshots/completion_item__snippets_in_expressions.snap
crates/ra_ide_api/src/completion/snapshots/completion_item__snippets_in_items.snap
crates/ra_syntax/src/ast.rs

index 73c212de8c343a101a8b6eb8e5e394d90f3ba3f0..d94079f11c1848a6e8063350a515b8c7b87dc03f 100644 (file)
@@ -143,6 +143,10 @@ pub(crate) fn resolve_path_impl(&self, db: &impl HirDatabase, path: &Path) -> Pe
                         return PerNs::none();
                     }
                 }
+                PathKind::Abs => {
+                    // TODO: absolute use is not supported
+                    return PerNs::none();
+                }
             }
             .def_id,
         );
index 4874e82f31ac7a899656bba73c5fb88d0b00c61a..72791ed4973c8535cb2c4859437d31531f5915d2 100644 (file)
@@ -15,7 +15,8 @@
 //! so that the results of name resolution can be preserved unless the module
 //! structure itself is modified.
 pub(crate) mod lower;
-use lower::*;
+
+use crate::nameres::lower::*;
 
 use std::sync::Arc;
 
@@ -59,7 +60,7 @@ pub fn get(&self, name: &Name) -> Option<&Resolution> {
 pub struct Resolution {
     /// None for unresolved
     pub def_id: PerNs<DefId>,
-    /// ident by whitch this is imported into local scope.
+    /// ident by which this is imported into local scope.
     pub import: Option<ImportId>,
 }
 
@@ -317,6 +318,10 @@ fn resolve_import(
                 }
             }
             PathKind::Crate => module_id.crate_root(&self.module_tree),
+            PathKind::Abs => {
+                // TODO: absolute use is not supported for now
+                return false;
+            }
         };
 
         for (i, segment) in import.path.segments.iter().enumerate() {
index c3d14c689d96e148dddc7bbf387521d1de240aeb..e13d84c5772f047b1eaecbe34932d12fbee4e08f 100644 (file)
@@ -38,6 +38,8 @@ pub enum PathKind {
     Self_,
     Super,
     Crate,
+    // Absolute path
+    Abs,
 }
 
 impl Path {
@@ -57,6 +59,11 @@ pub fn from_ast(mut path: &ast::Path) -> Option<Path> {
         let mut segments = Vec::new();
         loop {
             let segment = path.segment()?;
+
+            if segment.has_colon_colon() {
+                kind = PathKind::Abs;
+            }
+
             match segment.kind()? {
                 ast::PathSegmentKind::Name(name) => {
                     let args = segment
index d3344b865b33d5aca730f8ada8c1abe69fe9366f..d1cea7375fa32e78ac454f67cefd5596202cc8ee 100644 (file)
@@ -10,6 +10,7 @@ pub(super) fn complete_expr_snippet(acc: &mut Completions, ctx: &CompletionConte
     if !(ctx.is_trivial_path && ctx.function_syntax.is_some()) {
         return;
     }
+
     snippet(ctx, "pd", "eprintln!(\"$0 = {:?}\", $0);").add_to(acc);
     snippet(ctx, "ppd", "eprintln!(\"$0 = {:#?}\", $0);").add_to(acc);
 }
@@ -47,6 +48,18 @@ fn completes_snippets_in_expressions() {
         check_snippet_completion("snippets_in_expressions", r"fn foo(x: i32) { <|> }");
     }
 
+    #[test]
+    fn should_not_complete_snippets_in_path() {
+        check_snippet_completion(
+            "should_not_complete_snippets_in_path",
+            r"fn foo(x: i32) { ::foo<|> }",
+        );
+        check_snippet_completion(
+            "should_not_complete_snippets_in_path2",
+            r"fn foo(x: i32) { ::<|> }",
+        );
+    }
+
     #[test]
     fn completes_snippets_in_items() {
         check_snippet_completion(
index b09c66c18d2553e8b30807cb4497febbb02fba23..ca2069e2a74dfe4224d4838fc708fb6b77a0c6cf 100644 (file)
@@ -21,7 +21,7 @@ pub(crate) struct CompletionContext<'a> {
     pub(super) function_syntax: Option<&'a ast::FnDef>,
     pub(super) use_item_syntax: Option<&'a ast::UseItem>,
     pub(super) is_param: bool,
-    /// A single-indent path, like `foo`.
+    /// A single-indent path, like `foo`. `::foo` should not be considered a trivial path.
     pub(super) is_trivial_path: bool,
     /// If not a trivial, path, the prefix (qualifier).
     pub(super) path_prefix: Option<hir::Path>,
@@ -66,13 +66,11 @@ pub(super) fn new(
     }
 
     // The range of the identifier that is being completed.
-    // This is purely advisory and can be used, for example, to highlight this range in the editor.
-    // Clients are expected to ignore this field.
     pub(crate) fn source_range(&self) -> TextRange {
         match self.leaf.kind() {
             // workaroud when completion is triggered by trigger characters.
-            DOT | COLONCOLON => TextRange::from_to(self.offset, self.offset),
-            _ => self.leaf.range(),
+            IDENT => self.leaf.range(),
+            _ => TextRange::offset_len(self.offset, 0.into()),
         }
     }
 
index eb806ad6228dcaa72f2b213f3574b2f3ca9f8df5..329309c9068b44bcd6c595dbdd9a7f77504666ba 100644 (file)
@@ -1,8 +1,8 @@
 ---
-created: "2019-01-22T15:38:19.841148300+00:00"
+created: "2019-01-23T07:42:59.656273+00:00"
 creator: insta@0.4.0
 expression: kind_completions
-source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
+source: crates/ra_ide_api/src/completion/completion_item.rs
 ---
 [
     CompletionItem {
@@ -16,7 +16,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
         lookup: None,
         insert_text: None,
         insert_text_format: PlainText,
-        source_range: [62; 100),
+        source_range: [83; 83),
         text_edit: None
     },
     CompletionItem {
@@ -34,7 +34,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "quux()$0"
         ),
         insert_text_format: Snippet,
-        source_range: [62; 100),
+        source_range: [83; 83),
         text_edit: None
     }
 ]
index 4bb28c7e893070581cf67f571555e0eb0a6e5786..dbbe06c7b4104a70832b7aeb0298995c69248b50 100644 (file)
@@ -1,8 +1,8 @@
 ---
-created: "2019-01-22T15:38:19.863089100+00:00"
+created: "2019-01-23T07:42:59.658419+00:00"
 creator: insta@0.4.0
 expression: kind_completions
-source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
+source: crates/ra_ide_api/src/completion/completion_item.rs
 ---
 [
     CompletionItem {
@@ -16,7 +16,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
         lookup: None,
         insert_text: None,
         insert_text_format: PlainText,
-        source_range: [213; 231),
+        source_range: [214; 214),
         text_edit: None
     },
     CompletionItem {
@@ -30,7 +30,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
         lookup: None,
         insert_text: None,
         insert_text_format: PlainText,
-        source_range: [213; 231),
+        source_range: [214; 214),
         text_edit: None
     },
     CompletionItem {
@@ -48,7 +48,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "quux()$0"
         ),
         insert_text_format: Snippet,
-        source_range: [213; 231),
+        source_range: [214; 214),
         text_edit: None
     }
 ]
index 0579d00ec49e7beaefa8ecbaaff2336fc3ec87ac..b727bb70cc35b7e2f297d61ad8a1b660872346ef 100644 (file)
@@ -1,8 +1,8 @@
 ---
-created: "2019-01-22T15:38:19.881041600+00:00"
+created: "2019-01-23T07:42:59.657713+00:00"
 creator: insta@0.4.0
 expression: kind_completions
-source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
+source: crates/ra_ide_api/src/completion/completion_item.rs
 ---
 [
     CompletionItem {
@@ -16,7 +16,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
         lookup: None,
         insert_text: None,
         insert_text_format: PlainText,
-        source_range: [78; 79),
+        source_range: [79; 79),
         text_edit: None
     },
     CompletionItem {
@@ -30,7 +30,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
         lookup: None,
         insert_text: None,
         insert_text_format: PlainText,
-        source_range: [78; 79),
+        source_range: [79; 79),
         text_edit: None
     },
     CompletionItem {
@@ -48,7 +48,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "quux($0)"
         ),
         insert_text_format: Snippet,
-        source_range: [78; 79),
+        source_range: [79; 79),
         text_edit: None
     }
 ]
index 2e763fe1d40b53073c1ff54d0922ba9a63f5ac90..8dcb773d02a80b35d7add763d2e8393e744084e2 100644 (file)
@@ -1,8 +1,8 @@
 ---
-created: "2019-01-22T14:45:00.620177400+00:00"
+created: "2019-01-23T05:27:32.197434+00:00"
 creator: insta@0.4.0
 expression: kind_completions
-source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
+source: crates/ra_ide_api/src/completion/completion_item.rs
 ---
 [
     CompletionItem {
@@ -18,7 +18,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "if $0 {}"
         ),
         insert_text_format: Snippet,
-        source_range: [54; 56),
+        source_range: [55; 55),
         text_edit: None
     },
     CompletionItem {
@@ -34,7 +34,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "match $0 {}"
         ),
         insert_text_format: Snippet,
-        source_range: [54; 56),
+        source_range: [55; 55),
         text_edit: None
     },
     CompletionItem {
@@ -50,7 +50,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "while $0 {}"
         ),
         insert_text_format: Snippet,
-        source_range: [54; 56),
+        source_range: [55; 55),
         text_edit: None
     },
     CompletionItem {
@@ -66,7 +66,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "loop {$0}"
         ),
         insert_text_format: Snippet,
-        source_range: [54; 56),
+        source_range: [55; 55),
         text_edit: None
     },
     CompletionItem {
@@ -82,7 +82,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "continue;"
         ),
         insert_text_format: Snippet,
-        source_range: [54; 56),
+        source_range: [55; 55),
         text_edit: None
     },
     CompletionItem {
@@ -98,7 +98,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "break;"
         ),
         insert_text_format: Snippet,
-        source_range: [54; 56),
+        source_range: [55; 55),
         text_edit: None
     },
     CompletionItem {
@@ -114,7 +114,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "return $0;"
         ),
         insert_text_format: Snippet,
-        source_range: [54; 56),
+        source_range: [55; 55),
         text_edit: None
     }
 ]
index 9dcdbf63fd5dde5a4a81eb34e75065b1c952bcdc..1c64c65480e81de673961654818a15a402e02606 100644 (file)
@@ -1,8 +1,8 @@
 ---
-created: "2019-01-22T14:45:00.699965300+00:00"
+created: "2019-01-23T05:27:32.314513+00:00"
 creator: insta@0.4.0
 expression: kind_completions
-source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
+source: crates/ra_ide_api/src/completion/completion_item.rs
 ---
 [
     CompletionItem {
@@ -18,7 +18,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "if $0 {}"
         ),
         insert_text_format: Snippet,
-        source_range: [59; 61),
+        source_range: [60; 60),
         text_edit: None
     },
     CompletionItem {
@@ -34,7 +34,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "match $0 {}"
         ),
         insert_text_format: Snippet,
-        source_range: [59; 61),
+        source_range: [60; 60),
         text_edit: None
     },
     CompletionItem {
@@ -50,7 +50,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "while $0 {}"
         ),
         insert_text_format: Snippet,
-        source_range: [59; 61),
+        source_range: [60; 60),
         text_edit: None
     },
     CompletionItem {
@@ -66,7 +66,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "loop {$0}"
         ),
         insert_text_format: Snippet,
-        source_range: [59; 61),
+        source_range: [60; 60),
         text_edit: None
     },
     CompletionItem {
@@ -82,7 +82,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "return $0;"
         ),
         insert_text_format: Snippet,
-        source_range: [59; 61),
+        source_range: [60; 60),
         text_edit: None
     }
 ]
index e3f00d0f1583f80474af5690bcd32e33e456910d..8c9657b5c0c31987b084b0e8dae19888c22ff4d1 100644 (file)
@@ -1,8 +1,8 @@
 ---
-created: "2019-01-22T14:45:00.642118600+00:00"
+created: "2019-01-23T05:27:32.197678+00:00"
 creator: insta@0.4.0
 expression: kind_completions
-source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
+source: crates/ra_ide_api/src/completion/completion_item.rs
 ---
 [
     CompletionItem {
@@ -18,7 +18,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "if $0 {}"
         ),
         insert_text_format: Snippet,
-        source_range: [84; 102),
+        source_range: [85; 85),
         text_edit: None
     },
     CompletionItem {
@@ -34,7 +34,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "match $0 {}"
         ),
         insert_text_format: Snippet,
-        source_range: [84; 102),
+        source_range: [85; 85),
         text_edit: None
     },
     CompletionItem {
@@ -50,7 +50,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "while $0 {}"
         ),
         insert_text_format: Snippet,
-        source_range: [84; 102),
+        source_range: [85; 85),
         text_edit: None
     },
     CompletionItem {
@@ -66,7 +66,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "loop {$0}"
         ),
         insert_text_format: Snippet,
-        source_range: [84; 102),
+        source_range: [85; 85),
         text_edit: None
     },
     CompletionItem {
@@ -82,7 +82,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "return $0"
         ),
         insert_text_format: Snippet,
-        source_range: [84; 102),
+        source_range: [85; 85),
         text_edit: None
     }
 ]
index 3e88d8c8e0ba40a362feed363c841207ea7fa745..8f8a3a56cb42e4e5ef63cf2e5b7a7ae07785e81c 100644 (file)
@@ -1,8 +1,8 @@
 ---
-created: "2019-01-22T15:38:19.914951100+00:00"
+created: "2019-01-23T07:42:59.658375+00:00"
 creator: insta@0.4.0
 expression: kind_completions
-source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
+source: crates/ra_ide_api/src/completion/completion_item.rs
 ---
 [
     CompletionItem {
@@ -16,7 +16,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
         lookup: None,
         insert_text: None,
         insert_text_format: PlainText,
-        source_range: [108; 146),
+        source_range: [129; 129),
         text_edit: None
     },
     CompletionItem {
@@ -34,7 +34,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "foo()$0"
         ),
         insert_text_format: Snippet,
-        source_range: [108; 146),
+        source_range: [129; 129),
         text_edit: None
     }
 ]
index e8191596dd4d58281667d72459955da1a92df367..e0f4730e7892c01de962dafa7f8db338c9538767 100644 (file)
@@ -1,8 +1,8 @@
 ---
-created: "2019-01-22T14:45:00.830614900+00:00"
+created: "2019-01-23T05:27:32.222118+00:00"
 creator: insta@0.4.0
 expression: kind_completions
-source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
+source: crates/ra_ide_api/src/completion/completion_item.rs
 ---
 [
     CompletionItem {
@@ -16,12 +16,12 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "!bar"
         ),
         insert_text_format: Snippet,
-        source_range: [76; 78),
+        source_range: [78; 78),
         text_edit: Some(
             TextEdit {
                 atoms: [
                     AtomTextEdit {
-                        delete: [72; 76),
+                        delete: [72; 78),
                         insert: ""
                     }
                 ]
@@ -39,12 +39,12 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "if bar {$0}"
         ),
         insert_text_format: Snippet,
-        source_range: [76; 78),
+        source_range: [78; 78),
         text_edit: Some(
             TextEdit {
                 atoms: [
                     AtomTextEdit {
-                        delete: [72; 76),
+                        delete: [72; 78),
                         insert: ""
                     }
                 ]
@@ -62,12 +62,12 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "match bar {\n${1:_} => {$0\\},\n}"
         ),
         insert_text_format: Snippet,
-        source_range: [76; 78),
+        source_range: [78; 78),
         text_edit: Some(
             TextEdit {
                 atoms: [
                     AtomTextEdit {
-                        delete: [72; 76),
+                        delete: [72; 78),
                         insert: ""
                     }
                 ]
@@ -85,12 +85,12 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "while bar {\n$0\n}"
         ),
         insert_text_format: Snippet,
-        source_range: [76; 78),
+        source_range: [78; 78),
         text_edit: Some(
             TextEdit {
                 atoms: [
                     AtomTextEdit {
-                        delete: [72; 76),
+                        delete: [72; 78),
                         insert: ""
                     }
                 ]
index f1de82bcc434167d98793ff7d98b7dee42abd3f8..2b61825784a68f7846c84bce1a6a4934ab083ffb 100644 (file)
@@ -1,8 +1,8 @@
 ---
-created: "2019-01-22T14:45:00.635137200+00:00"
+created: "2019-01-23T05:27:32.197298+00:00"
 creator: insta@0.4.0
 expression: kind_completions
-source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
+source: crates/ra_ide_api/src/completion/completion_item.rs
 ---
 [
     CompletionItem {
@@ -18,7 +18,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "if $0 {}"
         ),
         insert_text_format: Snippet,
-        source_range: [24; 54),
+        source_range: [41; 41),
         text_edit: None
     },
     CompletionItem {
@@ -34,7 +34,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "match $0 {}"
         ),
         insert_text_format: Snippet,
-        source_range: [24; 54),
+        source_range: [41; 41),
         text_edit: None
     },
     CompletionItem {
@@ -50,7 +50,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "while $0 {}"
         ),
         insert_text_format: Snippet,
-        source_range: [24; 54),
+        source_range: [41; 41),
         text_edit: None
     },
     CompletionItem {
@@ -66,7 +66,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "loop {$0}"
         ),
         insert_text_format: Snippet,
-        source_range: [24; 54),
+        source_range: [41; 41),
         text_edit: None
     },
     CompletionItem {
@@ -82,7 +82,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "return;"
         ),
         insert_text_format: Snippet,
-        source_range: [24; 54),
+        source_range: [41; 41),
         text_edit: None
     }
 ]
index c309ff9bc36347db0094a3c20bf938d0471c321c..a56105f0c84a57c4ec8cfacc3e571696d3fbfeac 100644 (file)
@@ -1,8 +1,8 @@
 ---
-created: "2019-01-22T14:45:00.626162800+00:00"
+created: "2019-01-23T05:27:32.197423+00:00"
 creator: insta@0.4.0
 expression: kind_completions
-source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
+source: crates/ra_ide_api/src/completion/completion_item.rs
 ---
 [
     CompletionItem {
@@ -18,7 +18,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "if $0 {}"
         ),
         insert_text_format: Snippet,
-        source_range: [91; 105),
+        source_range: [92; 92),
         text_edit: None
     },
     CompletionItem {
@@ -34,7 +34,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "match $0 {}"
         ),
         insert_text_format: Snippet,
-        source_range: [91; 105),
+        source_range: [92; 92),
         text_edit: None
     },
     CompletionItem {
@@ -50,7 +50,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "while $0 {}"
         ),
         insert_text_format: Snippet,
-        source_range: [91; 105),
+        source_range: [92; 92),
         text_edit: None
     },
     CompletionItem {
@@ -66,7 +66,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "loop {$0}"
         ),
         insert_text_format: Snippet,
-        source_range: [91; 105),
+        source_range: [92; 92),
         text_edit: None
     },
     CompletionItem {
@@ -82,7 +82,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "else {$0}"
         ),
         insert_text_format: Snippet,
-        source_range: [91; 105),
+        source_range: [92; 92),
         text_edit: None
     },
     CompletionItem {
@@ -98,7 +98,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "else if $0 {}"
         ),
         insert_text_format: Snippet,
-        source_range: [91; 105),
+        source_range: [92; 92),
         text_edit: None
     },
     CompletionItem {
@@ -114,7 +114,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "return;"
         ),
         insert_text_format: Snippet,
-        source_range: [91; 105),
+        source_range: [92; 92),
         text_edit: None
     }
 ]
index 950cc8045c3e22c923f15d41e35850c1b22d8d38..84efab6f6a83b006529ddc297fceaf3e4e60329a 100644 (file)
@@ -1,8 +1,8 @@
 ---
-created: "2019-01-22T14:45:00.701959300+00:00"
+created: "2019-01-23T05:27:32.200056+00:00"
 creator: insta@0.4.0
 expression: kind_completions
-source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
+source: crates/ra_ide_api/src/completion/completion_item.rs
 ---
 [
     CompletionItem {
@@ -18,7 +18,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "if $0 {}"
         ),
         insert_text_format: Snippet,
-        source_range: [31; 65),
+        source_range: [48; 48),
         text_edit: None
     },
     CompletionItem {
@@ -34,7 +34,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "match $0 {}"
         ),
         insert_text_format: Snippet,
-        source_range: [31; 65),
+        source_range: [48; 48),
         text_edit: None
     },
     CompletionItem {
@@ -50,7 +50,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "while $0 {}"
         ),
         insert_text_format: Snippet,
-        source_range: [31; 65),
+        source_range: [48; 48),
         text_edit: None
     },
     CompletionItem {
@@ -66,7 +66,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "loop {$0}"
         ),
         insert_text_format: Snippet,
-        source_range: [31; 65),
+        source_range: [48; 48),
         text_edit: None
     },
     CompletionItem {
@@ -82,7 +82,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "return $0;"
         ),
         insert_text_format: Snippet,
-        source_range: [31; 65),
+        source_range: [48; 48),
         text_edit: None
     }
 ]
index ae14d7e39103a0a039dcd656f981c4b998e19e76..8b254ce99a2d8270d670cef7365ed3db426d9a06 100644 (file)
@@ -1,8 +1,8 @@
 ---
-created: "2019-01-22T14:45:00.788727100+00:00"
+created: "2019-01-23T05:27:32.314468+00:00"
 creator: insta@0.4.0
 expression: kind_completions
-source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
+source: crates/ra_ide_api/src/completion/completion_item.rs
 ---
 [
     CompletionItem {
@@ -18,7 +18,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "if $0 {}"
         ),
         insert_text_format: Snippet,
-        source_range: [24; 58),
+        source_range: [41; 41),
         text_edit: None
     },
     CompletionItem {
@@ -34,7 +34,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "match $0 {}"
         ),
         insert_text_format: Snippet,
-        source_range: [24; 58),
+        source_range: [41; 41),
         text_edit: None
     },
     CompletionItem {
@@ -50,7 +50,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "while $0 {}"
         ),
         insert_text_format: Snippet,
-        source_range: [24; 58),
+        source_range: [41; 41),
         text_edit: None
     },
     CompletionItem {
@@ -66,7 +66,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "loop {$0}"
         ),
         insert_text_format: Snippet,
-        source_range: [24; 58),
+        source_range: [41; 41),
         text_edit: None
     },
     CompletionItem {
@@ -82,7 +82,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "return;"
         ),
         insert_text_format: Snippet,
-        source_range: [24; 58),
+        source_range: [41; 41),
         text_edit: None
     }
 ]
index 2ec855bf6293544459fe6eb16d7526637a7f9d35..9dd5b22542e2a46e00c8f63b85fd70c8ecfe24ca 100644 (file)
@@ -1,8 +1,8 @@
 ---
-created: "2019-01-22T14:45:00.626162800+00:00"
+created: "2019-01-23T05:27:32.196887+00:00"
 creator: insta@0.4.0
 expression: kind_completions
-source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
+source: crates/ra_ide_api/src/completion/completion_item.rs
 ---
 [
     CompletionItem {
@@ -18,7 +18,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "crate::"
         ),
         insert_text_format: PlainText,
-        source_range: [16; 30),
+        source_range: [17; 17),
         text_edit: None
     },
     CompletionItem {
@@ -32,7 +32,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
         lookup: None,
         insert_text: None,
         insert_text_format: PlainText,
-        source_range: [16; 30),
+        source_range: [17; 17),
         text_edit: None
     },
     CompletionItem {
@@ -48,7 +48,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "super::"
         ),
         insert_text_format: PlainText,
-        source_range: [16; 30),
+        source_range: [17; 17),
         text_edit: None
     }
 ]
index 952650ea38cc6d1c60eb9904775d2cfb61930078..965a0fbed28b84a7b7745539fc3363686014c4a1 100644 (file)
@@ -1,8 +1,8 @@
 ---
-created: "2019-01-22T14:45:00.779752+00:00"
+created: "2019-01-23T05:27:32.303390+00:00"
 creator: insta@0.4.0
 expression: kind_completions
-source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
+source: crates/ra_ide_api/src/completion/completion_item.rs
 ---
 [
     CompletionItem {
@@ -16,7 +16,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
         lookup: None,
         insert_text: None,
         insert_text_format: PlainText,
-        source_range: [23; 24),
+        source_range: [24; 24),
         text_edit: None
     },
     CompletionItem {
@@ -32,7 +32,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "super::"
         ),
         insert_text_format: PlainText,
-        source_range: [23; 24),
+        source_range: [24; 24),
         text_edit: None
     }
 ]
index 1d8725d343ba7b9950888317bfd630cb72698698..d36b555db5787ba95873d5f758024b89e6449fa0 100644 (file)
@@ -1,8 +1,8 @@
 ---
-created: "2019-01-22T14:45:00.642118600+00:00"
+created: "2019-01-23T05:27:32.197624+00:00"
 creator: insta@0.4.0
 expression: kind_completions
-source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
+source: crates/ra_ide_api/src/completion/completion_item.rs
 ---
 [
     CompletionItem {
@@ -18,7 +18,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "if $0 {}"
         ),
         insert_text_format: Snippet,
-        source_range: [62; 100),
+        source_range: [83; 83),
         text_edit: None
     },
     CompletionItem {
@@ -34,7 +34,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "match $0 {}"
         ),
         insert_text_format: Snippet,
-        source_range: [62; 100),
+        source_range: [83; 83),
         text_edit: None
     },
     CompletionItem {
@@ -50,7 +50,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "while $0 {}"
         ),
         insert_text_format: Snippet,
-        source_range: [62; 100),
+        source_range: [83; 83),
         text_edit: None
     },
     CompletionItem {
@@ -66,7 +66,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "loop {$0}"
         ),
         insert_text_format: Snippet,
-        source_range: [62; 100),
+        source_range: [83; 83),
         text_edit: None
     },
     CompletionItem {
@@ -82,7 +82,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "return $0;"
         ),
         insert_text_format: Snippet,
-        source_range: [62; 100),
+        source_range: [83; 83),
         text_edit: None
     }
 ]
index 54175c1a3e480c6e7dd006f590e98d800bfaa488..d74483c0bd7667caefa8253c143f3d7c8807fe10 100644 (file)
@@ -1,8 +1,8 @@
 ---
-created: "2019-01-22T14:45:00.733874300+00:00"
+created: "2019-01-23T05:27:32.302452+00:00"
 creator: insta@0.4.0
 expression: kind_completions
-source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
+source: crates/ra_ide_api/src/completion/completion_item.rs
 ---
 [
     CompletionItem {
@@ -18,7 +18,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "if $0 {}"
         ),
         insert_text_format: Snippet,
-        source_range: [62; 100),
+        source_range: [83; 83),
         text_edit: None
     },
     CompletionItem {
@@ -34,7 +34,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "match $0 {}"
         ),
         insert_text_format: Snippet,
-        source_range: [62; 100),
+        source_range: [83; 83),
         text_edit: None
     },
     CompletionItem {
@@ -50,7 +50,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "while $0 {}"
         ),
         insert_text_format: Snippet,
-        source_range: [62; 100),
+        source_range: [83; 83),
         text_edit: None
     },
     CompletionItem {
@@ -66,7 +66,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "loop {$0}"
         ),
         insert_text_format: Snippet,
-        source_range: [62; 100),
+        source_range: [83; 83),
         text_edit: None
     },
     CompletionItem {
@@ -82,7 +82,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "return $0;"
         ),
         insert_text_format: Snippet,
-        source_range: [62; 100),
+        source_range: [83; 83),
         text_edit: None
     }
 ]
index df9677ba3d4c9debb9fdb6f153a6f0aad2c8b3f6..a87880ab330235bb66c21107fe032961fff6a2fe 100644 (file)
@@ -1,8 +1,8 @@
 ---
-created: "2019-01-22T15:38:19.896999400+00:00"
+created: "2019-01-23T07:42:59.657718+00:00"
 creator: insta@0.4.0
 expression: kind_completions
-source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
+source: crates/ra_ide_api/src/completion/completion_item.rs
 ---
 [
     CompletionItem {
@@ -20,7 +20,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "quux()$0"
         ),
         insert_text_format: Snippet,
-        source_range: [72; 102),
+        source_range: [89; 89),
         text_edit: None
     },
     CompletionItem {
@@ -34,7 +34,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
         lookup: None,
         insert_text: None,
         insert_text_format: PlainText,
-        source_range: [72; 102),
+        source_range: [89; 89),
         text_edit: None
     },
     CompletionItem {
@@ -48,7 +48,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
         lookup: None,
         insert_text: None,
         insert_text_format: PlainText,
-        source_range: [72; 102),
+        source_range: [89; 89),
         text_edit: None
     }
 ]
index f4b38feb061b1aaf8d83fe427ed137e27ee7d77d..f95d1092635ce02e23e6c493e2bde40d3460b5bb 100644 (file)
@@ -1,8 +1,8 @@
 ---
-created: "2019-01-22T15:38:19.896002200+00:00"
+created: "2019-01-23T07:42:59.657837+00:00"
 creator: insta@0.4.0
 expression: kind_completions
-source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
+source: crates/ra_ide_api/src/completion/completion_item.rs
 ---
 [
     CompletionItem {
@@ -20,7 +20,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "quux()$0"
         ),
         insert_text_format: Snippet,
-        source_range: [100; 102),
+        source_range: [101; 101),
         text_edit: None
     },
     CompletionItem {
@@ -34,7 +34,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
         lookup: None,
         insert_text: None,
         insert_text_format: PlainText,
-        source_range: [100; 102),
+        source_range: [101; 101),
         text_edit: None
     }
 ]
index e6819f231ccff7d52e94531be9826a9de64711ab..adc057d8079c80516a597c679f4858dcac5c3c6c 100644 (file)
@@ -1,8 +1,8 @@
 ---
-created: "2019-01-22T14:45:00.898433800+00:00"
+created: "2019-01-23T05:27:32.421411+00:00"
 creator: insta@0.4.0
 expression: kind_completions
-source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
+source: crates/ra_ide_api/src/completion/completion_item.rs
 ---
 [
     CompletionItem {
@@ -16,7 +16,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
         lookup: None,
         insert_text: None,
         insert_text_format: PlainText,
-        source_range: [46; 60),
+        source_range: [47; 47),
         text_edit: None
     },
     CompletionItem {
@@ -34,7 +34,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "x()$0"
         ),
         insert_text_format: Snippet,
-        source_range: [46; 60),
+        source_range: [47; 47),
         text_edit: None
     }
 ]
index efda72adfb90fc2520fec4b8cd6e3bd224fd5ac8..6a49e325c1aaf805dfbf7a43ba036e7dbf8afea9 100644 (file)
@@ -1,8 +1,8 @@
 ---
-created: "2019-01-22T14:45:00.894444600+00:00"
+created: "2019-01-23T05:27:32.422259+00:00"
 creator: insta@0.4.0
 expression: kind_completions
-source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
+source: crates/ra_ide_api/src/completion/completion_item.rs
 ---
 [
     CompletionItem {
@@ -16,7 +16,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
         lookup: None,
         insert_text: None,
         insert_text_format: PlainText,
-        source_range: [24; 26),
+        source_range: [25; 25),
         text_edit: None
     }
 ]
diff --git a/crates/ra_ide_api/src/completion/snapshots/completion_item__should_not_complete_snippets_in_path.snap b/crates/ra_ide_api/src/completion/snapshots/completion_item__should_not_complete_snippets_in_path.snap
new file mode 100644 (file)
index 0000000..cb3278e
--- /dev/null
@@ -0,0 +1,5 @@
+Created: 2019-01-23T05:19:36.475253+00:00
+Creator: insta@0.1.4
+Source: crates/ra_ide_api/src/completion/completion_item.rs
+
+[]
diff --git a/crates/ra_ide_api/src/completion/snapshots/completion_item__should_not_complete_snippets_in_path2.snap b/crates/ra_ide_api/src/completion/snapshots/completion_item__should_not_complete_snippets_in_path2.snap
new file mode 100644 (file)
index 0000000..62c8e3d
--- /dev/null
@@ -0,0 +1,5 @@
+Created: 2019-01-23T05:19:36.476869+00:00
+Creator: insta@0.1.4
+Source: crates/ra_ide_api/src/completion/completion_item.rs
+
+[]
index 1d9aff5bb0beb3042f4843996fb0a4113ebab69e..580c90bdd846dd6c610ec4de1e04b0af79efb3fc 100644 (file)
@@ -1,8 +1,8 @@
 ---
-created: "2019-01-22T14:45:00.944312600+00:00"
+created: "2019-01-23T05:27:32.430450+00:00"
 creator: insta@0.4.0
 expression: kind_completions
-source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
+source: crates/ra_ide_api/src/completion/completion_item.rs
 ---
 [
     CompletionItem {
@@ -18,7 +18,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "eprintln!(\"$0 = {:?}\", $0);"
         ),
         insert_text_format: Snippet,
-        source_range: [16; 18),
+        source_range: [17; 17),
         text_edit: None
     },
     CompletionItem {
@@ -34,7 +34,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "eprintln!(\"$0 = {:#?}\", $0);"
         ),
         insert_text_format: Snippet,
-        source_range: [16; 18),
+        source_range: [17; 17),
         text_edit: None
     }
 ]
index 678335404e3bed1ae5fe981c1db20fd79a6ebc39..ec95e454c06c0b725d7af11b6e529fb4b7f6b74a 100644 (file)
@@ -1,8 +1,8 @@
 ---
-created: "2019-01-22T14:45:00.944312600+00:00"
+created: "2019-01-23T05:27:32.435110+00:00"
 creator: insta@0.4.0
 expression: kind_completions
-source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
+source: crates/ra_ide_api/src/completion/completion_item.rs
 ---
 [
     CompletionItem {
@@ -20,7 +20,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "#[test]\nfn ${1:feature}() {\n    $0\n}"
         ),
         insert_text_format: Snippet,
-        source_range: [49; 79),
+        source_range: [66; 66),
         text_edit: None
     },
     CompletionItem {
@@ -36,7 +36,7 @@ source: "crates\\ra_ide_api\\src\\completion\\completion_item.rs"
             "pub(crate) $0"
         ),
         insert_text_format: Snippet,
-        source_range: [49; 79),
+        source_range: [66; 66),
         text_edit: None
     }
 ]
index 5a5f56057bbba29c183638bcb1b4fc37f03c81d4..bcbd4c60c778ce26f2a69ca2a4d2948b0a8a7337 100644 (file)
@@ -334,6 +334,13 @@ pub fn kind(&self) -> Option<PathSegmentKind> {
         };
         Some(res)
     }
+
+    pub fn has_colon_colon(&self) -> bool {
+        match self.syntax.first_child().map(|s| s.kind()) {
+            Some(COLONCOLON) => true,
+            _ => false,
+        }
+    }
 }
 
 impl Path {