1. 05 Apr, 2004 8 commits
  2. 02 Apr, 2004 17 commits
    • simonpj's avatar
      [project @ 2004-04-02 16:54:02 by simonpj] · 76fcd85d
      simonpj authored
      Another stage-2 wibble to last commit
    • simonpj's avatar
      [project @ 2004-04-02 16:51:45 by simonpj] · c244ae2a
      simonpj authored
      Wibble to last commit
    • simonpj's avatar
      [project @ 2004-04-02 16:46:57 by simonpj] · 40888e1d
      simonpj authored
      Extend the "newtype deriving" feature a little bit more
      (at the request of Wolfgang Jeltsch)
      Here's the example:
          class C a b
          instance C [a] Char
          newtype T = T Char deriving( C [a] )
      Perfectly sensible, and no reason it should not work.
      Fixing this required me to generalise the abstract syntax of
      a 'deriving' item, hence the non-local effects.
    • simonmar's avatar
      [project @ 2004-04-02 14:28:57 by simonmar] · f216dd01
      simonmar authored
      Some updates I've had sitting in my tree for a while:
        - when there are two logs only, print a summary table at the beginning
          of the output with columns for allocs, runtime, memory reads/writes, instrs.
        - handle multiple runs of each program, and average the results. (changes
          to nofib build system to follow).
    • simonmar's avatar
      [project @ 2004-04-02 14:22:30 by simonmar] · 8d0295c8
      simonmar authored
      cachegrind: update command line syntax for recent versions of valgrind
    • simonpj's avatar
      [project @ 2004-04-02 13:38:44 by simonpj] · 7010f47b
      simonpj authored
      Document -fno-state-hack
    • simonpj's avatar
      [project @ 2004-04-02 13:34:42 by simonpj] · 52276d81
      simonpj authored
      Add a flag -fno-state-hack, which switches off the "state hack".
      It's claims that every function over realWorldStatePrimTy is a
      one-shot function.  This is pretty true in practice, and makes a big
      difference.  For example, consider
      	a `thenST` \ r -> ...E...
      The early full laziness pass, if it doesn't know that r is one-shot
      will pull out E (let's say it doesn't mention r) to give
      	let lvl = E in a `thenST` \ r -> ...lvl...
      When `thenST` gets inlined, we end up with
      	let lvl = E in \s -> case a s of (r, s') -> ...lvl...
      and we don't re-inline E.
    • simonpj's avatar
      [project @ 2004-04-02 13:19:28 by simonpj] · fb30abb2
      simonpj authored
      Get rid of DiscardedInfo, and fix a Ghci bug at the same time.
      The new story is this:
      - We always read the whole interface file, as it exists on disk,
        not dropping pragmas or anything.
      - We compare that from-the-disk copy with the new version before
        writing the new interface file.
      - We drop the pragmas
        a) Before loading the interface payload into the declaration pools
        b) In the no-need-to-recompile case, before typechecking the
      	interface decls.  Omitting this was the previous bug.
    • simonpj's avatar
      [project @ 2004-04-02 13:16:07 by simonpj] · 2a0ee8e5
      simonpj authored
      * Improve error message for overlapping instances
      * Improve handling of type-variable-only constraints like (Foo a).
        Previously we never looked them up in the instance envt, *except* if
        -fallow-undecideable-instances was on, because that allows
      	instance (...) => Foo a
        But -fallow-undecideable-instances might be on in the module with the
        instance decl, but off in the importing module.  Also it's really a per-class
        thing.  So now we just record in the instance env whether there are any such
        strange instances, a kind of short-cut for the lookup.
      * Arrange that we are a bit more eager about resolving overloading in
        the case of existential pattern matching [George Russel suggestion]
        Here's the example (see comments in InstEnv)
      	-- The key_tys can contain skolem constants, and we can guarantee that those
      	-- are never going to be instantiated to anything, so we should not involve
      	-- them in the unification test.  Example:
      	--	class Foo a where { op :: a -> Int }
      	--	instance Foo a => Foo [a] 	-- NB overlap
      	--	instance Foo [Int]		-- NB overlap
      	-- 	data T = forall a. Foo a => MkT a
      	--	f :: T -> Int
      	--	f (MkT x) = op [x,x]
      	-- The op [x,x] means we need (Foo [a]).  Without the filterVarSet we'd
      	-- complain, saying that the choice of instance depended on the instantiation
      	-- of 'a'; but of course it isn't *going* to be instantiated.
    • simonpj's avatar
      [project @ 2004-04-02 13:10:00 by simonpj] · 68021ad9
      simonpj authored
      Fix erroneous hi-boot
    • simonpj's avatar
      [project @ 2004-04-02 12:38:33 by simonpj] · bc7bd6e3
      simonpj authored
      A preliminary step towards being able to identify existential
      type variables separately.  That in turn helps when resolving
      overloading; I think we want to resolve overloading without
      worrying about what these type variables might instantiate to.
    • simonpj's avatar
      [project @ 2004-04-02 12:04:13 by simonpj] · 8bdc5d40
      simonpj authored
    • simonpj's avatar
      [project @ 2004-04-02 11:59:21 by simonpj] · a4a7fd63
      simonpj authored
      Comments mainly, plus use newTyConRhs
    • simonpj's avatar
      [project @ 2004-04-02 11:57:49 by simonpj] · fe93680b
      simonpj authored
      Remove unused result from dropInline
    • simonpj's avatar
      [project @ 2004-04-02 11:56:37 by simonpj] · 2151d685
      simonpj authored
    • simonpj's avatar
      [project @ 2004-04-02 11:55:34 by simonpj] · f1915c2a
      simonpj authored
      Import wibbles
    • igloo's avatar
      [project @ 2004-04-02 02:39:26 by igloo] · 427ce38d
      igloo authored
      Add support for foreign imports inside quasi-quotes.
      Gave TH a few more uniques to play with and fixed a typo.
  3. 31 Mar, 2004 1 commit
    • simonmar's avatar
      [project @ 2004-03-31 15:23:16 by simonmar] · 17d537ba
      simonmar authored
      ClosureInfo.might_be_a_function: this predicate wasn't taking into
      account abstract types, which might also hide functions underneath.
      Fixes broken compiler when compiled without -O.
  4. 30 Mar, 2004 2 commits
  5. 27 Mar, 2004 1 commit
  6. 24 Mar, 2004 2 commits
  7. 23 Mar, 2004 5 commits
  8. 22 Mar, 2004 4 commits