[GHC] #8607: Invalid location reported for type constructors

GHC ghc-devs at haskell.org
Thu Dec 19 11:22:21 UTC 2013


#8607: Invalid location reported for type constructors
-------------------------------------+------------------------------------
        Reporter:  edsko             |            Owner:
            Type:  bug               |           Status:  new
        Priority:  normal            |        Milestone:
       Component:  Compiler          |          Version:  7.7
      Resolution:                    |         Keywords:
Operating System:  Unknown/Multiple  |     Architecture:  Unknown/Multiple
 Type of failure:  None/Unknown      |       Difficulty:  Unknown
       Test Case:                    |       Blocked By:
        Blocking:                    |  Related Tickets:
-------------------------------------+------------------------------------

Comment (by edsko):

 So correct me if I'm wrong, but -- `TyCon` contains a `Name`, right? And
 that `Name` has a `nameSrcSpan`. And that `nameSrcSpan` is what is used
 for error messages (probably through `setSrcSpan (getSrcSpan thing)` at
 the start of `checkValidTyCl`?). So `TyCon`s ''already'' have a built-in
 location, and I guess this was precisely the purpose of Simon's patch.

 I don't have a problem with the `nameSrcSpan` of a `Name` being set to be
 the location of the entire type declaration. What ''is'' a problem,
 however, is that in the AST, that name becomes a `Located Name`, for
 example as in

 {{{
 data TyClDecl name
   | -- | @data@ declaration
     DataDecl { tcdLName    :: Located name        -- ^ Type constructor
 ...
 }}}

 So `Located Name` has ''two'' `SrcSpan`s; one for the `Located` part, and
 one for the `Name` part (`nameSrcSpan`). The problem is that Simon's patch
 changed ''both'' of these `SrcSpan`s to point to the entire span of the
 type declaration. They are logically different -- one tells you where
 ''this occurrence'' of the identifier is, the other tells you where the
 identifier is defined. For IDE purposes we need to know accurate
 information about the location of this occurrence, even if it's
 `nameSrcSpan` (def site) points somewhere else.

 Do I make any sense at all?

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/8607#comment:11>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list