aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_analysis/src/descriptors/module/scope.rs
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2018-10-31 21:50:17 +0000
committerAleksey Kladov <[email protected]>2018-11-01 10:51:44 +0000
commitf2b654fd443ce1a0a31a9eaf1a1c25e911d0001a (patch)
tree9c9cfc3f6868864d7dd1164aaff6b248f81a402b /crates/ra_analysis/src/descriptors/module/scope.rs
parent223fd2979c277cf402e4876d0e9a69257702f731 (diff)
Add inline source
Diffstat (limited to 'crates/ra_analysis/src/descriptors/module/scope.rs')
-rw-r--r--crates/ra_analysis/src/descriptors/module/scope.rs15
1 files changed, 4 insertions, 11 deletions
diff --git a/crates/ra_analysis/src/descriptors/module/scope.rs b/crates/ra_analysis/src/descriptors/module/scope.rs
index 681e272c2..215b31f8e 100644
--- a/crates/ra_analysis/src/descriptors/module/scope.rs
+++ b/crates/ra_analysis/src/descriptors/module/scope.rs
@@ -1,9 +1,6 @@
1//! Backend for module-level scope resolution & completion 1//! Backend for module-level scope resolution & completion
2 2
3use ra_syntax::{ 3use ra_syntax::{ast, AstNode, SmolStr};
4 ast::{self, ModuleItemOwner},
5 AstNode, File, SmolStr,
6};
7 4
8use crate::syntax_ptr::LocalSyntaxPtr; 5use crate::syntax_ptr::LocalSyntaxPtr;
9 6
@@ -28,11 +25,7 @@ enum EntryKind {
28} 25}
29 26
30impl ModuleScope { 27impl ModuleScope {
31 pub fn new(file: &File) -> ModuleScope { 28 pub(crate) fn new<'a>(items: impl Iterator<Item = ast::ModuleItem<'a>>) -> ModuleScope {
32 ModuleScope::from_items(file.ast().items())
33 }
34
35 pub fn from_items<'a>(items: impl Iterator<Item = ast::ModuleItem<'a>>) -> ModuleScope {
36 let mut entries = Vec::new(); 29 let mut entries = Vec::new();
37 for item in items { 30 for item in items {
38 let entry = match item { 31 let entry = match item {
@@ -102,11 +95,11 @@ fn collect_imports(tree: ast::UseTree, acc: &mut Vec<Entry>) {
102#[cfg(test)] 95#[cfg(test)]
103mod tests { 96mod tests {
104 use super::*; 97 use super::*;
105 use ra_syntax::File; 98 use ra_syntax::{ast::ModuleItemOwner, File};
106 99
107 fn do_check(code: &str, expected: &[&str]) { 100 fn do_check(code: &str, expected: &[&str]) {
108 let file = File::parse(&code); 101 let file = File::parse(&code);
109 let scope = ModuleScope::new(&file); 102 let scope = ModuleScope::new(file.ast().items());
110 let actual = scope.entries.iter().map(|it| it.name()).collect::<Vec<_>>(); 103 let actual = scope.entries.iter().map(|it| it.name()).collect::<Vec<_>>();
111 assert_eq!(expected, actual.as_slice()); 104 assert_eq!(expected, actual.as_slice());
112 } 105 }