Skip to content

Commit 6c3d85d

Browse files
committed
fix: fix parameters post_data_dependents
1 parent 617d1ee commit 6c3d85d

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

scubatrace/identifier.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -372,9 +372,17 @@ def is_stop(stat: Statement) -> bool:
372372
return True
373373
return False
374374

375+
from .function import Function
376+
375377
dependents = []
376-
for post in self.statement.walk_forward(
377-
filter=is_data_dependents, stop_by=is_stop
378+
start_stat = self.statement
379+
if isinstance(self.statement, Function):
380+
if len(self.statement.statements) != 0:
381+
start_stat = self.statement.statements[0]
382+
else:
383+
return []
384+
for post in start_stat.walk_forward(
385+
filter=is_data_dependents, stop_by=is_stop, base="control"
378386
):
379387
if post.signature == self.signature:
380388
continue

tests/test_identifer.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,3 +49,10 @@ def test_identifier_is_argument(self):
4949
self.assertFalse(identifier.is_argument)
5050
identifier = self.file.identifier_by_position(47, 41) or self.fail()
5151
self.assertTrue(identifier.is_argument)
52+
53+
def test_identifier_param_post_data_dependents(self):
54+
function = self.file.functions_by_name("main")[0]
55+
param = function.parameters[0]
56+
self.assertEqual(param.name, "argc")
57+
self.assertEqual(len(param.post_data_dependents), 1)
58+
self.assertEqual(param.post_data_dependents[0].start_line, 16)

0 commit comments

Comments
 (0)