45 lines
1.3 KiB
Markdown
45 lines
1.3 KiB
Markdown
# PR-016 - PBS Assignment Target and Field Access Semantics
|
|
|
|
## Briefing
|
|
|
|
Assignment validation currently does not enforce target existence, assignability, mutability, or write-access constraints. This PR closes those gaps.
|
|
|
|
## Motivation
|
|
|
|
Unchecked assignment targets allow invalid programs through static semantics.
|
|
|
|
## Target
|
|
|
|
- Assignment statement semantic analysis.
|
|
- Struct field read/write access validation (`private`, `pub`, `pub mut`).
|
|
|
|
## Scope
|
|
|
|
- Resolve LValue path against known symbols.
|
|
- Validate assignment compatibility and write permissions.
|
|
- Emit deterministic diagnostics for invalid target/write access.
|
|
|
|
## Method
|
|
|
|
- Add LValue resolver in flow semantic analyzer.
|
|
- Use struct metadata (`isPublic`, `isMutable`) for access checks.
|
|
- Distinguish read-access and write-access diagnostics.
|
|
|
|
## Acceptance Criteria
|
|
|
|
- Missing assignment target is rejected deterministically.
|
|
- Writes to private fields from invalid contexts are rejected.
|
|
- Writes to non-`pub mut` external fields are rejected.
|
|
- Type mismatch in assignment is reported deterministically.
|
|
|
|
## Tests
|
|
|
|
- Add assignment tests for local, field, and nested member targets.
|
|
- Add negative access tests (`pub` read-only vs `pub mut`).
|
|
- Add type-mismatch assignment tests.
|
|
|
|
## Non-Goals
|
|
|
|
- New mutation syntax.
|
|
- Runtime memory model changes.
|