1. 23 Dec, 2015 17 commits
    • Simon Peyton Jones's avatar
      Update tests for Trac #11039 · d1e9f827
      Simon Peyton Jones authored
      d1e9f827
    • Alan Zimmerman's avatar
      API Annotaions:add name in PatBind Match · cb989e2f
      Alan Zimmerman authored
      A PatBind operates similarly to a FunBind, and so the RdrName and
      infix/prefix state needs to be captured for use in API Annotations.
      cb989e2f
    • Eric Seidel's avatar
      Allow CallStacks to be frozen · 380b25ea
      Eric Seidel authored
      This introduces "freezing," an operation which prevents further
      locations from being appended to a CallStack.  Library authors may want
      to prevent CallStacks from exposing implementation details, as a matter
      of hygiene. For example, in
      
      ```
      head [] = error "head: empty list"
      
      ghci> head []
      *** Exception: head: empty list
      CallStack (from implicit params):
        error, called at ...
      ```
      
      including the call-site of `error` in `head` is not strictly necessary
      as the error message already specifies clearly where the error came
      from.
      
      So we add a function `freezeCallStack` that wraps an existing CallStack,
      preventing further call-sites from being pushed onto it. In other words,
      
      ```
      pushCallStack callSite (freezeCallStack callStack) = freezeCallStack callStack
      ```
      
      Now we can define `head` to not produce a CallStack at all
      
      ```
      head [] =
        let ?callStack = freezeCallStack emptyCallStack
        in error "head: empty list"
      
      ghci> head []
      *** Exception: head: empty list
      CallStack (from implicit params):
        error, called at ...
      ```
      
      ---
      
      1. We add the `freezeCallStack` and `emptyCallStack` and update the
         definition of `CallStack` to support this functionality.
      
      2. We add `errorWithoutStackTrace`, a variant of `error` that does not
         produce a stack trace, using this feature. I think this is a sensible
         wrapper function to provide in case users want it.
      
      3. We replace uses of `error` in base with `errorWithoutStackTrace`. The
         rationale is that base does not export any functions that use CallStacks
         (except for `error` and `undefined`) so there's no way for the stack
         traces (from Implicit CallStacks) to include user-defined functions.
         They'll only contain the call to `error` itself. As base already has a
         good habit of providing useful error messages that name the triggering
         function, the stack trace really just adds noise to the error. (I don't
         have a strong opinion on whether we should include this third commit,
         but the change was very mechanical so I thought I'd include it anyway in
         case there's interest)
      
      4. Updates tests in `array` and `stm` submodules
      
      Test Plan: ./validate, new test is T11049
      
      Reviewers: simonpj, nomeata, goldfire, austin, hvr, bgamari
      
      Reviewed By: simonpj
      
      Subscribers: thomie
      
      Projects: #ghc
      
      Differential Revision: https://phabricator.haskell.org/D1628
      
      GHC Trac Issues: #11049
      380b25ea
    • Simon Peyton Jones's avatar
      Fix ASSERT in buildPatSyn, and T10897 test · 78248702
      Simon Peyton Jones authored
      This closes Trac #10897
      78248702
    • Simon Peyton Jones's avatar
      Comments only · b37f2164
      Simon Peyton Jones authored
      b37f2164
    • Simon Peyton Jones's avatar
      Fix super-class cycle check · f13de71b
      Simon Peyton Jones authored
      Fixes Trac #11278
      f13de71b
    • kgardas's avatar
      - fix gc_thread related compilation failure on Solaris/i386 platform · 84f67396
      kgardas authored
      Summary:
      This patch fixes gc_thread related compilation failure
      on Solaris/i386 platform. It uses Linux way of __thread declared
      gc_thread variable for register starving i386 from now.
      
      Reviewers: bgamari, austin, erikd
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D1688
      84f67396
    • Erik de Castro Lopo's avatar
      Delete incorrect *-ws-32 expected test output · dab8e34d
      Erik de Castro Lopo authored
      Summary:
      The *-ws-32 file were too difficult to keep up-to-date so @bgamari
      updated the test outut normalization code in commit 786d528e
      to make these files un-necessary.
      
      Test Plan: test on PowerPC
      
      Reviewers: hvr, austin, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: thomie, bgamari
      
      Differential Revision: https://phabricator.haskell.org/D1690
      dab8e34d
    • MarcelineVQ's avatar
      Modify Nmax to maxN Trac #10728 · 7ed0da6c
      MarcelineVQ authored
      Added test and changed -Nmax to -maxN, -n was taken
      
      Noticed strange -m behavoir and fixed -m from quietly
      ignoring being passed invalid opts, e.g. "-msasd"
      
      Reviewers: simonmar, hvr, austin, thomie, bgamari
      
      Reviewed By: hvr, thomie, bgamari
      
      Subscribers: bgamari, hvr, thomie, simonmar
      
      Differential Revision: https://phabricator.haskell.org/D1677
      
      GHC Trac Issues: #10728
      7ed0da6c
    • Simon Peyton Jones's avatar
      Test Trac #11274 · ed213ead
      Simon Peyton Jones authored
      ed213ead
    • Simon Peyton Jones's avatar
      Tidy up and comment wildcards in family instances · 6eb9dc9c
      Simon Peyton Jones authored
      I found it was possible to do this a bit more nicely
      See Note [Family instance declaration binders] in HsDecls, and
          Note [Wildcards in family instances] in RnSource
      6eb9dc9c
    • Simon Peyton Jones's avatar
      Comments only · 99eb002d
      Simon Peyton Jones authored
      99eb002d
    • Simon Peyton Jones's avatar
      Add a pattern-syn form of PromotionErr · c069be81
      Simon Peyton Jones authored
      The main change is to add PatSynPE to PromotionErr, so that
      when we get an ill-staged use of a pattern synonym we get a
      civilised error message.
      
      We were already doing this in half-baked form in tcValBinds, but
      this patch tidies up the impl (which previously used a hack rather
      than APromotionErr), and does it in tcTyClsInstDecls too.
      c069be81
    • Simon Peyton Jones's avatar
      Comments and white space · 19632501
      Simon Peyton Jones authored
      19632501
    • Simon Peyton Jones's avatar
      b55ad1b3
    • Simon Peyton Jones's avatar
      Revert "Allow as-patterns in pattern synonym declarations." · 48e06346
      Simon Peyton Jones authored
      I'm reverting this until we agree a design.
      See comment:5 in Trac #9793.
      
      Incidentally the reference to Trac #9739 in the reverted
      patch is bogus; it shold have said #9793.
      
      This reverts commit 44640af7.
      48e06346
    • kgardas's avatar
      - fix tests on OpenBSD which requires _DYNAMIC symbol · 5f086816
      kgardas authored
      Summary:
      This patch adds _DYNAMIC symbol to the list of OpenBSD symbols.
      The patch fixes unknown _DYNAMIC symbol runtime linker error caused
      by recent update of unix library.
      
      Reviewers: bgamari, austin
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D1689
      5f086816
  2. 22 Dec, 2015 19 commits
    • Herbert Valerio Riedel's avatar
      3e99980b
    • Edward Z. Yang's avatar
      Implement -hide-all-plugin-packages and -plugin-package(-id), fixing #11244 · 1faf1fca
      Edward Z. Yang authored
      
      
      Summary:
      The basic idea is that we have a new set of "exposed modules"
      which are /only/ used for plugins, i.e. -fplugin Foo and
      --frontend Foo.  You can interact with this namespace
      using the flags -plugin-package-id and -plugin-package.
      By default, this namespace contains all modules in the
      user namespace (as before), but you can toggle that using
      -hide-all-plugin-packages.
      
      There is one nasty hack: GhcMake respects -fplugin in
      GHC_OPTIONS to make local plugins work correctly.  It also
      bails out of you have an import of a module which doesn't
      exist locally or in the package database.  The upshot is
      that we need to be sure to check in the plugin modules
      too, so we don't give a spurious failure when a plugin
      is in the plugin namespace but not the main namespace.
      A better way to fix this would be to distinguish between
      plugin and normal dependencies in ModSummary.
      
      I cheated a little and tweaked a few existing plugins
      tests to exercise the new code paths.
      
      TODO: Documentation
      Signed-off-by: default avatarEdward Z. Yang <ezyang@cs.stanford.edu>
      
      Test Plan: validate
      
      Reviewers: bgamari, austin, simonpj, duncan
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D1661
      
      GHC Trac Issues: #11244
      1faf1fca
    • Edward Z. Yang's avatar
      Refactor package flags into several distinct types. · 998739df
      Edward Z. Yang authored
      
      
      Summary:
      Previously, all package flags (-package, -trust-package,
      -ignore-package) were bundled up into a single packageFlags
      field in DynFlags, under a single type.  This commit separates
      them based on what they do.
      
      This is a nice improvement, because it means that Packages can
      then be refactored so that a number of functions are "tighter":
      
          - We know longer have to partition PackageFlags into
            the ignore flag and other flags; ignore flags are just
            put into their own field.
      
          - Trust flags modify the package database, but exposed
            flags do not (they modify the visibility map); now
            applyPackageFlag and applyTrustFlag have tighter signatures
            which reflect this.
      
      This patch was motivated by the need to have a separate visibility
      map for plugin packages, which will be in a companion patch.
      Signed-off-by: default avatarEdward Z. Yang <ezyang@cs.stanford.edu>
      
      Test Plan: validate
      
      Reviewers: austin, bgamari, duncan
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D1659
      998739df
    • eir@cis.upenn.edu's avatar
      CoercionN is not in scope in TyCoRep · 21b25dff
      eir@cis.upenn.edu authored
      21b25dff
    • eir@cis.upenn.edu's avatar
      Tweak comments around UnivCos. · d3ce4172
      eir@cis.upenn.edu authored
      d3ce4172
    • Alan Zimmerman's avatar
      APIAnnotations:AnnComma in wrong place in qcnames1 · 721d56d5
      Alan Zimmerman authored
      The list is reversed when it is used, so the comma must be added to the
      item at the front of it, to be following it when used.
      721d56d5
    • Simon Peyton Jones's avatar
      Refactor named wildcards (again) · 575a98e4
      Simon Peyton Jones authored
      Michal's work on #10982, #11098, refactored the handling of named
      wildcards by making them more like ordinary type variables.
      
      This patch takes the same idea to its logical conclusion, resulting
      in a much tidier, tighter implementation.
      
      Read Note [The wildcard story for types] in HsTypes.
      
      Changes:
      
       * Named wildcards are ordinary type variables, throughout
      
       * HsType no longer has a data constructor for named wildcards
         (was NamedWildCard in HsWildCardInfo).  Named wildcards are
         simply HsTyVars
      
       * Similarly named wildcards disappear from Template Haskell
      
       * I refactored RnTypes to avoid polluting LocalRdrEnv with something
         as narrow as named wildcards.  Instead the named wildcard set is
         carried in RnTyKiEnv.
      
      There is a submodule update for Haddock.
      575a98e4
    • Ben Gamari's avatar
      Remove another duplicate test · 01b0461e
      Ben Gamari authored
      01b0461e
    • Alan Zimmerman's avatar
      Localize API Annotation in LInjectivtyAnn · 7966eea9
      Alan Zimmerman authored
      The injectivity_cond production in Parser.y returns the annotation for
      the '->' to the calling production, rather than applying it directly.
      
      Rather apply it directly, so LInjectivityAnn can be rendered as a unit
      from the API Annotations.
      7966eea9
    • Ben Gamari's avatar
      Remove duplicate T11224 test definition · 51d83302
      Ben Gamari authored
      51d83302
    • Simon Peyton Jones's avatar
      Fix typechecking for pattern synonym signatures · f40e122b
      Simon Peyton Jones authored
      Various tickets have revealed bad shortcomings in the typechecking of
      pattern type synonyms.  Discussed a lot in (the latter part of)
      Trac #11224.
      
      This patch fixes the most complex issues:
      
      - Both parser and renamer now treat pattern synonyms as an
        ordinary LHsSigType.  Nothing special.  Hooray.
      
      - tcPatSynSig (now in TcPatSyn) typechecks the signature, and
        decomposes it into its pieces.
        See Note [Pattern synonym signatures]
      
      - tcCheckPatSyn has had a lot of refactoring.
        See Note [Checking against a pattern signature]
      
      The result is a lot tidier and more comprehensible.
      Plus, it actually works!
      
      NB: this patch doesn't actually address the precise
          target of #11224, namely "inlining pattern synonym
          does not preserve semantics".  That's an unrelated
          bug, with a separate patch.
      
      ToDo: better documentation in the user manual
      
      Test Plan: Validate
      
      Reviewers: austin, hvr, goldfire
      
      Subscribers: goldfire, mpickering, thomie, simonpj
      
      Differential Revision: https://phabricator.haskell.org/D1685
      
      GHC Trac Issues: #11224
      f40e122b
    • Simon Peyton Jones's avatar
      Fix grouping for pattern synonyms · 29928f29
      Simon Peyton Jones authored
      When grouping pattern synonyms in the desugarer, to find when a single
      match will work for the whole group, we use `Match.sameGroup`.  But this
      function was declaring two pattern-synonym matches equal to often.
      Result: Lint errors and broken semantics.
      
      The fix is easy.  See Note [Pattern synonym groups].
      
      Re-do typechecking for pattern synonym signatures
      
      Test Plan: Validate
      
      Reviewers: austin
      
      Subscribers: thomie, mpickering, simonpj
      
      Differential Revision: https://phabricator.haskell.org/D1684
      29928f29
    • Herbert Valerio Riedel's avatar
      Update stm submodule to v2.4.4.1 release · 6eabd93d
      Herbert Valerio Riedel authored
      This `stm` release also addresses #10967
      6eabd93d
    • Ryan Scott's avatar
      Rework Template Haskell's handling of strictness · f975b0b1
      Ryan Scott authored
      Currently, Template Haskell's treatment of strictness is not enough to
      cover all possible combinations of unpackedness and strictness. In
      addition, it isn't equipped to deal with new features (such as
      `-XStrictData`) which can change a datatype's fields' strictness during
      compilation.
      
      To address this, I replaced TH's `Strict` datatype with
      `SourceUnpackedness` and `SourceStrictness` (which give the programmer a
      more complete toolkit to configure a datatype field's strictness than
      just `IsStrict`, `IsLazy`, and `Unpack`). I also added the ability to
      reify a constructor fields' strictness post-compilation through the
      `reifyConStrictness` function.
      
      Fixes #10697.
      
      Test Plan: ./validate
      
      Reviewers: simonpj, goldfire, bgamari, austin
      
      Reviewed By: goldfire, bgamari
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D1603
      
      GHC Trac Issues: #10697
      f975b0b1
    • Alan Zimmerman's avatar
      Retain AnnTilde in splitTildeApps · b407bd77
      Alan Zimmerman authored
      splitTildeApps can introduce a new HsAppInfix for a tilde, with a fresh
      SrcSpan, disconnecting its existing AnnTilde API Annotation.
      
      A tilde needs AnnTilde to render properly, this patch adds a new one on
      the fresh SrcSpan
      b407bd77
    • Simon Peyton Jones's avatar
      Comments only, about coercion holes · ea3f733a
      Simon Peyton Jones authored
      Richard, pls take a look
      ea3f733a
    • Herbert Valerio Riedel's avatar
      Update Cabal submodule to latest snapshot · 44de66b6
      Herbert Valerio Riedel authored
      The addition of several new Semigroup instances caused
      a Haddock allocation increase.
      44de66b6
    • Alan Zimmerman's avatar
      Make HsAppsType contents Located · ff923954
      Alan Zimmerman authored
      An HsAppInfix can carry a qconop/varop preceded by a SIMPLEQUOTE as a
      Located RdrName.
      
      In this case AnnSimpleQuote is attached to the Located HsAppType.
      
          | SIMPLEQUOTE qconop            {% ams (sLL $1 $> $ HsAppInfix $2)
                                                 [mj AnnSimpleQuote $1] }
          | SIMPLEQUOTE varop             {% ams (sLL $1 $> $ HsAppInfix $2)
                                                 [mj AnnSimpleQuote $1] }
      
      This patch changes
      
          data HsType name
            ...
            | HsAppsTy [HsAppType name]
      
      to
      
          data HsType name
            ...
            | HsAppsTy [LHsAppType name]
      
      so that the annotation is not discarded when it reaches the ParsedSource
      ff923954
    • Tamar Christina's avatar
      Fix GHCi segfault in Windows 32bit · aa7fb9a6
      Tamar Christina authored
      Summary:
      Add missing calling convention to function pointer,
      incorrect `cdecl` calling convention which should be `stdcall`
      on x86 was causing the stack to be corrupted. When it tried to
      return from the function the return pointer would be invalid.
      
      Test Plan: ./validate
      
      Reviewers: austin, erikd, bgamari, thomie
      
      Reviewed By: bgamari, thomie
      
      Differential Revision: https://phabricator.haskell.org/D1683
      
      GHC Trac Issues: #11234
      aa7fb9a6
  3. 21 Dec, 2015 4 commits