Commit Graph

406 Commits

Author SHA1 Message Date
Daniel Gröber 0b2a3458fd Move `stack` code into seperate module 2015-09-15 05:25:54 +02:00
Daniel Gröber 6ad71af001 Don't swallow ghc's verbose output 2015-09-08 06:44:02 +02:00
Daniel Gröber 7ae22a9226 Fix tests 2015-09-08 06:20:12 +02:00
Daniel Gröber 5713fd9908 Fix custom package-db stack for non Cabal projects 2015-09-07 07:20:16 +02:00
Daniel Gröber be293db503 Update for cabal-helper >= 0.6 2015-09-07 05:15:35 +02:00
Daniel Gröber 2a0414f368 Pass stack ghc paths down to cabal-helper 2015-08-31 04:17:33 +02:00
Daniel Gröber 8fa3a1e3cf Add missing copyright notice for NotCPP to srcdist 2015-08-20 03:46:20 +02:00
Daniel Gröber b25dbc2416 Merge branch 'stack-support' 2015-08-20 02:14:55 +02:00
Daniel Gröber 04b78d2719 Merge branch 'master' of https://github.com/Oblosys/ghc-mod 2015-08-20 02:05:40 +02:00
Daniel Gröber 78bdf86a95 Fix all the stack related things 2015-08-19 09:17:41 +02:00
scturtle cbb8feb0ad Add test project in cabal file 2015-08-19 09:17:30 +02:00
Daniel Gröber 50ab2091d6 Add missing test files 2015-08-19 07:02:57 +02:00
Martijn Schrage 7ac5aca5a5 Use https in Location url to get clickable link on hackage web page 2015-08-18 17:13:54 +02:00
Daniel Gröber bb3a948912 Fix over-qualified error messages (Fix #551) 2015-08-18 09:26:53 +02:00
Nikolay Yakimov f4aea2c08a Add new test-files to .cabal 2015-08-17 00:26:43 +03:00
Nikolay Yakimov eb28035753 Some file mapping tests 2015-08-15 21:07:35 +03:00
Nikolay Yakimov 31020c4112 Move withMappedFile to Language.Haskell.GhcMod.Utils 2015-08-15 21:06:57 +03:00
Nikolay Yakimov 5b0cca0353 Added withMappedFile utility function
Works pretty much as `withTempFile`, except looks
mapping up and uses temp. file only when necessary.
2015-08-15 21:06:57 +03:00
Nikolay Yakimov 3790fca20b Initial support for file redirection
Rewrite, taking discussion into consideration
2015-08-15 20:41:10 +03:00
Daniel Gröber 97124afc4c Bump version to 5.3.0.0 2015-08-14 10:36:33 +02:00
Daniel Gröber d3a98d90c4 Bump cabal-helper dependency 2015-08-14 09:14:53 +02:00
Daniel Gröber 09c3c5603c Fix missing newlines 2015-08-13 09:01:58 +02:00
Daniel Gröber 2806f702d9 Start implementing line-prefix stuff
readProcess wrapper still missing from CabalHelper
2015-08-13 06:47:12 +02:00
Daniel Gröber 9b286cc4e1 Fix cabal-helper >= 0.5 2015-08-12 09:04:09 +02:00
Daniel Gröber 11243e5304 Add in-memory caching otherwise everything is slow 2015-08-11 07:38:25 +02:00
Daniel Gröber 2cd4d6bd80 Bind ghc-modi executable to right ghc-mod exe 2015-08-11 02:02:08 +02:00
Daniel Gröber bad431a758 Bump cabal-helper depdendency 2015-08-10 09:07:41 +02:00
Daniel Gröber 369b5c5d6e Bump cabal-helper dependency 2015-08-10 08:14:38 +02:00
Daniel Gröber c4d534ba1c Make sure preprocessed module are on the module path 2015-08-10 06:44:35 +02:00
Daniel Gröber 8439f12cb0 Let Cabal determine the package-db stack 2015-08-07 07:31:08 +02:00
Daniel Gröber 2c9b79449a Add missing test data to extra-source-files 2015-08-06 04:22:51 +02:00
Daniel Gröber 1a53582a21 Add failing test for missing warnings #507 2015-08-05 08:01:23 +02:00
Daniel Gröber ec008fbd1e Bump cabal-helper dependency 2015-08-03 05:47:16 +02:00
Daniel Gröber 509f43999f cabal-helper-0.3.5.0 is broken... 2015-07-06 18:41:34 +02:00
Daniel Gröber 49515b3eb8 Fix #487, Modules from sandbox not visible 2015-06-05 22:45:52 +02:00
Daniel Gröber 1e381a12a9 Remove some unnecessary dependencies from ghc-modi 2015-06-04 14:15:59 +02:00
NightRa 7b3a84bc74 Remove the data-default dependency 2015-05-28 00:22:04 +03:00
Daniel Gröber d9bc2092ab Remove dead code 2015-05-06 16:14:37 +02:00
Daniel Gröber 192fc220cc Fix some tests 2015-04-29 01:22:37 +02:00
Daniel Gröber fb19d021ca Fix a few warnings 2015-04-14 21:39:11 +02:00
Daniel Gröber ca79f99c3e Also add language options when resolving components 2015-04-12 02:48:54 +02:00
Daniel Gröber 523f43c3c9 Fix some tests 2015-04-12 02:48:54 +02:00
Daniel Gröber 744f2c232c Update cabal meta data 2015-03-28 19:13:51 +01:00
Daniel Gröber 80d91776c5 Cleanup and some fixes 2015-03-28 19:13:48 +01:00
Daniel Gröber 90d9577f8d Factor out cabal-helper into a package 2015-03-15 20:48:55 +01:00
Daniel Gröber e0bd4c6984 Update ghc-mod.cabal maintainer field 2015-03-05 17:35:29 +01:00
Daniel Gröber 01dde80385 Bring test suite up to date 2015-03-05 17:35:28 +01:00
Daniel Gröber f0ea445a9b Cleanup errors and logging a bit 2015-03-05 17:35:28 +01:00
Daniel Gröber bc71877dcf Change the way cabal-helper is built a bit 2015-03-05 17:35:28 +01:00
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 52e3233f44 Introducing cabal-helper-wrapper
The idea here is to build cabal-helper with whatever version of Cabal
the user happens to be using (which we find by looking at
dist/setup-config) at runtime.

This way we can support literally any version of Cabal as long as the
actual cabal-helper still compiles.

I tried to only use interfaces in Cabal that have been there since at
least 1.16 so I'm hoping this shouldn't break too much.
2015-03-03 21:06:58 +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 405b814726 Add cabal-helper for decoding Cabal-1.22 setup-configs
.. without having to worry about Cabal version conflicts
2015-02-08 12:43:35 +01:00
Daniel Gröber 471a3ec358 Fix ghc-7.4 2015-02-08 12:43:35 +01:00
Daniel Gröber 11562b4fe7 Cleanup cabal file using extentions 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
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 37af8e368d Refactoring World, etc. and fix #387 2014-11-02 01:19:27 +01:00
Daniel Gröber f55c264d67 Set version to "0" in master 2014-10-31 12:45:16 +01:00
Daniel Gröber ff75811a76 Start migrating ghc-modi code to src/GHCMod.hs 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
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 9974bcbf79 trying to fix travis ci. 2014-09-23 16:00:22 +09:00
Kazu Yamamoto e3e95adeb6 generating "autogen/" if not exist (#326). 2014-09-22 22:38:15 +09:00
Kazu Yamamoto 7382e1bf1d Misc module for ghc-modi. 2014-09-22 21:32:57 +09:00
Kazu Yamamoto 6f814a4378 restart a GhcMod session if the cabal file is changed. 2014-09-22 14:13:07 +09:00
Daniel Gröber 5a4bec8755 Rewrite `ghc-mod` command line frontend. 2014-09-18 10:45:14 +02:00
Daniel Gröber ab0347efaa monad-journal-0.4 fixes mtl dependency trouble 2014-09-16 22:37:04 +02:00
Daniel Gröber 8ca6f7d18b Temporarily restrict monad-journal version 2014-09-12 21:16:53 +02:00
Daniel Gröber e7073e79f5 Add PatternSynonyms test data to Extra-Source-Files 2014-09-12 21:16:43 +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 b9890a90ed ChangeLog 2014-09-12 04:01:58 +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
Daniel Gröber 7277d4d6c3 Bump version to 5.0.1.1 2014-08-24 14:49:30 +02:00
Daniel Gröber 7a6e37c57a Fix building with ghc 7.4 2014-08-24 14:41:30 +02:00
Daniel Gröber 5b32667060 typo 2014-08-21 00:32:46 +02:00
Daniel Gröber 252341ea41 Fix cabal.sandbox.config.in path in Extra-Source-Files 2014-08-21 00:27:32 +02:00
Kazu Yamamoto 23a8837632 adding missing elisp file. 2014-08-20 16:56:55 +09:00
Kazu Yamamoto 1e1505c535 removing warnings from spec. 2014-08-20 12:14:27 +09:00
Alejandro Serrano 77051545a4 Adde myself to Authors in cabal file 2014-08-19 18:35:10 +02:00
Daniel Gröber e696a66dfa Add myself to `Author` in ghc-mod.cabal 2014-08-19 05:24:28 +02:00
Daniel Gröber 271ff4e162 Catch `cabal configure` failure properly 2014-08-18 08:06:36 +02:00
Kazu Yamamoto 625d4661e7 fix #295. 2014-08-13 15:21:13 +09:00
Daniel Gröber 7388b50474 Add a test making sure pattern match failures on GhcModT work the way I expect 2014-08-06 20:42:34 +02:00
Daniel Gröber b978e1fd01 monad-journal fixes are upstream now 2014-08-06 19:43:52 +02:00
Daniel Gröber f311efd90c Rework GhcModT monad stack 2014-08-06 19:38:42 +02:00
Alejandro Serrano 7beea26082 Bump djinn-ghc version 2014-08-03 19:34:47 +02:00
Alejandro Serrano 9cc6476df1 Add better support for auto, with several options searched 2014-08-03 19:14:42 +02:00
Alejandro Serrano 9161757f95 First attempt to add auto 2014-08-01 17:08:23 +02:00
Kazu Yamamoto 07e461ff82 cleaning up conditions. 2014-07-25 13:34:20 +09:00
Kazu Yamamoto 26316262aa converting GhcMonad to IOish. 2014-07-18 14:54:39 +09:00
Daniel Gröber 0e17e8e15a Add a CPP macro when compiling modules for the test suite 2014-07-17 16:14:35 +02: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
Kazu Yamamoto cee1b83daa the first step to create SymbolDB via a file. 2014-07-17 11:57:19 +09:00
Kazu Yamamoto fdfa70e27a removing -threaded 2014-07-15 11:51:52 +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 68212d46a1 Fix cabal file 2014-07-15 01:53: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 503e8cbe06 Move DynFlag related functions from GHCApi to another module 2014-07-12 02:57:19 +02:00
Kazu Yamamoto 53394d3075 ver bumps up.
Major version is now 5 because of a lot of API changes.
2014-07-11 14:09:10 +09:00
Daniel Gröber 4b6a687bc1 Migrate the remaining parts of the exposed API to `GhcMod a` 2014-07-11 03:13:38 +02:00
Daniel Gröber d696214816 We really don't want mtl < 2.0 (different API) 2014-07-10 20:56:57 +02:00
Kazu Yamamoto 2091eb6027 Revert "workaround for #277"
This reverts commit ef2087b379.
2014-07-03 22:39:49 +09:00
Kazu Yamamoto ef2087b379 workaround for #277 2014-07-03 22:10:15 +09:00
Alejandro Serrano c06ee75fbb Fix building errors on ghc < 7.8 and tests 2014-06-28 23:18:49 +02:00
Alejandro Serrano 2ab6991d95 Move code to new FillSig module
- Clean up a lot of code
2014-06-27 18:38:15 +02:00
Alejandro Serrano 40cd5b7deb Haskell part of case splitting working! 2014-06-25 18:09:24 +02:00
Alejandro Serrano 5fa536714f Initial code generation working
- Added fallback with haskell-src-exts
2014-06-22 18:03:34 +02:00
Alejandro Serrano a45fb4c6f5 Move case split and sig. generation to own files
- Created SrcUtils module for shared functionality
2014-06-21 11:38:44 +02:00
Daniel Gröber 2b4f780296 Add `TestUtils` to `other-modules` 2014-05-14 20:56:14 +02:00
Daniel Gröber 8324dd96ae Don't expose `Convert` 2014-05-14 18:54:56 +02:00
Daniel Gröber 80e2761f2f Ghc->GhcMod: finish Browse, Check 2014-05-14 18:05:40 +02:00
Daniel Gröber ebfb740a2e Move `convert` to it's own module. 2014-05-14 17:06:30 +02:00
Daniel Gröber 96a85fe953 Copy readMaybe/readEither from base >= 4.7 for backwards compatibility 2014-05-10 13:43:46 +02:00
Daniel Gröber b8f9498f83 Fix reading of older Cabal `setup-config`s 2014-05-09 20:35:13 +02:00
Kazu Yamamoto 8f091b4f70 fixing fails in travis. 2014-05-08 16:38:17 +09:00
Daniel Gröber 3b5b9f8fcf Expose `Language.Haskell.GhcMod.Monad` 2014-05-04 04:57:38 +02:00
Daniel Gröber c50b4f5a38 ghc-mod deserves it's own monad
Having to call `findCradle` and `initializeFlagsWithCradle` everywhere
we interact with ghc-mod's API doesn't seem very Haskell-like to me I
think we should provide a Monad that has a run function that already
does all those tedious tasks for us.

The `GhcMod` monad is basically a wrapper around `RWST r w s IO` with an
instance for `GhcMonad`

Having a `Reader` allows us to pass `Options` to runGhcMod and not have
to worry about passing it everywhere, `Cradle` is also stored in the
reader environment on initialization.

Writer and State are just there for future use.

I've included a `toGhcMod` function that turns a `Ghc a` into a `GhcMod
a` this will make it easy to transition everyting to using the `GhcMod`
monad instead of `Ghc` without breaking the build or test suite for
extended periods of time.

Conflicts:
	ghc-mod.cabal
2014-05-04 04:57:38 +02:00
Daniel Gröber 77605c6daf Add `fromInstalledPackageId` 2014-05-03 15:36:10 +02:00
Daniel Gröber 6ad386d31e Add test data to Extra-Source-Files 2014-05-03 15:35:04 +02:00
Daniel Gröber 1c27e9ec4e Bump hspec dependency, should fix #236
`hspec-discover --no-main` was introduced in 1.8.2
2014-05-01 01:31:32 +02:00
Kazu Yamamoto 186485577d bootInfo as API. 2014-04-30 10:49:25 +09:00
Kazu Yamamoto 913fb72911 ErrMsg -> Logger. 2014-04-28 21:47:08 +09:00
Kazu Yamamoto d2a92529fc fixing deps. 2014-04-24 22:30:18 +09:00
Kazu Yamamoto 4011826a6b ver bumps up. 2014-04-24 22:22:23 +09:00
Kazu Yamamoto 390c509144 find functions went to lib. 2014-04-24 17:02:50 +09:00
Kazu Yamamoto bd34db1b07 using force just in case. 2014-04-22 13:32:33 +09:00
Kazu Yamamoto 1006cd4eec APIs in Ghc monad now go to GHCMod.Ghc. 2014-04-21 12:51:56 +09:00
Kazu Yamamoto 064e4af236 creating src/Boot.hs. 2014-04-21 11:57:14 +09:00
Kazu Yamamoto ab5e082e81 --quiet back (#226). 2014-04-19 08:26:30 +09:00
Kazu Yamamoto aecb9bc1e4 implementing suppressStdout/err. 2014-04-18 15:41:32 +09:00
Daniel Gröber 1639a7b2e0 Bring spec up to speed 2014-04-18 04:00:01 +02:00
Daniel Gröber be4172b454 Add cabal.sandbox.config.in to Extra-Source-Files 2014-04-15 17:13:55 +02:00
Daniel Gröber 30b8366526 Refactor the way packages databases are handled
- cradle now stores a list of active package databases instead of only
  the user store (if present).

- rename `cradlePackageDb` -> `cradlePkgDbStack` as that`s what the ghc
  documentaion calls this kind of thing

- `getPackageDbPackages` now returns names of all visible packages in
  the given directory. Also the implementation now uses `ghc-pkg`
  instead of manually looking at the package database
2014-04-15 05:15:50 +02:00
Kazu Yamamoto e537624e65 ver bumps up. 2014-04-07 15:04:27 +09:00
Kazu Yamamoto 172645aa9f ver bumps up. 2014-04-03 10:02:04 +09:00
Kazu Yamamoto f959a8029e ver bumps up. 2014-03-31 11:01:32 +09:00
Kazu Yamamoto 657a007b47 a new module. 2014-03-27 16:23:15 +09:00
Kazu Yamamoto 8238c632a8 using Data.Map if containers is old.
hoping passing travis tests.
2014-03-26 15:23:12 +09:00
Kazu Yamamoto 5c79376ca7 containers >= 0.5 for Data.Map.Strict. 2014-03-26 12:00:36 +09:00
Kazu Yamamoto dc6424454e ghc-insert-module now uses ghc-modi. 2014-03-25 14:29:18 +09:00
Kazu Yamamoto b40f162979 adding ghc-modi. 2014-03-19 10:23:47 +09:00