return PerNs::none();
}
}
+ PathKind::Abs => {
+ // TODO: absolute use is not supported
+ return PerNs::none();
+ }
}
.def_id,
);
//! 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;
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>,
}
}
}
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() {
Self_,
Super,
Crate,
+ // Absolute path
+ Abs,
}
impl 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
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);
}
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(
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>,
}
// 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()),
}
}
---
-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 {
lookup: None,
insert_text: None,
insert_text_format: PlainText,
- source_range: [62; 100),
+ source_range: [83; 83),
text_edit: None
},
CompletionItem {
"quux()$0"
),
insert_text_format: Snippet,
- source_range: [62; 100),
+ source_range: [83; 83),
text_edit: None
}
]
---
-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 {
lookup: None,
insert_text: None,
insert_text_format: PlainText,
- source_range: [213; 231),
+ source_range: [214; 214),
text_edit: None
},
CompletionItem {
lookup: None,
insert_text: None,
insert_text_format: PlainText,
- source_range: [213; 231),
+ source_range: [214; 214),
text_edit: None
},
CompletionItem {
"quux()$0"
),
insert_text_format: Snippet,
- source_range: [213; 231),
+ source_range: [214; 214),
text_edit: None
}
]
---
-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 {
lookup: None,
insert_text: None,
insert_text_format: PlainText,
- source_range: [78; 79),
+ source_range: [79; 79),
text_edit: None
},
CompletionItem {
lookup: None,
insert_text: None,
insert_text_format: PlainText,
- source_range: [78; 79),
+ source_range: [79; 79),
text_edit: None
},
CompletionItem {
"quux($0)"
),
insert_text_format: Snippet,
- source_range: [78; 79),
+ source_range: [79; 79),
text_edit: None
}
]
---
-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 {
"if $0 {}"
),
insert_text_format: Snippet,
- source_range: [54; 56),
+ source_range: [55; 55),
text_edit: None
},
CompletionItem {
"match $0 {}"
),
insert_text_format: Snippet,
- source_range: [54; 56),
+ source_range: [55; 55),
text_edit: None
},
CompletionItem {
"while $0 {}"
),
insert_text_format: Snippet,
- source_range: [54; 56),
+ source_range: [55; 55),
text_edit: None
},
CompletionItem {
"loop {$0}"
),
insert_text_format: Snippet,
- source_range: [54; 56),
+ source_range: [55; 55),
text_edit: None
},
CompletionItem {
"continue;"
),
insert_text_format: Snippet,
- source_range: [54; 56),
+ source_range: [55; 55),
text_edit: None
},
CompletionItem {
"break;"
),
insert_text_format: Snippet,
- source_range: [54; 56),
+ source_range: [55; 55),
text_edit: None
},
CompletionItem {
"return $0;"
),
insert_text_format: Snippet,
- source_range: [54; 56),
+ source_range: [55; 55),
text_edit: None
}
]
---
-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 {
"if $0 {}"
),
insert_text_format: Snippet,
- source_range: [59; 61),
+ source_range: [60; 60),
text_edit: None
},
CompletionItem {
"match $0 {}"
),
insert_text_format: Snippet,
- source_range: [59; 61),
+ source_range: [60; 60),
text_edit: None
},
CompletionItem {
"while $0 {}"
),
insert_text_format: Snippet,
- source_range: [59; 61),
+ source_range: [60; 60),
text_edit: None
},
CompletionItem {
"loop {$0}"
),
insert_text_format: Snippet,
- source_range: [59; 61),
+ source_range: [60; 60),
text_edit: None
},
CompletionItem {
"return $0;"
),
insert_text_format: Snippet,
- source_range: [59; 61),
+ source_range: [60; 60),
text_edit: None
}
]
---
-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 {
"if $0 {}"
),
insert_text_format: Snippet,
- source_range: [84; 102),
+ source_range: [85; 85),
text_edit: None
},
CompletionItem {
"match $0 {}"
),
insert_text_format: Snippet,
- source_range: [84; 102),
+ source_range: [85; 85),
text_edit: None
},
CompletionItem {
"while $0 {}"
),
insert_text_format: Snippet,
- source_range: [84; 102),
+ source_range: [85; 85),
text_edit: None
},
CompletionItem {
"loop {$0}"
),
insert_text_format: Snippet,
- source_range: [84; 102),
+ source_range: [85; 85),
text_edit: None
},
CompletionItem {
"return $0"
),
insert_text_format: Snippet,
- source_range: [84; 102),
+ source_range: [85; 85),
text_edit: None
}
]
---
-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 {
lookup: None,
insert_text: None,
insert_text_format: PlainText,
- source_range: [108; 146),
+ source_range: [129; 129),
text_edit: None
},
CompletionItem {
"foo()$0"
),
insert_text_format: Snippet,
- source_range: [108; 146),
+ source_range: [129; 129),
text_edit: None
}
]
---
-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 {
"!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: ""
}
]
"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: ""
}
]
"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: ""
}
]
"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: ""
}
]
---
-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 {
"if $0 {}"
),
insert_text_format: Snippet,
- source_range: [24; 54),
+ source_range: [41; 41),
text_edit: None
},
CompletionItem {
"match $0 {}"
),
insert_text_format: Snippet,
- source_range: [24; 54),
+ source_range: [41; 41),
text_edit: None
},
CompletionItem {
"while $0 {}"
),
insert_text_format: Snippet,
- source_range: [24; 54),
+ source_range: [41; 41),
text_edit: None
},
CompletionItem {
"loop {$0}"
),
insert_text_format: Snippet,
- source_range: [24; 54),
+ source_range: [41; 41),
text_edit: None
},
CompletionItem {
"return;"
),
insert_text_format: Snippet,
- source_range: [24; 54),
+ source_range: [41; 41),
text_edit: None
}
]
---
-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 {
"if $0 {}"
),
insert_text_format: Snippet,
- source_range: [91; 105),
+ source_range: [92; 92),
text_edit: None
},
CompletionItem {
"match $0 {}"
),
insert_text_format: Snippet,
- source_range: [91; 105),
+ source_range: [92; 92),
text_edit: None
},
CompletionItem {
"while $0 {}"
),
insert_text_format: Snippet,
- source_range: [91; 105),
+ source_range: [92; 92),
text_edit: None
},
CompletionItem {
"loop {$0}"
),
insert_text_format: Snippet,
- source_range: [91; 105),
+ source_range: [92; 92),
text_edit: None
},
CompletionItem {
"else {$0}"
),
insert_text_format: Snippet,
- source_range: [91; 105),
+ source_range: [92; 92),
text_edit: None
},
CompletionItem {
"else if $0 {}"
),
insert_text_format: Snippet,
- source_range: [91; 105),
+ source_range: [92; 92),
text_edit: None
},
CompletionItem {
"return;"
),
insert_text_format: Snippet,
- source_range: [91; 105),
+ source_range: [92; 92),
text_edit: None
}
]
---
-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 {
"if $0 {}"
),
insert_text_format: Snippet,
- source_range: [31; 65),
+ source_range: [48; 48),
text_edit: None
},
CompletionItem {
"match $0 {}"
),
insert_text_format: Snippet,
- source_range: [31; 65),
+ source_range: [48; 48),
text_edit: None
},
CompletionItem {
"while $0 {}"
),
insert_text_format: Snippet,
- source_range: [31; 65),
+ source_range: [48; 48),
text_edit: None
},
CompletionItem {
"loop {$0}"
),
insert_text_format: Snippet,
- source_range: [31; 65),
+ source_range: [48; 48),
text_edit: None
},
CompletionItem {
"return $0;"
),
insert_text_format: Snippet,
- source_range: [31; 65),
+ source_range: [48; 48),
text_edit: None
}
]
---
-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 {
"if $0 {}"
),
insert_text_format: Snippet,
- source_range: [24; 58),
+ source_range: [41; 41),
text_edit: None
},
CompletionItem {
"match $0 {}"
),
insert_text_format: Snippet,
- source_range: [24; 58),
+ source_range: [41; 41),
text_edit: None
},
CompletionItem {
"while $0 {}"
),
insert_text_format: Snippet,
- source_range: [24; 58),
+ source_range: [41; 41),
text_edit: None
},
CompletionItem {
"loop {$0}"
),
insert_text_format: Snippet,
- source_range: [24; 58),
+ source_range: [41; 41),
text_edit: None
},
CompletionItem {
"return;"
),
insert_text_format: Snippet,
- source_range: [24; 58),
+ source_range: [41; 41),
text_edit: None
}
]
---
-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 {
"crate::"
),
insert_text_format: PlainText,
- source_range: [16; 30),
+ source_range: [17; 17),
text_edit: None
},
CompletionItem {
lookup: None,
insert_text: None,
insert_text_format: PlainText,
- source_range: [16; 30),
+ source_range: [17; 17),
text_edit: None
},
CompletionItem {
"super::"
),
insert_text_format: PlainText,
- source_range: [16; 30),
+ source_range: [17; 17),
text_edit: None
}
]
---
-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 {
lookup: None,
insert_text: None,
insert_text_format: PlainText,
- source_range: [23; 24),
+ source_range: [24; 24),
text_edit: None
},
CompletionItem {
"super::"
),
insert_text_format: PlainText,
- source_range: [23; 24),
+ source_range: [24; 24),
text_edit: None
}
]
---
-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 {
"if $0 {}"
),
insert_text_format: Snippet,
- source_range: [62; 100),
+ source_range: [83; 83),
text_edit: None
},
CompletionItem {
"match $0 {}"
),
insert_text_format: Snippet,
- source_range: [62; 100),
+ source_range: [83; 83),
text_edit: None
},
CompletionItem {
"while $0 {}"
),
insert_text_format: Snippet,
- source_range: [62; 100),
+ source_range: [83; 83),
text_edit: None
},
CompletionItem {
"loop {$0}"
),
insert_text_format: Snippet,
- source_range: [62; 100),
+ source_range: [83; 83),
text_edit: None
},
CompletionItem {
"return $0;"
),
insert_text_format: Snippet,
- source_range: [62; 100),
+ source_range: [83; 83),
text_edit: None
}
]
---
-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 {
"if $0 {}"
),
insert_text_format: Snippet,
- source_range: [62; 100),
+ source_range: [83; 83),
text_edit: None
},
CompletionItem {
"match $0 {}"
),
insert_text_format: Snippet,
- source_range: [62; 100),
+ source_range: [83; 83),
text_edit: None
},
CompletionItem {
"while $0 {}"
),
insert_text_format: Snippet,
- source_range: [62; 100),
+ source_range: [83; 83),
text_edit: None
},
CompletionItem {
"loop {$0}"
),
insert_text_format: Snippet,
- source_range: [62; 100),
+ source_range: [83; 83),
text_edit: None
},
CompletionItem {
"return $0;"
),
insert_text_format: Snippet,
- source_range: [62; 100),
+ source_range: [83; 83),
text_edit: None
}
]
---
-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 {
"quux()$0"
),
insert_text_format: Snippet,
- source_range: [72; 102),
+ source_range: [89; 89),
text_edit: None
},
CompletionItem {
lookup: None,
insert_text: None,
insert_text_format: PlainText,
- source_range: [72; 102),
+ source_range: [89; 89),
text_edit: None
},
CompletionItem {
lookup: None,
insert_text: None,
insert_text_format: PlainText,
- source_range: [72; 102),
+ source_range: [89; 89),
text_edit: None
}
]
---
-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 {
"quux()$0"
),
insert_text_format: Snippet,
- source_range: [100; 102),
+ source_range: [101; 101),
text_edit: None
},
CompletionItem {
lookup: None,
insert_text: None,
insert_text_format: PlainText,
- source_range: [100; 102),
+ source_range: [101; 101),
text_edit: None
}
]
---
-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 {
lookup: None,
insert_text: None,
insert_text_format: PlainText,
- source_range: [46; 60),
+ source_range: [47; 47),
text_edit: None
},
CompletionItem {
"x()$0"
),
insert_text_format: Snippet,
- source_range: [46; 60),
+ source_range: [47; 47),
text_edit: None
}
]
---
-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 {
lookup: None,
insert_text: None,
insert_text_format: PlainText,
- source_range: [24; 26),
+ source_range: [25; 25),
text_edit: None
}
]
--- /dev/null
+Created: 2019-01-23T05:19:36.475253+00:00
+Creator: insta@0.1.4
+Source: crates/ra_ide_api/src/completion/completion_item.rs
+
+[]
--- /dev/null
+Created: 2019-01-23T05:19:36.476869+00:00
+Creator: insta@0.1.4
+Source: crates/ra_ide_api/src/completion/completion_item.rs
+
+[]
---
-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 {
"eprintln!(\"$0 = {:?}\", $0);"
),
insert_text_format: Snippet,
- source_range: [16; 18),
+ source_range: [17; 17),
text_edit: None
},
CompletionItem {
"eprintln!(\"$0 = {:#?}\", $0);"
),
insert_text_format: Snippet,
- source_range: [16; 18),
+ source_range: [17; 17),
text_edit: None
}
]
---
-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 {
"#[test]\nfn ${1:feature}() {\n $0\n}"
),
insert_text_format: Snippet,
- source_range: [49; 79),
+ source_range: [66; 66),
text_edit: None
},
CompletionItem {
"pub(crate) $0"
),
insert_text_format: Snippet,
- source_range: [49; 79),
+ source_range: [66; 66),
text_edit: None
}
]
};
Some(res)
}
+
+ pub fn has_colon_colon(&self) -> bool {
+ match self.syntax.first_child().map(|s| s.kind()) {
+ Some(COLONCOLON) => true,
+ _ => false,
+ }
+ }
}
impl Path {