diff --git a/script/core/diagnostics/different-requires.lua b/script/core/diagnostics/different-requires.lua
index 5b86d8defd5f2afd8d875d4948b2e0362d59eaca..909342f44250cbb247eef6cf80d580e1597b3e65 100644
--- a/script/core/diagnostics/different-requires.lua
+++ b/script/core/diagnostics/different-requires.lua
@@ -22,10 +22,10 @@ return function (uri, callback)
         end
         local literal = arg1[1]
         local results = ws.findUrisByRequirePath(literal)
-        local result = results and results[1]
-        if not result then
+        if not results or #results ~= 1 then
             return
         end
+        local result = results[1]
         if not files.isLua(result) then
             return
         end
diff --git a/test/crossfile/diagnostic.lua b/test/crossfile/diagnostic.lua
index 3d4eb552326d965cf31b4f89e418f66f02ff45f3..a430cb4ed189c529ee00f9087c0ba581319c562e 100644
--- a/test/crossfile/diagnostic.lua
+++ b/test/crossfile/diagnostic.lua
@@ -135,3 +135,22 @@ TEST {
         content = 'require "f.a"',
     },
 }
+
+TEST {
+    {
+        path = 'a/init.lua',
+        content = '',
+    },
+    {
+        path = 'f/a.lua',
+        content = '',
+    },
+    {
+        path = 'b.lua',
+        content = 'require "a"',
+    },
+    {
+        path = 'c.lua',
+        content = 'require "f.a"',
+    },
+}