Skip to content

Update for statement tests #224

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Mar 17, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 41 additions & 14 deletions languages/tree-sitter-stack-graphs-java/src/stack-graphs.tsg
Original file line number Diff line number Diff line change
Expand Up @@ -568,29 +568,56 @@ attribute node_symbol = node => symbol = (source-text node), source_n

(local_variable_declaration
type: (_) @type
declarator: (variable_declarator
name: (_) @name
)
declarator: (variable_declarator) @var_decl
) @local_var
{
node def
attr (def) node_definition = @name
edge @local_var.after_scope -> def
edge @local_var.after_scope -> @local_var.before_scope
attr (@local_var.after_scope -> @local_var.before_scope) precedence = 1
edge @var_decl.def__typeof -> @type.type
}

(local_variable_declaration
type: (_) @type) @local_var {
edge @type.lexical_scope -> @local_var.before_scope
}

node def__typeof
attr (def__typeof) pop_symbol = ":"
(variable_declarator value: (_) @value) @this {
edge @value.lexical_scope -> @this.before_scope
}

edge def -> def__typeof
(local_variable_declaration
declarator: (_) @last
. ) @local_var {
edge @local_var.after_scope -> @last.after_scope
attr (@local_var.after_scope -> @last.after_scope) precedence = 1
}

edge def__typeof -> @type.type
(local_variable_declaration
type: (_)
.
declarator: (_) @first) @local_var {
edge @first.before_scope -> @local_var.before_scope
}

(local_variable_declaration declarator: (variable_declarator value: (_) @value)) @this {
edge @value.lexical_scope -> @this.before_scope
(local_variable_declaration
declarator: (_) @left
.
declarator: (_) @right
) @local_var {
edge @right.before_scope -> @left.after_scope
}

(variable_declarator
name: (_) @name) @var_decl {
node @var_decl.before_scope
node @var_decl.after_scope
node @var_decl.def__typeof
attr (@var_decl.def__typeof) pop_symbol = ":"

node def
attr (def) node_definition = @name
edge @var_decl.after_scope -> def
edge @var_decl.after_scope -> @var_decl.before_scope

edge def -> @var_decl.def__typeof
}

(return_statement (_) @expr) @stmt
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,12 @@ void g() {
//^ defined: 12
}
}

void h() {
int k = 5;
for (int i = 0, j = i; i < 123; k++) {
// ^ defined: 23
// ^ defined: 22
}
}
}