summaryrefslogtreecommitdiff
path: root/ghc/InteractiveUI.hs
Commit message (Collapse)AuthorAgeFilesLines
...
* Reformat help message for `:show` to fit into 80 cols again.usrbincc2013-06-041-2/+2
|
* Formatting only: fix alignment.usrbincc2013-06-041-10/+10
|
* Add the ability to customize the continuation prompt.usrbincc2013-06-041-18/+33
| | | | - Remove unused property `def_prompt`.
* Print details of panic messages raised from GHCi (#7844)Patrick Palka2013-04-211-3/+4
|
* Implement type family instance support for ":info" (#4175)Patrick Palka2013-03-151-6/+10
| | | | v2: added a couple of comments
* Remove gblock and gunblockIan Lynagh2013-02-191-1/+2
|
* Stop using the deprecated System.CmdIan Lynagh2013-02-151-1/+1
|
* Use throwIO rather than throwIan Lynagh2013-01-301-1/+1
|
* Use pprTypeForUser when printing kinds in ghciSimon Peyton Jones2013-01-221-1/+3
|
* 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.
* 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-301-24/+24
|
* Some alpha renamingIan Lynagh2012-10-161-10/+10
| | | | | Mostly d -> g (matching DynFlag -> GeneralFlag). Also renamed if* to when*, matching the Haskell if/when names
* Move wORD_SIZE into platformConstantsIan Lynagh2012-09-161-6/+8
|
* Disable the MR by default in GHCi (#3202)Paolo Capriotti2012-09-031-2/+6
|
* Fix :issafe command (#7172).David Terei2012-08-231-31/+17
|
* Improve Safe Haskell warn/error output.David Terei2012-08-231-5/+1
|
* Respect verbosity for "flags changed" message (#7139)Paolo Capriotti2012-08-131-1/+3
| | | | Also, print that message on stdout.
* Allow 'default' declarations in GHCiPatrick Palka2012-07-111-1/+1
|
* Make a little more of the GHCi internal API configurableDavid Terei2012-07-101-25/+61
|
* 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 'on' from UtilIan Lynagh2012-06-221-8/+9
| | | | We can now rely on it being available from Data.Function
* Make -ignore-dot-ghci a dynamic flagIan Lynagh2012-06-181-3/+2
|
* Merge branch 'master' of darcs.haskell.org:/srv/darcs//ghcIan Lynagh2012-06-131-1/+1
|\ | | | | | | | | Fix conflicts in: compiler/main/DynFlags.hs
| * fix spelling: "infered" -> "inferred"Simon Marlow2012-06-111-1/+1
| |
* | Pass DynFlags down to showSDocIan Lynagh2012-06-121-17/+24
| |
* | Pass DynFlags down to showPprIan Lynagh2012-06-121-1/+1
| |
* | Build fixesIan Lynagh2012-06-121-2/+3
|/
* Change how macros like ASSERT are definedIan Lynagh2012-06-051-2/+1
| | | | | By using Haskell's debugIsOn rather than CPP's "#ifdef DEBUG", we don't need to kludge things to keep the warning checker happy etc.
* Replace printDump with a new SeverityIan Lynagh2012-05-291-1/+3
| | | | | | We now use log_action with severity SevDump, rather than calling printDump. This means that what happens to dumped info is now under the control of the GHC API user, rather than always going to stdout.
* Updates for haskeline-0.7's new MonadException API.Judah Jacobson2012-05-261-3/+3
|
* Use transformers directly, rather than using mtlIan Lynagh2012-05-191-1/+2
| | | | This means we no longer need mtl in a GHC tree.
* Use pprInfixName in pprInfo (#6091)Paolo Capriotti2012-05-141-1/+1
| | | | Surround a name in backticks when printing an infix declaration in GHCi.
* Build fixIan Lynagh2012-05-061-1/+1
|
* Follow changes in haskelineIan Lynagh2012-05-061-2/+1
| | | | | I'm not sure if we still need to encode the error, but validate is happy with this fix, at least.
* Catch illegal imports earlier (#6007)Simon Marlow2012-04-271-5/+39
|
* make -XNoImplicitPrelude work properly in GHCiSimon Marlow2012-04-251-6/+5
|
* ghci: write exceptions to stderr (#5980)Paolo Capriotti2012-04-231-5/+7
|
* Revert "Added ':runmonad' command to GHCi"Simon Peyton Jones2012-04-131-9/+0
| | | | | | | | | | Two problems, for now at any rate a) Breaks the build with lots of errors like No instance for (Show (IO ())) arising from a use of `print' b) Discussion of the approache hasn't converged yet (Simon M had a number of suggestions) This reverts commit eecd7c98c1f079c14d99ed831dff33a48ee45e67.
* Added ':runmonad' command to GHCiDavid Terei2012-04-121-0/+9
| | | | | | | | | This command allows you to lift user stmts in GHCi into an IO monad that implements the GHC.GHCi.GHCiSandboxIO type class. This allows for easy sandboxing of GHCi using :runmonad and Safe Haskell. Longer term it would be nice to allow a more general model for the Monad than GHCiSandboxIO but delaying this for the moment.
* Do not re-encode correctly encoded inputs and arguments (#5795)Paolo Capriotti2012-04-111-8/+3
|
* Add support for additional .ghci files in GHCi (#5265)Paolo Capriotti2012-04-111-2/+2
| | | | Patch by Sam Anklesaria <amsay@amsay.net>
* Revert "trac #5265 (support for additional .ghci files)"Paolo Capriotti2012-04-111-2/+1
| | | | This reverts commit 991f141989940c897cb2fc3dba7b5b49342d402a.
* Respect package qualifier when validating imports in GHCi (#5979)Patrick Palka2012-03-311-1/+2
| | | | Signed-off-by: Paolo Capriotti <p.capriotti@gmail.com>
* In ghci, reload after :e. Patch from Paolo Capriotti. Fixes #5343Ian Lynagh2012-03-111-6/+7
|
* Fix crash caused by allowing duplicate *-modules in the context (#5904)Simon Marlow2012-03-021-2/+13
|
* GHCi: add :seti, for options that apply only at the prompt (#3217)Simon Marlow2012-03-011-67/+151
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | GHCi now maintains two DynFlags: one that applies to whole modules loaded with :load, and one that applies to things typed at the prompt (expressions, statements, declarations, commands). The :set command modifies both DynFlags. This is for backwards compatibility: users won't notice any difference. The :seti command applies only to the interactive DynFlags. Additionally, I made a few changes to ":set" (with no arguments): * Now it only prints out options that differ from the defaults, rather than the whole list. * There is a new variant, ":set -a" to print out all options (the old behaviour). * It also prints out language options. e.g. Prelude> :set options currently set: none. base language is: Haskell2010 with the following modifiers: -XNoDatatypeContexts -XNondecreasingIndentation GHCi-specific dynamic flag settings: other dynamic, non-language, flag settings: -fimplicit-import-qualified warning settings: ":seti" (with no arguments) does the same as ":set", but for the interactive options. It also has the "-a" option. The interactive DynFlags are kept in the InteractiveContext, and copied into the HscEnv at the appropriate points (all in HscMain). There are some new GHC API operations: -- | Set the 'DynFlags' used to evaluate interactive expressions. setInteractiveDynFlags :: GhcMonad m => DynFlags -> m () -- | Get the 'DynFlags' used to evaluate interactive expressions. getInteractiveDynFlags :: GhcMonad m => m DynFlags -- | Sets the program 'DynFlags'. setProgramDynFlags :: GhcMonad m => DynFlags -> m [PackageId] -- | Returns the program 'DynFlags'. getProgramDynFlags :: GhcMonad m => m DynFlags Note I have not completed the whole of the plan outlined in #3217 yet: when in the context of a loaded module we don't take the interactive DynFlags from that module. That needs some more refactoring and thinking about, because we'll need to save and restore the original interactive DynFlags. This solves the immediate problem that people are having with the new flag checking in 7.4.1, because now it is possible to set language options in ~/.ghci that do not affect loaded modules and thereby cause recompilation.
* tweak error messageSimon Marlow2012-02-161-2/+1
|