@@ -0,0 +1,158 @@
1+[ "." ";" ":" "," ] @punctuation.delimiter
2+[ "\\(" "(" ")" "[" "]" "{" "}"] @punctuation.bracket ; TODO: "\\(" ")" in interpolations should be @punctuation.special
6+(type_identifier) @type
7+(self_expression) @variable.builtin
10+"func" @keyword.function
12+ (visibility_modifier)
17+ (inheritance_modifier)
20+(function_declaration (simple_identifier) @function.method)
21+(function_declaration ["init" @constructor])
24+(where_keyword) @keyword
25+(parameter external_name: (simple_identifier) @variable.parameter)
26+(parameter name: (simple_identifier) @variable.parameter)
27+(type_parameter (type_identifier) @variable.parameter)
28+(inheritance_constraint (identifier (simple_identifier) @variable.parameter))
29+(equality_constraint (identifier (simple_identifier) @variable.parameter))
30+(non_binding_pattern bound_identifier: (simple_identifier)) @variable
49+(class_body (property_declaration (value_binding_pattern (non_binding_pattern (simple_identifier) @variable.other.member))))
50+(protocol_property_declaration (value_binding_pattern (non_binding_pattern (simple_identifier) @variable.other.member)))
52+(import_declaration ["import" @keyword.control.import])
54+(enum_entry ["case" @keyword])
57+(call_expression (simple_identifier) @function) ; foo()
58+(call_expression ; foo.bar.baz(): highlight the baz()
59+ (navigation_expression
60+ (navigation_suffix (simple_identifier) @function)))
61+((navigation_expression
62+ (simple_identifier) @type) ; SomeType.method(): highlight SomeType as a type
63+ (#match? @type "^[A-Z]"))
65+(directive) @function.macro
66+(diagnostic) @function.macro
69+(for_statement ["for" @keyword.control.repeat])
70+(for_statement ["in" @keyword.control.repeat])
71+(for_statement item: (simple_identifier) @variable)
73+(as_operator) @keyword
75+["while" "repeat" "continue" "break"] @keyword.control.repeat
77+["let" "var"] @keyword
78+(non_binding_pattern (simple_identifier) @variable)
80+(guard_statement ["guard" @keyword.control.conditional])
81+(if_statement ["if" @keyword.control.conditional])
82+(switch_statement ["switch" @keyword.control.conditional])
83+(switch_entry ["case" @keyword])
84+(switch_entry ["fallthrough" @keyword])
85+(switch_entry (default_keyword) @keyword)
86+"return" @keyword.control.return
88+ ["?" ":"] @keyword.control.conditional)
90+["do" (throw_keyword) (catch_keyword)] @keyword
92+(statement_label) @label
95+(comment) @comment.line
96+(multiline_comment) @comment.block
99+(line_str_text) @string
100+(str_escaped_char) @string
101+(multi_line_str_text) @string
102+(raw_str_part) @string
103+(raw_str_end_part) @string
104+(raw_str_interpolation_start) @string.special
105+["\"" "\"\"\""] @string
108+(lambda_literal ["in" @keyword.operator])
111+(integer_literal) @constant.numeric.integer
117+(real_literal) @constant.numeric.float
118+(boolean_literal) @constant.builtin.boolean
119+"nil" @variable.builtin
122+(custom_operator) @operator