mirror of
https://github.com/nvim-treesitter/nvim-treesitter.git
synced 2026-07-01 19:17:02 -04:00
feat(t32): add indent rules (#4782)
This commit is contained in:
parent
102f1b2f55
commit
16cce8df58
11 changed files with 291 additions and 5 deletions
49
tests/indent/t32/if_block.cmm
Normal file
49
tests/indent/t32/if_block.cmm
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
IF &a
|
||||
STOP
|
||||
|
||||
IF (TRUE())
|
||||
(
|
||||
BREAK
|
||||
)
|
||||
|
||||
IF (&b+CouNT())
|
||||
(
|
||||
continue
|
||||
)
|
||||
|
||||
IF FOUND()
|
||||
STOP
|
||||
ELSE
|
||||
CONTinue
|
||||
|
||||
IF &c
|
||||
CONTinue
|
||||
ELSE IF FALSE()
|
||||
Break
|
||||
ELSE
|
||||
stop
|
||||
|
||||
IF &d
|
||||
(
|
||||
STOP
|
||||
)
|
||||
ELSE IF &e
|
||||
; comment A
|
||||
(
|
||||
CONTINUE
|
||||
)
|
||||
ELSE
|
||||
; comment B
|
||||
(
|
||||
BREAK
|
||||
)
|
||||
|
||||
IF &f
|
||||
IF &g
|
||||
stop
|
||||
ELSE
|
||||
IF &h
|
||||
(
|
||||
continue
|
||||
)
|
||||
|
||||
27
tests/indent/t32/repeat_block.cmm
Normal file
27
tests/indent/t32/repeat_block.cmm
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
RePeaT 10. PRINT "A"
|
||||
|
||||
RePeaT &a
|
||||
print
|
||||
|
||||
REPEAT 0xaAfF09
|
||||
(
|
||||
cont
|
||||
)
|
||||
|
||||
RPT
|
||||
(
|
||||
b
|
||||
)
|
||||
|
||||
rpt
|
||||
(
|
||||
s
|
||||
)
|
||||
WHILE &a
|
||||
|
||||
REPEAT TRUE()
|
||||
; comment
|
||||
(
|
||||
cont
|
||||
)
|
||||
|
||||
23
tests/indent/t32/subroutine_block.cmm
Normal file
23
tests/indent/t32/subroutine_block.cmm
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
printA:
|
||||
(
|
||||
PRINT "A"
|
||||
RETURN
|
||||
)
|
||||
|
||||
sUBROUtINE printB
|
||||
(
|
||||
ENTRY &in
|
||||
|
||||
PRINT "&in"
|
||||
RETURN
|
||||
)
|
||||
|
||||
SUBROUTINE printC
|
||||
// comment
|
||||
(
|
||||
PARAMETERS &a &b
|
||||
|
||||
PRINT "&a"+"&b"
|
||||
ENDDO
|
||||
)
|
||||
|
||||
14
tests/indent/t32/while_block.cmm
Normal file
14
tests/indent/t32/while_block.cmm
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
WHILE &a
|
||||
Step
|
||||
|
||||
WHILE (sYmbol.EXIT(main))
|
||||
(
|
||||
Step
|
||||
Break
|
||||
)
|
||||
|
||||
WHILE (FALSE())
|
||||
// comment
|
||||
(
|
||||
ECHO "test"
|
||||
)
|
||||
130
tests/indent/t32_spec.lua
Normal file
130
tests/indent/t32_spec.lua
Normal file
|
|
@ -0,0 +1,130 @@
|
|||
local Runner = require("tests.indent.common").Runner
|
||||
local XFAIL = require("tests.indent.common").XFAIL
|
||||
|
||||
local runner = Runner:new(it, "tests/indent/t32", {
|
||||
tabstop = 2,
|
||||
shiftwidth = 2,
|
||||
softtabstop = 0,
|
||||
expandtab = true,
|
||||
})
|
||||
|
||||
describe("indent t32:", function()
|
||||
describe("whole file:", function()
|
||||
runner:whole_file "."
|
||||
end)
|
||||
|
||||
describe("new line:", function()
|
||||
runner:new_line("if_block.cmm", { on_line = 2, text = "GOTO start", indent = 0 }, "command after IF", XFAIL)
|
||||
|
||||
runner:new_line("if_block.cmm", { on_line = 5, text = "GOTO start", indent = 2 }, "command in IF then block", XFAIL)
|
||||
|
||||
runner:new_line("if_block.cmm", { on_line = 4, text = "(", indent = 0 }, "block after IF")
|
||||
|
||||
for ii, test in ipairs {
|
||||
{ 1, 2 },
|
||||
{ 14, 2 },
|
||||
{ 19, 2 },
|
||||
{ 21, 2 },
|
||||
{ 41, 2 },
|
||||
{ 42, 4 },
|
||||
} do
|
||||
runner:new_line(
|
||||
"if_block.cmm",
|
||||
{ on_line = test[1], text = "&x=1.", indent = test[2] },
|
||||
"command in IF then[" .. ii .. "]",
|
||||
XFAIL
|
||||
)
|
||||
end
|
||||
|
||||
runner:new_line("if_block.cmm", { on_line = 45, text = "&x=1.", indent = 4 }, "command in IF then")
|
||||
|
||||
for ii, test in ipairs {
|
||||
{ 16, 2 },
|
||||
{ 21, 2 },
|
||||
{ 23, 2 },
|
||||
{ 44, 4 },
|
||||
} do
|
||||
runner:new_line(
|
||||
"if_block.cmm",
|
||||
{ on_line = test[1], text = "(\n", indent = test[2] },
|
||||
"command in IF else[" .. ii .. "]",
|
||||
XFAIL
|
||||
)
|
||||
end
|
||||
|
||||
runner:new_line("while_block.cmm", { on_line = 2, text = "&x=1.", indent = 0 }, "command after WHILE", XFAIL)
|
||||
|
||||
runner:new_line("while_block.cmm", { on_line = 4, text = "&x=1.", indent = 0 }, "command after WHILE")
|
||||
|
||||
runner:new_line("while_block.cmm", { on_line = 1, text = "(\n", indent = 0 }, "block in WHILE then")
|
||||
|
||||
for ii, test in ipairs {
|
||||
{ 5, 2 },
|
||||
{ 12, 2 },
|
||||
} do
|
||||
runner:new_line(
|
||||
"while_block.cmm",
|
||||
{ on_line = test[1], text = "&x=1.", indent = test[2] },
|
||||
"command in WHILE then block[" .. ii .. "]",
|
||||
XFAIL
|
||||
)
|
||||
end
|
||||
|
||||
for ii, test in ipairs {
|
||||
{ 1, 0, nil },
|
||||
{ 4, 0, XFAIL },
|
||||
} do
|
||||
runner:new_line(
|
||||
"repeat_block.cmm",
|
||||
{ on_line = test[1], text = "&x=1.", indent = test[2] },
|
||||
"command after RePeaT[" .. ii .. "]",
|
||||
test[3]
|
||||
)
|
||||
end
|
||||
|
||||
runner:new_line("repeat_block.cmm", { on_line = 3, text = "(\n", indent = 0 }, "block in RePeaT then")
|
||||
|
||||
for ii, test in ipairs {
|
||||
{ 7, 2, XFAIL },
|
||||
{ 18, 2, nil },
|
||||
{ 24, 2, XFAIL },
|
||||
} do
|
||||
runner:new_line(
|
||||
"repeat_block.cmm",
|
||||
{ on_line = test[1], text = "&x=1.", indent = test[2] },
|
||||
"command in RePeaT then block[" .. ii .. "]",
|
||||
test[3]
|
||||
)
|
||||
end
|
||||
|
||||
runner:new_line("subroutine_block.cmm", { on_line = 1, text = "(\n", indent = 0 }, "block after call label")
|
||||
|
||||
for ii, test in ipairs {
|
||||
{ 2, 2, XFAIL },
|
||||
{ 3, 2, nil },
|
||||
{ 8, 2, XFAIL },
|
||||
{ 12, 2, nil },
|
||||
{ 19, 2, XFAIL },
|
||||
} do
|
||||
runner:new_line(
|
||||
"subroutine_block.cmm",
|
||||
{ on_line = test[1], text = "&x=1.", indent = test[2] },
|
||||
"command in subroutine block[" .. ii .. "]",
|
||||
test[3]
|
||||
)
|
||||
end
|
||||
|
||||
for ii, test in ipairs {
|
||||
{ 5, 2 },
|
||||
{ 13, 2 },
|
||||
{ 23, 2 },
|
||||
} do
|
||||
runner:new_line(
|
||||
"subroutine_block.cmm",
|
||||
{ on_line = test[1], text = "&x=1.", indent = test[2] },
|
||||
"command after subroutine block[" .. ii .. "]",
|
||||
XFAIL
|
||||
)
|
||||
end
|
||||
end)
|
||||
end)
|
||||
|
|
@ -5,6 +5,11 @@ ENTRY &password
|
|||
; <- keyword
|
||||
; ^ parameter
|
||||
|
||||
ENTRY %LINE &salt
|
||||
; <- keyword
|
||||
; ^ constant.builtin
|
||||
; ^ parameter
|
||||
|
||||
IF "&password"==""
|
||||
; <- conditional
|
||||
; ^ string
|
||||
|
|
|
|||
|
|
@ -27,9 +27,10 @@ List `main`
|
|||
; ^ operator
|
||||
; ^ character
|
||||
|
||||
Data.Set 0xffff800000 0y0011xx01xx&&a
|
||||
; ^ number
|
||||
; ^ operator
|
||||
Data.Set N: 0xffff800000 0y0011xx01xx&&a
|
||||
; ^ number
|
||||
; ^ number
|
||||
; ^ operator
|
||||
|
||||
WinPOS 0% 85% 100% 15%
|
||||
; ^ number
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue