1. 14 Mar, 2020 1 commit
  2. 20 Jan, 2020 1 commit
  3. 13 Jan, 2020 1 commit
  4. 28 Nov, 2019 1 commit
  5. 24 Nov, 2019 1 commit
  6. 26 Oct, 2019 1 commit
    • Roland Senn's avatar
      Fix #14690 - :steplocal panics after break-on-error · 1be9c35c
      Roland Senn authored
      `:steplocal` enables only breakpoints in the current top-level binding.
      
      When a normal breakpoint is hit, then the module name and the break id from the `BRK_FUN` byte code
      allow us to access the corresponding entry in a ModBreak table. From this entry we then get the SrcSpan
      (see compiler/main/InteractiveEval.hs:bindLocalsAtBreakpoint).
      With this source-span we can then determine the current top-level binding, needed for the steplocal command.
      
      However, if we break at an exception or at an error, we don't have an BRK_FUN byte-code, so we don't have any source information.
      The function `bindLocalsAtBreakpoint` creates an `UnhelpfulSpan`, which doesn't allow us to determine the current top-level binding.
      To avoid a `panic`, we have to check for `UnhelpfulSpan` in the function `ghc/GHCi/UI.hs:stepLocalCmd`.
      Hence a :steplocal command after a break-on-exception or a break-on-error is not possible.
      1be9c35c
  7. 13 Oct, 2019 1 commit
  8. 08 Oct, 2019 1 commit
  9. 26 Sep, 2019 1 commit
    • Ryan Scott's avatar
      Make -fbyte-code prevent unboxed tuples/sums from implying object code (#16876) · 4f81fab0
      Ryan Scott authored
      This resolves #16876 by making the explicit use of `-fbyte-code`
      prevent code that enables `UnboxedTuples` or `UnboxedSums` from
      automatically compiling to object code. This allows for a nice
      middle ground where most code that enables `UnboxedTuples`/-`Sums`
      will still benefit from automatically enabling `-fobject-code`, but
      allows power users who wish to avoid this behavior in certain corner
      cases (such as `lens`, whose use case is documented in #16876) to do
      so.
      
      Along the way, I did a little cleanup of the relevant code and
      documentation:
      
      * `enableCodeGenForUnboxedTuples` was only checking for the presence
        of `UnboxedTuples`, but `UnboxedSums` has the same complications.
        I fixed this and renamed the function to
        `enableCodeGenForUnboxedTuplesOrSums`.
      * I amended the users' guide with a discussion of these issues.
      4f81fab0
  10. 23 Sep, 2019 1 commit
  11. 27 Jun, 2019 1 commit
  12. 13 Jun, 2019 1 commit
    • Ben Gamari's avatar
      users-guide: Fix a few markup issues · 70b5eefe
      Ben Gamari authored
      Strangely these were only causing the build to fail in the aarch64-linux
      job, despite Sphinx throwing errors in all jobs I checked.
      
      Also changes some `#ifdef`s to `#if defined` to satisfy the linter.
      70b5eefe
  13. 09 Jun, 2019 1 commit
    • Roland Senn's avatar
      Add disable/enable commands to ghci debugger #2215 · 10452959
      Roland Senn authored
      This patch adds two new commands `:enable` and `:disable` to the GHCi debugger.
      Opposite to `:set stop <n> :continue` a breakpoint disabled with `:disable` will
      not loose its previously set stop command.
      A new field breakEnabled is added to the BreakLocation data structure to
      track the enable/disable state. When a breakpoint is disabled with a `:disable`
      command, the following happens:
      
      The corresponding BreakLocation data element is searched dictionary of the
      `breaks` field of the GHCiStateMonad. If the break point is found and not
      already in the disabled state, the breakpoint is removed from bytecode.
      The BreakLocation data structure is kept in the breaks list and the new
      breakEnabled field is set to false.
      
      The `:enable` command works similar.
      
      The breaks field in the GHCiStateMonad was changed from an association list
      to int `IntMap`.
      10452959
  14. 04 Jun, 2019 1 commit
    • xldenis's avatar
      Add GHCi :instances command · 002594b7
      xldenis authored
      This commit adds the `:instances` command to ghci following proosal
      number 41.
      
      This makes it possible to query which instances are available to a given
      type.
      
      The output of this command is all the possible instances with type
      variables and constraints instantiated.
      002594b7
  15. 29 May, 2019 1 commit
  16. 22 May, 2019 1 commit
    • Michael Sloan's avatar
      Have GHCi use object code for UnboxedTuples modules #15454 · 21272670
      Michael Sloan authored
      The idea is to automatically enable -fobject-code for modules that use
      UnboxedTuples, along with all the modules they depend on. When looking
      into how to solve this, I was pleased to find that there was already
      highly similar logic for enabling code generation when -fno-code is
      specified but TemplateHaskell is used.
      
      The state before this patch was that if you used unboxed tuples then you
      had to enable `-fobject-code` globally rather than on a per module
      basis.
      21272670
  17. 10 May, 2019 1 commit
  18. 15 Apr, 2019 2 commits
  19. 28 Feb, 2019 1 commit
    • Moritz Angermann's avatar
      Cleanup iserv/iserv-proxy · f838809f
      Moritz Angermann authored
      This adds trace messages that include the processes name and as such
      make debugging and following the communication easier.
      
      It also adds a note regarding the fwd*Call proxy-communication logic
      between the proxy and the slave.
      
      The proxy will now also poll for 60s to wait for the remote iserv
      to come up. (Alternatively you can start the remote process
      beforehand; and just have iserv-proxy connect to it)
      f838809f
  20. 03 Feb, 2019 1 commit
  21. 15 Dec, 2018 1 commit
    • Ben Gamari's avatar
      Use https links in user-facing startup and error messages · a1c0b706
      Ben Gamari authored
      I consider myself lucky that in my circle of friends, `http` urls (as
      opposed to `https` urls) are frowned upon in that we generally
      apologize in the rase cases that we share an `http` url.
      
      This pull request changes `http` links into their `https` analogues in
      the following places:
      
      * In the GHCI startup message (and parts of the User's Guide, where
      there are verbatim transcripts of GHCi sessions).
      * In a couple of error messages, asking the user to report a bug.
      
      (I also took the liberty to change a single space before the reportabug
      url into two spaces, harmonizing this occurence with the others.)
      
      I'm not trying to start a war. I just had a moment to spare and felt
      like preparing this diff. Merge or don't merge as you wish!
      
      Reviewers: bgamari, erikd, simonmar
      
      Subscribers: goldfire, rwbarton, carter
      
      Differential Revision: https://phabricator.haskell.org/D5450
      a1c0b706
  22. 04 Jun, 2018 1 commit
    • Simon Jakobi's avatar
      Serialize docstrings to ifaces, display them with new GHCi :doc command · 85309a3c
      Simon Jakobi authored
      If `-haddock` is set, we now extract docstrings from the renamed ast
      and serialize them in the .hi-files.
      
      This includes some of the changes from D4749 with the notable
      exceptions of the docstring lexing and renaming.
      
      A currently limited and experimental GHCi :doc command can be used
      to display docstrings for declarations.
      
      The formatting of pretty-printed docstrings is changed slightly,
      causing some changes in testsuite/tests/haddock.
      
      Test Plan: ./validate
      
      Reviewers: alexbiehl, hvr, gershomb, harpocrates, bgamari
      
      Reviewed By: alexbiehl
      
      Subscribers: rwbarton, thomie, carter
      
      Differential Revision: https://phabricator.haskell.org/D4758
      85309a3c
  23. 25 May, 2018 1 commit
    • Simon Marlow's avatar
      Add -fghci-leak-check to check for space leaks · 5b6ef59f
      Simon Marlow authored
      Summary:
      (re-applying this patch now that D4659 is committed)
      
      Space leaks in GHCi emerge from time to time and tend to come back again
      after they get fixed. This is an attempt to limit regressions by
      
      * adding a reliable detection for some classes of space leaks in GHCi
      * turning on leak checking for all GHCi tests in the test suite, so that
        we'll notice if the leak appears again.
      
      The idea for detecting space leaks is quite simple:
      
      * find some data that we expect to be GC'd later, make a weak pointer to it
      * when we expect the data to be dead, do a `performGC` and then check
        the status of the weak pointer.
      
      It would be nice to apply this trick to lots of things in GHC,
      e.g. ensuring that HsSyn is not retained after the desugarer, or
      ensuring that CoreSyn from the previous simplifier pass is not retained.
      
      Test Plan: validate
      
      Reviewers: bgamari, simonpj, erikd, niteria
      
      Subscribers: thomie, carter
      
      GHC Trac Issues: #15111
      5b6ef59f
  24. 10 May, 2018 1 commit
  25. 09 May, 2018 1 commit
    • Simon Marlow's avatar
      Add -fghci-leak-check to check for space leaks · 5fe6aaa3
      Simon Marlow authored
      Summary:
      Space leaks in GHCi emerge from time to time and tend to come back again
      after they get fixed. This is an attempt to limit regressions by
      
      * adding a reliable detection for some classes of space leaks in GHCi
      * turning on leak checking for all GHCi tests in the test suite, so that
        we'll notice if the leak appears again.
      
      The idea for detecting space leaks is quite simple:
      
      * find some data that we expect to be GC'd later, make a weak pointer to it
      * when we expect the data to be dead, do a `performGC` and then check
        the status of the weak pointer.
      
      It would be nice to apply this trick to lots of things in GHC,
      e.g. ensuring that HsSyn is not retained after the desugarer, or
      ensuring that CoreSyn from the previous simplifier pass is not retained.
      
      Test Plan: validate
      
      Reviewers: bgamari, simonpj, erikd, niteria
      
      Subscribers: thomie, carter
      
      GHC Trac Issues: #15111
      
      Differential Revision: https://phabricator.haskell.org/D4658
      5fe6aaa3
  26. 15 Jan, 2018 2 commits
    • Matthew Pickering's avatar
      Add flag -fno-it · 41afbb3f
      Matthew Pickering authored
      This flag stops ghci creating the special variable `it`
      after evaluating an expression. This stops ghci leaking
      as much memory when evaluating expressions. See #14336
      
      Reviewers: bgamari
      
      Reviewed By: bgamari
      
      Subscribers: rwbarton, thomie, carter
      
      GHC Trac Issues: #14336
      
      Differential Revision: https://phabricator.haskell.org/D4299
      41afbb3f
    • Ben Gamari's avatar
      Support LIBRARY_PATH and LD_LIBRARY_PATH in rts · 87917a59
      Ben Gamari authored
      `LIBRARY_PATH` is used to find libraries and other link artifacts while
      `LD_LIBRARY_PATH` is used to find shared libraries by the loader.
      
      Due to an implementation detail on Windows, using `LIBRARY_PATH` will
      automatically add the path of any library found to the loader's path.
      
      So in that case `LD_LIBRARY_PATH` won't be needed.
      
      Test Plan:
      ./validate along with T14611 which has been made Windows only
      due to linux using the system linker/loader by default. So I feel a
      testcase there is unwarranted as the support is indirect via glibc.
      
      Reviewers: hvr, bgamari, erikd, simonmar, RyanGlScott
      
      Reviewed By: RyanGlScott
      
      Subscribers: RyanGlScott, rwbarton, thomie, carter
      
      GHC Trac Issues: #14611
      
      Differential Revision: https://phabricator.haskell.org/D4275
      87917a59
  27. 23 Nov, 2017 1 commit
  28. 07 Nov, 2017 1 commit
  29. 06 Nov, 2017 1 commit
    • Ben Gamari's avatar
      DynFlags: Introduce -show-mods-loaded flag · 8613e61d
      Ben Gamari authored
      This flag reintroduces the verbose module name output produced by GHCi's
      :load command behind a new flag, -show-mods-loaded. This was originally
      removed in D3651 but apparently some tools (e.g. haskell-mode) rely on
      this output.
      
      Addresses #14427.
      
      Test Plan: Validate
      
      Reviewers: svenpanne
      
      Reviewed By: svenpanne
      
      Subscribers: rwbarton, thomie
      
      Differential Revision: https://phabricator.haskell.org/D4164
      8613e61d
  30. 25 Oct, 2017 1 commit
    • Joachim Breitner's avatar
      Make language extensions their own category in the documentation · 61f1b46e
      Joachim Breitner authored
      I.e. instead of
      
          .. ghc-flag:: -XUnboxedTuples
              :shortdesc: Enable the use of unboxed tuple syntax.
              :type: dynamic
              :reverse: -XNoUnboxedTuples
              :category:
      
      one simply writes
      
          .. extension:: UnboxedTuples
              :shortdesc: Enable the use of unboxed tuple syntax.
      
      This allows language extensions to be referenced as
      
          If :extension:`UnboxedTuples` is enabled, then...
      
      This directive still creates the entries for the `-XUnboxedTuples` flag,
      so in particular,
      
          Set :ghc-flag:`-XUnboxedTuples` if you have to.
      
      still works, and lists of flags in general (e.g. for the manpage)
      include these.
      
      I also removed lots of links from the shortdesc of the extensions, when
      this link simply points to the section where the extension is defined.
      
      I removed the list of `-X` flags from the flag reference table, but added a
      table of extension under “10.1. Language options”
      
      Lots of text in the manual now refers to “extension `Foo`” rather than
      “flag `-XFoo`”.
      
      I consider `-XFoo` a historic artifact that stems from when language
      extensions were really just flags. These days, the use of `-XFoo` is
      (IMHO) deprecated: You should be using `LANGUAGE Foo`, or maybe the
      appropriate field in a `.cabal` file. See 9278994a which did this change
      to error messages already.
      
      Differential Revision: https://phabricator.haskell.org/D4112
      61f1b46e
  31. 19 Aug, 2017 1 commit
    • patrickdoc's avatar
      users_guide: Convert mkUserGuidePart generation to a Sphinx extension · cf8ab1ce
      patrickdoc authored
      This removes all dependencies the users guide had on `mkUserGuidePart`.
      The generation of the flag reference table and the various pieces of the
      man page is now entirely contained within the Spinx extension
      `flags.py`. You can see the man page generation on the orphan page
      https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/ghc.html
      
      The extension works by collecting all of the meta-data attached to the
      `ghc-flag` directives and then formatting and displaying it at
      `flag-print` directives. There is a single printing directive that can
      be customized with two options, what format to display (table, list, or
      block of flags) and an optional category to limit the output to
      (verbosity, warnings, codegen, etc.).
      
      New display formats can be added by creating a function
      `generate_flag_xxx` (where `xxx` is a description of the format) which
      takes a list of flags and a category and returns a new `xxx`. Then just
      add a reference in the dispatch table `handlers`. That display can now
      be run by passing `:type: xxx` to the `flag-print` directive.
      
      `flags.py` contains two maps of settings that can be adjusted. The first
      is a canonical list of flag categories, and the second sets default
      categories for files.
      
      The only functionality that Sphinx could not replace was the
      `what_glasgow_exts_does.gen.rst` file. `mkUserGuidePart` actually just
      reads the list of flags from `compiler/main/DynFlags.hs` which Sphinx
      cannot do. As the flag is deprecated, I added the list as a static file
      which can be updated manually.
      
      Additionally, this patch updates every single documented flag with the
      data from `mkUserGuidePart` to generate the reference table.
      
      Fixes #11654 and, incidentally, #12155.
      
      Reviewers: austin, bgamari
      
      Subscribers: rwbarton, thomie
      
      GHC Trac Issues: #11654, #12155
      
      Differential Revision: https://phabricator.haskell.org/D3839
      cf8ab1ce
  32. 17 Aug, 2017 1 commit
    • Takenobu Tani's avatar
      user-guide: fix examples of ghci commands · 33856696
      Takenobu Tani authored
      Fix examples of ghci commands:
        * correct typos
        * add top-level binding without let statement
        * modify Time.getClockTime to Data.Time.getZonedTime
        * modify Directory.setCurrentDirectory
        * modify ghc version number
      
      Test Plan: build
      
      Reviewers: austin, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: rwbarton, thomie
      
      Differential Revision: https://phabricator.haskell.org/D3852
      33856696
  33. 24 Jul, 2017 1 commit
  34. 23 Jul, 2017 2 commits
    • Ben Gamari's avatar
      Fix more documentation wibbles · 2dff2c7f
      Ben Gamari authored
      Fixes #14020, #14016, #14015, #14019
      2dff2c7f
    • patrickdoc's avatar
      users-guide: Standardize and repair all flag references · 44b090be
      patrickdoc authored
      This patch does three things:
      
      1.) It simplifies the flag parsing code in `conf.py` to properly display
      flag definitions created by `.. (ghc|rts)-flag::`. Additionally, all flag
      references must include the associated arguments. Documentation has been
      added to `editing-guide.rst` to explain this.
      
      2.) It normalizes all flag definitions to a similar format. Notably, all
      instances of `<>` have been replaced with `⟨⟩`. All references across the
      users guide have been updated to match.
      
      3.) It fixes a couple issues with the flag reference table's generation code,
      which did not handle comma separated flags in the same cell and did not
      properly reference flags with arguments.
      
      Test Plan:
      `SPHINXOPTS = -n` to activate "nitpicky" mode, which reports all broken
      references. All remaining errors are references to flags without any
      documentation.
      
      Reviewers: austin, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: rwbarton, thomie
      
      GHC Trac Issues: #13980
      
      Differential Revision: https://phabricator.haskell.org/D3778
      44b090be
  35. 14 Mar, 2017 1 commit
    • Ryan Scott's avatar
      Further document :type +v's role in analyzing -XTypeApplications in GHCi · b335f506
      Ryan Scott authored
      Summary:
      The section on `-XTypeApplications` in the users' guide isn't terribly
      clear on how to view the visibility of a function type signature's type
      variables in GHCi properly (i.e., using the `:type +v` GHCi command). This
      adds some more exposition that demonstrates how to use `:type +v` (and why you
      don't want to use `:type`).
      
      Fixes #13401.
      
      Test Plan: Eyeball it
      
      Reviewers: bgamari, austin, goldfire, crockeea
      
      Reviewed By: goldfire, crockeea
      
      Subscribers: rwbarton, thomie, crockeea
      
      Differential Revision: https://phabricator.haskell.org/D3310
      b335f506
  36. 23 Feb, 2017 1 commit
  37. 20 Feb, 2017 1 commit