1. 06 Jul, 2016 1 commit
    • Facundo Domínguez's avatar
      Have addModFinalizer expose the local type environment. · 567dbd9b
      Facundo Domínguez authored
      Summary:
      This annotates the splice point with 'HsSpliced ref e' where 'e' is the
      result of the splice. 'ref' is a reference that the typechecker will fill with
      the local type environment.
      
      The finalizer then reads the ref and uses the local type environment, which
      causes 'reify' to find local variables when run in the finalizer.
      
      Test Plan: ./validate
      
      Reviewers: simonpj, simonmar, bgamari, austin, goldfire
      
      Reviewed By: goldfire
      
      Subscribers: simonmar, thomie, mboes
      
      Differential Revision: https://phabricator.haskell.org/D2286
      
      GHC Trac Issues: #11832
      567dbd9b
  2. 05 Jul, 2016 3 commits
    • Simon Peyton Jones's avatar
      Test Trac #12133 · 6cedef01
      Simon Peyton Jones authored
      6cedef01
    • Simon Peyton Jones's avatar
      Make unique auxiliary function names in deriving · 895eefa8
      Simon Peyton Jones authored
      In deriving for Data, we make some auxiliary functions, but they
      didn't always get distinct names (Trac #12245).  This patch fixes
      it by using the same mechanism as for dictionary functions, namely
      chooseUniqueOccTc.
      
      Some assocated refactoring came along for the ride.
      895eefa8
    • Simon Peyton Jones's avatar
      Check generic-default method for ambiguity · 85aa6ef0
      Simon Peyton Jones authored
      Fixes Trac #7497 and #12151.   In some earlier upheaval I introduced
      a bug in the ambiguity check for genreric-default method.
      
      This patch fixes it.  But in fixing it I realised that the
      sourc-location of any such error message was bogus, so I fixed
      that too, which involved a slightly wider change; see the
      comments with TcMethInfo.
      85aa6ef0
  3. 04 Jul, 2016 2 commits
  4. 01 Jul, 2016 1 commit
  5. 30 Jun, 2016 3 commits
  6. 29 Jun, 2016 2 commits
    • thomie's avatar
      Testsuite: use ignore_stderr/stdout instead of ignore_output · 1084d375
      thomie authored
      The problem with ignore_output is that it hides errors for WAY=ghci.
      GHCi always returns with exit code 0 (unless it is broken itself).
      
      For example: ghci015 must have been failing with compile errors for
      years, but we didn't notice because all output was ignored.
      
      Therefore, replace all uses of ignore_output with either ignore_stderr
      or ignore_stdout. In some cases I opted for adding the expected output.
      
      Update submodule hpc and stm.
      
      Reviewed by: simonmar
      
      Differential Revision: https://phabricator.haskell.org/D2367
      1084d375
    • Simon Peyton Jones's avatar
      Test Trac #12185 · 2e9079ff
      Simon Peyton Jones authored
      2e9079ff
  7. 28 Jun, 2016 8 commits
    • Facundo Domínguez's avatar
      Stop the simplifier from removing StaticPtr binds. · dd92c67b
      Facundo Domínguez authored
      Summary:
      We have the FloatOut pass create exported ids for floated StaticPtr
      bindings. The simplifier doesn't try to remove those.
      
      This patch also improves on 7fc20b by making a common definition
      collectStaticPtrSatArgs to test for StaticPtr binds.
      
      Fixes #12207.
      
      Test Plan: ./validate
      
      Reviewers: simonpj, austin, bgamari, simonmar, goldfire
      
      Reviewed By: simonpj
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D2366
      
      GHC Trac Issues: #12207
      dd92c67b
    • Simon Peyton Jones's avatar
      Wibble error message for #11471 · dc62a222
      Simon Peyton Jones authored
      I'm not quite sure why this changed with my two recent commits,
      but it /has/ changed (in a benign way) so I'm accepting it.
      Maybe it wasn't me anyway... but life is short and I'm not inclined
      to dig further.
      dc62a222
    • Simon Peyton Jones's avatar
      Deal correctly with unused imports for 'coerce' · 23b80ac4
      Simon Peyton Jones authored
      We only do newtype unwrapping for Coercible constraints if
      the newtype's data constructor is in scope.  We were trying to
      record the fact that the data constructor was thereby 'used', so
      that an import statement would not be flagged as unnecsssary
      (by -Wunused-imports).
      
      But the code was simply wrong. It was wrong because it assumed
      that only one level of unwrapping happened, whereas
      tcTopNormaliseNewTypeTF_maybe actually unwraps multiple layers.
      So we need to return a /list/ of data constructors that are used.
      
      This entailed a bit of refactoring, as usual.
      
      Fixes Trac #12067
      23b80ac4
    • Simon Peyton Jones's avatar
      Don't omit any evidence bindings · af21e388
      Simon Peyton Jones authored
      This fixes Trac #12156, where we were omitting to make an
      evidence binding (because cec_suppress was on), but yet the
      program was compiled and run.
      
      The fix is easy, and involves deleting code :-).
      af21e388
    • thomie's avatar
      Testsuite: mark tests expect_broken · 3fb9837f
      thomie authored
      * T7837 is still broken for prof_ways (#9406)
      * T11627b is broken on Windows for WAY=prof_hc_hb (#12236)
      * T8089 is also broken for WAY=profasm on Windows
      3fb9837f
    • thomie's avatar
      Testsuite: do not add -debug explicitly in .T file · 0eb03781
      thomie authored
      This prevents `cannot find -lHSrts_debug_p` when running `make
      TEST=T9078 WAY=profasm` (#9078).
      0eb03781
    • thomie's avatar
      Testsuite: run all indexed-types ways on ./validate --slow · 6b3b631e
      thomie authored
      I don't know why some ways were omitted before.
      6b3b631e
    • thomie's avatar
      Testsuite: open/close stdin/stdout/stderr explicitly · 58f0086b
      thomie authored
      This allows run_command's to contain `|`, and `no_stdin` isn't necessary
      anymore.
      
      Unfortunately it doesn't fix T7037 on Windows which I had hoped it would
      (testsuite driver tries to read a file that it just created itself, but
      the OS says it doesn't exist).
      
      The only drawback of this commit is that the command that the testsuite
      prints to the terminal (for debugging purposes) doesn't mention the
      files that stdout and stderr are redirected to anymore. This is probably
      ok.
      
      Update submodule unix.
      
      Differential Revision: https://phabricator.haskell.org/D1234
      58f0086b
  8. 27 Jun, 2016 2 commits
  9. 24 Jun, 2016 5 commits
    • Simon Peyton Jones's avatar
      Test Trac #12229 · dadd8b84
      Simon Peyton Jones authored
      dadd8b84
    • Simon Marlow's avatar
      Fix T8761 (#12219, #12077) · 0bab375a
      Simon Marlow authored
      0bab375a
    • Simon Marlow's avatar
      d2006d05
    • Simon Peyton Jones's avatar
      Fix renamer panic · 393928db
      Simon Peyton Jones authored
      This patch fixes Trac #12216 and #12127.  The 'combine' function
      in 'imp_occ_env' in RnNames.filterImports checked for an empty
      field-selector list, which was (a) unnecessary and (b) wrong.
      
      I've elaborated the comments.
      
      This does NOT fix #11959 which is related but not the same
      (it concerns bundling of pattern synonyms).
      393928db
    • Simon Peyton Jones's avatar
      Improve typechecking of instance defaults · d2958bd0
      Simon Peyton Jones authored
      In an instance declaration when you don't specify the code for a
      method, GHC fills in from the default binding in the class.
      The type of the default method can legitmiately be ambiguous ---
      see Note [Default methods in instances] in TcInstDcls --- so
      typechecking it can be tricky.
      
      Trac #12220 showed that although we were dealing with that ambiguity
      for /vanilla/ default methods, we were not doing so for /generic/
      default methods.  Moreover we were dealing with it clumsily, by
      generating post-typechecked code.
      
      This patch fixes the bug AND deletes code!  We now use the same code
      path for both vanilla and generic default methods; and generate
      /pre-typechecked/ code in both cases.  The key trick is that we can use
      Visible Type Application to deal with the ambiguity, which wasn't
      possible before.  Hooray.
      
      There is a small hit to performance in compiler/perf/T1969 which
      consists of nothing BUT instance declarations with several default
      methods to fill, which we now have to typecheck. The actual hit is
      from 724 -> 756 or 4% in that extreme example.  Real world programs
      have vastly fewer instance decls.
      d2958bd0
  10. 23 Jun, 2016 5 commits
    • eir@cis.upenn.edu's avatar
      Fix #10963 and #11975 by adding new cmds to GHCi. · 8035d1a5
      eir@cis.upenn.edu authored
      See the user's guide entry or the Note [TcRnExprMode] in TcRnDriver.
      
      Test cases: ghci/scripts/T{10963,11975}
      8035d1a5
    • eir@cis.upenn.edu's avatar
      Fix #11974 by adding a more smarts to TcDefaults. · 9a34bf19
      eir@cis.upenn.edu authored
      Test cases:
        typecheck/should_compile/T11974
        typecheck/should_fail/T11974b
      9a34bf19
    • niteria's avatar
      Provide Uniquable version of SCC · 35d1564c
      niteria authored
      We want to remove the `Ord Unique` instance because there's
      no way to implement it in deterministic way and it's too
      easy to use by accident.
      
      We sometimes compute SCC for datatypes whose Ord instance
      is implemented in terms of Unique. The Ord constraint on
      SCC is just an artifact of some internal data structures.
      We can have an alternative implementation with a data
      structure that uses Uniquable instead.
      
      This does exactly that and I'm pleased that I didn't have
      to introduce any duplication to do that.
      
      Test Plan:
      ./validate
      I looked at performance tests and it's a tiny bit better.
      
      Reviewers: bgamari, simonmar, ezyang, austin, goldfire
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D2359
      
      GHC Trac Issues: #4012
      35d1564c
    • Facundo Domínguez's avatar
      Have Core linter accept programs using StaticPointers and -fhpc. · 7fc20b02
      Facundo Domínguez authored
      Summary:
      This patch uses collectArgsTicks instead of collectArgs to test that
      StaticPtr only occurs at the top of RHSs of top-level expressions.
      
      Ticks introduced by -fhpc would interfere otherwise.
      
      Test Plan: ./validate
      
      Reviewers: thomie, austin, goldfire, bgamari, simonpj
      
      Reviewed By: simonpj
      
      Differential Revision: https://phabricator.haskell.org/D2355
      
      GHC Trac Issues: #12207
      7fc20b02
    • Simon Peyton Jones's avatar
      Narrow the warning for simplifiable constraints · 643706e4
      Simon Peyton Jones authored
      In Trac #11948 I added the warning
          -Wsimplifiable-class-constraints
      which warns if the class constraints in a type signature are
      simplifiable.
      
      But in fact the fragility it warns about only happens with
      NoMonoLocalBinds, so this patch switches off the warning if
      you have MonoLocalBinds (and suggests using it in the error
      message).
      
      See Note [Simplifiable given constraints] in TcValidity.
      643706e4
  11. 22 Jun, 2016 6 commits
  12. 21 Jun, 2016 2 commits
    • niteria's avatar
      Make checkFamInstConsistency less expensive · 12306294
      niteria authored
      Doing canonicalization on every comparison turned
      out to be very expensive.
      
      Caching the canonicalization through the smart `modulePair` constructor
      gives `8%` reduction in allocations on `haddock.compiler` and
      `8.5%` reduction in allocations on `haddock.Cabal`.
      Possibly other things as well, but it's really visible in Haddock.
      
      Test Plan: ./validate
      
      Reviewers: jstolarek, simonpj, austin, simonmar, bgamari
      
      Reviewed By: simonpj, simonmar
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D2350
      
      GHC Trac Issues: #12191
      12306294
    • Simon Peyton Jones's avatar
      Don't quantify over Refl in a RULE · d09e982c
      Simon Peyton Jones authored
      This fixes Trac #12212.  It's quite hard to provoke, but I've
      added a standalone test case that does so.
      
      The issue is explained in Note [Evidence foralls] in Specialise.
      d09e982c