Commit Graph

142 Commits

Author SHA1 Message Date
Neil Mitchell
6f79fd1392 Delete unused deps (#1856)
* Delete unused package dependencies

* Eliminate the use of pretty

* Don't export some things that weren't necessary

* Add a missing dependency

* Avoid reexporting files of interest methods

* Put toIdeResult back
2019-09-10 14:52:17 +02:00
Neil Mitchell
e686887a48 Don't import LSP.Protocol (#1853) 2019-09-10 14:52:17 +02:00
Moritz Kiefer
0336e41d2e Support goto definition on types in type annotations and type signatures (#1845) 2019-09-10 14:52:17 +02:00
Neil Mitchell
f746db9dc4 Clean up the logging in hie-core (#1839)
* Move prettyPosition over to a more sensible place

* Avoid some pretty printing

* Remove duplicate methods and switch to having a function to get the logger handle

* Remove unncessary bits of the logger

* Remove reportSeriousErrorDie - was unused

* Rename the Logger methods to Logger rather than Handle

* Delete the unique supply

* Decrease the use of getServiceEnv

* Move getIdeOptions inside Service

* Add getFilesOfInterest rule

* Hide the existence of Env

* Inline some redundant forwarding methods

* Add a FIXME for a dodgy function

* Delete some redundant imports

* Rename Map to HMap, since I need to use Data.Map too

* Make the Shake-specific Diagnostics functions into that module

* Delete errorDiag which was unused

* Inline the diagnostic function, since it had one user

* Add ofInterest rule as a separate module

* Sort the exposed modules

* Fix up the demo

* Make sure you add the OfInterestVar global

* HLint

* Get rid of some of interest stuff in other places

* Remove the OfInterest stuff from Service
2019-09-10 14:52:17 +02:00
Moritz Kiefer
bf2cbd259c Fix cross package goto definition (#1834)
The reason for why it was broken was rather simple: We just lost the
non-compat logic somewhere along the way.

fixes #1582
2019-09-10 14:52:17 +02:00
Neil Mitchell
c1c48513d4 Make hie-core Compile simpler (#1832)
* Delete LoadPackageResult, was unused

* Delete tmrOccEnvName from Compile

* Push orphan instances around a bit, avoiding some

* Make convertModule take an explicit filename to report against (since we have a good one in our hands)

* Get rid of GhcModule - only one field was ever used

* Collapse setVritualFileContents and removeVirtualFile into one

* Make the VFSHandle abstract

* Make it clear runGhcSession does not need IdeOptions

* Avoid passing around IdeOptions so much when they aren't required

* Get rid of runGhcSessionExcept

* Make catchSrcErrors be in Either, not ExceptT

* Don't import ExceptT qualified

* Don't import Exception qualified

* Rewrite and simplify computePackageDeps
2019-09-10 14:52:17 +02:00
Neil Mitchell
163bbc9133 Delete prettyprinter-syntax (#1829)
* Delete the entirely unused reflow function

* Don't have Data.Text.Prettyprint.Doc.Syntax reexport stuff

* Move most of the pretty printing inside hie-core

* Get rid of the prettyprinter-syntax dependency from hie-core

* Get rid of prettyprinter-syntax, by collapsing the one definition into DA.Pretty
2019-09-10 14:52:17 +02:00
Shayne Fletcher
0452205859 Integrate Emacs instructions into README (#1831)
* Integrate Emacs instructions into README

* Fix a grammatical error
2019-09-10 14:52:17 +02:00
Neil Mitchell
b448af540e Add additional step of building the hie-core extension (#1827) 2019-09-10 14:52:17 +02:00
Shayne Fletcher
59e871c6e8 Update the hie-bios commit SHA (#1825)
* Update the hie-bios commit SHA

* Also update the SHA in our bazel WORKSPACE

* Update the hash too

* Tutorial for Emacs integration

* Update hie-bios patch
2019-09-10 14:52:17 +02:00
Neil Mitchell
f46fff9b0a Further cleanups to hie-core (#1819)
* Move the span related functionality to one place

* Fuse docHeaders away

* Decouple AtPoint from the rest of the rule database, simplifying the dependencies

* Move the import related functionality to one place

* Move all the closely tied to GHC modules together

* Rename the Logger module

* Push the other module renames through the code base

* Rename Development.IDE.State to Development.IDE.Core

* Rename Functions.Compile to Core.Compile

* Fix up some module names

* Cut down on non-sensicle exports

* Don't worry about setting source - no one uses it

* Reorder the module header

* Give more sensible names to the diagnostic creating functions

* Use more appropriate diagnostic functions

* Simplify the internal diagnostic creations

* Rewrite the diagnostics to go direct, not via GHC error types

* Remove redundant dflags from some functions

* Make sure the warning vs error distinction remains

* Remove unnecessary extensions
2019-09-10 14:52:17 +02:00
Neil Mitchell
6270442743 Clean up hie-core (#1815)
* Make atPoint generate either haskell or daml syntax, depending on options

* Get rid of data HoverText

* Move VirtualResource out from hie-core

* Rename hie-core to the right name

* Drop Types.LSP, merge it into LSP.Protocol

* Remove orphans that aren't actually used in our code

* Delete redundant newlines

* Add a defaultIdeOptions function

* Move ideTryIOException over to its one user

* Delete unused exports

* Delete the ProjectDiagnostic newtype - the type index was always Key

* Don't reexport position information from Diagnostic

* Delete the unused bits from Location

* Delete unused stuff from getSrcSpan

* Move URL stuff into Location from Diagnostic

* Remove unnecessary CPP

* Remove unnecessary extension

* Change from stage being polymorphic to being a Text

* Fix up the test suite too

* Push the cleanup to the edges

* More dependencies

* Patch up the tests now they need to find the type signature inside a ```daml block
2019-09-10 14:52:17 +02:00
Neil Mitchell
036e3d0002 Rename haskell-ide-core to hie-core (#1809)
* Rename haskell-ide-core as hie-core, after discussions with Alan Zimmerman and others

* Update the readme to just say how to install
2019-09-10 14:52:17 +02:00
Moritz Kiefer
26d932c14f Support goto definition on symbols in the module export list (#1801) 2019-06-21 14:07:59 +00:00
Moritz Kiefer
a590e8ddbf Clean up the Handle module (#1793)
Handle is kind of a mess at the moment, this is a first step towards
cleaning it up:

1. We had two functions called getDalfDependencies with one wrapping
the other. This PR merges them into one to make this less confusing.

2. buildDar called runAction a bunch of times directly and via other
functions. This PR switches it to use a single call to runAction.

3. The logic for turning a Maybe into an `ExceptT [FileDiagnostic]`
was duplicated in various places. This PR factor out the logic into a
single function.

There is certainly more cleanup to be done (e.g., I don’t think
ExceptT buys us anything here, that module should probably die
completely with the logic being moved to other modules, …) but I’d
like to do it incrementally.
2019-06-21 09:53:20 +00:00
Moritz Kiefer
4194dee648 Use BadDependency consistently (#1787)
Previously we had a weird mix of using ExceptT to shortcircuit on
failed dependencies where the list of diagnostics was always empty and
throwing BadDependency exceptions.

This PR switches everything over to use BadDependency for failed
dependencies and removes a lot of conversions from one style to the
other.
2019-06-21 09:27:40 +02:00
DavidM-D
79d712397b Hic elisp (#1714)
* Added elisp to the readme

* Changed the flags for compatibility with HIE

* Change the default arguments to reflect hie compat
2019-06-18 14:10:52 +02:00
Moritz Kiefer
ebbe9800b5 Make runActions return Return as soon as results are available (#1736)
* Make runActions return Return as soon as results are available

Previously, we were waiting for all rules to finish, in particular the
ofInterestRule. That doesn’t really make any sense, e.g., a goto
definition request should not be waiting for all scenarios to run.

The next step will be to change the LSP side such that requests and
notifications are processed in parallel where possible.
2019-06-18 14:08:13 +02:00
Robin Krom
d0ab8cb290 language: feature: initial implementation of a 'migrate' command (#1707)
* language: feature: initial implementation of a 'migrate' command

We add a 'migrate' command to daml assistant that generates a project
that allows to migrate contract instances from package1 to package2.
This first version reads both package1 and package2 from source. As a
next step we read only the dalfs from package1, because it might have
been created with a different compiler.
2019-06-17 16:40:08 +02:00
Andreas Herrmann
62270e02b0 Load core-package dependencies in da-ghci (#1712)
* Fix #1656

* da-ghcid extra arguments

* Fix formatting
2019-06-17 12:56:33 +00:00
Neil Mitchell
cb7d95edac Don't pass the same argument twice (#1708) 2019-06-17 12:20:51 +00:00
Neil Mitchell
e17aa608e3 Fix up the CPP flags that are defined (#1694) 2019-06-17 13:10:15 +02:00
Gary Verhaegen
8b806198c0 Update README.md (#1690) 2019-06-15 21:16:16 +02:00
Neil Mitchell
210de4e46c Don't error on goto definition for another package (#1687) 2019-06-15 16:11:20 +02:00
Neil Mitchell
f7cff7c3c8 Describe how to install the IDE (#1686)
* Add more package.json attributes

* Rename ide-demo to haskell-ide-core

* Change the default flags for the IDE

* Update the README with how to install things
2019-06-15 13:23:59 +02:00
Moritz Kiefer
1be84f1a23 Initial stab at integrating hie-bios (#1685) 2019-06-15 10:29:40 +02:00
Neil Mitchell
e823c5d431 Add IDE Readme (#1678)
* Add .vscode settings that are useful for making it easier to build

* Ignore the extension output

* Add a README that describes how to start the IDE
2019-06-14 18:10:13 +02:00
Neil Mitchell
18df605494 Add CodeLens support to the fake LanguageServer (#1673) 2019-06-14 15:24:24 +00:00
DavidM-D
d6c55d6749 Initial commit of bare bones haskell extension (#1674)
* Initial commit of bare bones haskell extension

* Removed dummy tests

* Added highlighting extension as dependency

* Added copyright header
2019-06-14 15:12:56 +00:00
Neil Mitchell
e2e158a85d Move the ofInterest kicking around in the IDE (#1669)
* Move getFilesOfInterest into the IDE, and OfInterest out into DAML

* Have the IDE mode kick all active files each time

* Add a missing .cabal dependency

* Add a missing dependencies

* Use the right thing, if any files have parse errors, then don't worry

* Print messages to stderr rather than stdout

* Add a big warning that writing to stdout is a bad plan
2019-06-14 14:23:22 +00:00
Nicholas Clarke
0058173e29 Add: Support building in nix-shell. (#1670)
Can now run the demo script inside a nix-shell which provides a GHC libdir.
2019-06-14 16:11:32 +02:00
Neil Mitchell
952959293f Add --ide flag (#1668)
* Add --ide flag to the Demo

* Fix things in the .cabal file

* Add tracing messages to Demo.hs
2019-06-14 14:26:25 +02:00
Neil Mitchell
28946c2115 Move LanguageServer into haskell-ide-core (#1665)
* Move Definition and Hover over to IDE.LSP

* Copy LanguageServer over to IDE Core, not ideal, but hard to abstract right now

* Warn that there are two copies of a given module

* Move printing out the SDK version out of language-server
2019-06-14 09:02:04 +00:00
Neil Mitchell
6f7b304106 Update to use LSP from github (#1662)
* Update to use LSP from github

* Switch to upstream LSP everywhere
2019-06-14 08:38:29 +00:00
Neil Mitchell
58100cb74c Update haskell-ide-core.cabal (#1659) 2019-06-14 01:12:34 +02:00
Neil Mitchell
9a3fa3fe8b Change the IDE demo to use runLanguageServer (#1655) 2019-06-13 18:21:27 +02:00
Neil Mitchell
795f7b20bb Inline da-hs-language-server into haskell-ide-core (#1652)
* Inline da-hs-language-server into haskell-ide-core

* Fix up the bazel file for new dependencies
2019-06-13 18:03:26 +02:00
Moritz Kiefer
4300283193 Remove one level of tracking files of interest and open VRs (#1650)
Previously we tracked this both at the Shake level and at the LSP
level which doesn’t make any sense. This PR removes the outer LSP
layer.
2019-06-13 15:14:34 +00:00
Moritz Kiefer
794846dd28 Remove the dependency of da-hs-language-server and language-server on da-hs-base (#1642) 2019-06-13 13:48:25 +00:00
Moritz Kiefer
41d693ad03 Introduce a newtype for file paths with normalized slashes (#1633)
This implements part 2 of #1507 and fixes the daml-ghc-test-dev test
suite on Windows (not enabled on CI due to GRPC issues).

I have also tested this in the IDE on Windows and Linux.
2019-06-13 15:11:47 +02:00
Moritz Kiefer
3fd52a88ab Normalize percent-encoding in URIs (#1603)
This implements step 1. from #1507 and also adds a test that uses an
insane percent-encoding to verify that we can handle that.

I also tested this in the IDE on Windows and Linux.
2019-06-12 15:20:23 +02:00
Moritz Kiefer
35e2d881dd Use FromServerMessage directly (#1583)
Previously we had two layers of indirection:

In the compiler we emitted Event, we then translated this to
ClientNotification which was then translated to
FromServerMessage.

Apart from being confusing and convoluted this also resulted in us
doing the conversion to generic LSP types too late so we had scenario
specific code in places where it shouldn’t be.

This PR removes the indirection and just uses FromServerMessage
directly.
2019-06-11 16:03:44 +02:00
Shayne Fletcher
44b366e720 Up-(actually down-)grade to ghc-lib-8.8.0.20190610 (#1576)
* Up-(actually down-)grade to ghc-lib-8.8.0.20190610

* A `#ifndef GHC_STABLE` removed. `ml_hie_file` must be set unconditionally

* Pass Opt_WriteHie in xFlagsSet

* Oops. Revert. This breaks Windows. Very confusing

* Disable test; track in issue https://github.com/digital-asset/daml/issues/1582

* Remove Opt_WriteHie flag (Causes test failures trying to write into a read-only filesystem in CI)
2019-06-11 08:58:16 -04:00
Moritz Kiefer
1d3d46ea76 Remove EventFileValidation (#1579)
We never actually emit this event so it’s pretty much useless. If we
do want to add progress reporting at some point, we should go with the
recently added official support for that in LSP
https://github.com/Microsoft/language-server-protocol/issues/70#issuecomment-483252666.
2019-06-11 09:15:12 +00:00
Martin Huschenbett
501a4a1b9f Make it explicit that contract key maintainers are computed from key (#1527)
* Use ghc-lib-0.20190604

* HieFile fix

* Update to ghc-lib-0.20190604.1

* Make maintainers depend directly on key

* Remove useless tests

* Adjust documentation

* Add release notes

* Simplify some code

* Fix tests to use new syntax

* Fix template desugaring docs

* Fix more tests
2019-06-05 10:27:38 -04:00
Moritz Kiefer
b6fd3c1a75 Remove use of managed for starting the scenario service (#1508)
Ironically `managed` didn't turn out to make our code more manageable
and we ended up mostly using it in very isolated places only to then
immediately convert it back to bracket-style functions using `with`.

This PR also removes the use of `managed` from the GcpLogger which was
the only other place where we are using it and it finally kills the
rather silly logic that starting up the scenario service was tied to
having an event logger.
2019-06-04 17:17:05 +02:00
Moritz Kiefer
30b531a51f Escape colons in URIs to be consistent with VSCode (#1504)
The details are described in a comment but the short story is
that a roundtrip Uri -> FilePath -> Uri necessarily loses information
on which characters were escaped. The long-term solution here is to
avoid this roundtrip altogether but this at least fixes the issue for
now.
2019-06-04 09:45:29 +02:00
Moritz Kiefer
7c3213c3c5 Use haskell-lsp’s builtin VFS in "damlc ide" (#1489)
* Use haskell-lsp’s builtin VFS in "damlc ide"

haskell-lsp has a builtin VFS that it updates automatically on the
corresponding requests. This PR removes our own VFS implementation and
uses that builtin VFS in "damlc ide". To allow the use of functions
like setBufferModified (we use that heavily in daml-ghc-shake-test-ci)
without having to spawn an LSP server, we also add a fallback where we
spin up our own LSP implementation.
2019-06-03 16:19:30 +02:00
DavidM-D
85379f55dd Added a barebones readme for haskell-ide-core as I've linked it from... (#1493)
...the zurihac project page
2019-06-03 14:03:15 +01:00
Shayne Fletcher
3769dd41ca Ghc lib 0.20190531 (#1486)
* Upgrade to ghc-lib-0.20190531

* Listen up Wally, Remove redundant commented code!

* Argh! WhattamistakeAtomakeA!

* Whitespace to force Azure pipeline to reconsider ignoring this PR

* Repackage ghc-lib, update SHAs and push again

* Refer to a non-existent release as an experiment

* Put the release number back

* Fix build of haskell-ide-core-public
2019-06-01 06:48:49 -04:00