Skip to content

Wrong SrcSpan on AbsBinds

I have the following code:

{-# LANGUAGE RankNTypes #-}

module Folder1.ForAll where

import Data.Char

fun ::  t -> [Char] -> [Char]
fun _=reverse . map toUpper

And the TypecheckedSource gives me something like (using the ghc-syb-utils package to dump it:)

{Bag(Located (HsBind Var)):
 [
  (L {src\Folder1\ForAll.hs:8:1-29}
   (AbsBinds
    [{Var: t}]
    []
    [
     ((,,,)
      [{Var: t}] {Var: Folder1.ForAll.fun} {Var: fun}
      (SpecPrags
       []))]
    ({abstract:TcEvBinds}) {Bag(Located (HsBind Var)):
    [
     (L {src\Folder1\ForAll.hs:9:1-27}
      (FunBind
       (L {src\Folder1\ForAll.hs:9:1-3} {Var: fun})
       (False)
       (MatchGroup

The issue here is that the AbsBinds has a SrcSpan that only covers the type signature, and not the rest of the code, hence (I think) we never go down the contents, and Scion cannot resolve anything when a user asks it to. If the type signature is not present, the problem doesn't occur: the AbsBinds location covers all the source code. If the type signature is present but without any type variable, there is no AbsBinds and no problem (the FunBind covers all the code).

Edited by Simon Peyton Jones
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information