refactor(r8): Replace no-line resolution with base entry grouping#85
Merged
romtsn merged 7 commits intorz/feat/r8-tests-line-number-handlingfrom Feb 16, 2026
Merged
Conversation
169af30 to
c22e0f9
Compare
9672efd to
bc97cdb
Compare
loewenheim
reviewed
Feb 13, 2026
58326db to
0007c72
Compare
loewenheim
approved these changes
Feb 13, 2026
Contributor
loewenheim
left a comment
There was a problem hiding this comment.
One small improvement, otherwise this looks good
b5f6e46 to
f99aade
Compare
Base automatically changed from
rz/fix/r8-tests-member-metadata
to
rz/feat/r8-tests-line-number-handling
February 16, 2026 12:39
Rewrite the no-line frame resolution logic in both mapper and cache paths to properly handle different types of base entries (0:0 range vs bare method vs single-line mappings). This replaces the simple NoLineSelection enum with richer grouping that considers has_minified_range and has_line_mapping flags to determine correct output lines. - Remove NoLineSelection enum and select_no_line_members from cache - Add pending_frames buffer to cache RemappedFrameIter for multi-frame base entry resolution - Add resolve_base_entries method to mapper for grouped base entry handling - Update iterate_with_lines in cache to use has_line_mapping for endline==0 output line determination - Remove unused resolve_no_line_output_line from utils Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Rename cache_member_output_line to compute_member_output_line - Collapse any_has_range if-else into single loop with conditional line - Collapse no_range len==1 / all_same_name into single all_same_name check - Remove separate zero_zero/no_range vectors; pre-compute aggregates in a single pass and use one emission loop over base_entries Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Reverse pending_frames and pop from end instead of remove(0) - Add comment explaining intentional Some(0)/None asymmetry - Use let-else with .first() instead of is_empty + indexing Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
0007c72 to
a9ec960
Compare
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
0a53eb0
into
rz/feat/r8-tests-line-number-handling
4 of 6 checks passed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
resolve_no_line_frames/resolve_base_entrieshelper functions that useOptionfield presence (startline.is_some(),original_startline.is_some()) instead of the removedboolean flags
resolve_base_entriesfrom a two-pass Vec collection to a single-pass approachpending_framesbuffer to cacheRemappedFrameIterfor multi-frame base entry resolutionresolve_no_line_output_linefrom utilsTest plan