1. 02 Dec, 2015 6 commits
  2. 01 Dec, 2015 7 commits
    • Simon Peyton Jones's avatar
      Refactor treatment of wildcards · 1e041b73
      Simon Peyton Jones authored and Ben Gamari's avatar Ben Gamari committed
      This patch began as a modest refactoring of HsType and friends, to
      clarify and tidy up exactly where quantification takes place in types.
      Although initially driven by making the implementation of wildcards more
      tidy (and fixing a number of bugs), I gradually got drawn into a pretty
      big process, which I've been doing on and off for quite a long time.
      
      There is one compiler performance regression as a result of all
      this, in perf/compiler/T3064.  I still need to look into that.
      
      * The principal driving change is described in Note [HsType binders]
        in HsType.  Well worth reading!
      
      * Those data type changes drive almost everything else.  In particular
        we now statically know where
      
             (a) implicit quantification only (LHsSigType),
                 e.g. in instance declaratios and SPECIALISE signatures
      
             (b) implicit quantification and wildcards (LHsSigWcType)
                 can appear, e.g. in function type signatures
      
      * As part of this change, HsForAllTy is (a) simplified (no wildcards)
        and (b) split into HsForAllTy and HsQualTy.  The two contructors
        appear when and only when the correponding user-level construct
        appears.  Again see Note [HsType binders].
      
        HsExplicitFlag disappears altogether.
      
      * Other simplifications
      
           - ExprWithTySig no longer needs an ExprWithTySigOut variant
      
           - TypeSig no longer needs a PostRn name [name] field
             for wildcards
      
           - PatSynSig records a LHsSigType rather than the decomposed
             pieces
      
           - The mysterious 'GenericSig' is now 'ClassOpSig'
      
      * Renamed LHsTyVarBndrs to LHsQTyVars
      
      * There are some uninteresting knock-on changes in Haddock,
        because of the HsSyn changes
      
      I also did a bunch of loosely-related changes:
      
      * We already had type synonyms CoercionN/CoercionR for nominal and
        representational coercions.  I've added similar treatment for
      
            TcCoercionN/TcCoercionR
      
            mkWpCastN/mkWpCastN
      
        All just type synonyms but jolly useful.
      
      * I record-ised ForeignImport and ForeignExport
      
      * I improved the (poor) fix to Trac #10896, by making
        TcTyClsDecls.checkValidTyCl recover from errors, but adding a
        harmless, abstract TyCon to the envt if so.
      
      * I did some significant refactoring in RnEnv.lookupSubBndrOcc,
        for reasons that I have (embarrassingly) now totally forgotten.
        It had to do with something to do with import and export
      
      Updates haddock submodule.
      1e041b73
    • Bartosz Nitka's avatar
      Make the determinism tests more robust · b432e2f3
      Bartosz Nitka authored
      The tests weren't explicit enough about comparing under different
      unique allocation strategies. This led to some confusion on my part when
      I started overriding flags in `testsuite/mk/test.mk`.
      Includes a `.gitignore` rule.
      
      Test Plan: harbormaster
      
      Reviewers: austin, simonmar, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D1555
      b432e2f3
    • Gabor Greif's avatar
      Fix warning about unused pattern variable · 44c3e376
      Gabor Greif authored
      44c3e376
    • Gabor Greif's avatar
      Remove duplicated line · 36c12478
      Gabor Greif authored
      36c12478
    • Bartosz Nitka's avatar
      Fix grammar and typo in TcTyDecls · 6dce643d
      Bartosz Nitka authored
      Summary: It's just a docufix.
      
      Test Plan: just a docufix
      
      Reviewers: austin, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D1550
      6dce643d
    • thomie's avatar
      Build system: Add stage specific SRC_HC_(WARNING_)OPTS · 14d0f7f1
      thomie authored and Herbert Valerio Riedel's avatar Herbert Valerio Riedel committed
      * Add stage specific versions of SRC_HC_OPTS. These are currently only
        used for -Werror. The previous combination of GhcStage2HcOpts and
        GhcLibHcOpts didn't apply to utils/*.
      
      * Add stage specific versions of SRC_HC_WARNING_OPTS. These will later be
        used for new warning supression flags that should not be passed to the
        bootstrap compiler.
      
      * Move -Wall (and -Werror) related code back to mk/warnings.mk, where it
        was before 987d5427. Now all warning related code is nicely together.
        Include mk/warnings.mk after mk/custom-settings.mk to make this work.
      
      Reviewed By: bgamari, hvr
      
      Differential Revision: https://phabricator.haskell.org/D1536
      14d0f7f1
    • Ömer Sinan Ağacan's avatar
      MkId: Typos in comments · afb72139
      Ömer Sinan Ağacan authored
      afb72139
  3. 29 Nov, 2015 11 commits
    • quchen's avatar
      Implement warnings for Semigroups as parent of Monoid · 290def72
      quchen authored and Ben Gamari's avatar Ben Gamari committed
      This patch is similar to the AMP patch (#8004), which offered two
      functions:
      
        1. Warn when an instance of a class has been given, but the type does
           not have a certain superclass instance
        2. Warn when top-level definitions conflict with future Prelude names
      
      These warnings are issued as part of the new `-Wcompat` warning group.
      
      Reviewers: hvr, ekmett, austin, bgamari
      
      Reviewed By: hvr, ekmett, bgamari
      
      Subscribers: ekmett, thomie
      
      Differential Revision: https://phabricator.haskell.org/D1539
      
      GHC Trac Issues: #11139
      290def72
    • Ömer Sinan Ağacan's avatar
      Some improvements on CoreToDos passed to plugins · bcd55a94
      Ömer Sinan Ağacan authored and Ben Gamari's avatar Ben Gamari committed
      This patch does two improvements:
      
      - We now show ToDos in `CoreDoPasses`. This is pretty important,
        otherwise `CoreDoPasses` makes debugging impossible in some cases.
      
      - Before running ToDos we run a cleanup pass on ToDos to remove
        `CoreDoNothing`s and flatten `CoreDoPasses`. This removes a lot of
        noise from `[CoreToDo]` argument passed to plugins.
      
      Reviewers: simonpj, bgamari, austin
      
      Reviewed By: bgamari, austin
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D1548
      bcd55a94
    • Ben Gamari's avatar
      ghci: Refactor handling of :show · f101a822
      Ben Gamari authored and Ben Gamari's avatar Ben Gamari committed
      In so doing ensure that the help text can't fall out of sync with the
      implementation.
      
      Test Plan: Validate and play in ghci
      
      Reviewers: austin, thomie
      
      Reviewed By: austin, thomie
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D1538
      
      GHC Trac Issues: #11111
      f101a822
    • Herbert Valerio Riedel's avatar
      Remove redundant `#if`s · 58972131
      Herbert Valerio Riedel authored
      `#if __GLASGOW_HASKELL__ > xxx` macros make little sense inside `base`
      currently.
      
      Reviewed By: austin
      
      Differential Revision: https://phabricator.haskell.org/D1541
      58972131
    • Herbert Valerio Riedel's avatar
      Update deepseq submodule · 616aceba
      Herbert Valerio Riedel authored
      This pulls in new NFData instances for NonEmpty and Semigroup newtype wrappers
      
      Differential Revision: https://phabricator.haskell.org/D1546
      616aceba
    • Herbert Valerio Riedel's avatar
      Update containers submodule · 54a94564
      Herbert Valerio Riedel authored
      Differential Revision: https://phabricator.haskell.org/D1545
      54a94564
    • thomie's avatar
      GHCi should not defer typed holes · 71c0cc15
      thomie authored and Ben Gamari's avatar Ben Gamari committed
      In the function `tcUserStmt` in compiler/typecheck/TcRnDriver.hs, before
      going over the different ways ('plans') to lift an expression typed at
      the prompt into the GHCi monad, `Opt_DeferTypeErrors` is disabled. Here is
      the accompanying comment:
      
      ```
      -- Ensure that type errors don't get deferred when type checking the
      -- naked expression. Deferring type errors here is unhelpful because the
      -- expression gets evaluated right away anyway. It also would potentially
      -- emit redundant type-error warnings, one from each plan.
      ; plan <- unsetGOptM Opt_DeferTypeErrors $
      ```
      
      Since `Opt_DeferTypeErrors` implies `Opt_DeferTypedHoles`,
      `Opt_DeferTypedHoles` should be disabled here as well. This improves
      the error message for T10248 (it doesn't mention ghciStepIO anymore).
      This is a partial fix for #10249, and a complete fix for #11130.
      
      Depends on D1526
      
      Reviewers: simonpj, austin, bgamari
      
      Reviewed By: simonpj
      
      Subscribers: simonpj
      
      Differential Revision: https://phabricator.haskell.org/D1527
      
      GHC Trac Issues: #10249, #11130
      71c0cc15
    • Matthew Pickering's avatar
      Remove deprecated quasiquoter syntax. · 399a5b46
      Matthew Pickering authored and Ben Gamari's avatar Ben Gamari committed
      In spirit, this reverts 9ba922ee
      
      The syntax has been deprecated with a warning since 2010.
      
      Reviewers: austin, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D1530
      399a5b46
    • Adam Sandberg Eriksson's avatar
      ghc-pkg: print version when verbose · 55c737fd
      Adam Sandberg Eriksson authored and Ben Gamari's avatar Ben Gamari committed
      Reviewers: austin, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D1534
      55c737fd
    • Ben Gamari's avatar
      ghci: Add support for prompt functions · 72e36207
      Ben Gamari authored
      This is an updated version of @jlengyel's original patch adding support
      for prompt functions.
      72e36207
    • Herbert Valerio Riedel's avatar
      Implement new -XTemplateHaskellQuotes pragma · 85fcd035
      Herbert Valerio Riedel authored and Ben Gamari's avatar Ben Gamari committed
      Since f16ddcee / D876, `ghc-stage1`
      supports a subset of `-XTemplateHaskell`, but since we need Cabal to be
      able detect (so `.cabal` files can be specified accordingly, see also
      GHC #11102 which omits `TemplateHaskell` from `--supported-extensions`)
      whether GHC provides full or only partial `-XTemplateHaskell` support,
      the proper way to accomplish this is to split off the
      quotation/non-splicing `TemplateHaskell` feature-subset into a new
      language pragma `TemplateHaskellQuotes`.
      
      Moreover, `-XTemplateHaskellQuotes` is considered safe under SafeHaskell
      
      This addresses #11121
      
      Reviewers: goldfire, ezyang, dterei, austin, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D1511
      
      GHC Trac Issues: #11121
      85fcd035
  4. 28 Nov, 2015 1 commit
  5. 27 Nov, 2015 2 commits
  6. 26 Nov, 2015 3 commits
  7. 25 Nov, 2015 8 commits
    • Ben Gamari's avatar
      d2a2d5eb
    • Adam Gundry's avatar
      User documentation for DuplicateRecordFields · 5699ac94
      Adam Gundry authored and Ben Gamari's avatar Ben Gamari committed
      This is a first draft of the user manual documentation for
      DuplicateRecordFields. Feedback welcome. I've intentionally made this a
      minimal change, but I wonder if it might make sense to pull out all the
      subsections on record system extensions ("Traditional record syntax",
      and "Record field disambiguation" through to "Record wildcards") into a
      new section? That is, is it worth breaking down the rather monolithic
      "Syntactic extensions" section?
      
      Test Plan: n/a
      
      Reviewers: simonpj, bgamari, austin
      
      Reviewed By: bgamari, austin
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D1522
      5699ac94
    • Herbert Valerio Riedel's avatar
      User's Guide: Add links to MFP wiki page · c7a058fb
      Herbert Valerio Riedel authored and Ben Gamari's avatar Ben Gamari committed
      Test Plan: IIAM
      
      Reviewers: austin, bgamari, quchen
      
      Reviewed By: bgamari, quchen
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D1529
      
      GHC Trac Issues: #10751
      c7a058fb
    • Ben Gamari's avatar
      Note STM's vulnerability to non-allocating loops · 9aa94586
      Ben Gamari authored and Ben Gamari's avatar Ben Gamari committed
      Test Plan: Read it
      
      Reviewers: austin, fryguybob
      
      Reviewed By: austin
      
      Subscribers: thomie, fryguybob
      
      Differential Revision: https://phabricator.haskell.org/D1523
      
      GHC Trac Issues: #10639, #367
      9aa94586
    • Simon Peyton Jones's avatar
      e9136762
    • Simon Peyton Jones's avatar
      Comments only · e9a4c099
      Simon Peyton Jones authored
      e9a4c099
    • Simon Peyton Jones's avatar
      Refactor default methods (Trac #11105) · 924f8517
      Simon Peyton Jones authored
      This patch does some signficant refactoring to the treatment
      of default methods in class declarations, and more generally
      to the type checking of type/class decls.
      
      Highlights:
      
      * When the class has a generic-default method, such as
           class C a where
             op :: a -> a -> Bool
             default op :: Ord a => a -> a -> a
        the ClassOpItem records the type of the generic-default,
        in this case the type (Ord a => a -> a -> a)
      
      * I killed off Class.DefMeth in favour of the very-similar
        BasicTypes.DefMethSpec.  However it turned out to be better
        to use a Maybe, thus
            Maybe (DefMethSpec Type)
        with Nothing meaning "no default method".
      
      * In TcTyClsDecls.tcTyClGroup, we used to accumulate a [TyThing],
        but I found a way to make it much simpler, accumulating only
        a [TyCon].  Much less wrapping and unwrapping.
      
      * On the way I also fixed Trac #10896 in a better way. Instead
        of killing off all ambiguity checks whenever there are any type
        errors (the fix in commit 8e8b9ed9), I instead recover in
        TcTyClsDecls.checkValidTyCl.
      
      There was a lot of associated simplification all round
      924f8517
    • Herbert Valerio Riedel's avatar
      update link to MonadFail proposal · 9032d056
      Herbert Valerio Riedel authored
      [skip ci]
      9032d056
  8. 24 Nov, 2015 2 commits