1. 30 May, 2007 1 commit
    • simonpj@microsoft.com's avatar
      Reject newtypes with strictness annotations; fixes read008 · 923ee9d3
      simonpj@microsoft.com authored
      This used to be a parse error, but ! annotations are now handled
      further downstream in the compiler, and I'd forgotten to check
      that newtypes do not have strictness annotations.
      
      The test read008 is technically in the wrong place (it's a typechecker
      test now) but that doesn't matter
      923ee9d3
  2. 25 May, 2007 2 commits
  3. 29 May, 2007 1 commit
  4. 26 May, 2007 3 commits
  5. 29 May, 2007 2 commits
  6. 26 May, 2007 1 commit
  7. 25 May, 2007 4 commits
  8. 24 May, 2007 2 commits
  9. 23 May, 2007 1 commit
  10. 19 May, 2007 4 commits
  11. 18 May, 2007 2 commits
  12. 24 May, 2007 1 commit
  13. 23 May, 2007 4 commits
    • simonpj@microsoft.com's avatar
      Improve the interaction of 'seq' and associated data types · 9670d664
      simonpj@microsoft.com authored
      Roman produced programs involving associated types that did not optimise well.
      His programs were something like this:
      
        data family T a
        data instance T Int = MkT Bool Char
      
        bar :: T Int -> Int
        bar t = t `seq` loop 0
      	where
      	  loop = ...
      
      You'd think that the `seq` should unbox 't' outside the loop, since
      a (T Int) is just a MkT pair.  
      
      The most robust way to make this happen is for the simplifier to understand
      a bit about type-family instances.   See 
      	Note [Improving seq]
      in Simplify.lhs.  We use FamInstEnv.topNormaliseType to do the interesting
      work.
      
      To make this happen I did a bit of refactoring to the simplifier
      monad.
      
      I'd previously done a very similar transformation in LiberateCase, but it
      was happening too late.  So this patch takes it out of LiberateCase as
      well as adding it to Simplify.
      
      
      9670d664
    • simonpj@microsoft.com's avatar
      In GHCi, bind identifiers at TH level 'impLevel' · 800dba35
      simonpj@microsoft.com authored
      Consder Trac #1265, which does this in GHCi:
      
      	Prelude> let doit = fail "Code not written yet" :: ExpQ
      	Prelude> $(doit)
      
      Even though 'doit' is defined "in the same module", it's OK to use it in a splice
      because it'll have been fully compiled to bytecode.  (Contrast the situation if
      these two lines appeared in a single, compiled module.)
      
      Hence we want to bind 'doit' at TH's "imported level" (TcRnTypes.impLevel).  
      This used to happen because GHCi-bound Ids were in the *global* type
      env (and hence at "imported level").  But since SimonM moved
      GHCi-bound ids to the *local* type env (for good reasons) the above
      program has been rejected.
      
      This patch makes it work again.
      800dba35
    • simonpj@microsoft.com's avatar
      White-space only · 87b3c589
      simonpj@microsoft.com authored
      87b3c589
    • simonpj@microsoft.com's avatar
      Drop redundant import · 56f04f2e
      simonpj@microsoft.com authored
      56f04f2e
  14. 21 May, 2007 1 commit
  15. 11 May, 2007 1 commit
  16. 14 May, 2007 1 commit
  17. 23 May, 2007 1 commit
  18. 11 May, 2007 1 commit
  19. 10 May, 2007 1 commit
  20. 22 May, 2007 1 commit
  21. 21 May, 2007 4 commits
  22. 20 May, 2007 1 commit