1. 25 Jun, 1999 1 commit
  2. 17 Jun, 1999 1 commit
  3. 21 May, 1999 1 commit
  4. 18 May, 1999 1 commit
  5. 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
  6. 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
  7. 15 Feb, 1999 1 commit
  8. 28 Jan, 1999 3 commits
    • simonpj's avatar
      [project @ 1999-01-28 14:22:15 by simonpj] · fa9f19cc
      simonpj authored
      Fix erroneous name-clash report when a module ends up importing itself (eg TcEnv)
      fa9f19cc
    • simonm's avatar
      [project @ 1999-01-28 13:03:02 by simonm] · b84f982a
      simonm authored
      Remove unnecessary (and non-H98-friendly) import.
      b84f982a
    • simonpj's avatar
      [project @ 1999-01-28 09:19:57 by simonpj] · b70e2f94
      simonpj authored
      Always inline nullary constructors.  This makes a 
      difference in:
      
      	case x ># y of r {
      	  True  -> f1 r
      	  False -> f2 r
       	}
      
      The code generator currently has difficulty binding "r"
      to the boolean result of the comparision (and the compiler
      crashes).  This fix substitutes for r, thus:
      
      	case x ># y of r {
      	  True  -> f1 True
      	  False -> f2 False
       	}
      
      Voila.
      b70e2f94
  9. 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
  10. 19 Jan, 1999 1 commit
    • sof's avatar
      [project @ 1999-01-19 11:39:44 by sof] · fc34a535
      sof authored
      mkExportAvails: remove NotAvailable entries corresponding
      to 'hidden' entities from 'unqual_avails'. Not needed and
      leaving them in causes bother later on in the renamer.
      
      This fixes the problem of compiling
      
         module B ( module A ) where { import A hiding ( a ) }
      
      Regression test added to check for this - will commit soon.
      fc34a535
  11. 15 Jan, 1999 1 commit
  12. 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
  13. 07 Jan, 1999 2 commits
  14. 05 Jan, 1999 1 commit
  15. 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
  16. 02 Dec, 1998 1 commit
  17. 14 Aug, 1998 1 commit
  18. 07 Apr, 1998 2 commits
  19. 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
  20. 10 Feb, 1998 2 commits
  21. 03 Feb, 1998 2 commits
    • sof's avatar
      [project @ 1998-02-03 22:20:10 by sof] · 82c39e15
      sof authored
      Support for assertions:
        - if `assert' is not a variable name within
          scope, it is expanded to (GHCerr.assert__ <srcLoc>),
      
             GHCerr.assert__ :: String -> Bool -> a -> a
      
          where <srcLoc> encodes module name plus line number
          of the assertion.
        - enabled with -fglasgow-exts
      82c39e15
    • 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
  22. 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
  23. 29 Jan, 1998 1 commit
  24. 12 Jan, 1998 1 commit
  25. 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
  26. 24 Nov, 1997 1 commit
  27. 25 Aug, 1997 1 commit
  28. 05 Jul, 1997 1 commit
  29. 20 Jun, 1997 1 commit
  30. 18 Jun, 1997 1 commit
  31. 05 Jun, 1997 1 commit
  32. 26 May, 1997 1 commit
  33. 19 May, 1997 2 commits