Files
hakorune/docs/guides/dev-local-alias.md
nyash-codex d7805e5974 feat(joinir): Phase 213-2 Step 2-2 & 2-3 Data structure extensions
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
2025-12-10 00:01:53 +09:00

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 = exprlocal name = expr
    • @name: Type = exprlocal 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 = expr for 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.hako
    • NYASH_VM_USE_PY=1 ./target/release/hakorune --backend vm /tmp/out.hako

Style

  • Shared/committed code: prefer explicit local (nyfmt may normalize @ to local).
  • 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.