Repository navigation
fix(sv): fix structure defaults, record padding, bare pops and nested reads - #2500
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 2332d0a4df
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
Queued — the merge queue status continues in this comment ↓. |
… reads Review findings on the unpacked structure stack (#2415, #2422, #2424) that arrived after it merged: - A `default` pattern item descends into a structure member unless the value is a structure of that member's type (IEEE 1800-2023 10.9.2), so `c = '{default: a}` initializes the nested members of `a`'s type instead of rejecting it. - 4-state object fields store their complemented value and mask planes masked to the field width. Padding bits stay zero, so a default record of a field that is not byte-aligned (`logic flag`) is all zero bytes, and `finish_record` keeps it `null`: `d = new[1]; d[0] = d[0];` no longer wakes `@(d)`. - `q.pop_front` and `q.pop_back` without parentheses are whole elements of a queue of structures. - A `$` index of a queue read through a receiver with a side effect, such as `m[f()][$]`, is rejected: the size behind `$` reads the receiver again, which could name another queue. Change-Id: Ibd97e9c73adb7703a0734ca9fcdedeb66c0a2189
2332d0a to
6e06662
Compare
Revision history
|
|
@Mergifyio queue |
✅ Merged into
|
| Condition | Required by | |
|---|---|---|
| ✅ | check-success = Conventional Commit title |
— |
| ✅ | check-success = Queue validation |
— |
| ✅ | any of: check-success = @github-actions/Lint & Format, check-neutral = @github-actions/Lint & Format, check-skipped = @github-actions/Lint & Format |
GitHub repository ruleset rule master |
| ✅ | any of: check-success = @github-actions/Rust Test & NAPI Build, check-neutral = @github-actions/Rust Test & NAPI Build, check-skipped = @github-actions/Rust Test & NAPI Build |
GitHub repository ruleset rule master |
| ✅ | any of: check-success = @github-actions/JS Test (Ubuntu), check-neutral = @github-actions/JS Test (Ubuntu), check-skipped = @github-actions/JS Test (Ubuntu) |
GitHub repository ruleset rule master |
| ✅ | any of: check-success = @github-actions/Conventional Commit title, check-neutral = @github-actions/Conventional Commit title, check-skipped = @github-actions/Conventional Commit title |
GitHub repository ruleset rule master |
| ✅ | any of: check-success = @github-actions/Queue validation, check-neutral = @github-actions/Queue validation, check-skipped = @github-actions/Queue validation |
GitHub repository ruleset rule master |
Times in UTC · dashboard · how the merge queue works
Review findings on the unpacked structure stack (#2415, #2422, #2424)
that arrived after it merged:
defaultpattern item descends into a structure member unless thevalue is a structure of that member's type (IEEE 1800-2023 10.9.2), so
c = '{default: a}initializes the nested members ofa's typeinstead of rejecting it.
masked to the field width. Padding bits stay zero, so a default record
of a field that is not byte-aligned (
logic flag) is all zero bytes,and
finish_recordkeeps itnull:d = new[1]; d[0] = d[0];nolonger wakes
@(d).q.pop_frontandq.pop_backwithout parentheses are whole elementsof a queue of structures.
$index of a queue read through a receiver with a side effect, suchas
m[f()][$], is rejected: the size behind$reads the receiveragain, which could name another queue.