mirror of
https://github.com/vercel-labs/scriptc.git
synced 2026-11-06 08:23:19 +08:00
- A deferred class with static field initializers is reached where its statement evaluates: its file's %init retries it there (retryDeferredAtDeclaration), so its initializers lower in place. A failed retry reports nothing, restores the types it degraded, and leaves the class deferred; no later flush registers it, so it reports at its reference instead of registering after its initializers' place. Before, a class a later reference registered never ran its static initializers. - A generic class that registers on retry registers the units of its static methods. Before, a call to one was an undeclared function (SC9001). - A statement that lowers again after degrading a type keeps the diagnostics of the function-local class bodies it lowered the first time: the retry reuses those bodies instead of lowering them again. - retriableDiags and failedTypes are a Set and a Map owned by the lowerer instead of weak collections, and the degraded types of a mode are copied without an empty-array fallback, which the self-hosted compiler could not lower. - The coverage test of a class rejected behind a receiver probe pins its refusal under --tier=static-only, as the diagnostics corpus does; under localized failure the class compiles.