Skip to content

Instantly share code, notes, and snippets.

@wz1000
Created July 23, 2019 10:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wz1000/9e2b6595690a89ab189e59d40ba572f8 to your computer and use it in GitHub Desktop.
Save wz1000/9e2b6595690a89ab189e59d40ba572f8 to your computer and use it in GitHub Desktop.
Command
commands
are prefixed
get de-prefixed
Completion
completions
works
does not pull in unnecessary modules until needed
completes imports
completes qualified imports
completes language extensions
completes pragmas
completes pragmas no close
completes options pragma
completes ghc options pragma values
completes with no prefix
strips compiler generated stuff from completions
contexts
only provides type suggestions
only provides type suggestions
have implicit foralls on basic polymorphic types
have implicit foralls with multiple type variables
snippets
work for argumentless constructors
work for polymorphic types
work for complex types
work for infix functions
work for infix functions in backticks
work for qualified infix functions
work for qualified infix functions in backticks
respects lsp configuration
respects client capabilities
Deferred
deferred responses
do not affect hover requests
instantly respond to failed modules with no cache
respond to untypecheckable modules with parsed module cache FAILED [1]
returns hints as diagnostics
multi-server setup
doesn't have clashing commands on two servers
multiple main modules
Can load one file at a time, when more than one Main module exists
Definition
definitions
goto's symbols
goto's imported modules
goto's exported modules
goto's imported modules that are loaded
goto's imported modules that are loaded, and then closed
Diagnostics
diagnostics providers
diagnostics triggers
runs diagnostics on save
typed hole errors
is deferred
Warnings are warnings
Overrides -Werror
only diagnostics on save
Respects diagnosticsOnChange setting
Format
format document
works
works with custom tab size
format range
works
works with custom tab size
formatting provider
respects none
can change on the fly
brittany
formats a document with LF endings
formats a document with CRLF endings
formats a range with LF endings
formats a range with CRLF endings
FunctionalBadProject
behaviour on malformed projects
deals with cabal file with unsatisfiable dependency FAILED [2]
FunctionalCodeActions
code actions
hlint suggestions
provides 3.8 code actions
falls back to pre 3.8 code actions
runs diagnostics on save
rename suggestions
works
doesn't give both documentChanges and changes
import suggestions
formats with brittany
Execute HsImport with formatter brittany
works with 3.8 code action kinds
formats
import-list formats
multiple import-list formats
respects format config, multiple import-list
respects format config
import-list respects format config
complex import-list
complex import-list respects format config
formats with floskell
Execute HsImport with formatter floskell
works with 3.8 code action kinds
formats
import-list formats
multiple import-list formats
respects format config, multiple import-list
respects format config
import-list respects format config
complex import-list
complex import-list respects format config
add package suggestions
adds to .cabal files
adds to hpack package.yaml files
redundant import code actions
remove solitary redundant imports
doesn't touch other imports
typed hole code actions
works
shows more suggestions
missing top level signature code actions
Adds top level signature
missing pragma warning code actions
Adds TypeSynonymInstances pragma
unused term code actions
Prefixes with '_' FAILED [3]
respect 'only' parameter
FunctionalLiquid
liquid haskell diagnostics
runs diagnostics on save, no liquid
runs diagnostics on save, with liquid haskell FAILED [4]
HaRe
HaRe
code actions
lift one level
works
lift to top level
works
delete definition
works
duplicate definition
works
demote definition
works
casesplit argument
works FAILED [5]
Highlight
highlight
works
Hover
hover
works
Progress
window/progress
sends indefinite progress notifications
sends indefinite progress notifications with liquid FAILED [6]
References
references
works with definitions
Rename
rename
works
Symbols
document symbols
3.10 hierarchical document symbols
provides nested data types and constructors
provides nested where functions
provides pattern synonyms
pre 3.10 symbol information
provides nested data types and constructors
provides nested where functions
TypeDefinition
type definitions
finds local definition of record variable
finds local definition of newtype variable
finds local definition of sum type variable
finds local definition of sum type contructor
can not find non-local definition of type def
find local definition of type def
find type-definition of type def in component
find definition of parameterized data type
Failures:
test/functional/DeferredSpec.hs:99:5:
1) Deferred, deferred responses, respond to untypecheckable modules with parsed module cache
uncaught exception: SessionException
Received an unexpected message from the server:
Was parsing: Pattern match failure in do expression at test/functional/DeferredSpec.hs:102:9-22
Last message received: RspDocumentSymbols (ResponseMessage {_jsonrpc = "2.0", _id = IdRspInt 1, _result = Just (DSDocumentSymbols (List [])), _error = Nothing})
To rerun use: --match "/Deferred/deferred responses/respond to untypecheckable modules with parsed module cache/"
test/functional/FunctionalBadProjectSpec.hs:19:5:
2) FunctionalBadProject, behaviour on malformed projects, deals with cabal file with unsatisfiable dependency
uncaught exception: SessionException
Timed out waiting to receive a message from the server.
To rerun use: --match "/FunctionalBadProject/behaviour on malformed projects/deals with cabal file with unsatisfiable dependency/"
test/functional/FunctionalCodeActionsSpec.hs:494:18:
3) FunctionalCodeActions, code actions, unused term code actions, Prefixes with '_'
expected: "{-# OPTIONS_GHC -Wall #-}\nmodule UnusedTerm () where\n_imUnused :: Int -> Int\n_imUnused 1 = 1\n_imUnused 2 = 2\n_imUnused _ = 3\n"
but got: "\nmodule UnusedTerm () where\n_imUnused :: Int -> Int\n_imUnused 1 = 1\n_imUnused 2 = 2\n_imUnused _ = 3\n"
To rerun use: --match "/FunctionalCodeActions/code actions/unused term code actions/Prefixes with '_'/"
test/functional/FunctionalLiquidSpec.hs:93:18:
4) FunctionalLiquid, liquid haskell diagnostics, runs diagnostics on save, with liquid haskell
expected: 0
but got: 2
To rerun use: --match "/FunctionalLiquid/liquid haskell diagnostics/runs diagnostics on save, with liquid haskell/"
test/functional/HaReSpec.hs:52:36:
5) HaRe.HaRe, code actions, casesplit argument, works
uncaught exception: SessionException
Timed out waiting to receive a message from the server.
To rerun use: --match "/HaRe/HaRe/code actions/casesplit argument/works/"
test/functional/ProgressSpec.hs:63:3:
6) Progress.window/progress sends indefinite progress notifications with liquid
uncaught exception: SessionException
Received an unexpected message from the server:
Was parsing: Publish diagnostics notification
Last message received: NotProgressStart (NotificationMessage {_jsonrpc = "2.0", _method = WindowProgressStart, _params = ProgressStartParams {_id = "0", _title = "Initialising Cradle", _cancellable = Just False, _message = Nothing, _percentage = Just 0.0}})
To rerun use: --match "/Progress/window/progress/sends indefinite progress notifications with liquid/"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment