Skip to content

Commit 59dc489

Browse files
committed
feat!: add locals queries
1 parent 485836a commit 59dc489

File tree

2 files changed

+44
-4
lines changed

2 files changed

+44
-4
lines changed

grammar.js

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -408,8 +408,14 @@ module.exports = grammar({
408408
optional('async'),
409409
'def',
410410
field('name', $.identifier),
411+
$.function_definition_scope,
412+
),
413+
414+
function_definition_scope: $ => seq(
411415
field('type_parameters', optional($.type_parameter)),
412-
field('parameters', $.parameters),
416+
'(',
417+
field('parameters', optional($.parameters)),
418+
')',
413419
optional(
414420
seq(
415421
'->',
@@ -493,6 +499,9 @@ module.exports = grammar({
493499
class_definition: $ => seq(
494500
'class',
495501
field('name', $.identifier),
502+
$.class_definition_scope,
503+
),
504+
class_definition_scope: $ => seq(
496505
field('type_parameters', optional($.type_parameter)),
497506
field('superclasses', optional($.argument_list)),
498507
':',
@@ -568,7 +577,13 @@ module.exports = grammar({
568577
),
569578
)),
570579

571-
dotted_name: $ => prec(1, sep1($.identifier, '.')),
580+
dotted_name: $ => prec(1, seq(
581+
$.identifier,
582+
repeat(seq(
583+
'.',
584+
alias($.identifier, $.member_identifier),
585+
)),
586+
)),
572587

573588
// Match cases
574589

@@ -896,7 +911,7 @@ module.exports = grammar({
896911
attribute: $ => prec(PREC.call, seq(
897912
field('object', $.primary_expression),
898913
'.',
899-
field('attribute', $.identifier),
914+
field('attribute', alias($.identifier, $.member_identifier)),
900915
)),
901916

902917
subscript: $ => prec(PREC.call, seq(
@@ -942,7 +957,7 @@ module.exports = grammar({
942957
)),
943958
union_type: $ => prec.left(seq($.type, '|', $.type)),
944959
constrained_type: $ => prec.right(seq($.type, ':', $.type)),
945-
member_type: $ => seq($.type, '.', $.identifier),
960+
member_type: $ => seq($.type, '.', alias($.identifier, $.member_identifier)),
946961

947962
keyword_argument: $ => seq(
948963
field('name', choice($.identifier, $.keyword_identifier)),

queries/locals.scm

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
;; Scopes
2+
3+
[(module)
4+
(class_definition_scope)
5+
(function_definition_scope)
6+
(lambda)] @local.scope
7+
8+
;; Definitions
9+
10+
; TODO: Type parameters, patterns in assignment and match statements
11+
12+
(import_statement (dotted_name . _ @local.definition))
13+
(import_from_statement name: (dotted_name . _ @local.definition))
14+
(aliased_import alias: _ @local.definition)
15+
(class_definition name: _ @local.definition)
16+
(type_alias_statement left: (type . (identifier) @local.definition))
17+
(function_definition name: _ @local.definition)
18+
(parameter name: _ @local.definition)
19+
(as_pattern alias: _ @local.definition)
20+
(named_expression name: (identifier) @local.definition)
21+
(assignment left: (identifier) @local.definition)
22+
23+
;; References
24+
25+
(identifier) @local.reference

0 commit comments

Comments
 (0)