@@ -13,7 +13,7 @@ unsafe_set(dims::DimTuple, a1::Union{Dimension,Pair}, a2::Union{Dimension,Pair},
1313 _set (Unsafe (), dims, a1, a2, args... )
1414
1515_set (s:: Safety , dims:: DimTuple , l:: LookupSetters ) =
16- _set (s, dims, map (d -> basedims (d) => l , dims)... )
16+ _set (s, dims, map (d -> rebuild (d, l) , dims)... )
1717
1818# Convert pairs to wrapped dims and set
1919_set (s:: Safety , dims:: DimTuple , p:: Pair , ps:: Pair... ) =
4040# Set things wrapped in dims
4141_set (s:: Safety , dim:: Dimension , wrapper:: Dimension{<:DimSetters} ) = begin
4242 rewrapped = _set (s, dim, basetypeof (wrapper))
43- x = _set (s, rewrapped, val (wrapper))
44- x
43+ _set (s, rewrapped, val (wrapper))
4544end
45+ _set (s:: Safety , dim:: Dimension , l:: Union{Lookup,LookupSetters} ) =
46+ rebuild (dim, _set (s, val (dim), l))
4647# Set the dim, checking the lookup
4748_set (s:: Safety , dim:: Dimension , newdim:: Dimension ) =
4849 _set (s, newdim, _set (s, val (dim), val (newdim)))
@@ -61,6 +62,9 @@ _set(::Safety, ::Nothing, x::Dimension) = x
6162_set (:: Safety , :: Nothing , :: Nothing ) = nothing
6263_set (:: Safety , x, :: Nothing ) = x
6364_set (:: Safety , :: Nothing , x) = x
65+ # For ambiguity
66+ _set (:: Safety , dims:: DimTuple , :: Nothing ) = dims
67+ _set (:: Safety , dims:: Lookup , :: Nothing ) = dims
6468
6569@noinline _wrongdimserr (dims, w) =
6670 throw (ArgumentError (" dim $(basetypeof (w)) ) not in $(map (basetypeof, dims)) " ))
0 commit comments