1. 18 Sep, 2002 2 commits
    • simonmar's avatar
      [project @ 2002-09-18 10:51:01 by simonmar] · fb1b5b07
      simonmar authored
      Fix up exception handling when reading an interface file, and make it
      compile with 4.08.x again.
      GhcExceptions weren't being caught by readIface, so an error when
      reading an interface could be unintentionally fatal (errors should be
      soft when reading the old interface file for the current module).
      Also, the Interrupted exception should not be caught by readIface,
      because we want ^C to behave as normal when reading interface files
      (currently it causes an interface-file read error rather than
      interrupting the whole compiler).
      Some exception-related compatibility functions have been moved from
      Util to Panic.
    • mthomas's avatar
      [project @ 2002-09-18 06:34:07 by mthomas] · 29e55dea
      mthomas authored
      ifdefs for mingw32 to get rid of signal functions.
  2. 17 Sep, 2002 9 commits
    • simonmar's avatar
      [project @ 2002-09-17 14:26:50 by simonmar] · f50c833a
      simonmar authored
      Fix search-and-replace-o:  s/%lt/&lt
    • simonpj's avatar
      [project @ 2002-09-17 13:00:14 by simonpj] · 451a42dc
      simonpj authored
      	Another attempt to make unbound type
      	variables in RULES work right
      Sigh.  I'm trying to find the unbound type variables on the LHS of a
      RULE.  I thought I could just gather free vars, but that does not work
      well on an un-zonked LHS, because a big lambda might bind a type variable
      that looks different (pre-zonking) but isn't really.
      Oh well, back to plan B which is more work but more robust.
      Now the zonking phase (in TcHsSyn) arranges to zonk types in a different
      way (zonkTypeCollecting) on a rule LHS than in ordinary expressions
      (zonkTypeZapping).  This is less dependent on the exact form of the LHS
      (good) but involves another mutable variable (not unclean, but it's sad
      to have to admit that mutable variables do sometimes allow you to make
      non-invasive changes).
    • simonmar's avatar
      [project @ 2002-09-17 12:34:31 by simonmar] · 4a486aef
      simonmar authored
      and for good measure, use STGCALL1 rather than a bare C call.
    • simonmar's avatar
      [project @ 2002-09-17 12:33:08 by simonmar] · 8e73d8ea
      simonmar authored
      remove bogus return too.
    • simonmar's avatar
      [project @ 2002-09-17 12:32:40 by simonmar] · bcea1253
      simonmar authored
      NON_ENTERABLE_ENTRY_CODE() should really barf() rather than attempting
      a clean shutdown.
    • simonmar's avatar
      [project @ 2002-09-17 12:20:15 by simonmar] · 4a7c2629
      simonmar authored
      The GC wasn't properly marking pending signal handlers, which could
      lead to "EVACUATED object entered!" errors.  Also, a race occurs if a
      signal arrives during GC.  Two fixes:
        (a) mark all pending signal handlers during GC, and
        (b) block signals during GC
    • simonmar's avatar
      [project @ 2002-09-17 12:11:44 by simonmar] · 48c557b5
      simonmar authored
      The GC wasn't properly marking pending signal handlers, which could
      lead to "EVACUATED object entered!" errors.  Also, a race occurs if a
      signal arrives during GC.  Two fixes:
        (a) mark all pending signal handlers during GC, and
        (b) block signals during GC
    • simonpj's avatar
      [project @ 2002-09-17 10:08:48 by simonpj] · 67419f26
      simonpj authored
      Unbork head...ruleLhsTvs does not crash now
    • simonpj's avatar
      [project @ 2002-09-17 09:25:07 by simonpj] · 2f987b36
      simonpj authored
      CString import only for mingw32
  3. 16 Sep, 2002 7 commits
    • simonmar's avatar
      [project @ 2002-09-16 14:09:35 by simonmar] · 25e09925
      simonmar authored
      Type signatures may only be given for unqualified variables
    • simonpj's avatar
      [project @ 2002-09-16 12:45:59 by simonpj] · 56200d7c
      simonpj authored
      Silly bug in plusImportAvails [HEAD only]
    • chak's avatar
      [project @ 2002-09-16 10:39:11 by chak] · 7d98368f
      chak authored
      Well, I was apparently not up-to-date on the latest Haddock config magic.
      Removed the last change, which forced the use of an external installation
      of Haddock.
    • simonmar's avatar
      [project @ 2002-09-16 10:16:14 by simonmar] · 73d65fa7
      simonmar authored
      Instead of trying to convert $(ALL_DIRS) into a colon-separated list
      of directories to pass to the compiler with -i, put each directory in
      its own -i option.  This is more robust, the previous method was
      sensitive to extra spaces in the ALL_DIRS list.
      (should fix the current nightly breakage on the HEAD)
    • simonpj's avatar
      [project @ 2002-09-16 07:31:11 by simonpj] · deafae58
      simonpj authored
         Quantify over unbound type vars in RULE lhs's
      -- We need to gather the type variables mentioned on the LHS so we can
      -- quantify over them.  Example:
      --   data T a = C
      --   foo :: T a -> Int
      --   foo C = 1
      --   {-# RULES "myrule"  foo C = 1 #-}
      -- After type checking the LHS becomes (foo a (C a))
      -- and we do not want to zap the unbound tyvar 'a' to (), because
      -- that limits the applicability of the rule.  Instead, we
      -- want to quantify over it!
      This commit fixes the problem, discovered by Manuel.  It uses a
      free-variable finder for RULE lhs's (TcRule.ruleLhsTvs) which relies
      on the fact that the LHS of a rule can only take ver forms
      (c.f RnSource.validRuleLhs).
    • sof's avatar
      [project @ 2002-09-16 07:09:24 by sof] · 55fed332
      sof authored
      copy in tools from a mingw dist tree
    • chak's avatar
      [project @ 2002-09-16 07:08:26 by chak] · 6f4c0cc6
      chak authored
      Use external Haddock installation
  4. 15 Sep, 2002 3 commits
    • lewie's avatar
      [project @ 2002-09-15 19:38:28 by lewie] · 1fbeffc0
      lewie authored
      Ergh!  Don't mix `%doc <relativepathname>' with `%doc <absolutepathname>'
      where <absolutepathname> is the standard doc directory (i.e. the same place
      where the <relativepathname> files will be copied).
      The <relativepathname> version has the hidden side effect of removing
      the contents of the doc directory first (and thus your carefully installed
      files).  The whole distinction which makes a special case for relative
      paths is a crock in the first place ;-)
    • lewie's avatar
      [project @ 2002-09-15 03:47:21 by lewie] · 947a6a7b
      lewie authored
    • lewie's avatar
      [project @ 2002-09-15 00:00:09 by lewie] · b32306b5
      lewie authored
      Update spec.  Fixes doc problems.  Worth merging to 5.04-branch.
  5. 14 Sep, 2002 2 commits
  6. 13 Sep, 2002 6 commits
    • simonpj's avatar
      [project @ 2002-09-13 16:09:26 by simonpj] · c25f7667
      simonpj authored
      Native code gen primpops (courtesy Julian)
    • simonpj's avatar
      [project @ 2002-09-13 16:06:28 by simonpj] · 99b85ea1
      simonpj authored
    • simonpj's avatar
      [project @ 2002-09-13 15:17:15 by simonpj] · fa9c9782
      simonpj authored
      Ooops... forgot these droppings, sorry
    • simonpj's avatar
      [project @ 2002-09-13 15:02:25 by simonpj] · 9af77fa4
      simonpj authored
      	Make Template Haskell into the HEAD
      This massive commit transfers to the HEAD all the stuff that
      Simon and Tim have been doing on Template Haskell.  The
      meta-haskell-branch is no more!
      WARNING: make sure that you
        * Update your links if you are using link trees.
          Some modules have been added, some have gone away.
        * Do 'make clean' in all library trees.
          The interface file format has changed, and you can
          get strange panics (sadly) if GHC tries to read old interface files:
          e.g.  ghc-5.05: panic! (the `impossible' happened, GHC version 5.05):
      	  Binary.get(TyClDecl): ForeignType
        * You need to recompile the rts too; Linker.c has changed
      However the libraries are almost unaltered; just a tiny change in
      Base, and to the exports in Prelude.
      NOTE: so far as TH itself is concerned, expression splices work
      fine, but declaration splices are not complete.
      		The main change
      The main structural change: renaming and typechecking have to be
      interleaved, because we can't rename stuff after a declaration splice
      until after we've typechecked the stuff before (and the splice
      * Combine the renamer and typecheker monads into one
      	(TcRnMonad, TcRnTypes)
        These two replace TcMonad and RnMonad
      * Give them a single 'driver' (TcRnDriver).  This driver
        replaces TcModule.lhs and Rename.lhs
      * The haskell-src library package has a module
        which defines the Haskell data type seen by the TH programmer.
      * New modules:
      	hsSyn/Convert.hs 	converts THSyntax -> HsSyn
      	deSugar/DsMeta.hs 	converts HsSyn -> THSyntax
      * New module typecheck/TcSplice type-checks Template Haskell splices.
      		Linking stuff
      * ByteCodeLink has been split into
      	ByteCodeLink	(which links)
      	ByteCodeAsm	(which assembles)
      * New module ghci/ObjLink is the object-code linker.
      * compMan/CmLink is removed entirely (was out of place)
        Ditto CmTypes (which was tiny)
      * Linker.c initialises the linker when it is first used (no need to call
        initLinker any more).  Template Haskell makes it harder to know when
        and whether to initialise the linker.
      	Gathering the LIE in the type checker
      * Instead of explicitly gathering constraints in the LIE
      	tcExpr :: RenamedExpr -> TcM (TypecheckedExpr, LIE)
        we now dump the constraints into a mutable varabiable carried
        by the monad, so we get
      	tcExpr :: RenamedExpr -> TcM TypecheckedExpr
        Much less clutter in the code, and more efficient too.
        (Originally suggested by Mark Shields.)
      		Remove "SysNames"
      Because the renamer and the type checker were entirely separate,
      we had to carry some rather tiresome implicit binders (or "SysNames")
      along inside some of the HsDecl data structures.  They were both
      tiresome and fragile.
      Now that the typechecker and renamer are more intimately coupled,
      we can eliminate SysNames (well, mostly... default methods still
      carry something similar).
      		Clean up HsPat
      One big clean up is this: instead of having two HsPat types (InPat and
      OutPat), they are now combined into one.  This is more consistent with
      the way that HsExpr etc is handled; there are some 'Out' constructors
      for the type checker output.
      	HsPat.InPat	--> HsPat.Pat
      	HsPat.OutPat	--> HsPat.Pat
      	No 'pat' type parameter in HsExpr, HsBinds, etc
      	Constructor patterns are nicer now: they use
      	for the three cases of constructor patterns:
      		prefix, infix, and record-bindings
      	The *same* data type HsConDetails is used in the type
      	declaration of the data type (HsDecls.TyData)
      Lots of associated clean-up operations here and there.  Less code.
      Everything is wonderful.
    • simonpj's avatar
      [project @ 2002-09-13 15:01:40 by simonpj] · 69e55e74
      simonpj authored
      Make ghc-pkg independent of hslibs
    • simonpj's avatar
      [project @ 2002-09-13 08:54:44 by simonpj] · 7e2009cf
      simonpj authored
      Correct comments
  7. 11 Sep, 2002 2 commits
  8. 10 Sep, 2002 5 commits
  9. 09 Sep, 2002 4 commits