Skip to content

Complete OPY-to-canonical-WIR lowering for the supported source language #145

Description

@Teakowa

Parent: #88

Goal

Close the remaining compiler/lowering gaps for the supported OverPy source-language surface as one category-level capability, so accepted OPY constructs consistently lower through canonical workshop-rs WIR without one-gap-per-issue execution.

Context

Several currently open issues describe narrow lowering differences such as initializer behavior, indexed assignment, string representation/modifiers, contextual chase lowering, and implicit subroutine materialization. These are useful regression evidence, but they should be completed through one audited lowering contract rather than as independent roadmap slices.

Scope

  • Audit every supported OPY HIR construct that is expected to compile to canonical WIR and verify that its lowering path is implemented or has an explicitly owned external blocker.
  • Close demonstrated lowering gaps for declarations/defaults, assignments/indexing, strings and collections, control flow, subroutines/functions, contextual helpers, builtin/member calls, rules/events, and other supported source constructs.
  • Preserve source provenance and structured diagnostics across lowering.
  • Compare observable/canonical semantics rather than compiler-output text, optimizer shape, helper naming, or incidental WIR differences that are not part of the contract.
  • Run category-level conformance plus the full real-project corpus after the lowering surface is complete.

Non-goals

  • Reproducing upstream optimizer strategy, temporary variables, formatting, or byte/text-identical Workshop output.
  • Duplicating canonical Workshop semantics owned by workshop-rs.
  • Workshop -> OPY reconstruction.
  • Project-specific lowering workarounds.

Acceptance criteria

PR budget

Target: 1 implementation PR. Maximum: 2 non-release PRs. Split only by coherent lowering boundaries, not by individual residual or fixture.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions