Skip to content

test262 intl402 small constructors — 101 (self-contained worklist) #5896

Description

@proggeramlug

Self-contained worklist — 101 failing. Snapshot 2026-07-03 full sweep (perry 0.5.1218, node v26.3.0). Everything you need is in this issue; no history to read, no re-measure to start.

Intl Segmenter / RelativeTimeFormat / Collator / Locale / Intl / ListFormat / PluralRules / DisplayNames — mostly arg-validation + supported-locales + Collator collation. Crate: perry-stdlib (intl).

Setup (any box)

git clone https://github.com/PerryTS/perry && cd perry
cargo build --release -p perry -p perry-runtime-static -p perry-stdlib-static
git clone --depth 1 https://github.com/tc39/test262 vendor/test262   # checkout test-compat/test262/pinned-sha.txt
# node on PATH (differential oracle). See test-compat/test262/README.md.

Measure/verify: scripts/test262_subset.py --root vendor/test262 --dir intl402/Segmenter intl402/RelativeTimeFormat intl402/Collator intl402/Locale intl402/Intl intl402/ListFormat intl402/PluralRules intl402/DisplayNames --jobs 8 (the .failures.txt sidecar lists failures; diff before/after for zero-regression).

Failure reasons

n reason
5 Uncaught exception: instanceof check - undefined
4 TypeError: Cannot convert undefined or null to object
4 Uncaught exception: Expected SameValue(«5», «3») to be
4 Uncaught exception: Expected SameValue(«"in 1,000 secon
3 Uncaught exception: Expected SameValue(«"art-lojban"»,
3 (no output)
3 Uncaught exception: Expected one call from true Expecte
3 Uncaught exception: Expected a TypeError to be thrown b
3 Uncaught exception: formatToParts(1000, second): length
2 Uncaught exception: Expected SameValue(«"undefined"», «
2 Uncaught exception: Actual [] and expected [en-US] shou
2 Uncaught exception: Expected SameValue(«"foo, bar"», «"

All 101 failing cases (path — reason)

intl402/Collator/ignore-invalid-unicode-ext-values.js    Uncaught exception: Locale en-US-u-co-standard is affected by key co; value stan
intl402/Collator/prototype/compare/compare-function-name.js    Uncaught exception: name descriptor value should be ; name value should be
intl402/Collator/prototype/compare/length.js    TypeError: Cannot convert undefined or null to object
intl402/Collator/prototype/compare/name.js    TypeError: Cannot convert undefined or null to object
intl402/Collator/prototype/compare/non-normative-basic.js    Uncaught exception: Actual [A, C, E, H, J, L, N, V, X, Z, b, d, f, g, i, k, m, w
intl402/Collator/prototype/compare/non-normative-phonebook.js    Uncaught exception: Actual [A, Ab, Af, b, od, off, Ä, ö] and expected [A, Ab, Ä,
intl402/Collator/prototype/compare/non-normative-sensitivity.js    Uncaught exception: Actual [Aa] and expected [Aa, aA, áÁ, Aã] should have the sa
intl402/Collator/prototype/compare/prop-desc.js    Uncaught exception: Expected SameValue(«"undefined"», «"function"») to be true
intl402/Collator/prototype/resolvedOptions/ignorePunctuation-default.js    Uncaught exception: Thai default ignorePunctuation to true Expected SameValue(«f
intl402/Collator/prototype/resolvedOptions/resolved-case-first-unicode-extensions-and-options.js    Uncaught exception: Resolved locale for locale=en-u-kf-lower with caseFirst=uppe
intl402/Collator/prototype/resolvedOptions/resolved-collation-unicode-extensions-and-options.js    Uncaught exception: Resolved collation for locale=de-u-co-phonebk with collation
intl402/Collator/prototype/resolvedOptions/resolved-numeric-unicode-extensions-and-options.js    Uncaught exception: Resolved locale for locale=en-u-kn-false with numeric=true E
intl402/Collator/unicode-ext-seq-with-attribute.js    Uncaught exception: Expected SameValue(«"de-u-co-phonebk"», «"de-u-attrval-co-ph
intl402/Collator/unicode-ext-value-collation.js    Uncaught exception: Collation for "invalid" should be default, but is invalid. E
intl402/Collator/usage-de.js    Uncaught exception: Actual [AE, Ä] and expected [Ä, AE] should have the same con
intl402/DisplayNames/locales-symbol-length.js    Uncaught exception: Actual [] and expected [length, 0] should have the same cont
intl402/DisplayNames/options-fallback-valid.js    Uncaught exception: instanceof check - undefined
intl402/DisplayNames/options-languagedisplay-valid.js    Uncaught exception: instanceof check - undefined
intl402/DisplayNames/options-localeMatcher-valid.js    Uncaught exception: instanceof check - undefined
intl402/DisplayNames/options-random-properties-unchecked.js    Uncaught exception: Expected true but got false
intl402/DisplayNames/options-style-valid.js    Uncaught exception: instanceof check - undefined
intl402/DisplayNames/options-type-valid.js    Uncaught exception: instanceof check - language
intl402/Intl/getCanonicalLocales/canonicalized-tags.js    Uncaught exception: Expected SameValue(«"cmn"», «"zh"») to be true
intl402/Intl/getCanonicalLocales/complex-language-subtag-replacement.js    Uncaught exception: Expected SameValue(«"sh"», «"sr-Latn"») to be true
intl402/Intl/getCanonicalLocales/complex-region-subtag-replacement.js    Uncaught exception: Expected SameValue(«"ru-SU"», «"ru-RU"») to be true
intl402/Intl/getCanonicalLocales/grandfathered.js    Uncaught exception: Expected SameValue(«"art-lojban"», «"jbo"») to be true
intl402/Intl/getCanonicalLocales/has-property.js    (no output)
intl402/Intl/getCanonicalLocales/locales-is-not-a-string.js    Uncaught exception: Actual [] and expected [en-US] should have the same contents
intl402/Intl/getCanonicalLocales/non-iana-canon.js    Uncaught exception: The value of Intl.getCanonicalLocales(tag)[0] equals the val
intl402/Intl/getCanonicalLocales/overriden-arg-length.js    Uncaught exception: Actual [] and expected [en-US] should have the same contents
intl402/Intl/getCanonicalLocales/preferred-grandfathered.js    Uncaught exception: Expected SameValue(«"art-lojban"», «"jbo"») to be true
intl402/Intl/getCanonicalLocales/preferred-variant.js    Uncaught exception: Expected SameValue(«"ja-Latn-hepburn-heploc"», «"ja-Latn-ala
intl402/Intl/getCanonicalLocales/returned-object-is-mutable.js    (no output)
intl402/Intl/getCanonicalLocales/transformed-ext-canonical.js    Uncaught exception: Expected SameValue(«"en-t-iw"», «"en-t-he"») to be true
intl402/Intl/getCanonicalLocales/unicode-ext-canonicalize-calendar.js    Uncaught exception: Expected SameValue(«"und-u-ca-ethiopic-amete-alem"», «"und-u
intl402/Intl/getCanonicalLocales/unicode-ext-canonicalize-col-strength.js    Uncaught exception: Expected SameValue(«"und-u-ks-primary"», «"und-u-ks-level1"»
intl402/Intl/getCanonicalLocales/unicode-ext-canonicalize-measurement-system.js    Uncaught exception: Expected SameValue(«"und-u-ms-imperial"», «"und-u-ms-uksyste
intl402/Intl/getCanonicalLocales/unicode-ext-canonicalize-region.js    Uncaught exception: Expected SameValue(«"und-u-rg-no23"», «"und-u-rg-no50"») to 
intl402/Intl/getCanonicalLocales/unicode-ext-canonicalize-subdivision.js    Uncaught exception: Expected SameValue(«"und-NO-u-sd-no23"», «"und-NO-u-sd-no50"
intl402/Intl/getCanonicalLocales/unicode-ext-canonicalize-timezone.js    Uncaught exception: Expected SameValue(«"und-u-tz-cnckg"», «"und-u-tz-cnsha"») t
intl402/ListFormat/constructor/constructor/subclassing.js    TypeError: Constructor Intl.ListFormat requires 'new'
intl402/ListFormat/constructor/supportedLocalesOf/options-toobject.js    Uncaught exception: Expected one call from true Expected SameValue(«0», «1») to 
intl402/ListFormat/prototype/format/es-es-long.js    Uncaught exception: Expected SameValue(«"foo, bar"», «"foo y bar"») to be true
intl402/ListFormat/prototype/format/es-es-short.js    Uncaught exception: Expected SameValue(«"foo, bar"», «"foo y bar"») to be true
intl402/ListFormat/prototype/format/iterable-invalid.js    Uncaught exception: Expected SameValue(«5», «3») to be true
intl402/ListFormat/prototype/format/iterable-iteratorclose.js    Uncaught exception: Expected SameValue(«5», «3») to be true
intl402/ListFormat/prototype/formatToParts/es-es-long.js    Uncaught exception: undefined: parts[1].value Expected SameValue(«", "», «" y "»
intl402/ListFormat/prototype/formatToParts/es-es-short.js    Uncaught exception: undefined: parts[1].value Expected SameValue(«", "», «" y "»
intl402/ListFormat/prototype/formatToParts/iterable-invalid.js    Uncaught exception: Expected SameValue(«5», «3») to be true
intl402/ListFormat/prototype/formatToParts/iterable-iteratorclose.js    Uncaught exception: Expected SameValue(«5», «3») to be true
intl402/Locale/canonicalize-locale-list-take-locale.js    TypeError: Constructor Intl.Locale requires 'new'
intl402/Locale/constructor-apply-options-canonicalizes-twice.js    Uncaught exception: Expected SameValue(«"ru-Armn-SU"», «"ru-Armn-AM"») to be tru
intl402/Locale/constructor-non-iana-canon.js    Uncaught exception: new Intl.Locale("aar-x-private").maximize().toString() retur
intl402/Locale/constructor-options-region-valid.js    Uncaught exception: new Intl.Locale('en', {region: "554"}).toString() returns "e
intl402/Locale/constructor-tag.js    Uncaught exception: new Intl.Locale("en-a-bar-u-baz-x-u-foo").toString() returns
intl402/Locale/extensions-grandfathered.js    Uncaught exception: Expected SameValue(«"fr-Cyrl-FR-gaulish-u-nu-latn"», «"fr-Cy
intl402/Locale/likely-subtags-grandfathered.js    Uncaught exception: Expected SameValue(«"art-lojban"», «"jbo"») to be true
intl402/Locale/likely-subtags.js    Uncaught exception: "en-Shaw".maximize() should be "en-Shaw-GB" Expected SameVal
intl402/Locale/prototype/minimize/removing-likely-subtags-first-adds-likely-subtags.js    Uncaught exception: "und-419".minimize() should be "es-419" Expected SameValue(«
intl402/Locale/reject-duplicate-variants-in-tlang.js    Uncaught exception: tag "de-t-en-emodeng-emodeng" must be considered structurall
intl402/Locale/subclassing.js    TypeError: Constructor Intl.Locale requires 'new'
intl402/PluralRules/can-be-subclassed.js    TypeError: Constructor Intl.PluralRules requires 'new'
intl402/PluralRules/constructor-option-read-order.js    (no output)
intl402/PluralRules/prototype/resolvedOptions/plural-categories-order.js    Uncaught exception: Actual [one, other] and expected [zero, one, two, few, many,
intl402/PluralRules/prototype/select/notation.js    Uncaught exception: standard notation: 1000000 Expected SameValue(«"other"», «"m
intl402/PluralRules/prototype/selectRange/invoked-as-func.js    Uncaught exception: Expected a TypeError to be thrown but no exception was throw
intl402/RelativeTimeFormat/constructor/constructor/options-toobject-prototype.js    Uncaught exception: options argument true should yield the correct value for "st
intl402/RelativeTimeFormat/constructor/constructor/subclassing.js    TypeError: Constructor Intl.RelativeTimeFormat requires 'new'
intl402/RelativeTimeFormat/constructor/supportedLocalesOf/options-toobject.js    Uncaught exception: Expected one call from true Expected SameValue(«0», «1») to 
intl402/RelativeTimeFormat/prototype/format/en-us-numbering-systems.js    Uncaught exception: locale: en-US-u-nu-arab Expected SameValue(«false», «true») 
intl402/RelativeTimeFormat/prototype/format/en-us-numeric-auto.js    Uncaught exception: Expected SameValue(«"in 0 seconds"», «"now"») to be true
intl402/RelativeTimeFormat/prototype/format/en-us-style-short.js    Uncaught exception: Expected SameValue(«"in 1,000 seconds"», «"in 1,000 sec."») 
intl402/RelativeTimeFormat/prototype/format/pl-pl-style-long.js    Uncaught exception: Expected SameValue(«"in 1,000 seconds"», «"za 1000 sekund"»)
intl402/RelativeTimeFormat/prototype/format/pl-pl-style-narrow.js    Uncaught exception: Expected SameValue(«"in 1,000 seconds"», «"za 1000 s"») to b
intl402/RelativeTimeFormat/prototype/format/pl-pl-style-short.js    Uncaught exception: Expected SameValue(«"in 1,000 seconds"», «"za 1000 sek."») t
intl402/RelativeTimeFormat/prototype/format/unit-invalid.js    Uncaught exception: symbol Expected a TypeError but got a RangeError
intl402/RelativeTimeFormat/prototype/formatToParts/en-us-numeric-auto.js    Uncaught exception: formatToParts(0, second): length Expected SameValue(«3», «1»
intl402/RelativeTimeFormat/prototype/formatToParts/en-us-style-short.js    Uncaught exception: formatToParts(1000, second): parts[4].value Expected SameVal
intl402/RelativeTimeFormat/prototype/formatToParts/pl-pl-style-long.js    Uncaught exception: formatToParts(1000, second): length Expected SameValue(«5», 
intl402/RelativeTimeFormat/prototype/formatToParts/pl-pl-style-narrow.js    Uncaught exception: formatToParts(1000, second): length Expected SameValue(«5», 
intl402/RelativeTimeFormat/prototype/formatToParts/pl-pl-style-short.js    Uncaught exception: formatToParts(1000, second): length Expected SameValue(«5», 
intl402/RelativeTimeFormat/prototype/formatToParts/unit-invalid.js    Uncaught exception: symbol Expected a TypeError but got a RangeError
intl402/RelativeTimeFormat/prototype/resolvedOptions/resolved-numbering-system-unicode-extensions-and-options.js    Uncaught exception: Resolved numberingSystem for locale=en-u-nu-arab with number
intl402/Segmenter/constructor/constructor/options-localeMatcher-valid.js    Uncaught exception: instanceof check - undefined
intl402/Segmenter/constructor/constructor/subclassing.js    TypeError: Constructor Intl.Segmenter requires 'new'
intl402/Segmenter/constructor/supportedLocalesOf/options-toobject.js    Uncaught exception: Expected one call from true Expected SameValue(«0», «1») to 
intl402/Segmenter/prototype/segment/containing/branding.js    Uncaught exception: Expected SameValue(«"undefined"», «"function"») to be true
intl402/Segmenter/prototype/segment/containing/breakable-input.js    Uncaught exception: granularity: undefined input: 123  containing(0) index Expec
intl402/Segmenter/prototype/segment/containing/index-throws.js    Uncaught exception: Expected a TypeError to be thrown but no exception was throw
intl402/Segmenter/prototype/segment/containing/iswordlike.js    Uncaught exception: granularity: undefined input: Hello world! containing(0) ind
intl402/Segmenter/prototype/segment/containing/length.js    TypeError: Cannot convert undefined or null to object
intl402/Segmenter/prototype/segment/containing/name.js    TypeError: Cannot convert undefined or null to object
intl402/Segmenter/prototype/segment/containing/one-index.js    Uncaught exception: granularity: undefined index: 1 index Expected SameValue(«1»
intl402/Segmenter/prototype/segment/containing/out-of-bound-index.js    Uncaught exception: Expected SameValue(«undefined», «[object Object]») to be tru
intl402/Segmenter/prototype/segment/containing/prop-desc.js    Uncaught exception: typeof %Segments.prototype%.containing  is function Expected
intl402/Segmenter/prototype/segment/containing/unbreakable-input.js    TypeError: containing is not a function
intl402/Segmenter/prototype/segment/containing/word-iswordlike.js    Uncaught exception: granularity: word input: Hello world! containing(0) index >=
intl402/Segmenter/prototype/segment/containing/zero-index.js    Uncaught exception: Expected SameValue(«0», «undefined») to be true
intl402/Segmenter/prototype/segment/name_of_symbol_iterator.js    Uncaught exception: Expected SameValue(«"[Symbol.iterator]"», «"values"») to be 
intl402/Segmenter/prototype/segment/next-mix-with-containing.js    Uncaught exception: containing(0) before the loop. segment Expected SameValue(«"
intl402/Segmenter/prototype/segment/segment-tostring.js    Uncaught exception: Expected a TypeError to be thrown but no exception was throw

Workflow

Pick a coherent single-root subcluster, localize (cargo run --release -- f.ts --trace hir --focus <fn> / --trace llvm), fix, verify listed cases pass AND re-run the slice for zero regressions. Code-only PR (no Cargo.toml/Cargo.lock version bump, no CLAUDE.md Current-Version, no CHANGELOG — maintainer folds metadata). cargo fmt --all -- --check + bash scripts/check_file_size.sh must pass (files < 2000 lines). Reference this issue. Never reference internal infrastructure hostnames.

Metadata

Metadata

Assignees

No one assigned

    Labels

    parityCompatibility gap with Node.js, ECMAScript, or the supported ecosystem

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions