Skip to content

feat(opy): complete source semantic and project state convergence - #155

Merged
Teakowa merged 2 commits into
mainfrom
codex/issue-143-semantic-hir-followup
Sep 1, 2026
Merged

feat(opy): complete source semantic and project state convergence#155
Teakowa merged 2 commits into
mainfrom
codex/issue-143-semantic-hir-followup

Conversation

@e54-bot

@e54-bot e54-bot commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

Summary

  • complete source-semantic player-variable receivers for eventPlayer, hostPlayer, attacker, and victim with HIR provenance and structured invalid-member diagnostics
  • extract the single project settings block from included sources, preserve its source file identity, and ignore duplicate includes after first processing
  • refresh real-world corpus expectations to the next independently owned boundaries

Verification

  • cargo fmt --all -- --check
  • cargo test --workspace --all-targets
  • full corpus: 63 fixtures, 43 match / 17 known-gap / 3 unsupported, zero regression
  • focused negative coverage for unknown player members and non-assignable context receivers

Fixes #142
Fixes #143

Implement all declared player-variable receiver contexts with preserved HIR provenance and structured invalid-member diagnostics. Extract project settings from included sources and process duplicate includes once, then refresh corpus boundaries.

Fixes #142

Fixes #143

@Teakowa Teakowa left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Major — crates/opy-rs/src/lower.rs:1349

Player-variable member lowering is still limited to the four hard-coded context names. #143 explicitly requires the receiver/source-variable contract for all valid player expressions. The reference parser treats any non-call member whose name is a player variable as __playerVar__(parse(receiver), name); e.g. a declared globalvar target followed by target.isWeaponBroken is a player-variable access, while this code falls through to HirExpr::Member (and non-Name receivers still become unsupported-member).

Resolve declared/default player-variable members independently of receiver shape, preserving the lowered receiver and member provenance.

Honor declared player-variable members for global-variable and call-result receivers while preserving the existing implicit-global default-name behavior.

Refs #143

@Teakowa Teakowa left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM

@Teakowa
Teakowa merged commit d171cf7 into main Sep 1, 2026
5 checks passed
@Teakowa
Teakowa deleted the codex/issue-143-semantic-hir-followup branch September 1, 2026 10:36
@e54-bot e54-bot mentioned this pull request Sep 1, 2026
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.

Complete the OverPy semantic HIR surface Complete OverPy preprocessing, macros, directives, and project composition

2 participants