This PR significantly improves the test coverage of the language server, providing at least a single basic test for every request that is used by the client. It also implements infrastructure for testing all of these requests, e.g. the ability to run interactive tests in a project context and refactors the interactive test runner to be more maintainable. Finally, it also fixes a small bug with the recently implemented unknown identifier code actions for auto-implicits (#10442) that was discovered in testing, where the "import all unambiguous unknown identifiers" code action didn't work correctly on auto-implicit identifiers.
68 lines
1.3 KiB
Text
68 lines
1.3 KiB
Text
/-!
|
|
# Interactive tests of dotted ident notation (`.f x y z`)
|
|
-/
|
|
|
|
/-!
|
|
Basic tests
|
|
-/
|
|
|
|
inductive MyNat
|
|
| zero | succ (n : MyNat)
|
|
|
|
example : MyNat := .ze
|
|
--^ completion
|
|
|
|
example : MyNat → MyNat := .su
|
|
--^ completion
|
|
|
|
/-!
|
|
Unfolding a type
|
|
-/
|
|
|
|
def MyNat' := MyNat
|
|
|
|
example : MyNat' := .ze
|
|
--^ completion
|
|
|
|
example : MyNat' → MyNat' := .su
|
|
--^ completion
|
|
|
|
/-!
|
|
Seeing through type annotations
|
|
-/
|
|
|
|
example : outParam MyNat := .ze
|
|
--^ completion
|
|
|
|
-- Definitions that are in the annotation's namespace are *not* reported
|
|
def outParam.baz : MyNat := .zero
|
|
example : outParam MyNat := .ba
|
|
--^ completion
|
|
|
|
/-!
|
|
Aliases are currently not supported
|
|
-/
|
|
namespace MyLib
|
|
def MyNat.zero' : MyNat := .zero
|
|
end MyLib
|
|
namespace MyNat
|
|
export MyLib.MyNat (zero')
|
|
end MyNat
|
|
|
|
example : MyNat := .zero
|
|
--^ completion
|
|
example : MyNat := .zero' -- it successfully elaborates
|
|
|
|
/-!
|
|
Open namespaces are currently not supported
|
|
-/
|
|
|
|
namespace MyLib
|
|
def MyNat.succ' : MyNat → MyNat := .succ
|
|
end MyLib
|
|
|
|
open MyLib in
|
|
example : MyNat → MyNat := .succ
|
|
--^ completion
|
|
open MyLib in
|
|
example : MyNat → MyNat := .succ' -- it successfully elaborates
|