@@ -562,6 +562,30 @@ Base.size(st::SizedThing) = st.size
562562 @test @inferred (getindex (vnt, @varname (y. z[2 : 3 , 2 : 3 ]))) == val
563563 @test haskey (vnt, @varname (y. z[4 : 5 , 2 : 3 ]))
564564 @test @inferred (getindex (vnt, @varname (y. z[4 : 5 , 2 : 3 ]))) == val
565+
566+ # A lot like above, but with extra indices that are not ranges.
567+ val = SizedThing ((2 , 2 ))
568+ vnt = VarNamedTuple ()
569+ vnt = @inferred (setindex!! (vnt, val, @varname (y. z[2 , 1 : 2 , 3 , 1 : 2 , 4 ])))
570+ test_invariants (vnt)
571+ @test haskey (vnt, @varname (y. z[2 , 1 : 2 , 3 , 1 : 2 , 4 ]))
572+ @test @inferred (getindex (vnt, @varname (y. z[2 , 1 : 2 , 3 , 1 : 2 , 4 ]))) == val
573+ @test ! haskey (vnt, @varname (y. z[2 , 1 , 3 , 1 , 4 ]))
574+ @test_throws expected_err getindex (vnt, @varname (y. z[2 , 1 , 3 , 1 , 4 ]))
575+
576+ vnt = @inferred (setindex!! (vnt, val, @varname (y. z[2 , 2 : 3 , 3 , 2 : 3 , 4 ])))
577+ test_invariants (vnt)
578+ @test haskey (vnt, @varname (y. z[2 , 2 : 3 , 3 , 2 : 3 , 4 ]))
579+ @test @inferred (getindex (vnt, @varname (y. z[2 , 2 : 3 , 3 , 2 : 3 , 4 ]))) == val
580+ @test ! haskey (vnt, @varname (y. z[2 , 1 : 2 , 3 , 1 : 2 , 4 ]))
581+ @test_throws BoundsError getindex (vnt, @varname (y. z[2 , 1 : 2 , 3 , 1 : 2 , 4 ]))
582+
583+ vnt = @inferred (setindex!! (vnt, val, @varname (y. z[3 , 2 : 3 , 3 , 2 : 3 , 4 ])))
584+ test_invariants (vnt)
585+ @test haskey (vnt, @varname (y. z[2 , 2 : 3 , 3 , 2 : 3 , 4 ]))
586+ @test @inferred (getindex (vnt, @varname (y. z[2 , 2 : 3 , 3 , 2 : 3 , 4 ]))) == val
587+ @test haskey (vnt, @varname (y. z[3 , 2 : 3 , 3 , 2 : 3 , 4 ]))
588+ @test @inferred (getindex (vnt, @varname (y. z[3 , 2 : 3 , 3 , 2 : 3 , 4 ]))) == val
565589 end
566590end
567591
0 commit comments