Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Ghc 9.0.1 support for ghcide (#1649)
* hie-compat: Add basic support for ghc-9.0.1 A tiny step towards #297 * hie-compat: Remove dependency on ghc-api-compat * hie-compat: Add more backwards compatability * Import a bunch of upstream ghc9 fixes * cabal.project: allow-newer: *:* The lazy solution to making things compile * Add more upstream fixes * Bump patch of ghc-check * ghcide: Add basic support for GHC-9.0.1 I tried to limit the use of CPP to the Compat module as much as possible by re-exporting the new functions under the old names, but there is still plenty of pragmas all over the code. I'm using ghc-api-compat so the imports doesn't need to be changed as much. * ghcide: Fix backwards compatability with ghc-8.8.4 * ghc9-ghcide: Fix some more issues that caused runtime errors * Restore initDynLinker for older versions of ghc It was probably important for something * Fix ghc-8.6.5 compatability * Fix completion test failures for ghc9 With this example: f asdfgh = asd it would suggest to complete `asd` into `asd_arNC`, which seems to be a name it generated because of deferred-out-of-scope-variables * Ghc-check now supports ghc-9.0.1 * Retrie now supports ghc-9.0.1 But it's not on hackage yet. * Restore retrie orphans * tests: Ghc9 shows [Char] as String by default This seems like an improvement, so just update the test-suite * tests: Ghc9 shows TH-errors after the dollar sign Instead of including it like older versions did $(foo) ~~~~ some TH error/warning * Fix two more test failures - GHC9 uses a more lenient haddock parser - TH2.17 has polymorphic Q monad with a type class * ghc9: Fix "Remove redundant imports" code action In ghc9, only the specific unused function is highlighted, instead of the whole line. * ghcide-tests: Show errors where they are caused instead of deep inside some generic helper function * Only use nub on SrcSpan for ghc>=9 * Remove more CPP pragmas * Remove a bit more CPP This could almost be handled by ghc-api-compat, but if it was imported from TyCoPpr, it doesn't work with ghc < 8.10 * Update stack files to support new versions * Use the version of retire on hackage The new version is now released * Don't use allow-newer: *:* * ghcide-tests: Enable test no longer broken in ghc9 * Update hiedb version for ghcide * Adjust for a minor change in test output for ghc9 * Fix benchmark test for ghc9 Cabal-3.2 is not buildable on ghc9, but 3.4 is builable on older ghc. * Mark minor issues as broken for ghc9 Ghc9 highlights both the constructor and the other fields Maybe this should just be accepted and not seen as broken? * haddock-comments-plugin: Ghc9 support * hls-eval-plugin: Partial ghc9 support * WIP: hls-eval-plugin: Partial ghc9 support * hls-explicit-imports-plugin: Add ghc9 support Now ignores any imports with Unhelpful locations, since we can't make a map of SrcLoc * hls-retrie-plugin: Add ghc9 support * hls-hlint-plugin: Add ghc9 support * Fix backwards compatability of hlint plugin * Fix stack builds (Broken by previous hlint fixes) * Disable tests when their required plugins are disabled Not all plugins are supported on ghc9 yet, but we still want to run the tests for the supported parts * ghc9: Fix module name plugin * Add a stack file and run tests for ghc9 in ci * Add missing packages to ghc-9 stack * Resolve rebase issues Maybe it's better to create merge commits instead? * Allow newer for more packages so cabal stops complaining These aren't really working, but since they are dependencies of packages in the `packages:` section the resolver won't allow us to build anything without this, even if those plugins are disabled. * Replace MIN_GHC_API_VERSION with MIN_VERSION_ghc * Revert incorrect change to hlint code * Remove remaining traces of GHC_LIB flag * Add back ghc 9 to github workflow * Revert "Add back ghc 9 to github workflow" This reverts commit c465a1e. * hie-compat: Add basic support for ghc-9.0.1 A tiny step towards #297 * hie-compat: Remove dependency on ghc-api-compat * hie-compat: Add more backwards compatability * Disable CI for ghc9 * Use newer version of apply-refact * Don't needlessly duplicate code from ghc * hie-compat: Reexport the original version of HieBin * Don't include broken "allow-newer"s * FIx stack build for ghc9 * Fix warning from imperfect merge commit * Don't needlessly duplicate code from ghc * hie-compat: Reexport the original version of HieBin * Add missing ghc-api-compat * Fix ghc9 build for ModuleName * Add more conditionals on flags for tests * Add a separate cabal.project file for ghc9 As far as I know, this is the only way to disable the packages who's dependencies doesn't compile in GHC9 yet. * Fix and re-enable CI for GHC9 * Remove accidental non-breaking space * Fix CI build for ghc9 Since we are changing the flags for haskell-language-server, which CI renames to hls, we need to use the shortened name in those flags as well * Run tests for ghc9 in CI * Minor CI changes * Use proper values when enriching hie * Don't try to test hls-refine-imports-plugin on ghc9 * Update comment about ghc9 crashing on initDynLinker * setSessionDynamicFlags to prevent ghc9 from crashing The only way to set the dynamic linker is with the function `setSessionDynFlags` so we call it with the result from `getSessionDynFlags` to give it a (hopefully sensible) argument. See also this commit: https://gitlab.haskell.org/ghc/ghc/commit/18757cab04c5c5c48eaceea19469d4811c5d0371 * Revert "setSessionDynamicFlags to prevent ghc9 from crashing" This reverts commit 4065ac8. That change made the "ghcide.cradle.muli" tests fail. * Simplify logic in hls-hlint-plugin.cabal * Add comment on OldRealSrcSpan * Remove source overrides for non-ghc9 builds in cabal.project * Remove commented out code Co-authored-by: Pepe Iborra <pepeiborra@me.com> * Remove resolved question from comment "This code is only concerned with extracting argument names, so I don't see how multiplicity would be relevant here" #1649 (comment) * ghc9: Update to latest version of LSP per * cabal-ghc901.project: Remove commented out code * Update the lsp commit hash for stack as well * Use a version of lsp without haskell/lsp#326 That patch was causing test failures, but the issues should be fixed for real at some point, so that patch can be incluede Co-authored-by: Pepe Iborra <pepeiborra@gmail.com> Co-authored-by: Pepe Iborra <pepeiborra@me.com>
- Loading branch information