Skip to content

Commit 8e1fa31

Browse files
committed
feat: add query_argument for function call arguments in multiple languages
1 parent d701109 commit 8e1fa31

File tree

7 files changed

+89
-25
lines changed

7 files changed

+89
-25
lines changed

scubatrace/cpp/language.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,29 @@ class C(Language):
1313
(field_identifier)@name
1414
"""
1515
query_call = "(call_expression)@name"
16+
query_argument = """
17+
(call_expression
18+
arguments: (argument_list
19+
[
20+
(identifier)@name
21+
(pointer_expression
22+
(identifier)@name
23+
)
24+
(field_expression
25+
field: (field_identifier)@name
26+
)
27+
(cast_expression
28+
value: (identifier)@name
29+
)
30+
(cast_expression
31+
value: (field_expression
32+
field: (field_identifier)@name
33+
)
34+
)
35+
]
36+
)
37+
)
38+
"""
1639
query_import_identifier = """
1740
(preproc_include
1841
path: [

scubatrace/go/language.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,18 @@ class GO(Language):
99
tslanguage = TSLanguage(tsgo.language())
1010

1111
query_call = "(call_expression)@name"
12+
query_argument = """
13+
(call_expression
14+
arguments: (argument_list
15+
[
16+
(selector_expression
17+
field: (field_identifier)@name
18+
)
19+
(identifier)@name
20+
]
21+
)
22+
)
23+
"""
1224
query_import_identifier = """
1325
(import_spec
1426
path: (interpreted_string_literal)@name

scubatrace/identifier.py

Lines changed: 3 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -417,30 +417,9 @@ def is_argument(self) -> bool:
417417
"""
418418
Checks if the identifier is an argument of a function call.
419419
"""
420-
query = """
421-
(call_expression
422-
arguments: (argument_list
423-
[
424-
(identifier)@name
425-
(pointer_expression
426-
(identifier)@name
427-
)
428-
(field_expression
429-
field: (field_identifier)@name
430-
)
431-
(cast_expression
432-
value: (identifier)@name
433-
)
434-
(cast_expression
435-
value: (field_expression
436-
field: (field_identifier)@name
437-
)
438-
)
439-
]
440-
)
441-
)
442-
"""
443-
argument_nodes = self.file.parser.query_all(self.statement.node, query)
420+
argument_nodes = self.file.parser.query_all(
421+
self.statement.node, self.file.language.query_argument
422+
)
444423
for argument_node in argument_nodes:
445424
if argument_node.start_point == self.node.start_point:
446425
return True

scubatrace/java/language.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,18 @@ class JAVA(Language):
99
tslanguage = TSLanguage(tsjava.language())
1010

1111
query_call = "(method_invocation)@name"
12+
query_argument = """
13+
(method_invocation
14+
arguments: (argument_list
15+
[
16+
(field_access
17+
field: (identifier)@name
18+
)
19+
(identifier)@name
20+
]
21+
)
22+
)
23+
"""
1224
query_import_identifier = """
1325
(import_declaration
1426
(scoped_identifier
@@ -66,7 +78,7 @@ class JAVA(Language):
6678
"do_statement",
6779
"enhanced_for_statement",
6880
]
69-
81+
7082
FUNCTION_STATEMENTS = [
7183
"method_declaration",
7284
"constructor_declaration",

scubatrace/javascript/language.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,24 @@ class JAVASCRIPT(Language):
99
tslanguage = TSLanguage(tsjavascript.language())
1010

1111
query_call = "(call_expression)@name"
12+
query_argument = """
13+
(call_expression
14+
arguments: (arguments
15+
[
16+
(identifier)@name
17+
(assignment_expression
18+
right: (identifier)@name
19+
)
20+
(member_expression
21+
property: (property_identifier)@name
22+
)
23+
(binary_expression
24+
(identifier)@name
25+
)
26+
]
27+
)
28+
)
29+
"""
1230
query_import = "(import_statement)@name"
1331
query_import_identifier = """
1432
(call_expression

scubatrace/language.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,11 @@ class Language:
3434
The tree-sitter query to match function calls.
3535
"""
3636

37+
query_argument: str
38+
"""
39+
The tree-sitter query to match function call argument.
40+
"""
41+
3742
query_import_identifier: str
3843
"""
3944
The tree-sitter query to match import identifiers.

scubatrace/python/language.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,21 @@ class PYTHON(Language):
99
tslanguage = TSLanguage(tspython.language())
1010

1111
query_call = "(call)@name"
12+
query_argument = """
13+
(call
14+
arguments: (argument_list
15+
[
16+
(identifier)@name
17+
(attribute
18+
attribute: (identifier)@name
19+
)
20+
(keyword_argument
21+
value: (identifier)@name
22+
)
23+
]
24+
)
25+
)
26+
"""
1227
query_import_identifier = """
1328
(import_statement
1429
name: [

0 commit comments

Comments
 (0)