|
1 | | -loadleaf!(dst, src, err) = dst |
2 | | -loadleaf!(dst::AbstractArray, src, err) = |
| 1 | +loadleaf!(dst, src) = dst |
| 2 | +loadleaf!(dst::AbstractArray, src) = |
3 | 3 | error("Tried to copy $src into an array destination; this is not allowed.") |
4 | | -loadleaf!(dst, src::AbstractArray, err) = |
| 4 | +loadleaf!(dst, src::AbstractArray) = |
5 | 5 | error("Tried to copy an array to $dst; this is not allowed.") |
6 | | -function loadleaf!(dst::AbstractArray, src::Bool, err) |
| 6 | + |
| 7 | +function loadleaf!(dst::AbstractArray, src::Bool) |
7 | 8 | if iszero(src) |
8 | 9 | dst .= src |
9 | 10 | else |
10 | 11 | error("Cannot copy boolean parameter == true to non-zero parameter.") |
11 | 12 | end |
12 | 13 | return dst |
13 | 14 | end |
14 | | -loadleaf!(dst::Bool, src::AbstractArray, err) = iszero(dst) ? dst : |
| 15 | + |
| 16 | +loadleaf!(dst::Bool, src::AbstractArray) = iszero(dst) ? dst : |
15 | 17 | error("Cannot copy non-zero parameter to boolean parameter == true.") |
16 | | -function loadleaf!(dst::AbstractArray, src::AbstractArray, err) |
| 18 | + |
| 19 | +function loadleaf!(dst::AbstractArray, src::AbstractArray) |
| 20 | + err = DimensionMismatch("Tried to load size $(size(src)) array into size $(size(dst))") |
17 | 21 | (size(dst) == size(src)) || throw(err) |
18 | 22 | copyto!(dst, src) |
19 | 23 | end |
@@ -82,20 +86,19 @@ Likewise, copying a `src` value of `false` to any `dst` array is valid, |
82 | 86 | but copying a `src` value of `true` will error. |
83 | 87 | """ |
84 | 88 | function loadmodel!(dst, src; filter = _ -> true, cache = Base.IdSet()) |
85 | | - ldsts = _filter_children(filter, functor(dst)[1]) |
86 | | - lsrcs = _filter_children(filter, functor(src)[1]) |
| 89 | + ldsts = _filter_children(filter, Functors.children(dst)) |
| 90 | + lsrcs = _filter_children(filter, Functors.children(src)) |
87 | 91 | (keys(ldsts) == keys(lsrcs)) || |
88 | | - throw(ArgumentError("Tried to load $src into $dst but the structures do not match.")) |
| 92 | + throw(ArgumentError("Tried to load $(keys(lsrcs)) into $(keys(ldsts)) but the structures do not match.")) |
89 | 93 |
|
90 | | - err = DimensionMismatch("Tried to load $src into $dst but the parameter sizes do not match.") |
91 | 94 | foreach(ldsts, lsrcs) do ldst, lsrc |
92 | 95 | if ldst in cache # we already loaded this parameter before |
93 | 96 | _tie_check(ldst, lsrc) && return ldst |
94 | 97 | elseif Functors.isleaf(ldst) # our first time loading this leaf |
95 | 98 | push!(cache, ldst) |
96 | | - loadleaf!(ldst, lsrc, err) |
| 99 | + loadleaf!(ldst, lsrc) |
97 | 100 | else # this isn't a leaf |
98 | | - loadmodel!(ldst, lsrc; filter = filter, cache = cache) |
| 101 | + loadmodel!(ldst, lsrc; filter, cache) |
99 | 102 | end |
100 | 103 | end |
101 | 104 |
|
|
0 commit comments