summaryrefslogtreecommitdiff
path: root/ghc/compiler/iface
Commit message (Collapse)AuthorAgeFilesLines
...
* [project @ 2004-12-21 08:52:54 by simonpj]simonpj2004-12-211-1/+0
| | | | Comment only
* [project @ 2004-12-15 12:14:06 by simonpj]simonpj2004-12-151-0/+4
| | | | comment
* [project @ 2004-12-02 17:18:15 by simonpj]simonpj2004-12-022-7/+8
| | | | | | | | | | | | Sorry for the fact that there are overlapping three commits in here... 1. Make -fno-monomorphism-restriction and -fno-implicit-prelude reversible, like other flags 2. Fix a wibble in the new ImportAvails story, in RnNames.mkExportAvails 3. Fix a Template Haskell bug that meant that top-level names created with newName were not made properly unique.
* [project @ 2004-11-29 16:24:16 by simonpj]simonpj2004-11-292-2/+2
| | | | Trim imports
* [project @ 2004-11-29 11:35:43 by simonmar]simonmar2004-11-291-2/+2
| | | | Don't quote package names
* [project @ 2004-11-26 16:19:45 by simonmar]simonmar2004-11-267-159/+177
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Further integration with the new package story. GHC now supports pretty much everything in the package proposal. - GHC now works in terms of PackageIds (<pkg>-<version>) rather than just package names. You can still specify package names without versions on the command line, as long as the name is unambiguous. - GHC understands hidden/exposed modules in a package, and will refuse to import a hidden module. Also, the hidden/eposed status of packages is taken into account. - I had to remove the old package syntax from ghc-pkg, backwards compatibility isn't really practical. - All the package.conf.in files have been rewritten in the new syntax, and contain a complete list of modules in the package. I've set all the versions to 1.0 for now - please check your package(s) and fix the version number & other info appropriately. - New options: -hide-package P sets the expose flag on package P to False -ignore-package P unregisters P for this compilation For comparison, -package P sets the expose flag on package P to True, and also causes P to be linked in eagerly. -package-name is no longer officially supported. Unofficially, it's a synonym for -ignore-package, which has more or less the same effect as -package-name used to. Note that a package may be hidden and yet still be linked into the program, by virtue of being a dependency of some other package. To completely remove a package from the compiler's internal database, use -ignore-package. The compiler will complain if any two packages in the transitive closure of exposed packages contain the same module. You *must* use -ignore-package P when compiling modules for package P, if package P (or an older version of P) is already registered. The compiler will helpfully complain if you don't. The fptools build system does this. - Note: the Cabal library won't work yet. It still thinks GHC uses the old package config syntax. Internal changes/cleanups: - The ModuleName type has gone away. Modules are now just (a newtype of) FastStrings, and don't contain any package information. All the package-related knowledge is in DynFlags, which is passed down to where it is needed. - DynFlags manipulation has been cleaned up somewhat: there are no global variables holding DynFlags any more, instead the DynFlags are passed around properly. - There are a few less global variables in GHC. Lots more are scheduled for removal. - -i is now a dynamic flag, as are all the package-related flags (but using them in {-# OPTIONS #-} is Officially Not Recommended). - make -j now appears to work under fptools/libraries/. Probably wouldn't take much to get it working for a whole build.
* [project @ 2004-11-25 11:36:34 by simonpj]simonpj2004-11-252-7/+14
| | | | | | | | | | | | | | | | | | | | | | | | | ------------------------------------------ Keep-alive set and Template Haskell quotes ------------------------------------------ a) Template Haskell quotes should be able to mention top-leve things without resorting to lifting. Example module Foo( foo ) where f x = x foo = [| f 4 |] Here the reference to 'f' is ok; no need to 'lift' it. The relevant changes are in TcExpr.tcId b) However, we must take care not to discard the binding for f, so we add it to the 'keep-alive' set for the module. I've now made this into (another) mutable bucket, tcg_keep, in the TcGblEnv c) That in turn led me to look at the handling of orphan rules; as a result I made IdCoreRule into its own data type, which has simle but non-local ramifications
* [project @ 2004-10-20 13:34:04 by simonpj]simonpj2004-10-202-15/+15
| | | | | | | | | | | | | | | | | | | | --------------------------------- Fix a bug in usage recording --------------------------------- As a result of the new stuff on hi-boot-file consistency checking, I accidentally caused Foo.hi to record a usage line for module Foo, and this in turn caused rather nasty bad things to happen. In particular, there were occasional crashes of form ghc-6.3: panic! (the `impossible' happened, GHC version 6.3.20041017): forkM Constructor Var.TcTyVar{d r1B9} At least I think that's why the crash happened. Anyway, it was certainly a bug, and this commit fixes it. The main payload of this fix is in Desugar.lhs; the rest is comments and tidying.
* [project @ 2004-10-08 11:36:26 by simonpj]simonpj2004-10-081-2/+2
| | | | Fix missing case for algTyConRhs; fixes test ghci011
* [project @ 2004-10-07 16:08:36 by simonpj]simonpj2004-10-072-6/+9
| | | | Wibbles to hi-boot files and newtypes
* [project @ 2004-10-01 13:42:04 by simonpj]simonpj2004-10-013-15/+19
| | | | | | | | | | | | | | | | | | | | | | | | | ------------------------------------ Simplify the treatment of newtypes Complete hi-boot file consistency checking ------------------------------------ In the representation of types, newtypes used to have a special constructor all to themselves, very like TyConApp, called NewTcApp. The trouble is that means we have to *know* when a newtype is a newtype, and in an hi-boot context we may not -- the data type might be declared as data T in the hi-boot file, but as newtype T = ... in the source file. In GHCi, which accumulates stuff from multiple compiles, this makes a difference. So I've nuked NewTcApp. Newtypes are represented using TyConApps again. This turned out to reduce the total amount of code, and simplify the Type data type, which is all to the good. This commit also fixes a few things in the hi-boot consistency checking stuff.
* [project @ 2004-10-01 10:08:49 by simonpj]simonpj2004-10-011-2/+31
| | | | | | | | | | | | | ----------------------------------- Do simple checking on hi-boot files ----------------------------------- This commit arranges that, when compiling A.hs, we compare the types we infer with those in A.hi-boot, if the latter exists. (Or, more accurately, if anything A.hs imports in turn imports A.hi-boot, directly or indirectly.) This has been on the to-do list forever.
* [project @ 2004-09-30 10:35:15 by simonpj]simonpj2004-09-308-306/+375
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ------------------------------------ Add Generalised Algebraic Data Types ------------------------------------ This rather big commit adds support for GADTs. For example, data Term a where Lit :: Int -> Term Int App :: Term (a->b) -> Term a -> Term b If :: Term Bool -> Term a -> Term a ..etc.. eval :: Term a -> a eval (Lit i) = i eval (App a b) = eval a (eval b) eval (If p q r) | eval p = eval q | otherwise = eval r Lots and lots of of related changes throughout the compiler to make this fit nicely. One important change, only loosely related to GADTs, is that skolem constants in the typechecker are genuinely immutable and constant, so we often get better error messages from the type checker. See TcType.TcTyVarDetails. There's a new module types/Unify.lhs, which has purely-functional unification and matching for Type. This is used both in the typechecker (for type refinement of GADTs) and in Core Lint (also for type refinement).
* [project @ 2004-08-25 10:33:52 by simonpj]simonpj2004-08-251-3/+3
| | | | Fix typo that caused non -O to see unfoldings
* [project @ 2004-08-17 15:23:47 by simonpj]simonpj2004-08-171-7/+7
| | | | | | | | | | | | | | | | ------------------------------- Use merge-sort not quicksort Nuke quicksort altogether ------------------------------- Quicksort has O(n**2) behaviour worst case, and this occasionally bites. In particular, when compiling large files consisting only of static data, we get loads of top-level delarations -- and that led to more than half the total compile time being spent in the strongly connected component analysis for the occurrence analyser. Switching to merge sort completely solved the problem. I've nuked quicksort altogether to make sure this does not happen again.
* [project @ 2004-08-16 09:53:47 by simonpj]simonpj2004-08-167-390/+329
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ------------------------------- Add instance information to :i Get rid of the DeclPool ------------------------------- 1. Add instance information to :info command. GHCi now prints out which instances a type or class belongs to, when you use :i 2. Tidy up printing of unqualified names in user output. Previously Outputable.PrintUnqualified was type PrintUnqualified = Name -> Bool but it's now type PrintUnqualified = ModuleName -> OccName -> Bool This turns out to be tidier even for Names, and it's now also usable when printing IfaceSyn stuff in GHCi, eliminating a grevious hack. 3. On the way to doing this, Simon M had the great idea that we could get rid of the DeclPool holding pen, which held declarations read from interface files but not yet type-checked. We do this by eagerly populating the TypeEnv with thunks what, when poked, do the type checking. This is just a logical continuation of lazy import mechanism we've now had for some while. The InstPool and RulePool still exist, but I plan to get rid of them in the same way. The new scheme does mean that more rules get sucked in than before, because previously the TypeEnv was used to mean "this thing was needed" and hence to control which rules were sucked in. But now the TypeEnv is populated more eagerly => more rules get sucked in. However this problem will go away when I get rid of the Inst and Rule pools. I should have kept these changes separate, but I didn't. Change (1) affects mainly TcRnDriver, HscMain, CompMan, InteractiveUI whereas change (3) is more wide ranging.
* [project @ 2004-07-28 12:59:14 by simonpj]simonpj2004-07-281-2/+6
| | | | Fix GHCi buglet when browsing module
* [project @ 2004-07-21 09:25:42 by simonpj]simonpj2004-07-211-20/+9
| | | | | | | | | | | ------------------------------- Sort out the :i command for GHCi ------------------------------- The :info command has been broken in the HEAD for some time, since the new IfaceSyn story. This commit sorts it out, and makes it nicer than before. For example, when you :i a record selector, you get a cut-down data type declaration, so you can see the context.
* [project @ 2004-06-22 11:03:42 by simonpj]simonpj2004-06-221-2/+1
| | | | | | | | ----------------------------------------------- Improve reporting of TH reify out-of-scope errors ----------------------------------------------- No change to functionality, just better error reports.
* [project @ 2004-06-02 08:25:10 by simonpj]simonpj2004-06-026-30/+37
| | | | | | | | | | | | | | | | | | ----------------------------------------------- Record whether data constructors are declared infix ----------------------------------------------- This allows us to generate the InfixC form in Template Hasekll. And for 'deriving' Read and Show, we now read and parse the infix form iff the constructor was declared infix, rather than just if it does not have the default fixity (as before). IfaceSyn changes slightly, so that IfaceConDecl can record their fixity, so there are trivial changes scattered about, and you'll need to recompile everything. In TysWiredIn I took the opportunity to simplify pcDataCon slightly, by eliminating the unused Theta argument.
* [project @ 2004-05-25 08:09:37 by simonpj]simonpj2004-05-251-2/+2
| | | | | | | | | ----------------------------------------------- Improve location info on unused-import warnings ----------------------------------------------- Improving the location involves plumbing the location of the import a bit more assiduously -- hence change to imp_mods in TcRnTypes
* [project @ 2004-05-24 02:49:07 by dons]dons2004-05-241-1/+1
| | | | spelling mistake in comment only
* [project @ 2004-04-21 12:45:54 by simonpj]simonpj2004-04-211-4/+6
| | | | | | | | | | | | | | | | | Do a much better job of slurping RULES. Now that stuff is slurped in lazily, as the simplifier pokes on it, we may not get the rules as early as we might wish. In the current HEAD, no new rules are slurped in after the beginning of SimplCore, and that means we permanently miss many rules. This commit arranges that every time round the simplifier loop we slurp in any new rules, and put them into the in-scope set, where the simplifier can find them. It's still possible that a rule might be slurped in a little later than in earlier versions of GHC, leading to more simplifier iterations, but let's see if that turns out to be a problem in practice.
* [project @ 2004-04-21 12:36:51 by simonpj]simonpj2004-04-212-9/+11
| | | | | | | | | | | | | | Elaborate IfaceSyn.HsWorker to give the full IfaceExtName of the worker, rather than just the internal OccName. Very occasionally, the worker for a function in module A turns out to be (by simplification) a function defined in module B. So we must remember the module. This shows up in package ObjectIO, Graphics.UI.ObjectIO.OS.Window.osValidateWindowRect which has a worker Graphics.UI.ObjectIO.OS.WindowCCall_12.$wwinValidateRect *** Unfortunately this changes the binary format of hi files slightly, so *** you'll have to recompile all your libraries from scratch.
* [project @ 2004-04-02 13:19:28 by simonpj]simonpj2004-04-024-54/+53
| | | | | | | | | | | | | | | | | Get rid of DiscardedInfo, and fix a Ghci bug at the same time. The new story is this: - We always read the whole interface file, as it exists on disk, not dropping pragmas or anything. - We compare that from-the-disk copy with the new version before writing the new interface file. - We drop the pragmas a) Before loading the interface payload into the declaration pools b) In the no-need-to-recompile case, before typechecking the interface decls. Omitting this was the previous bug.
* [project @ 2004-03-17 13:59:06 by simonpj]simonpj2004-03-176-141/+151
| | | | | | | | | | | | | | | | | | | | | | | | | ------------------------ More newtype clearing up ------------------------ * Change the representation of TyCons so that it accurately reflects * data (0 or more constrs) * newtype (1 constr) * abstract (unknown) Replaces DataConDetails and AlgTyConFlavour with AlgTyConRhs * Add IfaceSyn.IfaceConDecls, a kind of stripped-down analogue of AlgTyConRhs * Move NewOrData from BasicTypes to HsDecl (it's now an HsSyn thing) * Arrange that Type.newTypeRep and splitRecNewType_maybe unwrap just one layer of new-type-ness, leaving the caller to recurse. This still leaves typeRep and repType in Type.lhs; these functions are still vaguely disturbing and probably should get some attention. Lots of knock-on changes. Fixes bug in ds054.
* [project @ 2004-03-11 14:31:35 by simonpj]simonpj2004-03-111-4/+15
| | | | Sanity checking
* [project @ 2004-03-11 14:31:13 by simonpj]simonpj2004-03-111-1/+1
| | | | Comments
* [project @ 2004-03-05 16:04:05 by simonmar]simonmar2004-03-051-1/+16
| | | | | Fail with an error if the interface file we're reading doesn't contain the module we were expecting.
* [project @ 2004-02-25 13:54:30 by simonpj]simonpj2004-02-251-15/+26
| | | | | | | | | | | Yet another fix to the -Onot optimisation that hides data type representations in .hi files. 1. Expose the representation if any fields are exposed 2. Don't expose newtypes whose data-cons are abstract, unless the rep type is a FFI type. (Previously we were more conservative and always exposed newtypes, just in case of a foreign decl.)
* [project @ 2004-02-10 17:55:24 by simonpj]simonpj2004-02-101-3/+11
| | | | Always expose newtypes, at least for now (see comments)
* [project @ 2004-01-23 13:46:49 by simonmar]simonmar2004-01-231-1/+1
| | | | typo
* [project @ 2004-01-12 14:36:28 by simonpj]simonpj2004-01-123-21/+70
| | | | Wibbles to exporting types abstractly
* [project @ 2004-01-05 12:11:42 by simonpj]simonpj2004-01-052-38/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | --------------------------------------- Don't expose constructors as vigorously --------------------------------------- GHC used to expose the constructors of a data type in the interface file, even if (a) we were not optimising, and (b) the constructors are not exported. In practice this isn't really necessary, and it's bad because it forces too much recompilation. I've been meaning to fix this for some while. Now the data cons are hidden, even in the interface file, if both (a) and (b) are true. That means less interface file wobbling. Mind you, the interface file still changes, because the to/from functions for generic type classes change their types. But provided you don't use them, you'll get "compilation not required". We could play the same game for classes (by hiding their class ops) but that'd mean we'd have to change the data type for IfaceClassDecl, and I can't be bothered to do that today. It's unusual to have a class which exports none of its methods anyway. On the way, I changed the representation of tcg_exports and mg_exports (from Avails to NameSet), but that should be externally invisible.
* [project @ 2003-12-31 08:21:52 by simonpj]simonpj2003-12-311-2/+1
| | | | Trim imports
* [project @ 2003-12-30 16:29:17 by simonpj]simonpj2003-12-304-61/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ---------------------------- Re-do kind inference (again) ---------------------------- [WARNING: interface file binary representation has (as usual) changed slightly; recompile your libraries!] Inspired by the lambda-cube, for some time GHC has used type Kind = Type That is, kinds were represented by the same data type as types. But GHC also supports unboxed types and unboxed tuples, and these complicate the kind system by requiring a sub-kind relationship. Notably, an unboxed tuple is acceptable as the *result* of a function but not as an *argument*. So we have the following setup: ? / \ / \ ?? (#) / \ * # where * [LiftedTypeKind] means a lifted type # [UnliftedTypeKind] means an unlifted type (#) [UbxTupleKind] means unboxed tuple ?? [ArgTypeKind] is the lub of *,# ? [OpenTypeKind] means any type at all In particular: error :: forall a:?. String -> a (->) :: ?? -> ? -> * (\(x::t) -> ...) Here t::?? (i.e. not unboxed tuple) All this has beome rather difficult to accommodate with Kind=Type, so this commit splits the two. * Kind is a distinct type, defined in types/Kind.lhs * IfaceType.IfaceKind disappears: we just re-use Kind.Kind * TcUnify.unifyKind is a distinct unifier for kinds * TyCon no longer needs KindCon and SuperKindCon variants * TcUnify.zapExpectedType takes an expected Kind now, so that in TcPat.tcMonoPatBndr we can express that the bound variable must have an argTypeKind (??). The big change is really that kind inference is much more systematic and well behaved. In particular, a kind variable can unify only with a "simple kind", which is built from * and (->). This deals neatly with awkward questions about how we can combine sub-kinding with type inference. Lots of small consequential changes, especially to the kind-checking plumbing in TcTyClsDecls. (We played a bit fast and loose before, and now we have to be more honest, in particular about how kind inference works for type synonyms. They can have kinds like (* -> #), so This cures two long-standing SourceForge bugs * 753777 (tcfail115.hs), which used erroneously to pass, but crashed in the code generator type T a = Int -> (# Int, Int #) f :: T a -> T a f t = \x -> case t x of r -> r * 753780 (tc167.hs), which used erroneously to fail f :: (->) Int# Int# Still, the result is not entirely satisfactory. In particular * The error message from tcfail115 is pretty obscure * SourceForge bug 807249 (Instance match failure on openTypeKind) is not fixed. Alas.
* [project @ 2003-12-17 11:43:13 by simonpj]simonpj2003-12-171-2/+3
| | | | | | | | | | | | | --------------------------------- Gate in a few more instance decls --------------------------------- When we have instance T a where... we need to suck in the instance decl rather more aggressively than we were. (A case I hadn't thought of because it only happens with undecideable instances.)
* [project @ 2003-12-16 16:21:42 by simonpj]simonpj2003-12-161-3/+3
| | | | Remove unused parameter to groupAvails
* [project @ 2003-12-16 16:19:04 by simonpj]simonpj2003-12-161-1/+1
| | | | Rule selection test was exactly backwards
* [project @ 2003-12-10 14:15:16 by simonmar]simonmar2003-12-102-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add accurate source location annotations to HsSyn ------------------------------------------------- Every syntactic entity in HsSyn is now annotated with a SrcSpan, which details the exact beginning and end points of that entity in the original source file. All honest compilers should do this, and it was about time GHC did the right thing. The most obvious benefit is that we now have much more accurate error messages; when running GHC inside emacs for example, the cursor will jump to the exact location of an error, not just a line somewhere nearby. We haven't put a huge amount of effort into making sure all the error messages are accurate yet, so there could be some tweaking still needed, although the majority of messages I've seen have been spot-on. Error messages now contain a column number in addition to the line number, eg. read001.hs:25:10: Variable not in scope: `+#' To get the full text span info, use the new option -ferror-spans. eg. read001.hs:25:10-11: Variable not in scope: `+#' I'm not sure whether we should do this by default. Emacs won't understand the new error format, for one thing. In a more elaborate editor setting (eg. Visual Studio), we can arrange to actually highlight the subexpression containing an error. Eventually this information will be used so we can find elements in the abstract syntax corresponding to text locations, for performing high-level editor functions (eg. "tell me the type of this expression I just highlighted"). Performance of the compiler doesn't seem to be adversely affected. Parsing is still quicker than in 6.0.1, for example. Implementation: This was an excrutiatingly painful change to make: both Simon P.J. and myself have been working on it for the last three weeks or so. The basic changes are: - a new datatype SrcSpan, which represents a beginning and end position in a source file. - To reduce the pain as much as possible, we also defined: data Located e = L SrcSpan e - Every datatype in HsSyn has an equivalent Located version. eg. type LHsExpr id = Located (HsExpr id) and pretty much everywhere we used to use HsExpr we now use LHsExpr. Believe me, we thought about this long and hard, and all the other options were worse :-) Additional changes/cleanups we made at the same time: - The abstract syntax for bindings is now less arcane. MonoBinds and HsBinds with their built-in list constructors have gone away, replaced by HsBindGroup and HsBind (see HsSyn/HsBinds.lhs). - The various HsSyn type synonyms have now gone away (eg. RdrNameHsExpr, RenamedHsExpr, and TypecheckedHsExpr are now HsExpr RdrName, HsExpr Name, and HsExpr Id respectively). - Utilities over HsSyn are now collected in a new module HsUtils. More stuff still needs to be moved in here. - MachChar now has a real Char instead of an Int. All GHC versions that can compile GHC now support 32-bit Chars, so this was a simplification.
* [project @ 2003-11-17 14:23:30 by simonmar]simonmar2003-11-172-2/+2
| | | | | | GC some dead code. In some places, I left useful-looking but currently unused definitions in place, surrounded by #ifdef UNUSED ... #endif.
* [project @ 2003-11-10 11:23:54 by simonmar]simonmar2003-11-102-9/+18
| | | | | | | | | | Make 'ghc --show-iface' give a reasonable error message on old interface files again. We previously disabled the version check for --show-iface so that you could run --show-iface on a profiled interface file, but this disabled too much error checking. Really we just want to disable the 'way' check, not the whole version check. HEADS UP: interface format changed. Recompile libraries.
* [project @ 2003-11-06 17:09:50 by simonpj]simonpj2003-11-061-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ------------------------------------ Major increment for Template Haskell ------------------------------------ 1. New abstract data type "Name" which appears where String used to be. E.g. data Exp = VarE Name | ... 2. New syntax 'x and ''T, for quoting Names. It's rather like [| x |] and [t| T |] respectively, except that a) it's non-monadic: 'x :: Name b) you get a Name not an Exp or Type 3. reify is an ordinary function reify :: Name -> Q Info New data type Info which tells what TH knows about Name 4. Local variables work properly. So this works now (crashed before): f x = $( [| x |] ) 5. THSyntax is split up into three modules: Language.Haskell.TH TH "clients" import this Language.Haskell.TH.THSyntax data type declarations and internal stuff Language.Haskell.TH.THLib Support library code (all re-exported by TH), including smart constructors and pretty printer 6. Error reporting and recovery are in (not yet well tested) report :: Bool {- True <=> fatal -} -> String -> Q () recover :: Q a -> Q a -> Q a 7. Can find current module currentModule :: Q String Much other cleaning up, needless to say.
* [project @ 2003-11-06 09:42:45 by simonpj]simonpj2003-11-061-4/+19
| | | | Import all instances in cases like C (a b)
* [project @ 2003-11-03 15:27:08 by simonpj]simonpj2003-11-031-19/+5
| | | | Wibble to subordinate names
* [project @ 2003-10-30 16:01:49 by simonpj]simonpj2003-10-302-8/+3
| | | | | | | | | | | This commit does a long-overdue tidy-up * Remove PprType (gets rid of one more bunch of hi-boot files) * Put pretty-printing for types in TypeRep * Make a specialised pretty-printer for Types, rather than converting to IfaceTypes and printing those
* [project @ 2003-10-29 18:10:25 by simonpj]simonpj2003-10-291-17/+23
| | | | Print info about orphan rules and instances
* [project @ 2003-10-27 14:05:17 by simonpj]simonpj2003-10-271-19/+25
| | | | Improve error message when iface decl not found
* [project @ 2003-10-21 12:52:58 by simonpj]simonpj2003-10-211-2/+4
| | | | Show generic-ness when printing a data decl
* [project @ 2003-10-16 10:19:27 by simonpj]simonpj2003-10-162-31/+45
| | | | | | | | When type-checking an interface in --make, when the source file hasn't changed, we must bring into scope all the things defined in the interface. This was breaking --make badly. The epicentre here is TcIface.typecheckIface