Skip to content
Conformance report

How close is tsc-rs to tsc?

tsc-rs is measured against the TypeScript project's own test suites, using the baseline files that the real compiler produced. This page reports every lane, including the ones that are far from done.

Suites compiler, conformance, fourslashOracle tsc reference baselinesLatest wave 27 September 2026

Baseline lanes

One configuration per test case, compared with the baseline file that tsc itself produced. The emit lane skips 497 compiler and 519 conformance cases that have no .js oracle (mostly noEmit); the diagnostics lane exercises all of them.

Wave of 27 September 2026

JavaScript emit

Byte-for-byte match with the tsc .js baseline, one configuration per case.

Compiler suite6,032 / 6,032100%
Conformance suite5,388 / 5,388100%

Diagnostics

Whole-case match with the tsc .errors.txt baseline: message, position and code.

Compiler suite4,732 / 6,52972.5%
Conformance suite3,566 / 5,90760.4%

Every option variant

Many TypeScript tests run under several compiler options. This opt-in report expands each one. The failures are mostly ES5 downlevel transforms and .d.ts emit.

Measured 7 September 2026

Expanded option variants

Every stored option variant of every case: 14,819 identities.

JavaScript12,831 / 13,80393.0%
Declarations12,146 / 13,80388.0%

Type-check accuracy and symbols

Recall and precision count individual diagnostics over every option variant, so they are stricter about coverage and looser about wording than the whole-case diagnostics lane. The symbols lane skips 95 and 290 cases without a uniquely selected oracle.

Earlier snapshot, not rerun

Type-check recall

Share of expected diagnostics found, matched per (file, line, code) over every option variant.

Compiler suite53.8%
Conformance suite60.5%

Type-check precision

Share of reported diagnostics that tsc also reports, same matching rule.

Compiler suite83.3%
Conformance suite86.3%

Symbols

Match with the tsc .symbols baseline.

Compiler suite185 / 6,4342.9%
Conformance suite293 / 5,6175.2%

Language server

The language server is tested against the TypeScript fourslash suite, the same editor-behaviour tests tsc uses. The total is the sum of the five operations; it excludes rename.

Last recorded run
OperationPassedFailedSkippedPass rateShare
QuickInfo (hover)2502791047.3%
Completions839292074.2%
Go-to-definition17239281.5%
Find-all-references30542087.9%
Signature help12025782.8%
Total1,6866771971.3%

Where the work is

What the failing cases have in common, lane by lane.

  • Default emit matches every case that has a JavaScript oracle. The remaining emit work is in the expanded variants: ES5 downlevel transforms and declaration files.
  • Diagnostics are the active front. A whole-case pass needs every message and column to match, which is where the remaining 1,797 compiler and 2,341 conformance failures come from: 4,138 mismatches in total.
  • Language server gaps are type inference. Hover misses are contextual typing, generics, JSDoc type tags and cross-file aliases. Completion misses are auto-imports and cross-file members.
  • Symbols and declaration emit are early.

Method

The test corpus is the TypeScript repository's own cases and reference baselines, vendored unmodified under tests/. Wave by wave results are in docs/verified-waves.md.

  • Pass rate is passed / (passed + failed). Skipped cases are excluded and never counted as passes.
  • The oracle is chosen from the effective compiler options, never from whichever candidate output happens to match.
  • Results are cached by a hash of the compiler sources, so published numbers are always taken with --no-cache.
  • Each wave records newly passing cases, lost passes and unchanged skips before it is merged.
Reproduce any row
cargo build --release -p tsc_rs_harness

# JavaScript emit and diagnostics (drop --baseline errors for emit)
target/release/baseline-report --suite compiler --baseline errors --no-cache
target/release/baseline-report --suite conformance --baseline errors --no-cache

# Symbols
target/release/baseline-report --suite compiler --baseline symbols --no-cache

# Type-check recall and precision (run the full corpus)
target/release/typecheck-report --suite compiler --json

# Language server
target/release/lsp-report --op all --json
See the wave logHow the harness worksRaw metrics snapshot