aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPham Huy Hoang <hoangtun0810@gmail.com>2023-04-13 01:42:53 +0900
committerStephan Seitz <stephan.seitz@fau.de>2023-04-14 02:28:42 -0700
commit36d4deb294fb0cd4385d58d8c9f603975bf355ad (patch)
treeae2ea4eb88fb81cbee4c9624b47de164ca9dfd41
parentchore(dart): remove tests for switch (diff)
downloadnvim-treesitter-36d4deb294fb0cd4385d58d8c9f603975bf355ad.tar
nvim-treesitter-36d4deb294fb0cd4385d58d8c9f603975bf355ad.tar.gz
nvim-treesitter-36d4deb294fb0cd4385d58d8c9f603975bf355ad.tar.bz2
nvim-treesitter-36d4deb294fb0cd4385d58d8c9f603975bf355ad.tar.lz
nvim-treesitter-36d4deb294fb0cd4385d58d8c9f603975bf355ad.tar.xz
nvim-treesitter-36d4deb294fb0cd4385d58d8c9f603975bf355ad.tar.zst
nvim-treesitter-36d4deb294fb0cd4385d58d8c9f603975bf355ad.zip
fix(dart_indent): Fix dart case/default indent
add tests add tests for fallthrough case add more tests keep functional tests
-rw-r--r--queries/dart/indents.scm10
-rw-r--r--tests/indent/dart/switch.dart30
-rw-r--r--tests/indent/dart_spec.lua11
3 files changed, 49 insertions, 2 deletions
diff --git a/queries/dart/indents.scm b/queries/dart/indents.scm
index 9616f0629..77259aef7 100644
--- a/queries/dart/indents.scm
+++ b/queries/dart/indents.scm
@@ -13,6 +13,13 @@
(try_statement)
] @indent.begin
+(switch_block
+ (_) @indent.begin
+ (#set! indent.immediate 1)
+ (#set! indent.start_at_same_line 1))
+
+(switch_label) @indent.branch
+
[
"("
")"
@@ -26,6 +33,9 @@
"}"
] @indent.end
+(return_statement ";" @indent.end)
+(break_statement ";" @indent.end)
+
; this one is for dedenting the else block
(if_statement (block) @indent.branch)
diff --git a/tests/indent/dart/switch.dart b/tests/indent/dart/switch.dart
new file mode 100644
index 000000000..489c7b22a
--- /dev/null
+++ b/tests/indent/dart/switch.dart
@@ -0,0 +1,30 @@
+void test() {
+ switch(a) {
+ case 1:
+ }
+}
+
+void test() {
+ switch(a) {
+ default:
+ }
+}
+
+void test_break_dedent() {
+ switch(x) {
+ case 1:
+ break;
+ }
+ switch(y) {
+ case 2:
+ return;
+ }
+}
+
+
+void test_multi_case() {
+ switch(x) {
+ case 1:
+ case 2:
+ }
+}
diff --git a/tests/indent/dart_spec.lua b/tests/indent/dart_spec.lua
index 0241e531f..f3c360cbe 100644
--- a/tests/indent/dart_spec.lua
+++ b/tests/indent/dart_spec.lua
@@ -2,9 +2,9 @@ local Runner = require("tests.indent.common").Runner
local XFAIL = require("tests.indent.common").XFAIL
local run = Runner:new(it, "tests/indent/dart", {
- tabstop = 4,
+ tabstop = 2,
shiftwidth = 2,
- softtabstop = 0,
+ softtabstop = 2,
expandtab = true,
})
@@ -25,6 +25,13 @@ describe("new line:", function()
run:new_line("class.dart", { on_line = 6, text = "'100'", indent = 8 }, "expected failure", XFAIL)
run:new_line("class.dart", { on_line = 7, text = "int five = 5", indent = 2 }, "expected failure", XFAIL)
run:new_line("try.dart", { on_line = 2, text = "var x;", indent = 4 })
+ run:new_line("switch.dart", { on_line = 3, text = "x = 1;", indent = 6 })
+ run:new_line("switch.dart", { on_line = 9, text = "x = 1;", indent = 6 })
+ run:new_line("switch.dart", { on_line = 3, text = "case 2:", indent = 4 })
+ run:new_line("switch.dart", { on_line = 16, text = "abc;", indent = 4 })
+ run:new_line("switch.dart", { on_line = 20, text = "abc;", indent = 4 })
+ run:new_line("switch.dart", { on_line = 28, text = "y++;", indent = 6 })
+
run:new_line("multiple_arguments.dart", { on_line = 10, text = "var x;", indent = 4 })
run:new_line(
"multiple_arguments.dart",