1. 10 Oct, 2006 3 commits
    • simonpj@microsoft.com's avatar
      Do not filter the type envt after each GHCi stmt · afaceeff
      simonpj@microsoft.com authored
      Fixes Trac #925
      A new comment in TcRnDriver in tcRnStmt reads thus: 
      At one stage I removed any shadowed bindings from the type_env;
      they are inaccessible but might, I suppose, cause a space leak if we leave them there.
      However, with Template Haskell they aren't necessarily inaccessible.  Consider this
      GHCi session
      	 Prelude> let f n = n * 2 :: Int
      	 Prelude> fName <- runQ [| f |]
      	 Prelude> $(return $ AppE fName (LitE (IntegerL 7)))
      	 Prelude> let f n = n * 3 :: Int
      	 Prelude> $(return $ AppE fName (LitE (IntegerL 7)))
      In the last line we use 'fName', which resolves to the *first* 'f'
      in scope. If we delete it from the type env, GHCi crashes because
      it doesn't expect that.
    • simonpj@microsoft.com's avatar
    • chak@cse.unsw.edu.au.'s avatar
      Rough matches for family instances · 2a8cdc3a
      chak@cse.unsw.edu.au. authored
      - Class and type family instances just got a lot more similar.
      - FamInst, like Instance, now has a rough match signature.  The idea is the
        same: if the rough match doesn't match, there is no need to pull in the while
        tycon describing the instance (from a lazily read iface).
      - IfaceFamInst changes in a similar way and the list of all IFaceFamInsts is
        now written into the binary iface (as for class instances), as deriving it
        from the tycon (as before) would render the whole rough matching useless.
      - As a result of this, the plumbing of class instances and type instances 
        through the various environments, ModIface, ModGuts, and ModDetails is now
        almost the same.  (The remaining difference are mostly because the dfun of a
        class instance is an Id, but type instance refer to a TyCon, not an Id.)
      *** WARNING: The interface file format changed! ***
      ***	     Rebuild from scratch.		***
  2. 09 Oct, 2006 2 commits
  3. 07 Oct, 2006 1 commit
  4. 04 Oct, 2006 1 commit
  5. 06 Oct, 2006 12 commits
  6. 05 Oct, 2006 1 commit
  7. 29 Sep, 2006 1 commit
  8. 05 Oct, 2006 2 commits
  9. 03 Oct, 2006 6 commits
  10. 05 Oct, 2006 10 commits
  11. 21 Sep, 2006 1 commit