@@ -506,5 +506,32 @@ def test_aref_on_a_method_call_with_arguments
506
506
assert_equal ( 1 , variable . definitions [ 0 ] . start_line )
507
507
assert_equal ( 2 , variable . usages [ 0 ] . start_line )
508
508
end
509
+
510
+ def test_double_aref_on_method_call
511
+ tree = SyntaxTree . parse ( <<~RUBY )
512
+ object = MyObject.new
513
+ object["attributes"].find { |a| a["field"] == "expected" }["value"] = "changed"
514
+ RUBY
515
+
516
+ visitor = Collector . new
517
+ visitor . visit ( tree )
518
+
519
+ assert_equal ( 1 , visitor . arguments . length )
520
+ assert_equal ( 1 , visitor . variables . length )
521
+
522
+ variable = visitor . variables [ "object" ]
523
+ assert_equal ( 1 , variable . definitions . length )
524
+ assert_equal ( 1 , variable . usages . length )
525
+
526
+ assert_equal ( 1 , variable . definitions [ 0 ] . start_line )
527
+ assert_equal ( 2 , variable . usages [ 0 ] . start_line )
528
+
529
+ argument = visitor . arguments [ "a" ]
530
+ assert_equal ( 1 , argument . definitions . length )
531
+ assert_equal ( 1 , argument . usages . length )
532
+
533
+ assert_equal ( 2 , argument . definitions [ 0 ] . start_line )
534
+ assert_equal ( 2 , argument . usages [ 0 ] . start_line )
535
+ end
509
536
end
510
537
end
0 commit comments