diff --git a/src/indexing.jl b/src/indexing.jl index a0ee12b..95956ea 100644 --- a/src/indexing.jl +++ b/src/indexing.jl @@ -1,4 +1,6 @@ nodeselect(ns, i, I...) = ns[i][I...] +nodeselect(ns::Tuple, i, I...) = i == 1 ? first(ns)[I...] : nodeselect(Base.tail(ns), i - 1, I...) +nodeselect(ns::Tuple{}, i, I...) = throw(BoundsError(ns, i)) nodechild(ns, i, j) = ns[i].nodes[j] function bisect_search(a, i) diff --git a/test/tuple_nodes.jl b/test/tuple_nodes.jl index 6b345d0..a23d788 100644 --- a/test/tuple_nodes.jl +++ b/test/tuple_nodes.jl @@ -48,8 +48,8 @@ scenario = construct(Scenario, (deepcopy(community),)) @inferred getindex(organ1, 1) @inferred getindex(plant1, 3) -@test_broken @inferred getindex(community, 4) -@test_broken @inferred getindex(scenario, 8) +@inferred getindex(community, 4) +@inferred getindex(scenario, 8) @test scenario[1] == 1.1 @test scenario[2] == 2.1