Reference

Diagnostics

The preview pins stable TSCC code families, deterministic ordering and machine-friendly non-pretty output. Diagnostic stability is part of the contract, not incidental terminal formatting.

Code families

FamilyPurposeExamples
TSCC0001-0003CLI contract errorsunknown option, missing value, incompatible invocation
TSCC1000Compiler errorssyntax, resolution and bounded semantic failures
TSCC2000Warningsnon-fatal compiler findings
TSCC3001Project configurationunknown compilerOptions

Non-pretty output

src/main.ts:3:24 - error TSCC1000: Type 'string' is not assignable to type 'number'.
const answer: number = "forty-two";
                       ^^^^^^^^^^^

Non-pretty output has no ANSI escapes and retains file, line, column, source excerpt and caret. Diagnostics are sorted deterministically so repeat builds and CI logs are stable.

Path-specific structural errors

interface Config {
  server: { port: number };
}

const config: Config = {
  server: { port: "8080" }
};

Nested structural failures identify the relevant property path instead of collapsing the whole object into an anonymous incompatibility.

Callable errors

type Add = (left: number, right: number) => number;
const add: Add = (left, right) => left + right;

add(1);          // arity diagnostic
add(1, "two");   // argument diagnostic

Exit and emit behavior

  • Unknown options and missing option values fail visibly with status 2.
  • Default mode emits each successfully prepared file and returns failure when another file is invalid.
  • --noEmitOnError commits no outputs when any input fails.
  • --noEmit performs compilation and diagnostics without writing outputs.
Known boundary: individual outputs are staged before rename, but a multi-file rename sequence is not a filesystem transaction.