@@ -391,16 +391,13 @@ function get_ranges_and_linked(varinfo::VarInfo{<:NamedTuple{syms}}) where {syms
391391 offset = 1
392392 for sym in syms
393393 md = varinfo. metadata[sym]
394- this_md_iden, this_md_others, new_offset = get_ranges_and_linked_metadata (
395- md, offset
396- )
394+ this_md_iden, this_md_others, offset = get_ranges_and_linked_metadata (md, offset)
397395 all_iden_ranges = merge (all_iden_ranges, this_md_iden)
398396 all_ranges = merge (all_ranges, this_md_others)
399- offset = new_offset
400397 end
401398 return all_iden_ranges, all_ranges
402399end
403- function get_ranges_and_linked (varinfo:: VarInfo{<:Metadata} )
400+ function get_ranges_and_linked (varinfo:: VarInfo{<:Union{ Metadata,VarNamedVector} } )
404401 all_iden, all_others, _ = get_ranges_and_linked_metadata (varinfo. metadata, 1 )
405402 return all_iden, all_others
406403end
@@ -409,9 +406,8 @@ function get_ranges_and_linked_metadata(md::Metadata, start_offset::Int)
409406 all_ranges = Dict {VarName,RangeAndLinked} ()
410407 offset = start_offset
411408 for (vn, idx) in md. idcs
412- len = length (md. ranges[idx])
413409 is_linked = md. is_transformed[idx]
414- range = offset : (offset + len - 1 )
410+ range = md . ranges[idx] .+ (start_offset - 1 )
415411 if AbstractPPL. getoptic (vn) === identity
416412 all_iden_ranges = merge (
417413 all_iden_ranges,
@@ -420,7 +416,7 @@ function get_ranges_and_linked_metadata(md::Metadata, start_offset::Int)
420416 else
421417 all_ranges[vn] = RangeAndLinked (range, is_linked)
422418 end
423- offset += len
419+ offset += length (range)
424420 end
425421 return all_iden_ranges, all_ranges, offset
426422end
@@ -429,9 +425,8 @@ function get_ranges_and_linked_metadata(vnv::VarNamedVector, start_offset::Int)
429425 all_ranges = Dict {VarName,RangeAndLinked} ()
430426 offset = start_offset
431427 for (vn, idx) in vnv. varname_to_index
432- len = length (vnv. ranges[idx])
433428 is_linked = vnv. is_unconstrained[idx]
434- range = offset : (offset + len - 1 )
429+ range = vnv . ranges[idx] .+ (start_offset - 1 )
435430 if AbstractPPL. getoptic (vn) === identity
436431 all_iden_ranges = merge (
437432 all_iden_ranges,
@@ -440,7 +435,7 @@ function get_ranges_and_linked_metadata(vnv::VarNamedVector, start_offset::Int)
440435 else
441436 all_ranges[vn] = RangeAndLinked (range, is_linked)
442437 end
443- offset += len
438+ offset += length (range)
444439 end
445440 return all_iden_ranges, all_ranges, offset
446441end
0 commit comments