aboutsummaryrefslogtreecommitdiffstats
path: root/runtime/queries/java/locals.scm
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/queries/java/locals.scm')
-rw-r--r--runtime/queries/java/locals.scm100
1 files changed, 100 insertions, 0 deletions
diff --git a/runtime/queries/java/locals.scm b/runtime/queries/java/locals.scm
new file mode 100644
index 000000000..53e950908
--- /dev/null
+++ b/runtime/queries/java/locals.scm
@@ -0,0 +1,100 @@
+; SCOPES
+; declarations
+(program) @local.scope
+
+(class_declaration
+ body: (_) @local.scope)
+
+(record_declaration
+ body: (_) @local.scope)
+
+(enum_declaration
+ body: (_) @local.scope)
+
+(lambda_expression) @local.scope
+
+(enhanced_for_statement) @local.scope
+
+; block
+(block) @local.scope
+
+; if/else
+(if_statement) @local.scope ; if+else
+
+(if_statement
+ consequence: (_) @local.scope) ; if body in case there are no braces
+
+(if_statement
+ alternative: (_) @local.scope) ; else body in case there are no braces
+
+; try/catch
+(try_statement) @local.scope ; covers try+catch, individual try and catch are covered by (block)
+
+(catch_clause) @local.scope ; needed because `Exception` variable
+
+; loops
+(for_statement) @local.scope ; whole for_statement because loop iterator variable
+
+(for_statement
+ ; "for" body in case there are no braces
+ body: (_) @local.scope)
+
+(do_statement
+ body: (_) @local.scope)
+
+(while_statement
+ body: (_) @local.scope)
+
+; Functions
+(constructor_declaration) @local.scope
+
+(method_declaration) @local.scope
+
+; DEFINITIONS
+(package_declaration
+ (identifier) @local.definition.namespace)
+
+(class_declaration
+ name: (identifier) @local.definition.type)
+
+(record_declaration
+ name: (identifier) @local.definition.type)
+
+(enum_declaration
+ name: (identifier) @local.definition.enum)
+
+(method_declaration
+ name: (identifier) @local.definition.method)
+
+(local_variable_declaration
+ declarator: (variable_declarator
+ name: (identifier) @local.definition.var))
+
+(enhanced_for_statement
+ ; for (var item : items) {
+ name: (identifier) @local.definition.var)
+
+(formal_parameter
+ name: (identifier) @local.definition.parameter)
+
+(catch_formal_parameter
+ name: (identifier) @local.definition.parameter)
+
+(inferred_parameters
+ (identifier) @local.definition.parameter) ; (x,y) -> ...
+
+(lambda_expression
+ parameters: (identifier) @local.definition.parameter) ; x -> ...
+
+((scoped_identifier
+ (identifier) @local.definition.import)
+ (#has-ancestor? @local.definition.import import_declaration))
+
+(field_declaration
+ declarator: (variable_declarator
+ name: (identifier) @local.definition.field))
+
+; REFERENCES
+(identifier) @local.reference
+
+(type_identifier) @local.reference