diff --git a/src/indexing.jl b/src/indexing.jl index 45d235b..8251e7a 100644 --- a/src/indexing.jl +++ b/src/indexing.jl @@ -107,7 +107,9 @@ end idxs = Expr[:(Colon()) for d = 1:N] names = axisnames(A) for i=1:length(dims) - idxs[dims[i]] == :(Colon()) || return :(error("multiple indices provided on axis ", $(names[dims[i]]))) + idxs[dims[i]] == :(Colon()) || + return :(throw(ArgumentError(string("multiple indices provided ", + "on axis ", $(string(names[dims[i]])))))) idxs[dims[i]] = :(I[$i].val) end diff --git a/test/indexing.jl b/test/indexing.jl index 8a9c189..bb357ad 100644 --- a/test/indexing.jl +++ b/test/indexing.jl @@ -136,3 +136,8 @@ axy = @inferred(A[Axis{:y}]) @test isa(axy, Axis{:y}) @test axy.val == 1:5 @test_throws ArgumentError A[Axis{:z}] + +# Test for the expected exception type given repeated axes +A = AxisArray(rand(2,2), :x, :y) +@test_throws ArgumentError A[Axis{:x}(1), Axis{:x}(1)] +@test_throws ArgumentError A[Axis{:y}(1), Axis{:y}(1)]