blaise/rtl
Graeme Geldenhuys 3365558265 Add is/as for interface types with _ImplementsInterface/_GetItab dispatch
Extend BlaiseTypeInfo with an impllist field (NULL-terminated {ti,itab}
pairs) so the runtime can walk a class's interface set.  Add
_ImplementsInterface and _GetItab to blaise_exc.c for the 'is IFoo'
and 'F := T as IFoo' operators respectively.

Compiler changes:
- uAST: ResolvedTargetType field on TIsExpr
- uSemantic: accept tyInterface on RHS of is/as; set ResolvedTargetType
- uCodeGenQBE: EmitIsExpr dispatches to _ImplementsInterface for interface
  targets; EmitAssignment handles F := T as IFoo via _GetItab + branch
- EmitTypeInfoDefs: extend to 2-field layout {parent, impllist}
- EmitInterfaceDefs: emit per-class impllist data blocks
- uSymbolTable: register IInterface as built-in interface type

10 new tests in cp.test.interfaces; 2 existing typeinfo tests updated
for new 2-field format.  494 tests, 0 failures.
2026-04-21 21:25:49 +01:00
..
src Add is/as for interface types with _ImplementsInterface/_GetItab dispatch 2026-04-21 21:25:49 +01:00
.gitkeep Initial project scaffold 2026-04-20 14:22:10 +01:00
Makefile Implement setjmp/longjmp-based exception dispatch in QBE IR 2026-04-21 14:07:04 +01:00
project.xml Phase 1 bootstrap: Blaise compiler skeleton 2026-04-20 15:35:50 +01:00