@@ -121,7 +121,7 @@ Base.isempty(obj::Object) = _k(obj) === notset && _ch(obj) === notset
121121Base. empty (:: Object{K,V} ) where {K,V} = Object {K,V} () # empty object
122122
123123# linear node lookup
124- @inline function find_node_by_key (obj:: Object{K,V} , key:: K ) where {K,V}
124+ @inline function find_node_by_key (obj:: Object{K,V} , key) where {K,V}
125125 while true
126126 _k (obj) != = notset && isequal (_k (obj):: K , key) && return obj
127127 _ch (obj) === notset && break
@@ -142,9 +142,11 @@ Base.get(f::Base.Callable, obj::Object{Symbol}, key::String) = get(f, obj, Symbo
142142Base. getindex (obj:: Object , key) = get (() -> throw (KeyError (key)), obj, key)
143143Base. getindex (obj:: Object{String} , key:: Symbol ) = get (() -> throw (KeyError (key)), obj, String (key))
144144Base. getindex (obj:: Object{Symbol} , key:: String ) = get (() -> throw (KeyError (key)), obj, Symbol (key))
145- Base. setindex! (obj:: Object{String} , value, key:: Symbol ) = setindex! (obj, value, String (key))
145+ Base. setindex! (obj:: Object{String,V} , value, key:: AbstractString ) where {V} = _setindex! (obj, value, String (key))
146+ Base. setindex! (obj:: Object{String,V} , value, key:: Symbol ) where {V} = _setindex! (obj, value, String (key))
146147Base. setindex! (obj:: Object{Symbol} , value, key:: String ) = setindex! (obj, value, Symbol (key))
147- Base. delete! (obj:: Object{String} , key:: Symbol ) = delete! (obj, String (key))
148+ Base. delete! (obj:: Object{String,V} , key:: AbstractString ) where {V} = _delete! (obj, String (key))
149+ Base. delete! (obj:: Object{String,V} , key:: Symbol ) where {V} = _delete! (obj, String (key))
148150Base. delete! (obj:: Object{Symbol} , key:: String ) = delete! (obj, Symbol (key))
149151Base. get (obj:: Object , key, default) = get (() -> default, obj, key)
150152Base. get (obj:: Object{String} , key:: Symbol , default) = get (obj, String (key), default)
@@ -166,7 +168,7 @@ Base.haskey(obj::Object{String}, key::Symbol) = haskey(obj, String(key))
166168Base. haskey (obj:: Object{Symbol} , key:: String ) = haskey (obj, Symbol (key))
167169
168170# setindex! finds node with key and sets value or inserts a new node
169- function Base . setindex ! (obj:: Object{K,V} , value, key:: K ) where {K,V}
171+ function _setindex ! (obj:: Object{K,V} , value, key:: K ) where {K,V}
170172 root = obj
171173 while true
172174 if _k (obj) != = notset && isequal (_k (obj):: K , key)
@@ -180,9 +182,10 @@ function Base.setindex!(obj::Object{K,V}, value, key::K) where {K,V}
180182 Object {K,V} (obj, key, value)
181183 return value
182184end
185+ Base. setindex! (obj:: Object{K,V} , value, key:: K ) where {K,V} = _setindex! (obj, value, key)
183186
184187# delete! removes node
185- function Base . delete ! (obj:: Object{K,V} , key:: K ) where {K,V}
188+ function _delete ! (obj:: Object{K,V} , key:: K ) where {K,V}
186189 # check empty case
187190 _ch (obj) === notset && return obj
188191 root = parent = obj
@@ -204,6 +207,7 @@ function Base.delete!(obj::Object{K,V}, key::K) where {K,V}
204207 end
205208 return root
206209end
210+ Base. delete! (obj:: Object{K,V} , key:: K ) where {K,V} = _delete! (obj, key)
207211
208212function Base. empty! (obj:: Object )
209213 setfield! (obj, :child , notset)
214218Base. setproperty! (obj:: Object , sym:: Symbol , val) = setindex! (obj, val, sym)
215219Base. setproperty! (obj:: Object{String} , sym:: Symbol , val) = setindex! (obj, val, String (sym))
216220
217- Base. merge (a:: NamedTuple , b:: Object{String,Any} ) = merge (a, (Symbol (k) => v for (k, v) in b))
221+ Base. merge (a:: NamedTuple , b:: Object{String,Any} ) = merge (a, (Symbol (k) => v for (k, v) in b))
0 commit comments