Extended PatternPipelineContext and CarrierUpdateInfo for Pattern 3 AST-based generalization. Changes: 1. PatternPipelineContext: - Added loop_condition: Option<ASTNode> - Added loop_body: Option<Vec<ASTNode>> - Added loop_update_summary: Option<LoopUpdateSummary> - Updated build_pattern_context() for Pattern 3 2. CarrierUpdateInfo: - Added then_expr: Option<ASTNode> - Added else_expr: Option<ASTNode> - Updated analyze_loop_updates() with None defaults Status: Phase 213-2 Steps 2-2 & 2-3 complete Next: Create Pattern3IfAnalyzer to extract if statement and populate update summary
1.2 KiB
1.2 KiB
Dev Sugar: @name = expr as local declaration
Status: dev-only, pre-expand sugar (no spec change)
Goal
- Speed up local declarations during development without impacting readability in shared code.
Syntax (dev sugar)
- Line-head only:
@name = expr→local name = expr@name: Type = expr→local name: Type = expr
Rules
- Valid only at line start (leading spaces allowed). Inside expressions it is ignored.
- Declaration-only: not allowed for reassignments; use
name = exprfor assignments. - Semantics are identical to
local(scope/cleanup unchanged). Zero runtime cost.
Enablement
- Use the provided pre-expander script for dev:
tools/dev/at_local_preexpand.sh. - Example:
tools/dev/at_local_preexpand.sh apps/tests/dev_sugar/at_local_basic.hako > /tmp/out.hakoNYASH_VM_USE_PY=1 ./target/release/hakorune --backend vm /tmp/out.hako
Style
- Shared/committed code: prefer explicit
local(nyfmt may normalize @ tolocal). - Dev/repl/prototype:
@is acceptable to reduce noise.
Notes
- This is a text pre-expansion; it does not change the parser or MIR.
- The pattern is conservative to avoid collisions with comments and inline usages.