summaryrefslogtreecommitdiff
path: root/src/compiler.sml
diff options
context:
space:
mode:
Diffstat (limited to 'src/compiler.sml')
-rw-r--r--src/compiler.sml22
1 files changed, 12 insertions, 10 deletions
diff --git a/src/compiler.sml b/src/compiler.sml
index 46a035ee..51cf20e1 100644
--- a/src/compiler.sml
+++ b/src/compiler.sml
@@ -1781,11 +1781,13 @@ fun moduleOf fname =
end
end
-fun isPosIn row col span =
+fun isPosIn file row col span =
let
val start = #first span
val end_ = #last span
in
+ (String.isSuffix file (#file span))
+ andalso
((#line start < row) orelse
(#line start = row) andalso (#char start <= col))
andalso
@@ -1827,10 +1829,10 @@ fun getTypeAt file row col =
NONE => Print.PD.string ("ERROR: No module found: " ^ moduleOf file)
| SOME (decl, deps) =>
let
- (* TODO Top is not always found as a dep *)
val () = ElabUtilPos.mliftConInCon := ElabEnv.mliftConInCon
(* Adding dependencies to environment *)
- val env = List.foldl (fn (d, e) => ElabEnv.declBinds e d)
+ val env = List.foldl (fn (d, e) =>
+ ElabEnv.declBinds e d)
ElabEnv.empty
deps
(* Adding previous declarations to environment *)
@@ -1850,31 +1852,31 @@ fun getTypeAt file row col =
val (atPosition, env) =
ElabUtilPos.Decl.foldB
{ kind = fn (env, (k, span), acc) =>
- if isPosIn row col span andalso isSmallerThan span (getSpan acc)
+ if isPosIn file row col span andalso isSmallerThan span (getSpan acc)
then (Kind (k, span), env)
else acc ,
con = fn (env, (k, span), acc) =>
- if isPosIn row col span andalso isSmallerThan span (getSpan acc)
+ if isPosIn file row col span andalso isSmallerThan span (getSpan acc)
then (Con (k, span), env)
else acc,
exp = fn (env, (k, span), acc) =>
- if isPosIn row col span andalso isSmallerThan span (getSpan acc)
+ if isPosIn file row col span andalso isSmallerThan span (getSpan acc)
then (Exp (k, span), env)
else acc,
sgn_item = fn (env, (k, span), acc) =>
- if isPosIn row col span andalso isSmallerThan span (getSpan acc)
+ if isPosIn file row col span andalso isSmallerThan span (getSpan acc)
then (Sgn_item (k, span), env)
else acc,
sgn = fn (env, (k, span), acc) =>
- if isPosIn row col span andalso isSmallerThan span (getSpan acc)
+ if isPosIn file row col span andalso isSmallerThan span (getSpan acc)
then (Sgn (k, span), env)
else acc,
str = fn (env, (k, span), acc) =>
- if isPosIn row col span andalso isSmallerThan span (getSpan acc)
+ if isPosIn file row col span andalso isSmallerThan span (getSpan acc)
then (Str (k, span), env)
else acc,
decl = fn (env, (k, span), acc) =>
- if isPosIn row col span andalso isSmallerThan span (getSpan acc)
+ if isPosIn file row col span andalso isSmallerThan span (getSpan acc)
then (Decl (k, span), env)
else acc,
bind = fn (env, binder) =>