fix: resolve all stress test bugs

- Record equality: add Record case to values_equal in interpreter
- Invalid escapes: error on unknown escape sequences in lexer
- Unknown effects: validate effect names in check_function with suggestions
- Circular types: add DFS cycle detection in check_type_cycles
- Parser: require | for enum variants, enabling proper type alias syntax

All 265 tests pass.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-02-14 02:45:52 -05:00
parent 07a35f1829
commit c81349d82c
6 changed files with 224 additions and 27 deletions

View File

@@ -478,11 +478,11 @@ impl Parser {
self.advance();
self.skip_newlines();
if self.check(TokenKind::Pipe) || self.peek_is_variant() {
// Enum type
if self.check(TokenKind::Pipe) {
// Enum type - requires leading | for variants
(TypeDef::Enum(self.parse_variants()?), Vec::new())
} else {
// Type alias
// Type alias - any type expression
(TypeDef::Alias(self.parse_type()?), Vec::new())
}
} else {