1. 11 Oct, 2000 8 commits
  2. 10 Oct, 2000 10 commits
    • simonmar's avatar
      [project @ 2000-10-10 16:31:26 by simonmar] · b3ee0636
      simonmar authored
      driver<->hsc deforestation continues; classifyOpts isn't needed any more
      b3ee0636
    • sewardj's avatar
      [project @ 2000-10-10 16:21:33 by sewardj] · ab3e2229
      sewardj authored
      Spadework for getting ModuleName -> Module maps in the right places.
      Also start to expand short names (PCS) to PersistentCompilerState, etc.
      ab3e2229
    • simonpj's avatar
      [project @ 2000-10-10 16:02:43 by simonpj] · 98a20850
      simonpj authored
      Back out changes to TcMonoType that didn't work right.
      
      These changes are now done correctly on the before-ghci-branch,
      and so will get merged in later.
      98a20850
    • simonmar's avatar
      [project @ 2000-10-10 15:42:32 by simonmar] · 4d9a3241
      simonmar authored
      Define HscLang, the output format of hsc.
      
      Remove opt_OutputLanguage, opt_OutputFile, and a few other flags which
      we're going to do through DynFlags or directly as arguments to hscLang now.
      4d9a3241
    • simonmar's avatar
      [project @ 2000-10-10 13:25:19 by simonmar] · 7100c98b
      simonmar authored
      The driver, more or less verbatim copied from ghc/driver/Main.hs.
      
      THE PLAN: the main body of the driver will eventually sit between the
      compilation manager and HscMain, providing all the grotty services
      like compilation of .hc files.
      
      Some other parts of the driver, eg. flag parsing, will remain at the
      front end.
      7100c98b
    • simonmar's avatar
      [project @ 2000-10-10 13:21:10 by simonmar] · 015975f7
      simonmar authored
      Temporary file management, broken out of the driver.
      015975f7
    • simonmar's avatar
      [project @ 2000-10-10 13:20:38 by simonmar] · 35fb1e38
      simonmar authored
      Main is now HscMain: this will transform eventually into the
      compiler's entry point.
      
      CmdLineOpts now separates flags into static flags and dynamic flags;
      dynamic flags will be passed around explicitly and can therefore
      change from compilation to compilation.  All the dump flags and a few
      language flags (like -fglasgow-exts) are currently DynFlags.
      
      NOTE: nothing will now compile, for a long while until we get all this
      connected up.  This commit is so that we start pulling in the same
      direction.
      35fb1e38
    • simonmar's avatar
      [project @ 2000-10-10 13:14:30 by simonmar] · 560cdb21
      simonmar authored
      export getImports; mkdependHS will need it.
      560cdb21
    • simonmar's avatar
      [project @ 2000-10-10 13:13:17 by simonmar] · e7317b1e
      simonmar authored
      Build main/Config.hs (cut-n-paste from driver/Makefile)
      e7317b1e
    • sewardj's avatar
      [project @ 2000-10-10 12:20:46 by sewardj] · fbadd1f6
      sewardj authored
      * Get more of the compilation manager working, using a dummy compiler
        and linker.
      * When linking, figure out the set of packages which need to be linked.
      * Redo package config plumbing to support the above.  Some stuff has
        moved from CmFind to CmStaticInfo.
      * Get rid of FLAGS entirely.
      fbadd1f6
  3. 09 Oct, 2000 2 commits
  4. 06 Oct, 2000 6 commits
  5. 05 Oct, 2000 7 commits
  6. 04 Oct, 2000 1 commit
  7. 03 Oct, 2000 3 commits
    • qrczak's avatar
      [project @ 2000-10-03 14:35:31 by qrczak] · 85339386
      qrczak authored
      Added eqString_RDR to implicitFVs.
      85339386
    • simonpj's avatar
      [project @ 2000-10-03 08:43:00 by simonpj] · 710e2074
      simonpj authored
      --------------------------------------
      	Adding generics		SLPJ Oct 2000
      	--------------------------------------
      
      This big commit adds Hinze/PJ-style generic class definitions, based
      on work by Andrei Serjantov.  For example:
      
        class Bin a where
          toBin   :: a -> [Int]
          fromBin :: [Int] -> (a, [Int])
      
          toBin {| Unit |}    Unit	  = []
          toBin {| a :+: b |} (Inl x)   = 0 : toBin x
          toBin {| a :+: b |} (Inr y)   = 1 : toBin y
          toBin {| a :*: b |} (x :*: y) = toBin x ++ toBin y
      
      
          fromBin {| Unit |}    bs      = (Unit, bs)
          fromBin {| a :+: b |} (0:bs)  = (Inl x, bs')    where (x,bs') = fromBin bs
          fromBin {| a :+: b |} (1:bs)  = (Inr y, bs')    where (y,bs') = fromBin bs
          fromBin {| a :*: b |} bs  	  = (x :*: y, bs'') where (x,bs' ) = fromBin bs
      							  (y,bs'') = fromBin bs'
      
      Now we can say simply
      
        instance Bin a => Bin [a]
      
      and the compiler will derive the appropriate code automatically.
      
      		(About 9k lines of diffs.  Ha!)
      
      
      Generic related things
      ~~~~~~~~~~~~~~~~~~~~~~
      
      * basicTypes/BasicTypes: The EP type (embedding-projection pairs)
      
      * types/TyCon:
      	An extra field in an algebraic tycon (genInfo)
      
      * types/Class, and hsSyn/HsBinds:
      	Each class op (or ClassOpSig) carries information about whether
      	it  	a) has no default method
      		b) has a polymorphic default method
      		c) has a generic default method
      	There's a new data type for this: Class.DefMeth
      
      * types/Generics:
      	A new module containing good chunk of the generic-related code
      	It has a .hi-boot file (alas).
      
      * typecheck/TcInstDcls, typecheck/TcClassDcl:
      	Most of the rest of the generics-related code
      
      * hsSyn/HsTypes:
      	New infix type form to allow types of the form
      		data a :+: b = Inl a | Inr b
      
      * parser/Parser.y, Lex.lhs, rename/ParseIface.y:
      	Deal with the new syntax
      
      * prelude/TysPrim, TysWiredIn:
      	Need to generate generic stuff for the wired-in TyCons
      
      * rename/RnSource RnBinds:
      	A rather gruesome hack to deal with scoping of type variables
      	from a generic patterns.  Details commented in the ClassDecl
      	case of RnSource.rnDecl.
      
      	Of course, there are many minor renamer consequences of the
      	other changes above.
      
      * lib/std/PrelBase.lhs
      	Data type declarations for Unit, :+:, :*:
      
      
      Slightly unrelated housekeeping
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      * hsSyn/HsDecls:
      	ClassDecls now carry the Names for their implied declarations
      	(superclass selectors, tycon, etc) in a list, rather than
      	laid out one by one.  This simplifies code between the parser
      	and the type checker.
      
      * prelude/PrelNames, TysWiredIn:
      	All the RdrNames are now together in PrelNames.
      
      * utils/ListSetOps:
      	Add finite mappings based on equality and association lists (Assoc a b)
      	Move stuff from List.lhs that is related
      710e2074
    • simonpj's avatar
      [project @ 2000-10-03 08:29:30 by simonpj] · af099cc1
      simonpj authored
      Remove dead code mkLookupFun
      af099cc1
  8. 02 Oct, 2000 3 commits