Resolved conflicts in src/cli/main.zig:
- Updated createUniqueTempDir to use ctx: *CliContext instead of allocs
- Kept cache cleanup via CacheConfig.getVersionTempDir approach
- Added background cache cleanup thread with new Io.init() pattern
- Updated exe_cache_dir to use ctx.arena with getExeCacheDir helper
- Fixed deleteTempDir calls to use ctx.arena
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The layout store was incorrectly adding alias types to in_progress_vars,
but aliases just continue to their backing type without ever being
"completed" (removed from in_progress_vars). This caused spurious cycle
detection when the same alias was encountered again during layout
computation for a nominal type like Try.
The fix is to skip adding aliases to in_progress_vars since they are
transparent wrappers that immediately continue to their backing type.
Fixes#8708
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove unused `self` parameter from Monomorphizer.monomorphize placeholder
- Remove unused `lookup` capture in RocEmitter e_lookup_external handler
- Replace @enumFromInt(0) with undefined for variant_var/ext_var in test
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This adds tests that verify emitted Roc code produces the same results
as the original when run through the interpreter:
- evalToInt/evalToBool helpers for evaluating expressions
- Roundtrip tests for:
- Integer literals
- Arithmetic expressions
- If expressions
- Boolean True/False
- Complex arithmetic
The tests parse source, emit it as Roc code, re-parse the emitted code,
run both through the interpreter, and verify they produce identical results.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This adds the foundation for the monomorphizing compiler:
- RocEmitter: Converts CIR (Canonical IR) to valid Roc source code
- Handles all expression types (numbers, lambdas, records, tags, etc.)
- Handles patterns and statements
- Unit tests for basic expression emission
- Monomorphizer: Infrastructure for specializing polymorphic functions
- Type hash computation for specialization keys
- Specialized name generation
- Integration with type system
- End-to-end tests in eval module:
- Parse -> Canonicalize -> Type Check -> Emit pipeline
- Tests for identity function, blocks, and basic expressions
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>