1. 06 Jul, 1999 3 commits
  2. 05 Jul, 1999 8 commits
    • sof's avatar
      [project @ 1999-07-05 19:26:42 by sof] · 60e60f66
      sof authored
      Temporary workaround for problem which caused the following program
      
        main = putStrLn ("aa" ++ IOExts.trace "bb" "cc")
      
      to deadlock - when the (untouched) stderr is evaluated (which
      IOExts.trace forces), it will touch stdout (see code for details of
      why), but it has already been locked by putStrLn. Boom - game over.
      
      This temporary 'fix' is, to put it kindly, in the fancy-footwork
      category as it doesn't solve the problem, but merely turns it on its
      head. Instead of stderr depending on stdout, stdout now depends on
      stderr, so the following program will deadlock
      
        main = hPutStrLn stderr ("aa" ++ myTrace "bb" "cc")
      
        myTrace msg v = unsafePerformIO $ do
           putStrLn msg
           return v
      
      The 'theory' is that this is far less likely to occur in practice than
      the other way around.
      
      The next step / real solution would be to give up the lock on an
      output Handle while filling up its output buffer. However, that
      requires ripping out / re-org'ing a fair bit of buffer management
      code, which I'll delay doing.
      60e60f66
    • sof's avatar
      [project @ 1999-07-05 18:53:53 by sof] · 2455da3a
      sof authored
      Remove -#include "RtsAPI.h" - you now get it for free.
      2455da3a
    • sof's avatar
      [project @ 1999-07-05 17:25:23 by sof] · 45adecbe
      sof authored
      Stg.h contains all the defs and protos that are visible when compiling
      .hc code (==> .hs code). Augment this set with the externally visible
      RTS API.
      45adecbe
    • sof's avatar
      [project @ 1999-07-05 17:06:21 by sof] · 276f03b2
      sof authored
      Tidied up the handling of the code that emits the precedence level
      predicates that gets used in applications of showParen and readParen.
      276f03b2
    • sof's avatar
      [project @ 1999-07-05 17:02:42 by sof] · ee731a02
      sof authored
      Two new Dark Corner regression tests:
      
      - testing the derived Show&Read instances for constructors with
        a field label that is a varsym rather than a varid.
      - check that the default fixity & assoc of an operator is 'infixl 9'.
      ee731a02
    • sof's avatar
      [project @ 1999-07-05 16:55:19 by sof] · df7cb092
      sof authored
      New option, -fail, to indicate failure (whatever the return code).
      df7cb092
    • simonpj's avatar
      [project @ 1999-07-05 15:30:25 by simonpj] · 8ae0e52a
      simonpj authored
      Make sure that instance gates have their home modules
      loaded by RnIfaces.getImportedInstDecls.  This was causing
      Kevin Atkinson's missing-instance bug.
      8ae0e52a
    • sof's avatar
      [project @ 1999-07-05 14:47:06 by sof] · 8be66682
      sof authored
      * If a field label is a 'varsym', wrap parens around it when
        Show'ing and Read'ing it back in.
      
      * If there's no fixity decl for a 'consym', the default is
        for it to be left-assoc.
      8be66682
  3. 03 Jul, 1999 4 commits
  4. 02 Jul, 1999 1 commit
  5. 01 Jul, 1999 3 commits
  6. 30 Jun, 1999 3 commits
  7. 29 Jun, 1999 7 commits
  8. 28 Jun, 1999 11 commits
    • simonmar's avatar
      [project @ 1999-06-28 16:42:22 by simonmar] · c52f850d
      simonmar authored
      Back out changes for "specialid"s.  It didn't work this way: there was
      a conflict in the grammar.
      c52f850d
    • simonpj's avatar
      [project @ 1999-06-28 16:40:18 by simonpj] · 9a734fe7
      simonpj authored
      Add explanatory comments
      9a734fe7
    • simonpj's avatar
      [project @ 1999-06-28 16:35:56 by simonpj] · b01ae32e
      simonpj authored
      Fix SetLevels so that it does not clone top-level bindings, but it
      *does* clone bindings that are destined for the top level.
      
      The global invariant is that the top level bindings are always
      unique, and never cloned.
      b01ae32e
    • simonpj's avatar
      [project @ 1999-06-28 16:33:17 by simonpj] · 4bb6e490
      simonpj authored
      Some renamer fixes
      
      * Correct the defn of Rename.isOrphanRule (caused a Sergey bug)
      
      * Tidy up the Rename.implicitFVs stuff
      4bb6e490
    • simonpj's avatar
      [project @ 1999-06-28 16:32:00 by simonpj] · 6288438b
      simonpj authored
      Propagate changes for tcSimplifyToDicts
      6288438b
    • simonpj's avatar
      [project @ 1999-06-28 16:31:09 by simonpj] · 46ebcd57
      simonpj authored
      Reduce renamer warnings
      46ebcd57
    • simonpj's avatar
      [project @ 1999-06-28 16:29:45 by simonpj] · 354ce404
      simonpj authored
      * Add Type.repType
      
      * Re-express splitRepTyConApp_maybe using repType
      
      * Use the new repType in Core2Stg
      
      	The bug was that we ended up with a binding like
      		let x = /\a -> 3# +# y
      		in ...
      	and this should turn into an STG case, but the big lambda
      	fooled the core-to-STG pass
      354ce404
    • simonpj's avatar
      [project @ 1999-06-28 16:27:27 by simonpj] · 26caf834
      simonpj authored
      Improve common sub-expression stuff
      	- better hash function
      	- add Const.isBoxedDataCon, and use it in CSE
      	- don't CSE for nullary constructors
      26caf834
    • simonpj's avatar
      [project @ 1999-06-28 16:23:28 by simonpj] · 960223bf
      simonpj authored
      Fix lost specialisations.  There were two problems
      
      	{-# SPECIALISE f :: Int -> Rational #-}
      	fromIntegral	=  fromInteger . toInteger
      
      This generates
      
      	fromIntegral_spec = fromIntegral d
      
      for some suitable dictionary d.  But since fromIntegral is small,
      it got inlined into fromIntegral_spec, thus losing the specialised
      call (fromIntegral d) that was the whole raison d'etre of fromIntegral_spec.
      Haskish solution: add an inlne pragma for the _spec things:
      
      	fromIntegral_spec = _inline_me (fromIntegral d)
      
      Now we won't inline inside.  But this showed up a related problem.  The
      typechecker tries to common up overloaded things, so it actually generates
      
      	m = fromIntegral d
      	fromIntegral_spec = _inline_me m
      
      which is pretty stupid.  Using tcSimplifyToDicts (instead of tcSimplify)
      in TcBinds.tcSpecSigs fixes this.
      960223bf
    • simonmar's avatar
      [project @ 1999-06-28 15:43:12 by simonmar] · 9956bafe
      simonmar authored
      a couple more weird cases for lexing of qualified names.
      9956bafe
    • simonmar's avatar
      [project @ 1999-06-28 15:42:33 by simonmar] · 884ec3bb
      simonmar authored
      Fix some pretty subtle bugs in the lexing of qualified names.
      884ec3bb