This commit is contained in:
Aleksey Kladov 2018-08-18 12:42:28 +03:00
parent a5eeef0eee
commit 4d8be26584
5 changed files with 20 additions and 16 deletions

View file

@ -26,7 +26,7 @@ use std::{
};
use libsyntax2::{
TextUnit, TextRange,
TextUnit, TextRange, SmolStr,
ast::{self, AstNode, NameOwner, ParsedFile},
SyntaxKind::*,
};
@ -144,7 +144,21 @@ impl World {
if let Some(name) = find_node::<ast::Name>(syntax, offset) {
if let Some(module) = name.syntax().parent().and_then(ast::Module::cast) {
if module.has_semi() {
return Ok(self.resolve_module(id, module));
let file_ids = self.resolve_module(id, module);
let res = file_ids.into_iter().map(|id| {
let name = module.name()
.map(|n| n.text())
.unwrap_or_else(|| SmolStr::new(""));
let symbol = FileSymbol {
name,
node_range: TextRange::offset_len(0.into(), 0.into()),
kind: MODULE,
};
(id, symbol)
}).collect();
return Ok(res);
}
}
}
@ -159,7 +173,7 @@ impl World {
self.world_symbols(query)
}
fn resolve_module(&self, id: FileId, module: ast::Module) -> Vec<(FileId, FileSymbol)> {
fn resolve_module(&self, id: FileId, module: ast::Module) -> Vec<FileId> {
let name = match module.name() {
Some(name) => name.text(),
None => return Vec::new(),
@ -170,14 +184,6 @@ impl World {
];
paths.iter()
.filter_map(|path| self.resolve_relative_path(id, path))
.map(|id| {
let symbol = FileSymbol {
name: name.clone(),
node_range: TextRange::offset_len(0.into(), 0.into()),
kind: MODULE,
};
(id, symbol)
})
.collect()
}

View file

@ -9,7 +9,6 @@ itertools = "0.7.8"
superslice = "0.1.0"
libsyntax2 = { path = "../libsyntax2" }
smol_str = "0.1.0"
[dev-dependencies]
assert_eq_text = { path = "../assert_eq_text" }

View file

@ -1,7 +1,6 @@
extern crate libsyntax2;
extern crate superslice;
extern crate itertools;
extern crate smol_str;
mod extend_selection;
mod symbols;

View file

@ -1,6 +1,5 @@
use smol_str::SmolStr;
use libsyntax2::{
SyntaxKind, SyntaxNodeRef, AstNode, ParsedFile,
SyntaxKind, SyntaxNodeRef, AstNode, ParsedFile, SmolStr,
ast::{self, NameOwner},
algo::{
visit::{visitor, Visitor},

View file

@ -41,10 +41,11 @@ mod yellow;
pub mod utils;
pub use {
text_unit::{TextRange, TextUnit},
smol_str::SmolStr,
ast::{AstNode, ParsedFile},
lexer::{tokenize, Token},
syntax_kinds::SyntaxKind,
text_unit::{TextRange, TextUnit},
yellow::{SyntaxNode, SyntaxNodeRef, OwnedRoot, RefRoot, TreeRoot, SyntaxError},
};