From 41570f60bf268c97223a864b8aa11a339929f55a Mon Sep 17 00:00:00 2001
From: Aleksey Kladov <aleksey.kladov@gmail.com>
Date: Fri, 17 Aug 2018 16:04:34 +0300
Subject: extend module resolve to mod.rs

---
 crates/libanalysis/src/lib.rs | 24 +++++++++++++++---------
 1 file changed, 15 insertions(+), 9 deletions(-)

(limited to 'crates/libanalysis/src')

diff --git a/crates/libanalysis/src/lib.rs b/crates/libanalysis/src/lib.rs
index 19b64fece..a50a0f32f 100644
--- a/crates/libanalysis/src/lib.rs
+++ b/crates/libanalysis/src/lib.rs
@@ -163,15 +163,21 @@ impl World {
             Some(name) => name.text(),
             None => return Vec::new(),
         };
-        let id = match self.resolve_relative_path(id, &PathBuf::from(format!("../{}.rs", name))) {
-            Some(id) => id,
-            None => return Vec::new(),
-        };
-        vec![(id, FileSymbol {
-            name: name.clone(),
-            node_range: TextRange::offset_len(0.into(), 0.into()),
-            kind: MODULE,
-        })]
+        let paths = &[
+            PathBuf::from(format!("../{}.rs", name)),
+            PathBuf::from(format!("../{}/mod.rs", name)),
+        ];
+        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()
     }
 
     fn resolve_relative_path(&self, id: FileId, path: &Path) -> Option<FileId> {
-- 
cgit v1.2.3