Skip to content

Conformance: explain the 390 divergences undefined support left unexplained - #201

Merged
somdoron merged 2 commits into
mainfrom
shmuellamm/conformance-unexplained-triage-hd4dym
Oct 13, 2026
Merged

somdoron merged 2 commits into
mainfrom
shmuellamm/conformance-unexplained-triage-hd4dym

Conversation

@snlamm

@snlamm snlamm commented Oct 12, 2026

Copy link
Copy Markdown
Collaborator

Requested by Shmuel Lamm · project thread

Undefined support (#193) re-ported the TypeScript conformance suite and put 390 divergences, across 60 cases, on unexplained.txt without a reason. This PR gives each one a reason in its case's .triage file, so the list is empty again and the guard once more covers every divergence the suite has.

What the reasons are

Kind Lines Main themes
By design (spec) 196 + never coerces (most of the template-string cases), a rest-parameter function type is only satisfied by a rest function, the &&/|| result types, void truthiness, super(...) as its own statement, this in a parameter default, instanceof an unrelated class, bare method references, Intl, no any
Bug 172 153 lines cite 17 new issues, SUB-1607 to SUB-1623. The other 19 cite open issues: SUB-1154, SUB-1433, SUB-1437, SUB-1500, SUB-1555
Artifact 22 error-recovery types on lines both compilers reject, the runner pairing tsc's entry with a node we synthesize, a module-level pattern binding's global slot, and the error being reported at super() instead of at the use

Each new issue was reproduced with submilli check before it was filed, and gives its repro, tsc's answer and the conformance lines. The largest groups are destructuring defaults (SUB-1607, SUB-1608), narrowing of destructured variables (SUB-1609), the template-literal folding of & (SUB-1612) and typeof x as a value (SUB-1613).

The by-design reasons reuse the wording earlier triage entries use, and cite spec sections. Four of the rules they cite are added to the spec in submilli/submilli-private on the branch of the same name.

The PR changes only .triage files and unexplained.txt. No divergence changes and no compiler code changes.

Relation to the open PRs

I built main with #199 and #200 merged in. Neither changes any of these 390 lines, so the entries stay valid whichever lands first. On main, the guard still fails on types/union/unionTypeReduction2 lines 51 and 52, which this PR leaves alone because both #199 and #200 already explain them.

How to verify

SUBMILLI_SKIP_HTTP_TESTS=1 SUBMILLI_TEST_NIGHTLY_ONLY=1 cargo test --release -p conformance --test typescript

On this branch the only failure is the unionTypeReduction2 51/52 one from main. crates/conformance/typescript/unexplained.txt is empty. To spot-check a bug reason, take the repro from its Linear issue and run submilli check on it.

🤖 Generated with Claude Code

https://claude.ai/code/session_017nKeavEGsPEA8r3mcATdmj


Generated by Claude Code

…unexplained

Every line #193 added to `unexplained.txt` now has a reason in its case's
`.triage`, and the list is empty. 60 cases:

- By design (spec): `+` never coerces, `<` on non-number/string operands,
  `&&`/`||` result types, `void` truthiness, rest-parameter function types,
  `super(...)` as its own statement, `this` in a parameter default,
  `instanceof` an unrelated class, method references, `Intl`, no `any`.
- Bugs already filed: SUB-1154, SUB-1433, SUB-1437, SUB-1500, SUB-1555.
- Bugs filed now: SUB-1607 to SUB-1623.
- Artifacts: error-recovery types, the runner pairing a synthesized node,
  a module-level pattern binding's global slot, and the error reported at
  `super()` rather than at the use.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017nKeavEGsPEA8r3mcATdmj
@snlamm snlamm self-assigned this Oct 12, 2026
…e-unexplained-triage-hd4dym

# Conflicts:
#	crates/conformance/typescript/types/union/unionTypeReduction2.triage
@CLAassistant

Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

@somdoron
somdoron merged commit f8898da into main Oct 13, 2026
3 of 4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants