Tsonic GitHub

Emitter

The emitter converts IR into CSharpAst, then the printer turns that into C#.

Current Architecture

IR
  -> semantic helpers
  -> CSharpAst builders
  -> printer
  -> .cs text

Important Current Fact

The emitter is AST-only now.

The old mixed pipeline of AST plus mid-pipeline C# text shims has been removed from the supported path.

Major Areas

  • type emission
  • expression emission
  • statement emission
  • module assembly
  • imports/namespaces
  • specialization and helper synthesis
  • mutable-storage/runtime helper generation

Promise Lowering

Promise constructors and chains are normalized before final emission so the emitter works with the normalized result type rather than leaking wrapper unions into backend generics.

Object Literals

Emitter handles deterministic object-literal lowering for:

  • synthesized nominal helper types
  • accessors
  • shorthand methods
  • supported runtime captures
  • unknown/object-bag fallbacks where the contextual target demands it

Output Boundary

The printer is the only stage that produces final C# text.