Commit Graph

325 Commits

Author SHA1 Message Date
Moritz Kiefer
eed26cda09 Turn the damlc module hierarchy into something a bit more sane (#2061)
This should hopefully be the last large reshuffling PR. I’ll write a
description of the new layout in the readme in a separate PR.
2019-09-10 14:52:17 +02:00
Moritz Kiefer
906e5f85b1 Fix VSCode extension and remove silly warnings (#2042) 2019-09-10 14:52:17 +02:00
Moritz Kiefer
0743b0e47c Move code in daml-tools outside of daml-foundations (#2033) 2019-09-10 14:52:17 +02:00
Moritz Kiefer
1a7d83c7e8 Expose TcModuleResult in RuleTypes (#2014)
This should really be part of the public API.
2019-09-10 14:52:17 +02:00
Moritz Kiefer
5beb77cdb0 Fix some expected failures in damlc-shake-tests (#2010)
Most of them were caused by off-by-one errors in goto definition.

There was also one test that was marked as an expected failure but the
actual bug has been fixed for some time and the only reason it was
failing is that the error message was different than the test
expected.

I’ve also renamed daml-ghc-shake-test-ci to damlc-shake-tests which is
something that I might actually be able to remember :)
2019-09-10 14:52:17 +02:00
Moritz Kiefer
1fee8b0890 Fix flaky LSP stress tests (#2004)
Previously, we only checked two diagnostics messages. However, the
second diagnostics messages does not actually need to correspond to
the latest change but can just be a message that has been in the queue
from one of the 1000 changes before. Now we make sure to actually
check all (or at least every second) diagnostic.

This was technically also an issue before but since we only emitted
diagnostics when they changed and we alternate between two states it
worked fine. The way we implement debouncing means that we can now
also end up emitting two consecutive diagnostics changes for the same
set of diagnostics which made this test flaky.
2019-09-10 14:52:17 +02:00
Shayne Fletcher
5e3fcffe1a Add Development.IDE.Core.Debouncer to library other-modules (#1998) 2019-09-10 14:52:17 +02:00
Moritz Kiefer
d61807c240 Implement debouncing of diagnostics (#1991)
Previously, we emitted diagnostics notifications as soon as we got
them. This resulted in a lot of flickering due to diagnostics getting
cleared briefly when typing only to immediately reappear.

Now, we buffer them for 0.1s so that a new event restoring the
same diagnostics for a slightly modified file will overwrite the
initial clear of diagnostics for the new document version.
2019-09-10 14:52:17 +02:00
Neil Mitchell
ddb7bd31d3 Clean up hie-core (#1992)
* Split off addRelativeImport from modifying the session

* Switch located imports to adding their own relative imports

* Delete the unused getGhcDynFlags

* Make runGhcEnv no longer need to consult import paths

* Call runGhcEnv directly

* Move getSrcSpanInfos out to Spans

* Remove a redundant import

* Make findImports in Either rather than ExceptT

* Move getImports over to the right place

* Switch to liftEither
2019-09-10 14:52:17 +02:00
Neil Mitchell
5ebce24189 Make Haddock work for hie-core (#1990) 2019-09-10 14:52:17 +02:00
Neil Mitchell
44b40b5086 Hide some hie-core modules (#1987)
* Hide some hie-core modules

* Make bazelifier happy
2019-09-10 14:52:17 +02:00
Neil Mitchell
9308740773 Fewer orphan instances in hie-core (#1984)
* Get rid of orphan usage in Convert

* Get rid of orphan usage in AtPoint

* Delete one entirely unused orphan

* Remove a comment that is no longer true
2019-09-10 14:52:17 +02:00
Neil Mitchell
4a9010ba10 Standalone pieces for hie-core (#1982)
* Add a .gitignore just for the hie-core piece

* Add standalone pieces to make hie-core work with a global Cabal install

* Add more things to .gitignore, PR suggestion

* Add copyright header
2019-09-10 14:52:17 +02:00
Moritz Kiefer
2bbde912c5 Make Priority in hie-core independent of DAML (#1983) 2019-09-10 14:52:17 +02:00
Moritz Kiefer
2ba7d08ed6 Cleanup moduleImportPaths now that file paths are normalized (#1980) 2019-09-10 14:52:17 +02:00
Moritz Kiefer
27f547fd94 Fix running the IDE on damlc (#1956)
* Fix running the IDE on damlc

There were two issues:

1. Missing include paths.
2. Files where the module name does not match the file name.

I’ve fixed both and added a test that we can load the damlc Main.hs.
2019-09-10 14:52:17 +02:00
Moritz Kiefer
c1efd35bd0 Combine all artifacts output by damlc in .daml (#1959)
Fixes #1241
2019-09-10 14:52:17 +02:00
Moritz Kiefer
66d5bf17d8 Implement LSP request cancellation (#1954)
* Implement LSP request cancellation
2019-09-10 14:52:17 +02:00
Neil Mitchell
42221e66d5 More code actions for hie-core (#1948)
* Push the suggestion work further up

* Make LspFuncs an argument to the handlers

* Actually pass around the contents of the buffer to suggestAction

* Make suggestAction do sensible figuring out if you remove the next line too

* Better indentation

* Code action to add GHC extensions as required

* Deal with extra arguments to LSP handler
2019-09-10 14:52:17 +02:00
Andreas Herrmann
ff492c37b3 Mask async exceptions in updateFileDiagnostics (#1944)
* Mask async exceptions in updateFileDiagnostics

* lsp-tests remove flaky flag
2019-09-10 14:52:17 +02:00
Shayne Fletcher
205cce9b63 Make the README a little prettier (#1949)
* Make the README a little prettier

* Remove vscode.png

* Image float right

* Go back to regular title; scale image 75%
2019-09-10 14:52:17 +02:00
Neil Mitchell
9a45c0d17e Add "Remove import" code action (#1945)
* Add a code action

* Update comments

* Remove logging, since its too verbose

* Fix a few warnings, add a final case

* Add an example of what the code action matches
2019-09-10 14:52:17 +02:00
Neil Mitchell
eddf78a798 Fix hie.cabal (#1943)
* I put safe-exceptions in the executable, not the library

* Sort all the lines in the .cabal file
2019-09-10 14:52:17 +02:00
Neil Mitchell
04576f086d Avoid non-termination in runAction (#1938)
* Add more comments to shakeRun

* Delete the multiple versions of runActions, since they weren't used and parallel is good enough

* Delete runActionsSync entirely

* Make sure runAction returns even if shakeRun throws an exception

* Remove the callback from shakeRun - it was never used

* Fix one last use

* More comments
2019-09-10 14:52:17 +02:00
Neil Mitchell
16873edb44 hie-core Logging and exceptions (#1933)
* Rename reportSeriousError to reportInternalError

* Stop using logError for logging things that are warnings to the user, not errors by us

* Rename logError

* Sort the log fields properly

* Delete tagAction from Logger

* Strip down the pure logger

* Delete unused pieces of the logger

* A quick check suggests the call stack will be useful in approximately none of the callers of logging, so just remove it

* When reporting an internal error, give as much detail as we can

* Change our logger to be based on Priority values

* HLint fixes

* Rename makeNopLogger

* In hie-core say what level of message you are setting

* Delete the unused makeOneLogger

* Make sure we can show messages floating around

* If a notification/response handler throws an exception, report it upwards

* Remove reportInternalError in favour of a general logging mechanism

* Add missing dependencies

* Just call fail for a dodgy error report

* Add a FIXME

* Make missing modules just an error
2019-09-10 14:52:17 +02:00
Neil Mitchell
f70eece4c7 Make CPP work better with hie-core (#1903)
* Pull the CPP into a separate module

* Pass Nothing to indicate that a text buffer shoud just be used from disk

* Add save handlers, since the version changing to ModTime may have an impact

* Rename contents to mbContents in one place

* Change runCpp to take a Maybe StringBuffer and attempt to reuse the existing file, if it can

* Add a Bazel alias for hie-core

* Add notes about the sad path

* Avoid one use of filePathToUri

* Avoid another use of filePathToUri which went wrong for CPP output

* Normalize Uri's by replacing adjacent // with a single /

* Improve how CPP works if you have a modified buffer

* Move textToStringBuffer out to Util

* Switch to hPutStringBuffer which is in GHC 8.8

* Note why we are escaping to /

* Refactoring suggested by review
2019-09-10 14:52:17 +02:00
Neil Mitchell
72593a285d Make hie-core outside an IDE work better (#1895)
* Move the hie-core demo files around (they aren't really a demo anymore)

* Split the command line parsing into a separate module

* Give messages about how long starting something takes

* Make the interactive mode say what it is doing a bit more

* Add a --cwd flag to hie-core

* Take a list of files and directories for hie-core

* Update the readme to say how to test using hie-core

* Fix up the bazel file

* Add HLint exception
2019-09-10 14:52:17 +02:00
Neil Mitchell
876e07d5d6 Delete bits of hie-core that were unused (#1885)
* Delete now unused code

* Make protocol not reexport LSP.Types

* Delete more comments

* HLint
2019-09-10 14:52:17 +02:00
Neil Mitchell
124a4d47da Make the hie-core server retargetable (#1873)
* Move mergeHandlers into Server

* Make partial handlers a proper newtype

* Pass the options in to runLanguageServer

* Take in user handlers

* Remove the code lens handler since we don't advertise it

* Add setSomethingModified, rather than faking it for the LSP VFS

* Rewrite the LSP notifications

* Improve the display of info messages around openning and modifying text documents

* Make sure stdout and stderr don't have buffering, so we see their output immediately

* Handle exit properly

* Make notifications forward on to their previous values

* Remove the exit handler, HIE already has a good default for it

* Add comments on FileStore
2019-09-10 14:52:17 +02:00
Neil Mitchell
62cf82a32e Correct hie-core grammar (#1871) 2019-09-10 14:52:17 +02:00
Neil Mitchell
47332f1835 Give the readme a significant pass (#1869) 2019-09-10 14:52:17 +02:00
Robin Krom
067af9b356 language: upgrades: no generics for data types having the instances already (#1840)
language: upgrades: dont derive generics for data types having the instances already

We only derive generic instances on the fly for data types that don't
have them already.
2019-09-10 14:52:17 +02:00
Neil Mitchell
7870ee8043 Significantly alter the hie-core LanguageServer (#1862)
* Inline chunks of LSP.Server into LanguageServer

* Inline runServer

* Start figuring out a better API for gotoDefinition

* Remove old JIRA ticket numbers

* Add a hover handler in the new form

* Change the new handlers slightly

* Add a new module to handle notifications updating the virtual file system

* Rewrite the language server in hie-core to use the Handler more directly

* Add a cancel handler

* Ignore a few more handlers

* HLint

* REname functions that set handlers

* Rename a few more set handlers

* Delete the unused makeResponse

* Move mergeHandlers over to LanguageServer

* Rename RunHandler to WithMessage

* Switch from STM to IO

* Avoid the Protocol module

* Rename AddItem to Message

* Document why we use clientMsgChan

* Add comments around Message
2019-09-10 14:52:17 +02:00
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