Commit Graph

540 Commits

Author SHA1 Message Date
Daniel Gröber
82bb0090c0 Refactoring to use cabal-helper-wrapper
This turned out to be quite involved but save for this huge commit it's
actually quite awesome and squashes quite a few bugs and nasty
problems (hopefully). Most importantly we now have native cabal
component support without the user having to do anything to get it!

To do this we traverse imports starting from each component's
entrypoints (library modules or Main source file for executables) and
use this information to find which component's options each module will
build with. Under the assumption that these modules have to build with
every component they're used in we can now just pick one.

Quite a few internal assumptions have been invalidated by this
change. Most importantly the runGhcModT* family of cuntions now change
the current working directory to `cradleRootDir`.
2015-03-05 17:35:24 +01:00
Daniel Gröber
7438539ca5 Change primary license to AGPL-3 2015-03-03 21:09:18 +01:00
Daniel Gröber
ef96b926c7 Use cabal-helper to support Cabal >= 1.22 with any version of ghc 2015-02-08 12:43:35 +01:00
Daniel Gröber
844bdea3db Move symbolCache to PathsAndFiles 2015-02-08 12:43:35 +01:00
Daniel Gröber
1c5a1c8b3e Add util function for finding libexec binaries 2015-02-08 12:43:35 +01:00
Daniel Gröber
417cacbf81 Fix finding sandbox in sandbox only projects 2015-02-08 12:43:35 +01:00
Daniel Gröber
2b4fd77c28 Add GHC-7.10 support 2015-02-08 12:43:35 +01:00
Daniel Gröber
45d6b7d67a Guess right sandbox pkg-db path on ghc version mismatch
If cabal.sandbox.config contains a "package-db:" declaration with the
wrong path and only the ghc version is wrong, for example:

```
package-db: <DIR>/.cabal-sandbox/x86_64-linux-ghc-7.8.3-packages.conf.d
```

Even though the user is using 7.10.0.20141222 `cabal repl` will correct
this and pass

```
-package-db <DIR>/.cabal-sandbox/x86_64-linux-ghc-7.10.0.20141222-packages.conf.d
```

to ghci, so obviously Cabal/cabal-install is doing some magic.

Conflicts:
	Language/Haskell/GhcMod/PathsAndFiles.hs
2015-02-08 12:43:25 +01:00
Daniel Gröber
ce61f38f4d Remove a bunch of dead code 2015-01-03 00:36:12 +01:00
klapaucius
fc7ce47e93 fix for varid bug in showExports & processExports 2014-12-24 22:17:36 +01:00
Dimitri 'phaazon' Sabadie
f023f4fc06 Fixed #422. 2014-12-24 22:12:36 +01:00
Daniel Gröber
782f234981 Fix ghc-mod tempdirs not being removed on exit 2014-12-24 21:34:57 +01:00
Daniel Gröber
80e826a199 Prefix ghc-mod tmpdirs with "ghc-mod" 2014-12-24 21:34:39 +01:00
Daniel Gröber
9a8a3651d0 Fix findCabalFile 2014-11-03 00:45:27 +01:00
Daniel Gröber
506cf18885 Don't use fromJust 2014-11-03 00:33:23 +01:00
Rob Everest
56cc237e26 Support where clauses, let bindings and case expressions in case splitting (fixes #395) 2014-11-03 00:15:12 +01:00
Daniel Gröber
833d9ce058 $HOME/.cabal is not a cabal file 2014-11-03 00:04:15 +01:00
Daniel Gröber
94a60350c8 docs 2014-11-02 21:43:49 +01:00
Daniel Gröber
0cdbcb247b Fix warning 2014-11-02 19:27:57 +01:00
Daniel Gröber
2af3383fad Really fix newTempDir on Windows 2014-11-02 19:02:05 +01:00
Daniel Gröber
37af8e368d Refactoring World, etc. and fix #387 2014-11-02 01:19:27 +01:00
Daniel Gröber
14ee81e300 Allow GhcModError as an Exception and catch it in GhcModT's liftIO 2014-10-31 22:23:48 +01:00
Daniel Gröber
1797a53800 Fix newTempDir on Windows 2014-10-31 12:42:03 +01:00
Daniel Gröber
34dd9de83c Add Show instance for Options 2014-10-30 01:11:10 +01:00
Daniel Gröber
9ac128aa6f Fix #387, Pattern match failure in GhcPkg 2014-10-30 01:10:56 +01:00
Kazu Yamamoto
33d6f38a20 removing a warning. 2014-10-06 15:55:16 +09:00
Kazu Yamamoto
ef371a7ebf fixing tests. 2014-10-06 15:29:05 +09:00
Daniel Gröber
ab7059d5e4 Merge remote-tracking branch 'upstream/no-set'
Conflicts:
	Language/Haskell/GhcMod/Find.hs
2014-10-03 21:39:20 +02:00
Kazu Yamamoto
c4929c54af getConfig runs "cabal configure" first if setup-config is invalid. 2014-09-23 21:28:03 +09:00
Kazu Yamamoto
7db266c22d adding World.hs. 2014-09-23 17:34:09 +09:00
Kazu Yamamoto
9ed4aa8fdf using void. 2014-09-23 14:55:56 +09:00
Kazu Yamamoto
735b80d0cc exporting setupConfigFile. 2014-09-23 14:49:13 +09:00
Kazu Yamamoto
d831d6aa59 moving PackageDb stuff to GhcPkg. 2014-09-23 13:47:32 +09:00
Kazu Yamamoto
71bbd1c5d4 removing warnings. 2014-09-22 11:32:28 +09:00
Kazu Yamamoto
bc65c477d0 fixing typo. 2014-09-22 11:20:11 +09:00
Kazu Yamamoto
b96a8c6457 check does not use overrideGhcUserOptions again.
- workaround for #376
- logically reverting ec1b115cc1
2014-09-22 10:46:46 +09:00
Kazu Yamamoto
e8988c2f02 ghc-modi's "find" now catches up if packageDb is updated. 2014-09-20 12:25:46 +09:00
Daniel Gröber
5a4bec8755 Rewrite ghc-mod command line frontend. 2014-09-18 10:45:14 +02:00
Daniel Gröber
34dd8c5bd9 Fix error when compiling with HSE < 1.16 2014-09-17 23:39:10 +02:00
Daniel Gröber
8f123dc7de Fix compiling with HSE >= 1.16.0 2014-09-16 05:50:00 +02:00
Daniel Gröber
b96ef00248 formatting: FillSig.hs 2014-09-16 05:49:56 +02:00
Daniel Gröber
690a64f5b5 Merge branch 'master' of https://github.com/robeverest/ghc-mod
Conflicts:
	Language/Haskell/GhcMod/CabalConfig.hs
2014-09-12 05:21:12 +02:00
Rob Everest
2c2e7782d2 Use the cabal configuration flags where possible when finalizing the PackageDescription. 2014-09-12 13:15:05 +10:00
Cary M. Robbins
8b01af6cde Handle LocalBuildInfo for Cabal 1.21; squash commits; fixes #343. 2014-09-12 04:50:29 +02:00
Daniel Gröber
1c8d1edb4d Workaround for #340 2014-09-12 04:02:32 +02:00
Daniel Gröber
8889c2e8e5 note 2014-09-11 01:27:19 +02:00
Daniel Gröber
83d780015c Use readProcess' in PkgDoc.hs 2014-09-11 01:26:42 +02:00
Daniel Gröber
274b5d8e1c Rephrase some docs 2014-08-29 17:21:38 +02:00
Daniel Gröber
a0ae09a3e6 Give readProcess' more sensible error messages.
Also a bunch of refactoring for GhcModError
2014-08-28 15:57:49 +02:00
Daniel Gröber
a7f00931c5 Rename List.hs -> Modules.hs 2014-08-28 11:41:03 +02:00
Alan Zimmerman
0944820dba CaseSplit panic sorted. closes https://github.com/kazu-yamamoto/ghc-mod/issues/336 2014-08-23 14:06:26 +02:00
Kazu Yamamoto
d045001eb7 Letting "ghc-mod dumpsym" work on non-cabal directories. 2014-08-20 15:31:26 +09:00
Kazu Yamamoto
190dc2ac51 try to fix Travis CI. 2014-08-20 11:59:44 +09:00
Kazu Yamamoto
9456ea426d fixing typos. 2014-08-19 17:18:36 +09:00
Kazu Yamamoto
a483f4f8b6 error messages are stored after NG, not printed in stderr. 2014-08-19 14:56:01 +09:00
Kazu Yamamoto
ad3a42844d Merge pull request #330 from DanielG/dev-error
Remove dedicated exception handling in `check` completely
2014-08-19 11:52:09 +09:00
Daniel Gröber
147dd90ee7 Remove dedicated exception handling in check completely
Exceptions are already caught at the top level so this is unnecessary.
2014-08-19 04:49:44 +02:00
Kazu Yamamoto
af6de8c849 Merge pull request #329 from DanielG/dev-error
Remove `withErrorHandler`, use `liftExceptions` instead
2014-08-19 11:41:44 +09:00
Daniel Gröber
1b5917c70e Remove withErrorHandler, use liftExceptions instead 2014-08-19 04:30:44 +02:00
Alejandro Serrano
5b78711842 Revert way to report errors when deferred as warnings
Fixes #310
2014-08-18 17:32:32 +02:00
Kazu Yamamoto
0fd8b9afd8 first try to resolve #322. 2014-08-18 16:55:41 +09:00
Kazu Yamamoto
5a657b9df8 removing warnings 2014-08-18 15:24:38 +09:00
Daniel Gröber
271ff4e162 Catch cabal configure failure properly 2014-08-18 08:06:36 +02:00
Daniel Gröber
f5d051dcef Remove toGhcModT it's not needed anymore. 2014-08-15 20:35:21 +02:00
Alejandro Serrano
10042c6b0c Fix for GHC 7.4 2014-08-15 11:00:48 +02:00
Alejandro Serrano
57db768ed0 Fix for GHC 7.4 2014-08-15 10:46:52 +02:00
Alejandro Serrano
f584bf5d5b Show error messages without qualification 2014-08-15 10:43:07 +02:00
Alejandro Serrano
6b62117381 Remove redundant typed hole warnings 2014-08-15 09:41:02 +02:00
Alejandro Serrano
7612229cc0 Keep all errors and warnings for code 2014-08-15 09:32:28 +02:00
Alejandro Serrano
fdbecdddce Make better check in presence of typed holes 2014-08-14 20:51:49 +02:00
Alejandro Serrano
890658f9cb Fix merge conflict, dropdown-list no longer needed 2014-08-14 18:02:58 +02:00
Daniel Gröber
bd28310e59 Don't fall back to sandbox if cabal file failes to parse 2014-08-12 00:02:39 +02:00
Daniel Gröber
b13465b588 Some docs in CabalConfig.hs 2014-08-11 23:48:15 +02:00
Daniel Gröber
fad99f466f Export GhcModError(..) 2014-08-06 20:40:11 +02:00
Daniel Gröber
9e4f1c9057 add note 2014-08-06 19:38:42 +02:00
Daniel Gröber
cb28e9ec8f Fix warning 2014-08-06 19:38:42 +02:00
Daniel Gröber
c98eb23bdf Clean up getSymbolTable a bit more 2014-08-06 19:38:42 +02:00
Daniel Gröber
459106a6d5 Clean up Find.hs a bit 2014-08-06 19:38:42 +02:00
Daniel Gröber
f311efd90c Rework GhcModT monad stack 2014-08-06 19:38:42 +02:00
Alejandro Serrano
43ac9036f9 Fixes on GHC < 7.8 2014-08-04 17:25:18 +02:00
Alejandro Serrano
d1a6618329 More package fixes for GHC < 7.8 2014-08-03 20:38:54 +02:00
Alejandro Serrano
d22e50d9e4 Small fix to compile in GHC < 7.8 2014-08-03 19:57:01 +02:00
Alejandro Serrano
9cc6476df1 Add better support for auto, with several options searched 2014-08-03 19:14:42 +02:00
Alejandro Serrano
3aa83e14dd Show more than one Djinn completion 2014-08-02 09:52:36 +02:00
Alejandro Serrano
31a7ce3d19 Merge remote-tracking branch 'kazu/master' 2014-08-01 17:08:50 +02:00
Alejandro Serrano
9161757f95 First attempt to add auto 2014-08-01 17:08:23 +02:00
Kazu Yamamoto
d1daf6def9 Merge pull request #296 from serras/master
Add refinement and better support for typed holes in Emacs mode
2014-08-01 15:14:50 +09:00
Kenta Sato
92651fbb26 interpret backslash-escaped characters at the line boundary 2014-07-30 12:03:58 +09:00
Alejandro Serrano
e3853a49f1 Add fix for GHC 7.4 2014-07-27 14:11:54 +02:00
Alejandro Serrano
f1d0436467 Remove case splitting for type families 2014-07-27 12:20:46 +02:00
Alejandro Serrano
9b500da4b8 Another try at case split for type families 2014-07-26 13:07:45 +02:00
Alejandro Serrano
9b38818f66 Merge remote-tracking branch 'kazu/master' 2014-07-24 20:21:44 +02:00
Alejandro Serrano
361fe24be0 Start case splitting on type families (NOT working) 2014-07-24 20:21:05 +02:00
Alejandro Serrano
d9c6638493 Work on initial signature for type families 2014-07-24 20:20:30 +02:00
Kazu Yamamoto
10ef20b967 Merge pull request #293 from DanielG/dev-exec-path
Fall back to getProgName when exeutable name is not available
2014-07-21 11:11:25 +09:00
Daniel Gröber
0736516512 Document exposed parts of GhcMod.Monad 2014-07-21 00:27:12 +02:00
Daniel Gröber
ba9c70dff7 Fall back to assuming ghc-mid is on PATH when exeutable name is not available 2014-07-20 23:50:32 +02:00
Alejandro Serrano
eb5ec73ae1 Complete parenthesis on refinement 2014-07-20 13:33:36 +02:00
Alejandro Serrano
54d10684b9 Merge remote-tracking branch 'kazu/master' 2014-07-20 10:45:28 +02:00
Alejandro Serrano
ae49eab547 First steps in refinement 2014-07-19 12:11:34 +02:00
Alejandro Serrano
60e97d4579 Merge remote-tracking branch 'kazu/master' 2014-07-19 10:13:19 +02:00
Kazu Yamamoto
981051a642 implementing fallback from Simple to Intelligent. 2014-07-19 11:53:05 +09:00
Kazu Yamamoto
5abd75ea7d fixing a infinite process loop. 2014-07-19 11:50:12 +09:00
Alejandro Serrano
6302d4882e Merge remote-tracking branch 'kazu/master'
Conflicts:
	Language/Haskell/GhcMod/Check.hs
	Language/Haskell/GhcMod/FillSig.hs
	Language/Haskell/GhcMod/GHCApi.hs
2014-07-18 17:12:52 +02:00
Alejandro Serrano
852d742796 Continue work on refinement 2014-07-18 17:09:02 +02:00
Kazu Yamamoto
0080f9b68c Internal exports extra Monad stuff. 2014-07-18 15:42:05 +09:00
Kazu Yamamoto
30ddd655cd export minimum Monad stuff from GhcMod. 2014-07-18 15:31:42 +09:00
Kazu Yamamoto
e1d9c3b881 clean up lookupSymbol. 2014-07-18 15:13:30 +09:00
Kazu Yamamoto
6d42354a5b setMode and getMode 2014-07-18 14:55:21 +09:00
Kazu Yamamoto
7b079896b1 doc sectioning. 2014-07-18 14:55:08 +09:00
Kazu Yamamoto
26316262aa converting GhcMonad to IOish. 2014-07-18 14:54:39 +09:00
Kazu Yamamoto
233f4cf05e moving setFlags to Gap. 2014-07-18 11:09:11 +09:00
Kazu Yamamoto
0ce70ae22d set Opt_SpecConstr just in case. 2014-07-18 10:52:57 +09:00
Daniel Gröber
3c04e78ba7 Don't rely on ghc-mod being in PATH 2014-07-17 16:17:17 +02:00
Daniel Gröber
3c1b560068 Short circuit export list when compiling spec 2014-07-17 16:15:02 +02:00
Daniel Gröber
4f0f5f09a6 Remove type Db it's only used once and makes things less clear 2014-07-17 15:54:59 +02:00
Daniel Gröber
e61aaed023 Make readProcess'more generic 2014-07-17 15:52:33 +02:00
Kazu Yamamoto
cffa7463eb adopting hlint's suggestions. 2014-07-17 17:16:44 +09:00
Kazu Yamamoto
05f45f1d36 adding error handling. 2014-07-17 14:40:35 +09:00
Kazu Yamamoto
cf0df26560 Monad.hs is now exported by GhcMod.hs. 2014-07-17 14:30:42 +09:00
Kazu Yamamoto
74e84e89ac deleting GhcMod.Ghc. 2014-07-17 14:04:28 +09:00
Alejandro Serrano
b21fa674ea Merge remote-tracking branch 'kazu/master' 2014-07-17 06:59:29 +02:00
Alejandro Serrano
c3722f7a20 Include 'refine' again 2014-07-17 06:59:10 +02:00
Kazu Yamamoto
409bc99f10 error handling for loadSymbolDb. 2014-07-17 12:37:38 +09:00
Kazu Yamamoto
cee1b83daa the first step to create SymbolDB via a file. 2014-07-17 11:57:19 +09:00
Alejandro Serrano
57bd408785 Merge remote-tracking branch 'kazu/master'
Conflicts:
	Language/Haskell/GhcMod.hs
	Language/Haskell/GhcMod/Check.hs
	Language/Haskell/GhcMod/FillSig.hs
	Language/Haskell/GhcMod/GHCApi.hs
	Language/Haskell/GhcMod/Ghc.hs
	src/GHCMod.hs
2014-07-16 19:01:43 +02:00
Alejandro Serrano
49437d82d9 Initial work on refining variable 2014-07-16 18:20:52 +02:00
Kazu Yamamoto
204d449aef set optimization level to 0 just in case. 2014-07-15 21:34:05 +09:00
Kazu Yamamoto
49284a64be Uses HscNothing and falls back to HscInterpreted if necessary (#205)
Two Test case are fails but it is not fatal.
2014-07-15 17:20:35 +09:00
Kazu Yamamoto
25730e2a6c trying to fix CI 2014-07-15 15:13:06 +09:00
Kazu Yamamoto
c87ea45488 adding #if to Monad.hs. 2014-07-15 14:45:41 +09:00
Kazu Yamamoto
0b71748708 moving #if to Gap.hs 2014-07-15 14:44:02 +09:00
Kazu Yamamoto
a7a02a3f4c Bringing back MaybeT
This brings back a warning to be fixed.
2014-07-15 12:49:12 +09:00
Kazu Yamamoto
86829561ab style only. 2014-07-15 12:41:10 +09:00
Kazu Yamamoto
84c3cec0f1 moving #if to Gap.hs. 2014-07-15 12:40:18 +09:00
Kazu Yamamoto
be9a67f02a moving #if to Gap.hs. 2014-07-15 12:29:27 +09:00
Kazu Yamamoto
1524d2a43e removing warnings. 2014-07-15 12:10:18 +09:00
Kazu Yamamoto
8495633dc8 explicitly specifying CompManager to ghcMode. 2014-07-15 12:06:07 +09:00
Kazu Yamamoto
89a4db2345 Merge pull request #288 from DanielG/dev-pkgs
Make `GhcMod` be `GhcModT (ErrorT IO)`
2014-07-15 11:49:10 +09:00
Daniel Gröber
686179f12b Fix building with ghc < 7.8 2014-07-15 02:34:07 +02:00
Daniel Gröber
7474a1b652 Bring back GhcMod but this time it's a GhcModT with an ErrorT inside 2014-07-15 01:04:06 +02:00
Daniel Gröber
f0bfcb8811 Use GhcModT everywhere and remove the GhcMod alias
Not doing this makes having GhcModT pretty pointless as users of the
library wouldn't be able to use custom inner monads as evey function for
dealing with GhcModT's would be constraint to (GhcModT IO) thus only
allowing IO as the inner monad.
2014-07-15 01:03:56 +02:00
Kazu Yamamoto
d98cedc9c0 Merge pull request #287 from DanielG/dev-untangle
Untangle Monad.hs and GHCApi.hs and some other changes
2014-07-12 14:27:43 +09:00
Daniel Gröber
b6896a481a Move initializeFlagsWithCradle to Monad.hs 2014-07-12 03:33:04 +02:00
Daniel Gröber
503e8cbe06 Move DynFlag related functions from GHCApi to another module 2014-07-12 02:57:19 +02:00
Daniel Gröber
81c58585a2 Add functions for dealing with packages, modules and bindings to GHCApi 2014-07-11 10:43:51 +02:00
Daniel Gröber
73bf4cbc4e Remove withGhc and withGhc', they're not used anymore. 2014-07-11 10:41:43 +02:00
Alejandro Cabrera
daada0d27e Fix GHC 7.8.3: MatchGroup now has 4 args
Rather than use a pattern match, this patch opts to explicitly extract
the fields of interest using where syntax. This keeps compatibility
across GHC 7.8 releases.

Ref: eeaea2df3f (diff-259092edcc59456f526cdef255c181d1L909)
2014-07-11 01:15:22 -04:00
Daniel Gröber
9f94bc863c Add Module type 2014-07-11 05:44:31 +02:00
Daniel Gröber
d818a64f6f whitespace 2014-07-11 04:51:27 +02:00