[GHC] #95: GHCi :edit command should jump to the the last error
GHC
ghc-devs at haskell.org
Mon Jun 9 18:43:44 UTC 2014
#95: GHCi :edit command should jump to the the last error
-------------------------------+-------------------------------------------
Reporter: | Owner: lortabac
martijnislief | Status: patch
Type: feature | Milestone: ⊥
request | Version: None
Priority: normal | Keywords:
Component: GHCi | Architecture: Unknown/Multiple
Resolution: None | Difficulty: Easy (less than 1 hour)
Operating System: | Blocked By:
Unknown/Multiple | Related Tickets:
Type of failure: |
None/Unknown |
Test Case: |
Blocking: |
-------------------------------+-------------------------------------------
Comment (by nomeata):
Better! So time for the next round of suggestions.
I found this code confusing
{{{
let ...
setGhciErrors e = writeIORef lastErrLocations (errs ++ e)
setGhciErrors $ errLocation srcSpan
}}}
why not
{{{
let ...
writeIORef lastErrLocations (errs ++ errLocation srcSpan)
}}}
In fact I find the whole section there a bit strange. Some suggestions:
* Use `modifyIORef`
* Write something like
{{{
case srcSpan of
RealSrcSpan rsp -> modifyIORef lastErrLocations (++ [srcLocFile
(realSrcSpanStart x) , srcLocLine (realSrcSpanStart x) ])
_ -> return ()
}}}
so you don’t have to introduce so many local functions and do tricks
with `++ []`.
* `find (\(f, _) -> f == mkFastString file) errs` can even simplified to
`lookup (mkFastSTring file)`
I would put
{{{
ghciState <- lift getGHCiState
liftIO $ writeIORef (lastErrorLocations ghciState) []
}}}
in a function `resetLastErrorLocations :: GHCi ()`. Naming that code also
serves as documentation, and you don’t clutter the local name space of
`doLoad` with the `ghciState`
I wonder if things work well if the user uses a different path to the
filename than GHC; maybe one wants to use a function that can check if two
filenames point to the same file. But maybe that is a refinement that can
be added later.
Can you come up with a way to test this? Maybe by setting the editor to
use to `/bin/echo`, which will put `+123` in the output that the test
suite would check? See [Building/RunningTests/Adding] and shout if you
need help creating a test case.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/95#comment:19>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list