1. 23 Jun, 2003 2 commits
    • simonpj's avatar
      [project @ 2003-06-23 10:35:15 by simonpj] · d28ba8c8
      simonpj authored
      -------------------
      	Dealing with 'main'
      	-------------------
      
      1.  In GHC 6.0, a module with no "module Main ... where" header
          elicited an error "main is not in scope" if 'main' is not defined.  We
          don't want this behaviour in GHCi.  This happened because the parser
          expanded the (absent) header to "module Main( main ) where", and the
          'main' in the export list isn't.
      
      Solution: elaborate HsModule to record whether the 'module ..." header was
      given explicitly by the user or not.
      
      
      2.  Add a -main-is flag, and document it, so that you can have a 'main' function
      that is not Main.main.  Summary of changes
      
      * The -main-is flag nominates what the main function is to be (see the documentation).
      	No -main-is flag 	says that the main function is Main.main
      	-main-is Foo.baz	says that the main function is Foo.baz
      	-main-is Foo		says that the main function is Foo.main
      	-main-is baz		says that the main function is Main.baz
      
        Let's say  you say -main-is Foo.baz
      
      * TcRnDriver injects the extra definition
      	$Mian.main :: IO t
      	$Main.main = baz
        in the module Foo.   Note the naming, which is a bit different than before;
        previously the extra defn was for Main.$main.  The RTS invokes zdMain_main_closure.
      
      * CodeGen injects an extra initialisation block into module Foo, thus
      	stginit_zdMain {
      		stginit_Foo
      	}
        That ensures that the RTS can initialise stginit_zdMain.
      d28ba8c8
    • simonmar's avatar
      [project @ 2003-06-23 10:13:03 by simonmar] · dd6fe036
      simonmar authored
      openFileEx can't be gotten from GHC.Handle any more.
      dd6fe036
  2. 20 Jun, 2003 1 commit
    • simonpj's avatar
      [project @ 2003-06-20 11:14:18 by simonpj] · 1f861358
      simonpj authored
      ------------------------------
      	Fix a small quantification bug
      	------------------------------
      
      We were quantifying over too few type variables, because fdPredsOfInsts was
      being too eager to discard predicates. This only affects rather obscure
      programs.  Here's the one Iavor found:
      
      	class C a b where f :: a -> b
      	g x = fst (f x)
      
      We want to get the type
         	g :: forall a b c.  C a (b,c) => a -> b
      but GHC 6.0 bogusly gets
         	g :: forall a b.  C a (b,()) => a -> b
      
      A test is in should_compile/tc168
      1f861358
  3. 19 Jun, 2003 6 commits
    • sof's avatar
      [project @ 2003-06-19 18:53:09 by sof] · 4418c8e9
      sof authored
      add -traditional to SRC_CPP_OPTS to silence (harmless)
      'unterminated char constant' warnings when processing .pp files.
      4418c8e9
    • simonmar's avatar
      [project @ 2003-06-19 12:47:08 by simonmar] · 2ba64673
      simonmar authored
      small optimisation: when evacuating a TSO, only copy the part of the
      stack that is above the stack pointer and hence in use (doesn't apply
      to most stacks, which are large objects and don't get copied anyhow).
      2ba64673
    • simonmar's avatar
      [project @ 2003-06-19 11:27:42 by simonmar] · c4a80e88
      simonmar authored
      Remove slightly bogus -traditional flag from SRC_CPP_OPTS here.
      c4a80e88
    • simonmar's avatar
      [project @ 2003-06-19 11:27:13 by simonmar] · 612f60d1
      simonmar authored
      We should invoke cpp with $(RAWCPP_OPTS) when processing .pp files.
      612f60d1
    • simonmar's avatar
      [project @ 2003-06-19 10:42:24 by simonmar] · d89872a4
      simonmar authored
      Add raiseIO# primop.
      
      This is part of ensuring that exceptions are *precise* in the IO monad
      (as opposed to imprecise exceptions in the pure world).  If we allow
      the strictness analyser to see the definition of throwIO:
      
        throwIO e = IO $ \s -> throw e
      
      then it might re-order evaluation in the IO monad, with the result
      that we get _|_ instead of an exception, or one kind of exception when
      we were expecting another.  We therefore must prevent the strictness
      analyser from doing these reorderings in the IO monad.  Hiding the
      definition of throwIO by making it a primop solves part of the problem
      (there's more to come).
      
      See SourceForge bug #752149.
      d89872a4
    • simonmar's avatar
      [project @ 2003-06-19 10:35:37 by simonmar] · 1f730da4
      simonmar authored
      Style nits only
      1f730da4
  4. 17 Jun, 2003 1 commit
  5. 16 Jun, 2003 2 commits
    • simonpj's avatar
      [project @ 2003-06-16 15:32:16 by simonpj] · f5fbd41c
      simonpj authored
      --------------------------
      	Remove some wired-in types
      	--------------------------
      
      ptrTyCon, funPtrTyCon, addrTyCon, stablePtrTyCon have no business
      being wired in. This commit makes them into knownKey Names, which
      is much better.
      f5fbd41c
    • simonpj's avatar
      [project @ 2003-06-16 15:31:13 by simonpj] · 76c6edcb
      simonpj authored
      ----------------------------------
      	Fix the "no interface file" bug
      	----------------------------------
      
      The problem was this.
      
      * Module A imports module B
      
      * ghc --make A
      
      * Remove B.hs, B.hi, and edit A so that it doesn't import B
      
      * ghc --make A
      
      Then GHC would fail, saying it can't find an interface file for B.
      Reason: when loading A.hi (loadOldIface) it makes a Name for the
      usages it finds.  To make a Name for B things, it needs B's package;
      but it can't find B.hi, so it bombs instead.
      
      Solution: don't complain if loadOldIface fails; instead behave just like
      if you can't find A.hi.
      
      Fixes a long-standing infelicity.
      76c6edcb
  6. 14 Jun, 2003 1 commit
  7. 13 Jun, 2003 4 commits
  8. 12 Jun, 2003 7 commits
    • simonpj's avatar
      [project @ 2003-06-12 16:50:19 by simonpj] · 0116f059
      simonpj authored
      ----------------------------------
      	Fix the no-GHC.Err problem in GHCi
      	----------------------------------
      
      Merge this to the stable branch.
      
      Pattern-match failure error-ids are wired-in, which means the
      GHC.Err interface isn't loaded, which in turn confused the linker
      when tried to find what package GHC.Err is from.
      
      Now we exclude wired-in names from the free variables looked at
      by the linker (in Linker.linkExpr), and make sure the base package
      is loaded unconditionally (DriverState.initPackageList).
      0116f059
    • simonmar's avatar
      [project @ 2003-06-12 16:25:31 by simonmar] · 187dc566
      simonmar authored
      Urk, don't quote/escape the command name on Windows, because the
      compiler is exceedingly naughty and sometimes uses 'perl "..."' as the
      command name.
      187dc566
    • simonmar's avatar
      [project @ 2003-06-12 16:06:05 by simonmar] · 526db217
      simonmar authored
      Change the type of System.Cmd.rawSystem:
      
        rawSystem :: FilePath -> [String] -> IO ExitCode
      
      and implement it properly on both Windows & Unix.  The intended
      meaning is that the program is executed with *exactly* these
      arguments.
      
      We now re-use this rawSystem in the compiler itself (using it directly
      from the library if __GLASGOW_HASKELL__ >= 601).
      
      The previous implementation of SysTools.runSomething was broken on
      4.08, because Posix.executeFile was broken.  However, implementing the
      new rawSystem on 4.08 is tricky, because it uses the FFI marshalling
      libraries which weren't present on 4.08.  Hence, bootstrapping from
      4.08 is now not possible (it was already not possible on Windows).  It
      could be made possible by importing enough FFI marshalling support,
      but I won't bother doing that unless/until it is needed.
      526db217
    • simonpj's avatar
      [project @ 2003-06-12 14:37:21 by simonpj] · dc2ae820
      simonpj authored
      Comments
      dc2ae820
    • simonpj's avatar
      [project @ 2003-06-12 14:36:59 by simonpj] · b30bffd8
      simonpj authored
      Fix lack of deriving(Typeable) in existentials; merge to stable
      b30bffd8
    • simonmar's avatar
      [project @ 2003-06-12 11:13:07 by simonmar] · 3a9bb4ce
      simonmar authored
      More intelligent test for ghc-pkg:  if there was a --with-ghc option
      to configure, then we now use that as a hint for which ghc-pkg to use.
      3a9bb4ce
    • simonpj's avatar
      [project @ 2003-06-12 09:48:17 by simonpj] · b6d15868
      simonpj authored
      Add more comments from Sigbjorn
      b6d15868
  9. 11 Jun, 2003 2 commits
  10. 10 Jun, 2003 7 commits
    • sof's avatar
      [project @ 2003-06-10 17:58:25 by sof] · 282db6d5
      sof authored
      hardtop{mingw32}: for now, stick with 'cygpath -w' instead of 'cygpath -m'
      282db6d5
    • sof's avatar
      [project @ 2003-06-10 17:54:56 by sof] · 9413f9ed
      sof authored
      Normalise filepaths of all source files before doing any processing
      of them. This, unsurprisingly, simplifies filepath comparisons on
      platforms that support multiple path syntaxes (cf., bidirectional
      slashes under mingw/win32.)
      
      This tentatively fixes Sourceforge bug #751175; assuming now bad
      interactions arise, a similar change will be made on STABLE.
      9413f9ed
    • sof's avatar
      [project @ 2003-06-10 17:46:06 by sof] · 930d53b9
      sof authored
      - renamed unDosifyPath as normalisePath
      - renamed dosifyPath as platformPath
      - dropped dosifyPaths; unused.
      - platformPath (ne dosifyPath): drop slicing off of /cygdrive prefixes
      930d53b9
    • simonpj's avatar
      [project @ 2003-06-10 13:40:11 by simonpj] · cb2da7a5
      simonpj authored
      ----------------------------------
      	Fix the crossDllArg crash (take 2)
      	----------------------------------
      
      I got this fix completely wrong, again.
      
      The original CoreUtils.rhsIsNonUpd is now renamed again, to
      CoreUtils.rhsIsStatic. Yet more comments explain its (now
      simplified) working.
      cb2da7a5
    • simonmar's avatar
      [project @ 2003-06-10 13:21:26 by simonmar] · e3d6a95f
      simonmar authored
      Add some more optional space to a pattern for compatibility with GCC 3.3.
      e3d6a95f
    • simonmar's avatar
      [project @ 2003-06-10 13:01:09 by simonmar] · 6fa5e486
      simonmar authored
      Explain that the hierarchy is not cleanly divided into packages - two
      people (at least) have so far been confused that System.Posix.Types is
      in base but System.Posix is in unix.
      6fa5e486
    • simonmar's avatar
      [project @ 2003-06-10 11:57:02 by simonmar] · e10230bd
      simonmar authored
      Tidy up the $hardtop test:
      
        - use cygpath -m to calculate $hardtop on Windows, rather than
          our own partial solution.  Fixes building under c:/cygwin
          on Windows.
      
        - remove some old stuff dealing with paths we used to use at
          Glasgow.
      
        - use proper AC_MSG macros instead of explicit echo.
      
      MERGE TO STABLE
      e10230bd
  11. 09 Jun, 2003 6 commits
  12. 08 Jun, 2003 1 commit