1. 24 Nov, 2015 3 commits
    • elaforge's avatar
      Rearrange error msgs and add section markers (Trac #11014). · c05fddde
      elaforge authored
      This puts the "Relevant bindings" section at the end.
      It uses a TcErrors.Report Monoid to divide messages by importance and
      then mappends them together.  This is not the most efficient way since
      there are various intermediate Reports and list appends, but it probably
      doesn't matter since error messages shouldn't get that large, and are
      usually prepended.  In practice, everything is `important` except
      `relevantBindings`, which is `supplementary`.
      ErrMsg's errMsgShortDoc and errMsgExtraInfo were extracted into ErrDoc,
      which has important, context, and suppelementary fields.  Each of those
      three sections is marked with a bullet character, '•' on unicode
      terminals and '*' on ascii terminals.  Since this breaks tons of tests,
      I also modified testlib.normalise_errmsg to strip out '•'s.
      --- Additional notes:
      To avoid prepending * to an empty doc, I needed to filter empty docs.
      This seemed less error-prone than trying to modify everyone who produces
      SDoc to instead produce Maybe SDoc.  So I added `Outputable.isEmpty`.
      Unfortunately it needs a DynFlags, which is kind of bogus, but otherwise
      I think I'd need another Empty case for SDoc, and then it couldn't be a
      newtype any more.
      ErrMsg's errMsgShortString is only used by the Show instance, which is
      in turn only used by Show HscTypes.SourceError, which is in turn only
      needed for the Exception instance.  So it's probably possible to get rid
      of errMsgShortString, but that would a be an unrelated cleanup.
      Fixes #11014.
      Test Plan: see above
      Reviewers: austin, simonpj, thomie, bgamari
      Reviewed By: thomie, bgamari
      Subscribers: simonpj, nomeata, thomie
      Differential Revision: https://phabricator.haskell.org/D1427
      GHC Trac Issues: #11014
    • Herbert Valerio Riedel's avatar
      Implement new `-fwarn-noncanonical-monad-instances` · f09f2470
      Herbert Valerio Riedel authored
      Warn about incoherent/non-canonical 'Applicative'/'Monad' instance
      declarations. Specifically the following invariants are checked:
      In 'Monad' instances declarations warn if the any of the following
      conditions does not hold:
       * If `return` is overridden it must be canonical (i.e. `return = pure`).
       * If `(>>)` is overridden it must be canonical (i.e. `(>>) = (*>)`).
      In 'Applicative' instance declarations:
       * Warn if 'pure' is defined backwards (i.e. `pure = return`).
       * Warn if '(*>)' is defined backwards (i.e. `(*>) = (>>)`).
      NB, this warning flag is not enabled via `-Wall` nor `-Wcompat`.
      This addresses #11128
      Reviewers: quchen, austin, bgamari
      Reviewed By: bgamari
      Differential Revision: https://phabricator.haskell.org/D1516
    • Herbert Valerio Riedel's avatar
      Add `PrelNames.thenAName` for `Applicative(*>)` · 12dbc892
      Herbert Valerio Riedel authored
      This is needed to allow subsequent patches to refer to `*>`.
      While at it, this commit also groups together the `Applicative` definitions
      to reduce confusion.
      Reviewed By: austin
      Differential Revision: https://phabricator.haskell.org/D1513
  2. 23 Nov, 2015 16 commits
  3. 22 Nov, 2015 6 commits
    • niteria's avatar
      Make abstractVars deterministic in SetLevel · 6393dd8e
      niteria authored
      This fixes a non-determinism bug where depending on the order
      of uniques allocated, the type variables would be in a different order
      when abstracted for the purpose of lifting out an expression.
      Test Plan:
      I've added a new testcase that reproduces the problem
      Reviewers: simonmar, austin, bgamari, simonpj
      Reviewed By: simonpj
      Subscribers: nomeata, thomie
      Differential Revision: https://phabricator.haskell.org/D1504
      GHC Trac Issues: #4012
    • Alan Zimmerman's avatar
      ApiAnnotations: Make all RdrName occurences Located · 3df9563e
      Alan Zimmerman authored
      At the moment the API Annotations can only be used on the ParsedSource,
      as there are changes made to the RenamedSource that prevent it from
      being used to round trip source code.
      It is possible to build a map from every Located Name in the
      RenamedSource from its location to the Name, which can then be used when
      resolved names are required when changing the ParsedSource.
      However, there are instances where the identifier is not located,
        (GHC.VarPat name)
        (GHC.HsVar name)
        (GHC.UserTyVar name)
        (GHC.HsTyVar name)
      Replace each of the name types above with (Located name)
      Updates the haddock submodule.
      Test Plan: ./validate
      Reviewers: austin, goldfire, bgamari
      Reviewed By: bgamari
      Subscribers: goldfire, thomie, mpickering
      Differential Revision: https://phabricator.haskell.org/D1512
      GHC Trac Issues: #11019
    • Erik de Castro Lopo's avatar
      New expected test output for 32 bit platforms · 64737f2d
      Erik de Castro Lopo authored
      Test Plan: Test on Arm and PowerPc.
      Reviewers: bgamari, thomie, austin
      Differential Revision: https://phabricator.haskell.org/D1510
      GHC Trac Issues: #11060
    • Alan Zimmerman's avatar
      Add comment to Parser.y re extra API Annotation · 638fde50
      Alan Zimmerman authored
      Document extra AnnRarrow annotation on a HsFunTy
    • Herbert Valerio Riedel's avatar
      Follow-up fix to 3e2a4eef (re #11109) · 4976ab2b
      Herbert Valerio Riedel authored
      Using `:` as sed-`s`-expr separator is not a good idea on windows, as
      this can result in an expression like
         's:@INSTALL@:$(subst ../install-sh,E:/msys64/home/foo/ghc/install-sh,@INSTALL@):g'
      (note the `E:/` drive component)
      Using `|` instead of `:` has less risk of collision with the substitution expression
    • Herbert Valerio Riedel's avatar
      Remove accidentally added T10359 blob · a703fbce
      Herbert Valerio Riedel authored
      This sneaked in via 2325bd4e / D1468 / #4012
      This is frustrating... we've added a useless 2.4MiB binary blob to our
      Git history which wastes *everyones* bandwidth for eternity
      (unless we truncate or rewrite history).
      We should add lint-checks and/or a pre-receive commit hook test to prevent
      this in future.
  4. 21 Nov, 2015 6 commits
    • roshats's avatar
      Function definition in GHCi · b98ff3cc
      roshats authored
      This patch allows define and re-define functions in ghci. `let` is not
      required anymore (but can be used).
      Idea: If ghci input string can be parsed as statement then run it as
      statement else run it as declaration.
      Reviewers: mpickering, bgamari, austin
      Reviewed By: mpickering, bgamari, austin
      Subscribers: hvr, mpickering, dterei, thomie
      Differential Revision: https://phabricator.haskell.org/D1299
      GHC Trac Issues: #7253
    • niteria's avatar
      Create a deterministic version of tyVarsOfType · 2325bd4e
      niteria authored
      I've run into situations where I need deterministic `tyVarsOfType` and
      this implementation achieves that and also brings an algorithmic
      improvement.  Union of two `VarSet`s takes linear time the size of the
      sets and in the worst case we can have `n` unions of sets of sizes
      `(n-1, 1), (n-2, 1)...` making it quadratic.
      One reason why we need deterministic `tyVarsOfType` is in `abstractVars`
      in `SetLevels`. When we abstract type variables when floating we want
      them to be abstracted in deterministic order.
      Test Plan: harbormaster
      Reviewers: simonpj, goldfire, austin, hvr, simonmar, bgamari
      Reviewed By: simonmar
      Subscribers: thomie
      Differential Revision: https://phabricator.haskell.org/D1468
      GHC Trac Issues: #4012
    • niteria's avatar
      Add DVarSet - a deterministic set of Vars · 6664ab83
      niteria authored
      This implements `DVarSet`, a deterministic set of Vars, with an
      interface very similar to `VarSet` with a couple of functions missing.
      I will need this in changes that follow, one of them will be about
      changing the type of the set of Vars that `RuleInfo` holds to make the
      free variable computation deterministic.
      Test Plan:
      I can add new tests if anyone wants me to.
      Reviewers: simonpj, simonmar, austin, bgamari
      Reviewed By: simonmar, bgamari
      Subscribers: thomie
      Differential Revision: https://phabricator.haskell.org/D1487
      GHC Trac Issues: #4012
    • Herbert Valerio Riedel's avatar
      Suppress conflicting types for builtins warnings · 192dd068
      Herbert Valerio Riedel authored
      GCC 4.0 and later warn about type-conflicting prototypes for built-in
      functions such as `strlen`. This is a problem for the via-c backend as
      it generates code such as
        typedef void *(*(*StgFunPtr)(void))(void);
        extern StgFunPtr strlen();
      However, by using the `-fno-builtin` flag, GCC is told not to try to
      auto-detect such built-in functions and instead treat them as ordinary
      external functions.  This also suppresses this warning.
      This address #7660
      Test Plan: IIAM
      Reviewers: bgamari, austin
      Reviewed By: austin
      Subscribers: thomie, erikd
      Differential Revision: https://phabricator.haskell.org/D1506
      GHC Trac Issues: #7660
    • Ben Gamari's avatar
      RtsFlags: Fix const warning · d585073d
      Ben Gamari authored
      Reviewers: austin
      Reviewed By: austin
      Subscribers: thomie
      Differential Revision: https://phabricator.haskell.org/D1509
    • Tamar Christina's avatar
      Fix Windows builds after D1242 · 7f77e4e9
      Tamar Christina authored
      Only use the merge_sections.ld linker script if SplitSections is enabled.
      I thought I had a way to make the linker script actually work on Windows
      and produce object files instead of image files (by using the "INSERT AFTER"
      linker script command to get the default script's output format setting),
      but that fix caused ghci to crash with an illegal instruction on startup.
      Gave up and made a simpler fix of just disabling this for normal builds,
      as it's only really relevant with SplitSections enabled anyway.
      Reviewers: austin, thomie, bgamari
      Reviewed By: austin, thomie
      Subscribers: Phyx, thomie
      Differential Revision: https://phabricator.haskell.org/D1505
      GHC Trac Issues: #8405
  5. 20 Nov, 2015 5 commits
  6. 19 Nov, 2015 4 commits
    • Matthew Pickering's avatar
      Pattern Synonym Documentation · b72ca3e3
      Matthew Pickering authored
      This patch adds documentation for record pattern synonyms (D1258) and
      bundling pattern synonyms with type constructors in export lists (D1152).
      There are also other small improvements motivated by #10900.
      Reviewers: goldfire, bgamari, austin
      Reviewed By: bgamari
      Subscribers: goldfire, thomie
      Differential Revision: https://phabricator.haskell.org/D1325
      GHC Trac Issues: #10900
    • Ben Gamari's avatar
      Bump process submodule · d732ce0d
      Ben Gamari authored
    • strake's avatar
      Unbreak Text.Read.Lex.lex on Unicode symbols · fce04651
      strake authored
      Reviewers: thomie, hvr, austin, bgamari
      Reviewed By: bgamari
      Subscribers: bgamari, thomie
      Differential Revision: https://phabricator.haskell.org/D1480
      GHC Trac Issues: #10444
    • Herbert Valerio Riedel's avatar
      Set AIX specific CFLAGS flags · 75036aac
      Herbert Valerio Riedel authored
      First of all, we need to use -mminimal-toc on IBM AIX
      AIX's XCOFF is limited to 16k entries in its TOC for 32bit compilation,
      which quickly overflows with GHC's code generation.
      Otoh, the Parser.hs module contains more entries than fit into a
      minimal-toc, so we need to switch back to `-mfull-toc` for that single
      module again.
      Then, we also need to set the `THREAD_SAFE` CPP #define in order to
      unlock the thread-safe `errno` which is essential for the threaded
      Depends on D1501
      Reviewers: austin, bgamari
      Reviewed By: bgamari
      Subscribers: thomie, erikd
      Differential Revision: https://phabricator.haskell.org/D1502