1. 16 Sep, 1999 1 commit
  2. 24 Aug, 1999 1 commit
    • simonpj's avatar
      [project @ 1999-08-24 08:59:14 by simonpj] · 7d845299
      simonpj authored
      Record all orphan modules (including "library" ones)
      in the usage info in an interface file.  Leaving these out
      prevents propagation of orphan module information.
      7d845299
  3. 08 Jul, 1999 1 commit
  4. 06 Jul, 1999 1 commit
    • simonpj's avatar
      [project @ 1999-07-06 16:45:31 by simonpj] · 9d38678e
      simonpj authored
      All Simon's recent tuning changes.  Rough summary follows:
      
      * Fix Kevin Atkinson's cant-find-instance bug.  Turns out that Rename.slurpSourceRefs
        needs to repeatedly call getImportedInstDecls, and then go back to slurping
        source-refs.  Comments with Rename.slurpSourceRefs.
      
      * Add a case to Simplify.mkDupableAlt for the quite-common case where there's
        a very simple alternative, in which case there's no point in creating a
        join-point binding.
      
      * Fix CoreUtils.exprOkForSpeculation so that it returns True of (==# a# b#).
        This lack meant that
      	case ==# a# b# of { True -> x; False -> x }
        was not simplifying
      
      * Make float-out dump bindings at the top of a function argument, as
        at the top of a let(rec) rhs.  See notes with FloatOut.floatRhs
      
      * Make the ArgOf case of mkDupableAlt generate a OneShot lambda.
        This gave a noticeable boost to spectral/boyer2
      
      
      * Reduce the number of coerces, using worker/wrapper stuff.
        The main idea is in WwLib.mkWWcoerce.  The gloss is that we must do
        the w/w split even for small non-recursive things.  See notes with
        WorkWrap.tryWw.
      
      * This further complicated getWorkerId, so I finally bit the bullet and
        make the workerInfo field of the IdInfo work properly, including
        under substitutions.  Death to getWorkerId.  Kevin Glynn will be happy.
      
      * Make all lambdas over realWorldStatePrimTy
        into one-shot lambdas.  This is a GROSS HACK.
      
      * Also make the occurrence analyser aware of one-shot lambdas.
      
      * Make various Prelude things into INLINE, so that foldr doesn't
        get inlined in their body, so that the caller gets the benefit
        of fusion.  Notably in PrelArr.lhs.
      9d38678e
  5. 05 Jul, 1999 1 commit
    • 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
  6. 28 Jun, 1999 1 commit
  7. 17 Jun, 1999 1 commit
  8. 08 Jun, 1999 1 commit
  9. 01 Jun, 1999 1 commit
    • simonmar's avatar
      [project @ 1999-06-01 16:40:41 by simonmar] · 904f158f
      simonmar authored
      This commit replaces the old yacc parser with a Happy-generated one.
      Notes:
      
      	- The generated .hs file is *big*.  Best to use a recent
      	  version of Happy, and even better to add the -c flag
      	  to use unsafeCoerce# with ghc (versions 4.02+ please).
      
      	- The lexer has grown all sorts of unsightly growths and
      	  should be put down as soon as possible.
      
      	- Parse errors may result in strange diagnostics.  I'm looking
      	  into this.
      
      	- HsSyn now contains a few extra constructors due to the way
      	  patterns are parsed as expressions in the parser.
      
      	- The layout rule is implemented according to the Haskell
      	  report.  I found a couple of places in the libraries where
      	  we previously weren't adhering to this - in particular the
      	  rule about "nested contexts must be more indented than
      	  outer contexts".  The rule is necessary to disambiguate
      	  in the presence of empty declaration lists.
      904f158f
  10. 26 May, 1999 1 commit
  11. 21 May, 1999 1 commit
  12. 18 May, 1999 1 commit
  13. 27 Apr, 1999 1 commit
    • sof's avatar
      [project @ 1999-04-27 17:33:49 by sof] · 90c0b29e
      sof authored
      Renamer changes:
      
       - for a toplevel type signature
      
      	f :: ty
      
         the name 'f' refers to a local definition of 'f' - i.e., don't
         report 'f' as clashing with any imported 'f's.
      
       - tidied up the handling of fixity declarations - misplaced fixity
         declarations inside class decls, e.g.,
      
            class F a where
             infix 9 `f`
             g :: a -> Int
      
         are now caught and reported as errors. Robustified the renaming
         of class decls.
      90c0b29e
  14. 02 Apr, 1999 1 commit
    • simonm's avatar
      [project @ 1999-04-02 08:50:23 by simonm] · 1b919f1d
      simonm authored
      Hack from Simon: put abstract type decls (i.e. from an hi-boot file)
      on the defferred list, just in case we happen to pull in the real one
      as well.
      1b919f1d
  15. 11 Mar, 1999 1 commit
  16. 02 Mar, 1999 1 commit
    • sof's avatar
      [project @ 1999-03-02 17:12:54 by sof] · 94ff1ec1
      sof authored
      Directories can now be flagged as containing interface files that have
      their corresponding object codes living in Win32 DLLs.
      
      The compiler needs to keep track of whether a name refers to something
      in a DLL or not, since Win32 DLLs forces you to distinguish between
      the two at the point of use. For example, the code generated for
      the following snippet
      
           return (x+2);
      
      will differ. If 'x' resides in a DLL, you need to perform an extra
      indirection to get at its value. Effectively, the generated code
      becomes
      
           return (*x+2);
      
      For functions, the distinction can be made transparent, but we
      can avoid jumping through an extra level of indirection if we
      do indicate that a label will be imported from a DLL.
      
      Back to the renamer and its scheme, directories that contain
      the file ".dLL_ifs.hi" (name chosen to lessen the risk of a clash..)
      are considered as containing 'DLL interface files'. There's two
      caveats to this scheme:
      
       - interface files found in "." are not considered to be referring
         to something in a DLL.
       - if the compiler has got -static on the command line, then all
         interface file in scope are considered to be 'normal'.
      94ff1ec1
  17. 15 Feb, 1999 1 commit
  18. 04 Feb, 1999 1 commit
    • simonpj's avatar
      [project @ 1999-02-04 13:45:24 by simonpj] · 937b23b9
      simonpj authored
      a) Fix black hole bug when doing -dshow-rn-trace
         (Involved reorganising where fixity exports are dealt with
          in RnNames/RnIfaces.)
      
      b) Arrange to apply Lint to imported unfoldings when -dcore-lint
      
      c) Add -fwarn-type-defaults to report use of the defaulting rules for types
      
      d) Make it so that f (error "help) --> error "help", if f is strict
         (Changes in Simplify.lhs.)
      937b23b9
  19. 28 Jan, 1999 1 commit
  20. 27 Jan, 1999 1 commit
    • simonpj's avatar
      [project @ 1999-01-27 14:51:14 by simonpj] · 18976e61
      simonpj authored
      Finally!  This commits the ongoing saga of Simon's hygiene sweep
      
      FUNCTIONALITY
      ~~~~~~~~~~~~~
      a) The 'unused variable' warnings from the renamer work.  
      b) Better error messages here and there, esp type checker
      c) Fixities for Haskell 98 (maybe I'd done that before)
      d) Lazy reporting of name clashes for Haskell 98 (ditto)
      
      HYGIENE
      ~~~~~~~
      a) type OccName has its own module.  OccNames are represented
         by a single FastString, not three as in the last round.  This
         string is held in Z-encoded form; a decoding function decodes
         for printing in user error messages.  There's a nice tight
         encoding for (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)
      
      b) type Module is a proper ADT, in module OccName
      
      c) type RdrName is a proper ADT, in its own module
      
      d) type Name has a new, somwhat tidier, representation
      
      e) much grunting in the renamer to get Provenances right.
         This makes error messages look better (no spurious qualifiers)
      18976e61
  21. 14 Jan, 1999 1 commit
    • sof's avatar
      [project @ 1999-01-14 17:58:41 by sof] · 3160f854
      sof authored
      Assorted minor Haskell 98 changes:
      
        * Maximal munch rule for "--" comments
        * _ as lower-case letter, "_" is a reserved id. Prefixing unused
          variable names in patterns with '_' causes the renamer not to
          report such names as being unused.
        * allow empty decls
        * comprehensions are now list comprehensions, not monadic.
        * use Monad.fail to signal pattern matching errors within
          do expressions.
        * remove record punning.
        * empty contexts are now legal  (go wild!)
        * allow records with no fields
        * allow newtypes with a labelled field
        * default default is now (Integer, Double)
        * turn off defaulting mechanism for args & res to a _ccall_.
        * allow LHSs of the form  (a -.- b) x = ...
        * Main.main can now have type (IO a)
        * nuked Void (and its use in the compiler sources.)
        * deriving machinery for Enum now also generate 'succ' and 'pred'
          method bindings.
      3160f854
  22. 07 Jan, 1999 1 commit
  23. 18 Dec, 1998 1 commit
    • simonpj's avatar
      [project @ 1998-12-18 17:40:31 by simonpj] · 7e602b0a
      simonpj authored
      Another big commit from Simon.  Actually, the last one
      didn't all go into the main trunk; because of a CVS glitch it
      ended up in the wrong branch.
      
      So this commit includes:
      
      * Scoped type variables
      * Warnings for unused variables should work now (they didn't before)
      * Simplifier improvements:
      	- Much better treatment of strict arguments
      	- Better treatment of bottoming Ids
      	- No need for w/w split for fns that are merely strict
      	- Fewer iterations needed, I hope
      * Less gratuitous renaming in interface files and abs C
      * OccName is a separate module, and is an abstract data type
      
      I think the whole Prelude and Exts libraries compile correctly.
      Something isn't quite right about typechecking existentials though.
      7e602b0a
  24. 02 Dec, 1998 1 commit
  25. 14 Aug, 1998 1 commit
  26. 23 Jul, 1998 1 commit
  27. 21 Jul, 1998 1 commit
  28. 20 Jul, 1998 1 commit
  29. 01 Jun, 1998 1 commit
  30. 04 May, 1998 1 commit
  31. 30 Apr, 1998 1 commit
  32. 25 Feb, 1998 1 commit
    • sof's avatar
      [project @ 1998-02-25 19:29:52 by sof] · 6af6951b
      sof authored
      Dictionaries are now named as follows:
      
        $d<class><tycon><n>
      
      where "n" is a positive int, "tycon" is the name of the tyvar/tycon
      of the first argument to the "class" that the dict represent an
      instance of.
      
      The change should improve the behaviour of the recompilation
      checker, preventing the recompilation of all the dependents
      of a module whenever a data type of instance is added to it.
      (The common behaviour should be no recompilations, but there
      are cases where the naming scheme fails to prevent a recompile.)
      6af6951b
  33. 09 Feb, 1998 1 commit
  34. 03 Feb, 1998 1 commit
    • simonm's avatar
      [project @ 1998-02-03 17:13:54 by simonm] · be33dbc9
      simonm authored
      - Fixes for bootstrapping with 3.01.
        - Use 'official' extension interfaces rather than internal prelude
          modules (such as ArrBase) where possible.
        - Remove some cruft.
        - Delete some unused imports found by '-fwarn-unused-imports'.
      be33dbc9
  35. 02 Feb, 1998 1 commit
    • simonm's avatar
      [project @ 1998-02-02 14:52:08 by simonm] · 87fe9c34
      simonm authored
      Split -fwarn-unused-names into
      
      	-fwarn-unused-imports	 Warn about unused explicit imports. (in -W)
      	-fwarn-unused-binds	 Warn about unused bindings	     (in -W)
      	-fwarn-unused-matches    Warn about unused names in pattern matches
      				 (not as useful, relegated to -Wall)
      87fe9c34
  36. 08 Jan, 1998 1 commit
    • simonm's avatar
      [project @ 1998-01-08 18:03:08 by simonm] · 9dd6e1c2
      simonm authored
      The Great Multi-Parameter Type Classes Merge.
      
      Notes from Simon (abridged):
      
      * Multi-parameter type classes are fully implemented.
      * Error messages from the type checker should be noticeably improved
      * Warnings for unused bindings (-fwarn-unused-names)
      * many other minor bug fixes.
      
      Internally there are the following changes
      
      * Removal of Haskell 1.2 compatibility.
      * Dramatic clean-up of the PprStyle stuff.
      * The type Type has been substantially changed.
      * The dictionary for each class is represented by a new
        data type for that purpose, rather than by a tuple.
      9dd6e1c2
  37. 12 Aug, 1997 1 commit
  38. 25 Jul, 1997 1 commit
  39. 05 Jul, 1997 1 commit
  40. 05 Jun, 1997 1 commit