Language support
The current compiler surface is broad enough for serious experimentation, but the implementation categories matter: some syntax is erased, some produces runtime transforms, some is preserved, and semantic checking is deliberately bounded.
The frozen preview wall remains 579 / 555 / 0 / 24, while the refreshed suite now measures 618 cases at 600 pass / 0 fail / 18 explicit skips. A 33-area detailed matrix records whether each capability is unsupported, parse/emit-only, partial-semantic, bounded-supported, externally covered or real-project covered.
Type syntax erasure
Covered areas include annotations, return types, interfaces, type aliases, unions/intersections, tuples, mapped/conditional/indexed/template-literal types, keyof/typeof/import queries, generics and defaults, assertions, satisfies, non-null assertions, type predicates, assertion signatures and type-only module forms.
Functions and classes
Typed functions/arrows/methods, overload signatures, constructors, parameter properties, accessors, optional methods, abstract, override, readonly, declare, generic methods and static blocks have regression coverage.
Runtime TypeScript transforms
Some TypeScript constructs cannot simply disappear. Enums produce runtime objects, parameter properties create assignments, namespaces produce runtime namespace objects, and CommonJS module syntax must be rewritten into executable JavaScript.
enum Mode { A, B = 3 }
class Point {
constructor(public x: number, public y: number) {}
}
Ambient/declaration-only forms
declare, ambient interfaces/classes/functions, declare global, export as namespace, overload-only declarations and type-only imports/exports are erased without consuming following runtime statements.
Syntax rejection
The regression suite deliberately contains malformed generics, type operators, module clauses, TSX, declarations and annotations. tsc --noCheck is used as the syntax authority before a negative case is counted as a tscc bug.
The current bounded semantic surface
tscc has a separate checker pass whose first primitive slice now anchors a larger vertical contract. Explicit number, string, or boolean facts flow through literals, bound identifiers, parentheses, unary operators, additive/multiplicative expressions and direct or compound assignment. Reassigning a bound const is diagnosed.
const port: number = 8080; // accepted
const port: number = "8080"; // diagnostic The binder and program graph now own declarations, scopes, exports/imports and selected cross-file identities. The type model covers primitive/literal/union facts, canonical callables and objects, arrays/tuples, generics and bounded inference, ordered overloads, two-sided class types, indexed/key operators and selected mapped/conditional/template/intersection utilities. CFG-owned facts support bounded truthiness/equality/discriminant/typeof/instanceof/property-presence narrowing plus assignment and definite-assignment reasoning. Relative and bounded Node-style module/declaration paths can propagate selected types across compilation units.
This is still bounded rather than full TypeScript. Recursive/high-complexity inference, complete standard-library behavior, every class relation, cross-module runtime-TypeScript facts, project references, full JSX ecosystem typing, every package/configuration mode and the long tail of TypeScript diagnostics remain incomplete.
tsc. The independent suite tracks those as semantic-only skips rather than false parser failures.