diff --git a/crates/libanalysis/src/lib.rs b/crates/libanalysis/src/lib.rs
index 15a433afc9d..63c4c77cf61 100644
--- a/crates/libanalysis/src/lib.rs
+++ b/crates/libanalysis/src/lib.rs
@@ -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()
     }
 
diff --git a/crates/libeditor/Cargo.toml b/crates/libeditor/Cargo.toml
index 7b39870cd83..55f41c2c574 100644
--- a/crates/libeditor/Cargo.toml
+++ b/crates/libeditor/Cargo.toml
@@ -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" }
diff --git a/crates/libeditor/src/lib.rs b/crates/libeditor/src/lib.rs
index d9d0369f6ef..abd104af2ba 100644
--- a/crates/libeditor/src/lib.rs
+++ b/crates/libeditor/src/lib.rs
@@ -1,7 +1,6 @@
 extern crate libsyntax2;
 extern crate superslice;
 extern crate itertools;
-extern crate smol_str;
 
 mod extend_selection;
 mod symbols;
diff --git a/crates/libeditor/src/symbols.rs b/crates/libeditor/src/symbols.rs
index d7bd111e6ef..b2b05bc6a24 100644
--- a/crates/libeditor/src/symbols.rs
+++ b/crates/libeditor/src/symbols.rs
@@ -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},
diff --git a/crates/libsyntax2/src/lib.rs b/crates/libsyntax2/src/lib.rs
index e837a8d2dbf..c078baa3a05 100644
--- a/crates/libsyntax2/src/lib.rs
+++ b/crates/libsyntax2/src/lib.rs
@@ -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},
 };