summaryrefslogtreecommitdiff
path: root/ghc
Commit message (Collapse)AuthorAgeFilesLines
* Rename $(Windows) to $(Windows_Host)Ian Lynagh2013-03-011-2/+2
|
* Always quote arguments to removeFiles (fixes Windows install).Geoffrey Mainland2013-02-221-1/+1
| | | | | Thanks to Daniel Pratt <colorblinddad@gmail.com> for pointing out the failure and fix.
* Remove gblock and gunblockIan Lynagh2013-02-192-6/+2
|
* Finish removing BootingFromHcIan Lynagh2013-02-171-5/+0
|
* Build system tweak: Do the package checks at configure timeIan Lynagh2013-02-151-0/+5
| | | | | | | | This removes the '.PHONY' rule, so means that "make" in a built tree won't repeat the check. We also now check the .cabal files for the executables as well as the libraries.
* Stop using the deprecated System.CmdIan Lynagh2013-02-151-1/+1
|
* Use throwIO rather than throwIan Lynagh2013-01-301-1/+1
|
* StaticFlags code cleanup (fixes #7595)Jan Stolarek2013-01-281-1/+0
| | | | | | | | | Function responsible for parsing the static flags, that were spread across two modules (StaticFlags and StaticFlagParser), are now in one file. This is analogous to dynamic flags parsing, which is also contained within a single module. Signed-off-by: David Terei <davidterei@gmail.com>
* Use pprTypeForUser when printing kinds in ghciSimon Peyton Jones2013-01-221-1/+3
|
* Tidy up cross-compilingSimon Marlow2013-01-171-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We have two cases: 1. building a cross-compiler 2. compiling GHC to run on a foreign platform These two are done with almost the same setup: (1) is the stage 1 compiler, and (2) is the stage 2 compiler, when CrossCompiling=YES. The only difference between (1) and (2) is that you if you set up the build for (1), then it stops before stage 2 and you can 'make install' to install stage 1. Unfortunately, (2) didn't work, and the build system code needed some tidying up. Change to the way the build is set up: Before ------ To build a cross-compiler: ./configure --target=<..> To compile a foreign GHC: ./configure --host=<..> --target=<..> Now --- To build a cross-compiler: ./configure --target=<..> And set "Stage1Only=YES" in mk/build.mk To compile a foreign GHC: ./configure --target=<..>
* Don't make -C imply -fvia-CIan Lynagh2013-01-111-9/+1
| | | | | All -fvia-C does nowadays is print a warning saying that it doesn't do anything.
* Ship transformers with GHCIan Lynagh2013-01-021-16/+6
| | | | | This means that we can use the standard MonadIO class, rather than needing our own copy.
* Implement overlapping type family instances.Richard Eisenberg2012-12-211-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | An ordered, overlapping type family instance is introduced by 'type instance where', followed by equations. See the new section in the user manual (7.7.2.2) for details. The canonical example is Boolean equality at the type level: type family Equals (a :: k) (b :: k) :: Bool type instance where Equals a a = True Equals a b = False A branched family instance, such as this one, checks its equations in order and applies only the first the matches. As explained in the note [Instance checking within groups] in FamInstEnv.lhs, we must be careful not to simplify, say, (Equals Int b) to False, because b might later unify with Int. This commit includes all of the commits on the overlapping-tyfams branch. SPJ requested that I combine all my commits over the past several months into one monolithic commit. The following GHC repos are affected: ghc, testsuite, utils/haddock, libraries/template-haskell, and libraries/dph. Here are some details for the interested: - The definition of CoAxiom has been moved from TyCon.lhs to a new file CoAxiom.lhs. I made this decision because of the number of definitions necessary to support BranchList. - BranchList is a GADT whose type tracks whether it is a singleton list or not-necessarily-a-singleton-list. The reason I introduced this type is to increase static checking of places where GHC code assumes that a FamInst or CoAxiom is indeed a singleton. This assumption takes place roughly 10 times throughout the code. I was worried that a future change to GHC would invalidate the assumption, and GHC might subtly fail to do the right thing. By explicitly labeling CoAxioms and FamInsts as being Unbranched (singleton) or Branched (not-necessarily-singleton), we make this assumption explicit and checkable. Furthermore, to enforce the accuracy of this label, the list of branches of a CoAxiom or FamInst is stored using a BranchList, whose constructors constrain its type index appropriately. I think that the decision to use BranchList is probably the most controversial decision I made from a code design point of view. Although I provide conversions to/from ordinary lists, it is more efficient to use the brList... functions provided in CoAxiom than always to convert. The use of these functions does not wander far from the core CoAxiom/FamInst logic. BranchLists are motivated and explained in the note [Branched axioms] in CoAxiom.lhs. - The CoAxiom type has changed significantly. You can see the new type in CoAxiom.lhs. It uses a CoAxBranch type to track branches of the CoAxiom. Correspondingly various functions producing and consuming CoAxioms had to change, including the binary layout of interface files. - To get branched axioms to work correctly, it is important to have a notion of type "apartness": two types are apart if they cannot unify, and no substitution of variables can ever get them to unify, even after type family simplification. (This is different than the normal failure to unify because of the type family bit.) This notion in encoded in tcApartTys, in Unify.lhs. Because apartness is finer-grained than unification, the tcUnifyTys now calls tcApartTys. - CoreLinting axioms has been updated, both to reflect the new form of CoAxiom and to enforce the apartness rules of branch application. The formalization of the new rules is in docs/core-spec/core-spec.pdf. - The FamInst type (in types/FamInstEnv.lhs) has changed significantly, paralleling the changes to CoAxiom. Of course, this forced minor changes in many files. - There are several new Notes in FamInstEnv.lhs, including one discussing confluent overlap and why we're not doing it. - lookupFamInstEnv, lookupFamInstEnvConflicts, and lookup_fam_inst_env' (the function that actually does the work) have all been more-or-less completely rewritten. There is a Note [lookup_fam_inst_env' implementation] describing the implementation. One of the changes that affects other files is to change the type of matches from a pair of (FamInst, [Type]) to a new datatype (which now includes the index of the matching branch). This seemed a better design. - The TySynInstD constructor in Template Haskell was updated to use the new datatype TySynEqn. I also bumped the TH version number, requiring changes to DPH cabal files. (That's why the DPH repo has an overlapping-tyfams branch.) - As SPJ requested, I refactored some of the code in HsDecls: * splitting up TyDecl into SynDecl and DataDecl, correspondingly changing HsTyDefn to HsDataDefn (with only one constructor) * splitting FamInstD into TyFamInstD and DataFamInstD and splitting FamInstDecl into DataFamInstDecl and TyFamInstDecl * making the ClsInstD take a ClsInstDecl, for parallelism with InstDecl's other constructors * changing constructor TyFamily into FamDecl * creating a FamilyDecl type that stores the details for a family declaration; this is useful because FamilyDecls can appear in classes but other decls cannot * restricting the associated types and associated type defaults for a * class to be the new, more restrictive types * splitting cid_fam_insts into cid_tyfam_insts and cid_datafam_insts, according to the new types * perhaps one or two more that I'm overlooking None of these changes has far-reaching implications. - The user manual, section 7.7.2.2, is updated to describe the new type family instances.
* Update dependenciesIan Lynagh2012-11-301-1/+1
|
* Add ":info!" to GHCi. This shows all instances without filtering first.Iavor S. Diatchki2012-11-291-10/+12
| | | | | | | | | The default behavior of :info is to show only those instances of for a type, where all relevant type constructor names are in scope. This keeps down the number of instances shown to the user. In some cases, it is nice to be able to see all instances for a type. This patch implements this with the :info! command.
* Replace all uses of ghcError with throwGhcException and purge ghcError.Erik de Castro Lopo2012-11-303-37/+37
|
* Change how dependency generation works; fixes #7381Ian Lynagh2012-11-021-1/+1
| | | | | | We now do the initial dependency generation for the vanilla way regardless of what way flags and hisuf/osuf flags are given. This makes it easier to generate the right dependency info in the end.
* Do not treat a constructor in a *pattern* as a *use* of that constructorSimon Peyton Jones2012-10-291-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | Occurrences in terms are uses, in patterns they are not. In this way we get unused-constructor warnings from modules like this module M( f, g, T ) where data T = T1 | T2 Bool f x = T2 x g T1 = True g (T2 x) = x Here a T1 value cannot be constructed, so we can warn. The use in a pattern doesn't count. See Note [Patterns are not uses] in RnPat. Interestingly this change exposed three module in GHC itself that had unused constructors, which I duly removed: * ghc/Main.hs * compiler/ghci/ByteCodeAsm * compiler/nativeGen/PPC/RegInfo Their changes are in this patch.
* Set the default way correctly when dynamic-by-defaultIan Lynagh2012-10-251-1/+1
|
* Some alpha renamingIan Lynagh2012-10-162-12/+12
| | | | | Mostly d -> g (matching DynFlag -> GeneralFlag). Also renamed if* to when*, matching the Haskell if/when names
* Build the dynamic way by default on Linux/amd64Ian Lynagh2012-10-031-0/+3
| | | | | | | | | | | | | This required various build system changes to get the build to go through. In the inplace shell wrappers, we set LD_LIBRARY_PATH to allow programs to find their libraries. In the future, we might change the inplace tree to be the same shape as an installed tree instead. However, this would mean changing the way we do installation, as currently we use cabal's installation methods to install the libraries, but that only works if the libraries are under libraries/foo/dist-install/build/..., rather than in inplace/lib/...
* Tweak the build system handling of shell wrappersIan Lynagh2012-09-271-1/+1
| | | | | | | Rather than having a separate foo_INSTALL_SHELL_WRAPPER variable, we just use foo_INSTALL && foo_SHELL_WRAPPER
* Move wORD_SIZE into platformConstantsIan Lynagh2012-09-161-6/+8
|
* Add more modes to mkDerivedConstantsIan Lynagh2012-09-131-3/+10
| | | | We now generate a platformConstants file that we can read at runtime.
* Update dependency on directory.Paolo Capriotti2012-09-091-1/+1
|
* Deprecate lnat, and use StgWord insteadSimon Marlow2012-09-071-1/+1
| | | | | | | | | | | | lnat was originally "long unsigned int" but we were using it when we wanted a 64-bit type on a 64-bit machine. This broke on Windows x64, where long == int == 32 bits. Using types of unspecified size is bad, but what we really wanted was a type with N bits on an N-bit machine. StgWord is exactly that. lnat was mentioned in some APIs that clients might be using (e.g. StackOverflowHook()), so we leave it defined but with a comment to say that it's deprecated.
* Move ldInputs into DynFlagsIan Lynagh2012-09-031-10/+10
|
* Merge branch 'master' of darcs.haskell.org:/srv/darcs//ghcIan Lynagh2012-09-031-2/+6
|\
| * Disable the MR by default in GHCi (#3202)Paolo Capriotti2012-09-031-2/+6
| |
* | Refactor the ways code a bitIan Lynagh2012-09-031-2/+2
|/ | | | | | | | We used to use a list lookup that couldn't fail. Now we just use functions. There were 3 overlapping entries for WayPar; I've commented out the ones that were shadowed for now.
* make sure to remove the right link before calling 'ln -s' (could we use 'ln ↵Gabor Greif2012-08-301-2/+2
| | | | -sf'?)
* Fix :issafe command (#7172).David Terei2012-08-231-31/+17
|
* Improve Safe Haskell warn/error output.David Terei2012-08-231-5/+1
|
* Improve compile times by enabling +RTS -H for GHC (only when bootstrapped)Simon Marlow2012-08-211-0/+8
|
* Give suggestions for unrecognised command line argumentsJoachim Breitner2012-08-131-2/+7
|
* Respect verbosity for "flags changed" message (#7139)Paolo Capriotti2012-08-131-1/+3
| | | | Also, print that message on stdout.
* Add "Unregisterised" as a field in the settings fileIan Lynagh2012-08-071-6/+6
| | | | | | To explicitly choose whether you want an unregisterised build you now need to use the "--enable-unregisterised"/"--disable-unregisterised" configure flags.
* Merge branch 'master' of darcs.haskell.org:/srv/darcs//ghcIan Lynagh2012-07-191-0/+1
|\
| * First batch of file additions for cross-compiler:Gabor Greif2012-07-181-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | new file: ghc/ghc-cross.wrapper new file: includes/mkDerivedConstants.cross.awk new file: includes/mkSizeMacros.cross.awk new file: rules/cross-compiling.mk These are expected to sit quietly in the tree until the rest of the machinery matures on an (upcoming) branch. Reviews will begin to make sense as soon as that has happened. Anyway, comments are welcome. See <http://www.haskell.org/pipermail/cvs-ghc/2012-July/074456.html> for background. Disclaimer: these source files are not (yet) up to the quality standards set by the rest of the tree. Cleanups, move-arounds and rewrites (i.e. .awk -> .hs), as well as additional comments and documentation will happen as soon as the basic functionality of a cross-compiler is working reliably.
* | Add a separate FastZString typeIan Lynagh2012-07-151-7/+5
|/ | | | | | | | | FastStrings are now always UTF8-encoded. There's no StringTable for FastZString, but I don't think one is needed. We only ever make a FastZString by running zEncodeFS on a FastString, and the FastStrings are shared via the FastString StringTable, so we get the same FastZString from the IORef.
* Allow 'default' declarations in GHCiPatrick Palka2012-07-111-1/+1
|
* Make a little more of the GHCi internal API configurableDavid Terei2012-07-103-32/+76
|
* prefer later defined commands (fixes #3858)Peter Hercek2012-07-041-8/+6
|
* New version of the patch for #5461.Paolo Capriotti2012-06-251-3/+5
|
* Implemented feature request on reconfigurable pretty-printing in GHCi (#5461)Vitaly Bragilesky2012-06-251-0/+15
|
* Remove sortLe usesIan Lynagh2012-06-221-7/+6
|
* Remove 'on' from UtilIan Lynagh2012-06-221-8/+9
| | | | We can now rely on it being available from Data.Function
* Fix buildIan Lynagh2012-06-191-0/+1
|
* Build fixesIan Lynagh2012-06-181-1/+1
|
* Make -ignore-dot-ghci a dynamic flagIan Lynagh2012-06-181-3/+2
|