* Split out the explicit imports plugin
* Split out the retrie plugin
* Avoid test-breaking plugin descriptor change
It changes the order in which code actions get listed.
Some of the code action tests are not very smart and break.
* Fix stack descriptors
* Add ghc-api-version.h
* add LICENSE
Move the tactics plugin into a separate package, completely distinct form the hls exe which previously hosted this code. This is the first step towards moving tactics out of hls proper entirely.
This PR enhances the "attempt to fill hole" code action, allowing it to implement self-recursive functions. The generated code ensures recursion occurs only on structurally-smaller values, and preserves the positional ordering of homomorphically destructed arguments.
It's clever enough to implement foldr and nontrivial functor instances.
Co-authored-by: TOTBWF <reed.mullanix@calabrio.com>
* [WIP] Start work on 'auto'
* Get current binding
* Fix currentBindingName for class methods
* Proper impl of getDefiningBindings
* Forgot to checkin bindsites
* [WIP] Update version of refinery
* Bind all tyvars if possible
* WIP: Instantiate polymorphic functions
* Split out fresh type variables when instantiating
* Make everything compile
* Separate out tactics
* oneWayUnifyRule
* [WIP] Add 'TacticState'
* [WIP] Tweak 'unify' and 'unifyOneWayRule'
* [WIP] Start work on skolem tracking
* [WIP] Fix 'checkSkolemUnification'
* Update judgement type
* Add a Context to TacticM
* Don't destruct already destructed
* Remove the internal lib
* Cleanup warnings
* Move debug machinery into *.Debug
* Rip types out of machinery
* Cleanup warnings
* Continue splitting Machinery
* Rip out GHC and Naming
* Get it all compiling
* Stop re-exporting from Machinery
* Split out codegen/rules
* Remove gross/unused tactics
* Make newSubgoal derive from an existing judgement
* remove newJudgement
* Disallow current function from auto
* Cleanup auto
* Stop using the Judgement ctor
* Track pattern value
* Better showAstData
* Get module-scoped funcs
* Split all data constructors
* assumption -> assume
* Don't destruct if there are zero datacons
* Lambda case destruct tactics
* Fix the tests
* Rip out debug stuff since it fails CI
* Tests for lambda case actions
* Golden testing machinery
* Attempt to fill hole
* [WIP] Use 'refinery-0.2.0.0'
* [WIP] Update refinery in all stack.yaml files
* Bump version in cabal file
* Bump cabal index state
* Sort goals by heuristic
* Naming for unit types
* Heuristic for auto
* Penalize holes more
* Naming for unit types
* Give the name "unit" to units
* Fallback names for symbols and punctuation
* Get "good" name for symbolic names
* Update plugins/tactics/src/Ide/Plugin/Tactic/CodeGen.hs
Co-authored-by: wz1000 <zubin@cmi.ac.in>
* Make the TacticState strict
* Make the judgement strict
* Simplify when we use position mapping
* Move bindsites to ghcide
Co-authored-by: Sandy Maguire <sandy@sandymaguire.me>
Co-authored-by: wz1000 <zubin@cmi.ac.in>
This also requires a bump to lsp-test to fix a test, and drops the
trick that the wrapper tests used to find the wrapper executable since
it was just confusing