Skip to content

Commit b596c11

Browse files
committed
added backwards compat constructor for VarName
1 parent d31461e commit b596c11

File tree

1 file changed

+17
-4
lines changed

1 file changed

+17
-4
lines changed

src/varname.jl

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,23 +35,36 @@ struct VarName{sym, T<:Lens}
3535
VarName{sym}(indexing=IdentityLens()) where {sym} = new{sym,typeof(indexing)}(indexing)
3636
end
3737

38+
# A bit of backwards compatibility.
39+
# TODO: Should we deprecate this?
40+
VarName{sym}(indexing::Tuple) where {sym} = VarName{sym}(tuple2indexlens(indexing))
41+
3842
"""
39-
VarName(vn::VarName, indexing=())
43+
VarName(vn::VarName, indexing::Lens)
44+
VarName(vn::VarName, indexing::Tuple)
4045
4146
Return a copy of `vn` with a new index `indexing`.
4247
43-
```jldoctest
48+
```jldoctest; setup=:(using Setfield)
49+
julia> VarName(@varname(x[1][2:3]), Setfield.IndexLens((2,)))
50+
x[2]
51+
4452
julia> VarName(@varname(x[1][2:3]), ((2,),))
4553
x[2]
4654
4755
julia> VarName(@varname(x[1][2:3]))
4856
x
4957
```
5058
"""
51-
function VarName(vn::VarName, indexing=IdentityLens())
52-
return VarName{getsym(vn)}(indexing)
59+
VarName(vn::VarName, indexing::Lens=IdentityLens()) = VarName{getsym(vn)}(indexing)
60+
61+
function VarName(vn::VarName, indexing::Tuple)
62+
return VarName{getsym(vn)}(tuple2indexlens(indexing))
5363
end
5464

65+
tuple2indexlens(indexing::Tuple{}) = IdentityLens()
66+
tuple2indexlens(indexing::Tuple{<:Tuple}) = IndexLens(first(indexing))
67+
tuple2indexlens(indexing::Tuple) = IndexLens(first(indexing)) tuple2indexlens(indexing[2:end])
5568

5669
"""
5770
getsym(vn::VarName)

0 commit comments

Comments
 (0)