lean4-htt/tests/lean/interactive/completionTactics.lean
Marc Huisinga dfd3d18530
test: improve language server test coverage (#10574)
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.
2025-09-30 11:15:03 +00:00

120 lines
2.6 KiB
Text

prelude
import Init.Notation
/-
This test is a bit brittle because it checks that tactic completion works correctly for all
tactic completions that we get in `prelude` + `import Init.Notation`.
When changing the docstring of any of these tactics, this test will break.
If you didn't touch the elaboration infrastructure or the language server, then you can safely
assume that this test is still correct and unbreak it by overwriting
`completionTactics.lean.expected.out` with `completionTactics.lean.produced.out` after running
this test.
-/
/-- A docstring -/
syntax (name := skip) "skip" : tactic
/-- Another docstring -/
syntax (name := exact) "exact " term : tactic
example : True := by -- No completions expected
--^ completion
example : True := by -- All tactic completions expected
--^ completion
example : True := by ski -- Tactic completions matching `ski` expected
--^ completion
example : True := by skip -- No completions expected
--^ completion
example : True := by skip; -- All tactic completions expected
--^ completion
example : True := by skip; -- All tactic completions expected
--^ completion
example : True := by
skip
skip; -- All tactic completions expected
--^ completion
example : True := by
-- All tactic completions expected
--^ completion
example : True := by
skip
-- All tactic completions expected
--^ completion
example : True := by
-- All tactic completions expected
--^ completion
skip
example : True := by
exact by
-- All tactic completions expected
--^ completion
example : True := by
exact by
-- All tactic completions expected
--^ completion
example : True := by
exact by
skip
-- All tactic completions expected
--^ completion
example : True := by
exact by
skip
-- All tactic completions expected
--^ completion
example : True := by
exact
-- No completions expected
--^ completion
example : True := by
exact
-- All tactic completions expected
--^ completion
example : True :=
let foo := by
-- All tactic completions expected
--^ completion
example : True :=
let foo := by
-- All tactic completions expected
--^ completion
example : True :=
let foo := by
skip
-- All tactic completions expected
--^ completion
example : True :=
let foo := by
skip
-- No completions expected
--^ completion
example : True := by {
-- All tactic completions expected
--^ completion
}
example : True := by
{ skip -- All tactic completions expected
}
--^ completion