Skip to content

Commit 4f78468

Browse files
authored
Merge pull request #4 from nvim-treesitter/master
* Implement return statements * Name field nodes
2 parents c919f55 + 6b6ce95 commit 4f78468

File tree

9 files changed

+39425
-31974
lines changed

9 files changed

+39425
-31974
lines changed

corpus/functions.txt

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,19 @@ a.b.f = function(self, test, ...) return 10 end
1818
(function_definition (parameters)
1919
(return_statement (false))))
2020

21-
(variable_declaration (variable_declarator (identifier) (property_identifier) (property_identifier))
22-
(function_definition (parameters)
23-
(return_statement (true))))
21+
(variable_declaration (variable_declarator
22+
(field_expression (field_expression (identifier) (property_identifier)) (property_identifier)))
23+
(function_definition (parameters)
24+
(return_statement (true))))
2425

2526
(local_variable_declaration (variable_declarator (identifier)))
2627

2728
(variable_declaration (variable_declarator (identifier))
2829
(function_definition (parameters)
2930
(return_statement (string))))
3031

31-
(variable_declaration (variable_declarator (identifier) (property_identifier) (property_identifier))
32+
(variable_declaration (variable_declarator
33+
(field_expression (field_expression (identifier) (property_identifier)) (property_identifier)))
3234
(function_definition (parameters (self) (identifier) (spread))
3335
(return_statement (number)))))
3436

@@ -46,8 +48,6 @@ function t.a.b.c.f()
4648
return true
4749
end
4850

49-
t.a.b.c.f = function() return true end
50-
5151
---
5252

5353
(program
@@ -58,11 +58,8 @@ t.a.b.c.f = function() return true end
5858
(function_definition (parameters)
5959
(return_statement (false))))
6060

61-
(function (function_name (identifier) (property_identifier) (property_identifier) (property_identifier) (property_identifier)) (parameters)
62-
(return_statement (true)))
63-
64-
(variable_declaration (variable_declarator (identifier) (property_identifier) (property_identifier) (property_identifier) (property_identifier)) (function_definition (parameters)
65-
(return_statement (true)))))
61+
(function (function_name (function_name_field (identifier) (property_identifier) (property_identifier) (property_identifier) (property_identifier))) (parameters)
62+
(return_statement (true))))
6663

6764

6865
============================================

corpus/statements.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,13 +61,13 @@ end
6161
(function_call (identifier)
6262
(arguments (string)))
6363
(elseif (condition_expression (binary_operation (identifier) (string)))
64-
(function_call (identifier) (property_identifier)
64+
(function_call (field_expression (identifier) (property_identifier))
6565
(arguments (string))))
6666
(else
6767
(variable_declaration (variable_declarator (identifier)) (number))
6868

6969
(local_variable_declaration (variable_declarator (identifier))
70-
(function_call (identifier) (property_identifier)
70+
(function_call (field_expression (identifier) (property_identifier))
7171
(arguments)))
7272

7373
(function_call (identifier)

grammar.js

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ module.exports = grammar({
3131
conflicts: $ => [
3232
[$._prefix],
3333
[$._expression, $._variable_declarator],
34-
[$._expression, $.function_call_statement]
34+
[$._expression, $.function_call_statement],
35+
[$.function_name, $.function_name_field]
3536
],
3637

3738
externals: $ => [
@@ -40,7 +41,7 @@ module.exports = grammar({
4041
],
4142

4243
rules: {
43-
program: $ => repeat($._statement),
44+
program: $ => seq(repeat($._statement), optional($.return_statement)),
4445

4546
// Return statement
4647
return_statement: $ => seq(
@@ -90,9 +91,11 @@ module.exports = grammar({
9091
_variable_declarator: $ => choice(
9192
$.identifier,
9293
seq($._prefix, '[', $._expression, ']'),
93-
seq($._prefix, '.', alias($.identifier, $.property_identifier))
94+
$.field_expression
9495
),
9596

97+
field_expression: $ => seq($._prefix, '.', alias($.identifier, $.property_identifier)),
98+
9699
_local_variable_declarator: $ => sequence($.identifier),
97100

98101
// Statements: Control statements
@@ -222,11 +225,17 @@ module.exports = grammar({
222225
),
223226

224227
function_name: $ => seq(
225-
$.identifier,
226-
repeat(seq('.', alias($.identifier, $.property_identifier))),
228+
choice($.identifier,
229+
$.function_name_field
230+
),
227231
optional(seq(':', alias($.identifier, $.method)))
228232
),
229233

234+
function_name_field: $ => seq(
235+
field("object", $.identifier),
236+
repeat(seq('.', alias($.identifier, $.property_identifier))),
237+
),
238+
230239
parameters: $ => seq(
231240
'(',
232241
optional(seq(

package-lock.json

Lines changed: 34 additions & 41 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
},
3232
"devDependencies": {
3333
"prebuild": "^9.0.1",
34-
"tree-sitter-cli": "^0.15.7"
34+
"tree-sitter-cli": "^0.15.14"
3535
},
3636
"files": [
3737
"src",

0 commit comments

Comments
 (0)