feat: add swift indents (#4756)

This commit is contained in:
Pham Huy Hoang 2023-05-08 14:53:31 +09:00 committed by GitHub
parent b231afbad1
commit 864b4171de
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 210 additions and 0 deletions

87
queries/swift/indents.scm Normal file
View file

@ -0,0 +1,87 @@
[
(protocol_body)
(class_body)
(function_declaration)
(computed_property)
(subscript_declaration)
(computed_getter)
(computed_setter)
(assignment)
(control_transfer_statement) ; return ...
(for_statement)
(while_statement)
(repeat_while_statement)
(do_statement)
(if_statement)
(switch_statement)
(guard_statement)
(type_parameters) ; x<Foo>
(tuple_type) ; (...)
(array_type) ; [String]
(dictionary_type); [Foo: Bar]
(call_expression)
(tuple_expression)
(array_literal)
(dictionary_literal)
(lambda_literal)
] @indent.begin
; @something(...)
((modifiers
(attribute) @indent.begin))
(function_declaration
(modifiers
.
(attribute)
(_)* @indent.branch)
.
_ @indent.branch
(#not-has-type? @indent.branch type_parameters parameter))
(ERROR
[
"<"
"{"
"("
"["
]
) @indent.begin
; if-elseif
(if_statement
(if_statement) @indent.dedent)
(switch_entry . _ @indent.branch)
(function_declaration ")" @indent.branch)
(type_parameters ">" @indent.branch @indent.end .)
(tuple_expression ")" @indent.branch @indent.end)
(value_arguments ")" @indent.branch @indent.end)
(tuple_type ")" @indent.branch @indent.end)
(modifiers
(attribute ")" @indent.branch @indent.end))
[
"}"
"]"
] @indent.branch @indent.end
[
; (ERROR)
(comment)
(multiline_comment)
(raw_str_part)
(multi_line_string_literal)
] @indent.auto
(directive) @indent.ignore

View file

@ -0,0 +1,51 @@
@wrapper
@modifier(
*
)
class EquilateralTriangle: NamedShape {
var sideLength: Double = 0.0
@attr
init(
sideLength: Double,
name: String
) {
self.sideLength = sideLength
}
var perimeter: Double {
willSet {
}
}
@funcattr
override func simpleDescription(a: int, b: int) -> String {
return "An equilateral triangle with sides of length \(sideLength)."
}
}
@attr
protocol ExampleProtocol {
var simpleDescription: String { get }
mutating func adjust()
}
@available(*)
func test() {
}
@attr(*)
typealias Foo = Bar
@attr
struct Foo<
Bar
> {
@Provider
var test = 1
subscript(index: Int) -> Int {
var foo = 2
}
}

View file

@ -0,0 +1,17 @@
func Test() {
(1 + 2)
[
1,
2,
3,
4,
5
].split()
let x = [
1: 2,
3: 4,
]
}

View file

@ -0,0 +1,34 @@
func Test() {
if true {
return
} else if true {
return
}
switch x {
case "1":
print("x")
default:
print("y")
@unknown default:
print("z")
}
for a in b {
}
while true{
}
repeat {
} while (true)
guard let name = person["name"] else {
return
}
return (
x + 1
)
}

View file

@ -0,0 +1,21 @@
local Runner = require("tests.indent.common").Runner
local run = Runner:new(it, "tests/indent/swift", {
tabstop = 2,
shiftwidth = 2,
softtabstop = 2,
expandtab = true,
})
describe("indent Swift:", function()
describe("whole file:", function()
run:whole_file(".", {})
end)
describe("new line:", function()
run:new_line("declarations.swift", { on_line = 6, text = "var x = 1", indent = 2 })
run:new_line("declarations.swift", { on_line = 12, text = "var textInsideInit = true", indent = 4 })
run:new_line("declarations.swift", { on_line = 17, text = "var textInsideWillSet = 1", indent = 6 })
run:new_line("declarations.swift", { on_line = 22, text = "var textInsideOverrideFunc", indent = 4 })
run:new_line("declarations.swift", { on_line = 28, text = "var InsideProtocol: String { get }", indent = 2 })
end)
end)