Skip to content

Commit 5c44813

Browse files
committed
feat!: add locals queries
1 parent 0c1de02 commit 5c44813

File tree

2 files changed

+41
-3
lines changed

2 files changed

+41
-3
lines changed

grammar.js

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -408,6 +408,10 @@ 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)),
412416
'(',
413417
field('parameters', optional($.parameters)),
@@ -495,6 +499,9 @@ module.exports = grammar({
495499
class_definition: $ => seq(
496500
'class',
497501
field('name', $.identifier),
502+
$.class_definition_scope,
503+
),
504+
class_definition_scope: $ => seq(
498505
field('type_parameters', optional($.type_parameter)),
499506
field('superclasses', optional($.argument_list)),
500507
':',
@@ -570,7 +577,13 @@ module.exports = grammar({
570577
),
571578
)),
572579

573-
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+
)),
574587

575588
// Match cases
576589

@@ -898,7 +911,7 @@ module.exports = grammar({
898911
attribute: $ => prec(PREC.call, seq(
899912
field('object', $.primary_expression),
900913
'.',
901-
field('attribute', $.identifier),
914+
field('attribute', alias($.identifier, $.member_identifier)),
902915
)),
903916

904917
subscript: $ => prec(PREC.call, seq(
@@ -944,7 +957,7 @@ module.exports = grammar({
944957
)),
945958
union_type: $ => prec.left(seq($.type, '|', $.type)),
946959
constrained_type: $ => prec.right(seq($.type, ':', $.type)),
947-
member_type: $ => seq($.type, '.', $.identifier),
960+
member_type: $ => seq($.type, '.', alias($.identifier, $.member_identifier)),
948961

949962
keyword_argument: $ => seq(
950963
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)