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.
41 lines
991 B
Text
41 lines
991 B
Text
import Lean.ErrorExplanation
|
|
import Lean.Exception
|
|
import Lean.Log
|
|
|
|
/-!
|
|
# Error explanation interactive tests
|
|
|
|
Tests completions and hovers for error explanations.
|
|
-/
|
|
|
|
/-- Example -/
|
|
register_error_explanation testPkg.bar {
|
|
summary := "Error 0"
|
|
sinceVersion := "4.0.0"
|
|
}
|
|
|
|
/-- Example -/
|
|
register_error_explanation testPkg.foo1 {
|
|
summary := "Error 1"
|
|
sinceVersion := "4.0.0"
|
|
}
|
|
|
|
/-- Example -/
|
|
register_error_explanation testPkg.foo2 {
|
|
summary := "Error 2"
|
|
sinceVersion := "4.0.0"
|
|
}
|
|
|
|
#check throwNamedError testPkg
|
|
--^ completion
|
|
#check throwNamedError testPkg.
|
|
--^ completion
|
|
#check throwNamedError testPkg.f
|
|
--^ completion
|
|
#check throwNamedError testPkg.f "test"
|
|
--^ completion
|
|
|
|
#check throwNamedError testPkg.foo2
|
|
--^ textDocument/hover
|
|
#check throwNamedError testPkg.foo2 "test"
|
|
--^ textDocument/hover
|