Skip to content

[Feature] Add missing DisplayList API#864

Merged
Kyle-Ye merged 3 commits into
mainfrom
feature/display_list
May 16, 2026
Merged

[Feature] Add missing DisplayList API#864
Kyle-Ye merged 3 commits into
mainfrom
feature/display_list

Conversation

@Kyle-Ye
Copy link
Copy Markdown
Collaborator

@Kyle-Ye Kyle-Ye commented May 16, 2026

Summary

  • Implement missing DisplayList APIs audited against SwiftUICore 6.5.4 Hopper assembly.
  • Add aggregate cache handling for properties across init/append/transform paths.
  • Implement traversal helpers for identities and RB display lists inline in DisplayList, matching the latest forEachIdentity((Identity, inout Bool) -> Void) -> Bool ABI.
  • Add reserveCapacity, translate, version, nextUpdate, and explicit equality behavior.

@augmentcode
Copy link
Copy Markdown

augmentcode Bot commented May 16, 2026

🤖 Augment PR Summary

Summary: This PR fills in missing pieces of the core DisplayList API to better match SwiftUICore 6.5.4 behavior.

Changes:

  • Updates audit marker for DisplayList.swift to 6.5.4.
  • Implements list construction and mutation paths: init(Item), append, append(contentsOf:), and reserveCapacity, while maintaining aggregate features/properties caches.
  • Adds transform to mutate items and recompute cached aggregates, and translate(by:version:) to offset item geometry and advance item versions.
  • Adds a computed version across all items and keeps nextUpdate(after:) behavior intact.
  • Introduces traversal helpers forEachIdentity and forEachRBDisplayList for identity/RB list discovery through nested display lists.
  • Defines explicit DisplayList == to compare items plus cached aggregate state.
  • Implements DisplayList.Item.properties aggregation across flattened content, effects (including masks and interpolator layers), and states.
  • Wires interpolator-related property aggregation through new properties overrides/forwarders on interpolator-layer structures.
  • Removes a placeholder properties implementation from DisplayListPrinter now that it’s implemented on DisplayList.Item.
  • Adds unit tests validating property propagation for property effects, masks, flattened content, and states.

Technical Notes: The change centers on keeping features and properties caches consistent across init/append/transform paths and enabling traversal of nested structures for identity/RB-list enumeration.

🤖 Was this summary useful? React with 👍 or 👎

Copy link
Copy Markdown

@augmentcode augmentcode Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review completed. No suggestions at this time.

Comment augment review to trigger a new review at any time.

@codecov
Copy link
Copy Markdown

codecov Bot commented May 16, 2026

Codecov Report

❌ Patch coverage is 27.43363% with 82 lines in your changes missing coverage. Please review.
✅ Project coverage is 25.73%. Comparing base (32b3832) to head (aa5dac5).
⚠️ Report is 2 commits behind head on main.

Files with missing lines Patch % Lines
...enSwiftUICore/Render/DisplayList/DisplayList.swift 27.43% 82 Missing ⚠️
Additional details and impacted files
@@             Coverage Diff             @@
##             main     #864       +/-   ##
===========================================
+ Coverage   13.74%   25.73%   +11.98%     
===========================================
  Files         637      677       +40     
  Lines       41167    47008     +5841     
===========================================
+ Hits         5660    12099     +6439     
+ Misses      35507    34909      -598     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@Kyle-Ye Kyle-Ye merged commit e14c750 into main May 16, 2026
7 of 8 checks passed
@Kyle-Ye Kyle-Ye deleted the feature/display_list branch May 16, 2026 15:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant