diff --git a/languages/tree-sitter-stack-graphs-typescript/src/stack-graphs.tsg b/languages/tree-sitter-stack-graphs-typescript/src/stack-graphs.tsg index 773abde7c..b99fcdb34 100644 --- a/languages/tree-sitter-stack-graphs-typescript/src/stack-graphs.tsg +++ b/languages/tree-sitter-stack-graphs-typescript/src/stack-graphs.tsg @@ -2361,12 +2361,17 @@ if none @is_async { } [ - (nested_identifier object:(_)@mod) - (member_expression object:[(member_expression) (identifier)]@mod) + (nested_identifier object:(_)) + (member_expression object:(_)) ]@nested { node @nested.expr_def node @nested.type_def +} +[ + (nested_identifier object:(_)@mod) + (member_expression object:[(member_expression) (identifier)]@mod) +]@nested { edge @nested.expr_def -> @mod.expr_def edge @nested.type_def -> @mod.type_def } @@ -5583,11 +5588,17 @@ if none @is_acc { edge @name.type_ref_member -> @name.type_ref } +[ + (nested_identifier object:(_)) + (member_expression object:(_)) +]@nested { + node @nested.type_ref +} + [ (nested_identifier object:(_)@mod) (member_expression object:[(member_expression) (identifier)]@mod) ]@nested { - node @nested.type_ref edge @mod.type_ref -> @nested.type_ref } diff --git a/languages/tree-sitter-stack-graphs-typescript/test/expressions/access-properties.ts b/languages/tree-sitter-stack-graphs-typescript/test/expressions/access-properties.ts new file mode 100644 index 000000000..a98966929 --- /dev/null +++ b/languages/tree-sitter-stack-graphs-typescript/test/expressions/access-properties.ts @@ -0,0 +1,23 @@ +{ + let x = { y: 42 }; + x.y; +// ^ defined: 2 +} + +{ /// Deep + let x = { y: { z: 42 } }; + x.y.z; +// ^ defined: 8 +} + +{ /// Deep with parenthesized expression + let x = { y: { z: 42 } }; + (x).y.z; +// ^ defined: 14 +} + +{ /// Deep with subscript expression + let x = [{ y: { z: 42 } }]; + x[0].y.z; +// ^ defined: 20 +}