@@ -0,0 +1,176 @@
6+(bool) @constant.builtin.boolean
7+(integer) @constant.numeric.integer
8+(float) @constant.numeric.float
9+(character) @constant.character
11+;; strings and docstring
12+(source_file docstring: (string) @string.special)
13+(entity docstring: (string) @string.special)
14+(method docstring: (string) @string.special) ; docstring for methods without body
15+(behavior docstring: (string) @string.special) ; docstring for methods without body
16+(constructor docstring: (string) @string.special) ; docstring for methods without body
17+(method body: (block . (string) @string.special)) ; docstring for methods with body
18+(behavior body: (block . (string) @string.special))
19+(constructor body: (block . (string) @string.special))
20+(field docstring: (string) @string.special)
31+] @punctuation.bracket
36+] @punctuation.delimiter
38+(this) @variable.builtin
40+(field name: (identifier) @variable.other.member)
42+"use" @keyword.control.import
50+] @keyword.control.repeat
59+] @keyword.control.conditional
67+] @keyword.control.return
89+(entity_type) @keyword.storage.type
141+(entity name: (identifier) @type)
142+(nominal_type name: (identifier) @type)
143+(typeparams (typeparam name: (identifier) @type))
145+;; constructors / methods / behaviors
146+(constructor name: (identifier) @constructor)
147+(method name: (identifier) @function.method)
148+(behavior name: (identifier) @function.method)
151+; TODO: be more specific about what is the actual function reference
152+(call callee: (field_access field: (identifier) @function.method))
153+(call callee: (_) @function.method)
154+(ffi_call name: (_) @function)
155+(partial_application function: (identifier) @function.method)
156+(chain function: (identifier) @function.method)
159+(field name: (identifier) @variable.other.member)
160+(param (identifier) @variable.parameter)
161+(lambdaparam (identifier) @variable.parameter)
163+;; this.field is considered a member access
164+(field_access base: (this) field: (identifier) @variable.other.member)
167+(annotations (identifier) @attribute)
170+;; references to upper case things are considered constructors
172+ (identifier) @constructor
173+ (#match @constructor "^[A-Z]")
175+(identifier) @variable