Skip to content

Add TYPECASE type-based pattern matching with narrowing#102

Merged
mdbergmann merged 1 commit into
masterfrom
typecase-impl
Feb 24, 2026
Merged

Add TYPECASE type-based pattern matching with narrowing#102
mdbergmann merged 1 commit into
masterfrom
typecase-impl

Conversation

@mdbergmann
Copy link
Copy Markdown
Owner

Implements TYPECASE/CASE/CASE ELSE/END TYPECASE control structure for branching on runtime class type with ISA semantics (walks parent chain). Inside each CASE block, the variable is narrowed to the matched type so subclass members become accessible via ->.

  • Add _isa_check runtime function (isa.s) for parent-chain type check
  • Add typecasesym keyword, typecase_statement() parser (~120 lines)
  • Add error messages 98-101 for TYPECASE diagnostics
  • Add tests: typecase.b (ISA dispatch), typecase_narrow.b (narrowing)
  • Update IDE autocase/syntax/quickinfo and docs/quickref.txt

Implements TYPECASE/CASE/CASE ELSE/END TYPECASE control structure
for branching on runtime class type with ISA semantics (walks parent
chain). Inside each CASE block, the variable is narrowed to the
matched type so subclass members become accessible via ->.

- Add _isa_check runtime function (isa.s) for parent-chain type check
- Add typecasesym keyword, typecase_statement() parser (~120 lines)
- Add error messages 98-101 for TYPECASE diagnostics
- Add tests: typecase.b (ISA dispatch), typecase_narrow.b (narrowing)
- Update IDE autocase/syntax/quickinfo and docs/quickref.txt

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@mdbergmann mdbergmann merged commit d4825bc into master Feb 24, 2026
@mdbergmann mdbergmann deleted the typecase-impl branch February 24, 2026 16:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant