From 04839204ac26d25fffcff63b83d4cd3960691435 Mon Sep 17 00:00:00 2001 From: test262-automation Date: Wed, 7 Nov 2018 18:56:42 +0000 Subject: [PATCH] [v8-test262-automation] Changes from https://github.com/v8/v8.git at sha ab445f8b on Wed Nov 07 2018 18:56:14 GMT+0000 (Coordinated Universal Time) --- .../v8/intl/intl.status | 3 + .../v8/intl/regress-8413-day.js | 135 +++ .../v8/intl/regress-8413-era.js | 135 +++ .../v8/intl/regress-8413-hour.js | 135 +++ .../v8/intl/regress-8413-minute.js | 135 +++ .../v8/intl/regress-8413-month.js | 135 +++ .../v8/intl/regress-8413-second.js | 135 +++ .../v8/intl/regress-8413-timeZoneName.js | 135 +++ .../v8/intl/regress-8413-weekday.js | 135 +++ .../v8/intl/regress-8413-year.js | 135 +++ .../v8/intl/regress-8414.js | 806 ++++++++++++++++++ .../v8/mjsunit/arrow-with.js | 7 + .../v8/mjsunit/compiler/osr-assert.js | 9 +- .../v8/mjsunit/es9/object-spread-ic.js | 22 + .../v8/mjsunit/mjsunit.status | 7 +- 15 files changed, 2062 insertions(+), 7 deletions(-) create mode 100644 implementation-contributed/v8/intl/regress-8413-day.js create mode 100644 implementation-contributed/v8/intl/regress-8413-era.js create mode 100644 implementation-contributed/v8/intl/regress-8413-hour.js create mode 100644 implementation-contributed/v8/intl/regress-8413-minute.js create mode 100644 implementation-contributed/v8/intl/regress-8413-month.js create mode 100644 implementation-contributed/v8/intl/regress-8413-second.js create mode 100644 implementation-contributed/v8/intl/regress-8413-timeZoneName.js create mode 100644 implementation-contributed/v8/intl/regress-8413-weekday.js create mode 100644 implementation-contributed/v8/intl/regress-8413-year.js create mode 100644 implementation-contributed/v8/intl/regress-8414.js create mode 100644 implementation-contributed/v8/mjsunit/arrow-with.js diff --git a/implementation-contributed/v8/intl/intl.status b/implementation-contributed/v8/intl/intl.status index d70056f049..73ed5b99b5 100644 --- a/implementation-contributed/v8/intl/intl.status +++ b/implementation-contributed/v8/intl/intl.status @@ -29,6 +29,9 @@ [ALWAYS, { # TODO(jochen): The following test is flaky. 'overrides/caching': [PASS, FAIL], + + # https://bugs.chromium.org/p/v8/issues/detail?id=8414 + 'regress-8414': [FAIL], }], # ALWAYS ['variant == no_wasm_traps', { diff --git a/implementation-contributed/v8/intl/regress-8413-day.js b/implementation-contributed/v8/intl/regress-8413-day.js new file mode 100644 index 0000000000..52881ac671 --- /dev/null +++ b/implementation-contributed/v8/intl/regress-8413-day.js @@ -0,0 +1,135 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// All the known locales egrep by +// find third_party/icu/source/data/locales/*.txt|cut -d: -f 1| \ +// sort -u|cut -d/ -f6|cut -d. -f1|tr "_" "-" +let locales = [ + "af-NA", "af", "af-ZA", "agq-CM", "agq", "ak-GH", "ak", "am-ET", "am", "an", + "ar-001", "ar-AE", "ar-BH", "ar-DJ", "ar-DZ", "ar-EG", "ar-EH", "ar-ER", + "ar-IL", "ar-IQ", "ar-JO", "ar-KM", "ar-KW", "ar-LB", "ar-LY", "ar-MA", + "ar-MR", "ar-OM", "ar-PS", "ar-QA", "ar-SA", "ar-SD", "ar-SO", "ar-SS", + "ars", "ar-SY", "ar-TD", "ar-TN", "ar", "ar-YE", "asa", "asa-TZ", "as-IN", + "ast-ES", "ast", "as", "az-AZ", "az-Cyrl-AZ", "az-Cyrl", "az-Latn-AZ", + "az-Latn", "az", "bas-CM", "bas", "be-BY", "bem", "bem-ZM", "be", "bez", + "bez-TZ", "bg-BG", "bg", "bm-ML", "bm", "bn-BD", "bn-IN", "bn", "bo-CN", + "bo-IN", "bo", "br-FR", "br", "brx-IN", "brx", "bs-BA", "bs-Cyrl-BA", + "bs-Cyrl", "bs-Latn-BA", "bs-Latn", "bs", "ca-AD", "ca-ES", "ca-FR", + "ca-IT", "ca", "ccp-BD", "ccp-IN", "ccp", "ce-RU", "ce", "cgg", "cgg-UG", + "chr", "chr-US", "ckb-IQ", "ckb-IR", "ckb", "cs-CZ", "cs", "cy-GB", "cy", + "da-DK", "da-GL", "da", "dav-KE", "dav", "de-AT", "de-BE", "de-CH", "de-DE", + "de-IT", "de-LI", "de-LU", "de", "dje-NE", "dje", "dsb-DE", "dsb", "dua-CM", + "dua", "dyo-SN", "dyo", "dz-BT", "dz", "ebu-KE", "ebu", "ee-GH", "ee-TG", + "ee", "el-CY", "el-GR", "el", "en-001", "en-150", "en-AG", "en-AI", "en-AS", + "en-AT", "en-AU", "en-BB", "en-BE", "en-BI", "en-BM", "en-BS", "en-BW", + "en-BZ", "en-CA", "en-CC", "en-CH", "en-CK", "en-CM", "en-CX", "en-CY", + "en-DE", "en-DG", "en-DK", "en-DM", "en-ER", "en-FI", "en-FJ", "en-FK", + "en-FM", "en-GB", "en-GD", "en-GG", "en-GH", "en-GI", "en-GM", "en-GU", + "en-GY", "en-HK", "en-IE", "en-IL", "en-IM", "en-IN", "en-IO", "en-JE", + "en-JM", "en-KE", "en-KI", "en-KN", "en-KY", "en-LC", "en-LR", "en-LS", + "en-MG", "en-MH", "en-MO", "en-MP", "en-MS", "en-MT", "en-MU", "en-MW", + "en-MY", "en-NA", "en-NF", "en-NG", "en-NH", "en-NL", "en-NR", "en-NU", + "en-NZ", "en-PG", "en-PH", "en-PK", "en-PN", "en-PR", "en-PW", "en-RH", + "en-RW", "en-SB", "en-SC", "en-SD", "en-SE", "en-SG", "en-SH", "en-SI", + "en-SL", "en-SS", "en-SX", "en-SZ", "en-TC", "en-TK", "en-TO", "en-TT", + "en-TV", "en", "en-TZ", "en-UG", "en-UM", "en-US-POSIX", "en-US", "en-VC", + "en-VG", "en-VI", "en-VU", "en-WS", "en-ZA", "en-ZM", "en-ZW", "eo", "es-419", + "es-AR", "es-BO", "es-BR", "es-BZ", "es-CL", "es-CO", "es-CR", "es-CU", + "es-DO", "es-EA", "es-EC", "es-ES", "es-GQ", "es-GT", "es-HN", "es-IC", + "es-MX", "es-NI", "es-PA", "es-PE", "es-PH", "es-PR", "es-PY", "es-SV", "es", + "es-US", "es-UY", "es-VE", "et-EE", "et", "eu-ES", "eu", "ewo-CM", "ewo", + "fa-AF", "fa-IR", "fa", "ff", "fi-FI", "fil-PH", "fil", "fi", "fo-DK", + "fo-FO", "fo", "fr-BE", "fr-BF", "fr-BI", "fr-BJ", "fr-BL", "fr-CA", "fr-CD", + "fr-CF", "fr-CG", "fr-CH", "fr-CI", "fr-CM", "fr-DJ", "fr-DZ", "fr-FR", + "fr-GA", "fr-GF", "fr-GN", "fr-GP", "fr-GQ", "fr-HT", "fr-KM", "fr-LU", + "fr-MA", "fr-MC", "fr-MF", "fr-MG", "fr-ML", "fr-MQ", "fr-MR", "fr-MU", + "fr-NC", "fr-NE", "fr-PF", "fr-PM", "fr-RE", "fr-RW", "fr-SC", "fr-SN", + "fr-SY", "fr-TD", "fr-TG", "fr-TN", "fr", "fr-VU", "fr-WF", "fr-YT", + "fur-IT", "fur", "fy-NL", "fy", "ga-IE", "ga", "gd-GB", "gd", "gl-ES", "gl", + "gsw-CH", "gsw-FR", "gsw-LI", "gsw", "gu-IN", "gu", "guz-KE", "guz", "gv-IM", + "gv", "ha-GH", "ha-NE", "ha-NG", "ha", "haw", "haw-US", "he-IL", "he", + "hi-IN", "hi", "hr-BA", "hr-HR", "hr", "hsb-DE", "hsb", "hu-HU", "hu", + "hy-AM", "hy", "ia-001", "ia", "id-ID", "id", "ig-NG", "ig", "ii-CN", "ii", + "in-ID", "in", "is-IS", "is", "it-CH", "it-IT", "it-SM", "it", "it-VA", + "iw-IL", "iw", "ja-JP", "ja", "jgo-CM", "jgo", "jmc", + "jmc-TZ", "jv-ID", "jv", "kab-DZ", "kab", "ka-GE", "kam-KE", "kam", "ka", + "kde", "kde-TZ", "kea-CV", "kea", "khq-ML", "khq", "ki-KE", "ki", "kkj-CM", + "kkj", "kk-KZ", "kk", "kl-GL", "kln-KE", "kln", "kl", "km-KH", "km", "kn-IN", + "kn", "kok-IN", "ko-KP", "ko-KR", "kok", "ko", "ksb", "ksb-TZ", "ksf-CM", + "ksf", "ksh-DE", "ksh", "ks-IN", "ks", "ku-TR", "ku", "kw-GB", "kw", "ky-KG", + "ky", "lag", "lag-TZ", "lb-LU", "lb", "lg", "lg-UG", "lkt", "lkt-US", "ln-AO", + "ln-CD", "ln-CF", "ln-CG", "ln", "lo-LA", "lo", "lrc-IQ", "lrc-IR", "lrc", + "lt-LT", "lt", "lu-CD", "luo-KE", "luo", "lu", "luy-KE", "luy", "lv-LV", "lv", + "mas-KE", "mas", "mas-TZ", "mer-KE", "mer", "mfe-MU", "mfe", "mgh-MZ", "mgh", + "mg-MG", "mgo-CM", "mgo", "mg", "mi-NZ", "mi", "mk-MK", "mk", "ml-IN", "ml", + "mn-MN", "mn", "mo", "mr-IN", "mr", "ms-BN", "ms-MY", "ms-SG", "ms", "mt-MT", + "mt", "mua-CM", "mua", "my-MM", "my", "mzn-IR", "mzn", "naq-NA", "naq", + "nb-NO", "nb-SJ", "nb", "nds-DE", "nds-NL", "nds", "nd", "nd-ZW", "ne-IN", + "ne-NP", "ne", "nl-AW", "nl-BE", "nl-BQ", "nl-CW", "nl-NL", "nl-SR", "nl-SX", + "nl", "nmg-CM", "nmg", "nnh-CM", "nnh", "nn-NO", "nn", "no-NY", "no-NO", + "no", "nus-SS", "nus", "nyn", "nyn-UG", "om-ET", "om-KE", "om", "or-IN", "or", + "os-GE", "os-RU", "os", "pa-Arab-PK", "pa-Arab", "pa-Guru-IN", "pa-Guru", + "pa-IN", "pa-PK", "pa", "pl-PL", "pl", "ps-AF", "ps", "pt-AO", "pt-BR", + "pt-CH", "pt-CV", "pt-GQ", "pt-GW", "pt-LU", "pt-MO", "pt-MZ", "pt-PT", + "pt-ST", "pt-TL", "pt", "qu-BO", "qu-EC", "qu-PE", "qu", "rm-CH", "rm", + "rn-BI", "rn", "rof", "rof-TZ", "ro-MD", "root", "ro-RO", "ro", "ru-BY", + "ru-KG", "ru-KZ", "ru-MD", "ru-RU", "ru", "ru-UA", "rwk", "rwk-TZ", "rw-RW", + "rw", "sah-RU", "sah", "saq-KE", "saq", "sbp", "sbp-TZ", "sd-PK", "sd", + "se-FI", "seh-MZ", "seh", "se-NO", "se-SE", "ses-ML", "ses", "se", "sg-CF", + "sg", "sh-BA", "sh-CS", "shi-Latn-MA", "shi-Latn", "shi-MA", "shi-Tfng-MA", + "shi-Tfng", "shi", "sh", "sh-YU", "si-LK", "si", "sk-SK", "sk", "sl-SI", "sl", + "smn-FI", "smn", "sn", "sn-ZW", "so-DJ", "so-ET", "so-KE", "so-SO", "so", + "sq-AL", "sq-MK", "sq", "sq-XK", "sr-BA", "sr-CS", "sr-Cyrl-BA", "sr-Cyrl-CS", + "sr-Cyrl-ME", "sr-Cyrl-RS", "sr-Cyrl", "sr-Cyrl-XK", "sr-Cyrl-YU", + "sr-Latn-BA", "sr-Latn-CS", "sr-Latn-ME", "sr-Latn-RS", "sr-Latn", + "sr-Latn-XK", "sr-Latn-YU", "sr-ME", "sr-RS", "sr", "sr-XK", "sr-YU", "sv-AX", + "sv-FI", "sv-SE", "sv", "sw-CD", "sw-KE", "sw", "sw-TZ", "sw-UG", "ta-IN", + "ta-LK", "ta-MY", "ta-SG", "ta", "te-IN", "teo-KE", "teo", "teo-UG", "te", + "tg-TJ", "tg", "th-TH", "th", "ti-ER", "ti-ET", "ti", + "tk-TM", "tk", "tl-PH", "tl", "to-TO", "to", "tr-CY", "tr-TR", "tr", "tt-RU", + "tt", "twq-NE", "twq", "tzm-MA", "tzm", "ug-CN", "ug", "uk", "uk-UA", "ur-IN", + "ur-PK", "ur", "uz-AF", "uz-Arab-AF", "uz-Arab", "uz-Cyrl", "uz-Cyrl-UZ", + "uz-Latn", "uz-Latn-UZ", "uz", "uz-UZ", "vai-Latn-LR", "vai-Latn", "vai-LR", + "vai", "vai-Vaii-LR", "vai-Vaii", "vi", "vi-VN", "vun", "vun-TZ", "wae-CH", + "wae", "wa", "wo-SN", "wo", "xh", "xh-ZA", "xog", "xog-UG", "yav-CM", "yav", + "yi-001", "yi", "yo-BJ", "yo-NG", "yo", "yue-CN", "yue-Hans-CN", "yue-Hans", + "yue-Hant-HK", "yue-Hant", "yue-HK", "yue", "zgh-MA", "zgh", "zh-CN", + "zh-Hans-CN", "zh-Hans-HK", "zh-Hans-MO", "zh-Hans-SG", "zh-Hans", + "zh-Hant-HK", "zh-Hant-MO", "zh-Hant-TW", "zh-Hant", "zh-HK", "zh-MO", "zh-SG", + "zh-TW", "zh", "zu", "zu-ZA"]; + +// The test timeout in TSAN so we split into 9 different tests. +// "Table 5: Components of date and time formats" as in +// https://ecma-international.org/ecma-402/#sec-datetimeformat-abstracts +let table5 = [ + // ["weekday", ["narrow", "short", "long"]], + // ["era", ["narrow", "short", "long"]], + // ["year", ["2-digit", "numeric"]], + // ["month", ["2-digit", "numeric", "narrow", "short", "long"]], + ["day", ["2-digit", "numeric"]], + // ["hour", ["2-digit", "numeric"]], + // ["minute", ["2-digit", "numeric"]], + // ["second", ["2-digit", "numeric"]], + // ["timeZoneName", ["short", "long"]] +]; + +// Test each locale +for (let loc of locales) { + // Test each property in Table 5 + for (let row of table5) { + let prop = row[0]; + let values = row[1]; + // Test each value of the property + for (let value of values) { + let opt = {}; + opt[prop] = value; + let dft = new Intl.DateTimeFormat([loc], opt); + let result = dft.resolvedOptions(); + assertTrue(values.indexOf(result[prop]) >= 0, + "Expect new Intl.DateTimeFormat([" + loc + "], {" + prop + ": '" + + value + "'}).resolvedOptions()['" + prop + "'] to return one of [" + + values + "] but got '" + result[prop] + "'"); + } + } +} diff --git a/implementation-contributed/v8/intl/regress-8413-era.js b/implementation-contributed/v8/intl/regress-8413-era.js new file mode 100644 index 0000000000..7efbca8fc5 --- /dev/null +++ b/implementation-contributed/v8/intl/regress-8413-era.js @@ -0,0 +1,135 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// All the known locales egrep by +// find third_party/icu/source/data/locales/*.txt|cut -d: -f 1| \ +// sort -u|cut -d/ -f6|cut -d. -f1|tr "_" "-" +let locales = [ + "af-NA", "af", "af-ZA", "agq-CM", "agq", "ak-GH", "ak", "am-ET", "am", "an", + "ar-001", "ar-AE", "ar-BH", "ar-DJ", "ar-DZ", "ar-EG", "ar-EH", "ar-ER", + "ar-IL", "ar-IQ", "ar-JO", "ar-KM", "ar-KW", "ar-LB", "ar-LY", "ar-MA", + "ar-MR", "ar-OM", "ar-PS", "ar-QA", "ar-SA", "ar-SD", "ar-SO", "ar-SS", + "ars", "ar-SY", "ar-TD", "ar-TN", "ar", "ar-YE", "asa", "asa-TZ", "as-IN", + "ast-ES", "ast", "as", "az-AZ", "az-Cyrl-AZ", "az-Cyrl", "az-Latn-AZ", + "az-Latn", "az", "bas-CM", "bas", "be-BY", "bem", "bem-ZM", "be", "bez", + "bez-TZ", "bg-BG", "bg", "bm-ML", "bm", "bn-BD", "bn-IN", "bn", "bo-CN", + "bo-IN", "bo", "br-FR", "br", "brx-IN", "brx", "bs-BA", "bs-Cyrl-BA", + "bs-Cyrl", "bs-Latn-BA", "bs-Latn", "bs", "ca-AD", "ca-ES", "ca-FR", + "ca-IT", "ca", "ccp-BD", "ccp-IN", "ccp", "ce-RU", "ce", "cgg", "cgg-UG", + "chr", "chr-US", "ckb-IQ", "ckb-IR", "ckb", "cs-CZ", "cs", "cy-GB", "cy", + "da-DK", "da-GL", "da", "dav-KE", "dav", "de-AT", "de-BE", "de-CH", "de-DE", + "de-IT", "de-LI", "de-LU", "de", "dje-NE", "dje", "dsb-DE", "dsb", "dua-CM", + "dua", "dyo-SN", "dyo", "dz-BT", "dz", "ebu-KE", "ebu", "ee-GH", "ee-TG", + "ee", "el-CY", "el-GR", "el", "en-001", "en-150", "en-AG", "en-AI", "en-AS", + "en-AT", "en-AU", "en-BB", "en-BE", "en-BI", "en-BM", "en-BS", "en-BW", + "en-BZ", "en-CA", "en-CC", "en-CH", "en-CK", "en-CM", "en-CX", "en-CY", + "en-DE", "en-DG", "en-DK", "en-DM", "en-ER", "en-FI", "en-FJ", "en-FK", + "en-FM", "en-GB", "en-GD", "en-GG", "en-GH", "en-GI", "en-GM", "en-GU", + "en-GY", "en-HK", "en-IE", "en-IL", "en-IM", "en-IN", "en-IO", "en-JE", + "en-JM", "en-KE", "en-KI", "en-KN", "en-KY", "en-LC", "en-LR", "en-LS", + "en-MG", "en-MH", "en-MO", "en-MP", "en-MS", "en-MT", "en-MU", "en-MW", + "en-MY", "en-NA", "en-NF", "en-NG", "en-NH", "en-NL", "en-NR", "en-NU", + "en-NZ", "en-PG", "en-PH", "en-PK", "en-PN", "en-PR", "en-PW", "en-RH", + "en-RW", "en-SB", "en-SC", "en-SD", "en-SE", "en-SG", "en-SH", "en-SI", + "en-SL", "en-SS", "en-SX", "en-SZ", "en-TC", "en-TK", "en-TO", "en-TT", + "en-TV", "en", "en-TZ", "en-UG", "en-UM", "en-US-POSIX", "en-US", "en-VC", + "en-VG", "en-VI", "en-VU", "en-WS", "en-ZA", "en-ZM", "en-ZW", "eo", "es-419", + "es-AR", "es-BO", "es-BR", "es-BZ", "es-CL", "es-CO", "es-CR", "es-CU", + "es-DO", "es-EA", "es-EC", "es-ES", "es-GQ", "es-GT", "es-HN", "es-IC", + "es-MX", "es-NI", "es-PA", "es-PE", "es-PH", "es-PR", "es-PY", "es-SV", "es", + "es-US", "es-UY", "es-VE", "et-EE", "et", "eu-ES", "eu", "ewo-CM", "ewo", + "fa-AF", "fa-IR", "fa", "ff", "fi-FI", "fil-PH", "fil", "fi", "fo-DK", + "fo-FO", "fo", "fr-BE", "fr-BF", "fr-BI", "fr-BJ", "fr-BL", "fr-CA", "fr-CD", + "fr-CF", "fr-CG", "fr-CH", "fr-CI", "fr-CM", "fr-DJ", "fr-DZ", "fr-FR", + "fr-GA", "fr-GF", "fr-GN", "fr-GP", "fr-GQ", "fr-HT", "fr-KM", "fr-LU", + "fr-MA", "fr-MC", "fr-MF", "fr-MG", "fr-ML", "fr-MQ", "fr-MR", "fr-MU", + "fr-NC", "fr-NE", "fr-PF", "fr-PM", "fr-RE", "fr-RW", "fr-SC", "fr-SN", + "fr-SY", "fr-TD", "fr-TG", "fr-TN", "fr", "fr-VU", "fr-WF", "fr-YT", + "fur-IT", "fur", "fy-NL", "fy", "ga-IE", "ga", "gd-GB", "gd", "gl-ES", "gl", + "gsw-CH", "gsw-FR", "gsw-LI", "gsw", "gu-IN", "gu", "guz-KE", "guz", "gv-IM", + "gv", "ha-GH", "ha-NE", "ha-NG", "ha", "haw", "haw-US", "he-IL", "he", + "hi-IN", "hi", "hr-BA", "hr-HR", "hr", "hsb-DE", "hsb", "hu-HU", "hu", + "hy-AM", "hy", "ia-001", "ia", "id-ID", "id", "ig-NG", "ig", "ii-CN", "ii", + "in-ID", "in", "is-IS", "is", "it-CH", "it-IT", "it-SM", "it", "it-VA", + "iw-IL", "iw", "ja-JP", "ja", "jgo-CM", "jgo", "jmc", + "jmc-TZ", "jv-ID", "jv", "kab-DZ", "kab", "ka-GE", "kam-KE", "kam", "ka", + "kde", "kde-TZ", "kea-CV", "kea", "khq-ML", "khq", "ki-KE", "ki", "kkj-CM", + "kkj", "kk-KZ", "kk", "kl-GL", "kln-KE", "kln", "kl", "km-KH", "km", "kn-IN", + "kn", "kok-IN", "ko-KP", "ko-KR", "kok", "ko", "ksb", "ksb-TZ", "ksf-CM", + "ksf", "ksh-DE", "ksh", "ks-IN", "ks", "ku-TR", "ku", "kw-GB", "kw", "ky-KG", + "ky", "lag", "lag-TZ", "lb-LU", "lb", "lg", "lg-UG", "lkt", "lkt-US", "ln-AO", + "ln-CD", "ln-CF", "ln-CG", "ln", "lo-LA", "lo", "lrc-IQ", "lrc-IR", "lrc", + "lt-LT", "lt", "lu-CD", "luo-KE", "luo", "lu", "luy-KE", "luy", "lv-LV", "lv", + "mas-KE", "mas", "mas-TZ", "mer-KE", "mer", "mfe-MU", "mfe", "mgh-MZ", "mgh", + "mg-MG", "mgo-CM", "mgo", "mg", "mi-NZ", "mi", "mk-MK", "mk", "ml-IN", "ml", + "mn-MN", "mn", "mo", "mr-IN", "mr", "ms-BN", "ms-MY", "ms-SG", "ms", "mt-MT", + "mt", "mua-CM", "mua", "my-MM", "my", "mzn-IR", "mzn", "naq-NA", "naq", + "nb-NO", "nb-SJ", "nb", "nds-DE", "nds-NL", "nds", "nd", "nd-ZW", "ne-IN", + "ne-NP", "ne", "nl-AW", "nl-BE", "nl-BQ", "nl-CW", "nl-NL", "nl-SR", "nl-SX", + "nl", "nmg-CM", "nmg", "nnh-CM", "nnh", "nn-NO", "nn", "no-NY", "no-NO", + "no", "nus-SS", "nus", "nyn", "nyn-UG", "om-ET", "om-KE", "om", "or-IN", "or", + "os-GE", "os-RU", "os", "pa-Arab-PK", "pa-Arab", "pa-Guru-IN", "pa-Guru", + "pa-IN", "pa-PK", "pa", "pl-PL", "pl", "ps-AF", "ps", "pt-AO", "pt-BR", + "pt-CH", "pt-CV", "pt-GQ", "pt-GW", "pt-LU", "pt-MO", "pt-MZ", "pt-PT", + "pt-ST", "pt-TL", "pt", "qu-BO", "qu-EC", "qu-PE", "qu", "rm-CH", "rm", + "rn-BI", "rn", "rof", "rof-TZ", "ro-MD", "root", "ro-RO", "ro", "ru-BY", + "ru-KG", "ru-KZ", "ru-MD", "ru-RU", "ru", "ru-UA", "rwk", "rwk-TZ", "rw-RW", + "rw", "sah-RU", "sah", "saq-KE", "saq", "sbp", "sbp-TZ", "sd-PK", "sd", + "se-FI", "seh-MZ", "seh", "se-NO", "se-SE", "ses-ML", "ses", "se", "sg-CF", + "sg", "sh-BA", "sh-CS", "shi-Latn-MA", "shi-Latn", "shi-MA", "shi-Tfng-MA", + "shi-Tfng", "shi", "sh", "sh-YU", "si-LK", "si", "sk-SK", "sk", "sl-SI", "sl", + "smn-FI", "smn", "sn", "sn-ZW", "so-DJ", "so-ET", "so-KE", "so-SO", "so", + "sq-AL", "sq-MK", "sq", "sq-XK", "sr-BA", "sr-CS", "sr-Cyrl-BA", "sr-Cyrl-CS", + "sr-Cyrl-ME", "sr-Cyrl-RS", "sr-Cyrl", "sr-Cyrl-XK", "sr-Cyrl-YU", + "sr-Latn-BA", "sr-Latn-CS", "sr-Latn-ME", "sr-Latn-RS", "sr-Latn", + "sr-Latn-XK", "sr-Latn-YU", "sr-ME", "sr-RS", "sr", "sr-XK", "sr-YU", "sv-AX", + "sv-FI", "sv-SE", "sv", "sw-CD", "sw-KE", "sw", "sw-TZ", "sw-UG", "ta-IN", + "ta-LK", "ta-MY", "ta-SG", "ta", "te-IN", "teo-KE", "teo", "teo-UG", "te", + "tg-TJ", "tg", "th-TH", "th", "ti-ER", "ti-ET", "ti", + "tk-TM", "tk", "tl-PH", "tl", "to-TO", "to", "tr-CY", "tr-TR", "tr", "tt-RU", + "tt", "twq-NE", "twq", "tzm-MA", "tzm", "ug-CN", "ug", "uk", "uk-UA", "ur-IN", + "ur-PK", "ur", "uz-AF", "uz-Arab-AF", "uz-Arab", "uz-Cyrl", "uz-Cyrl-UZ", + "uz-Latn", "uz-Latn-UZ", "uz", "uz-UZ", "vai-Latn-LR", "vai-Latn", "vai-LR", + "vai", "vai-Vaii-LR", "vai-Vaii", "vi", "vi-VN", "vun", "vun-TZ", "wae-CH", + "wae", "wa", "wo-SN", "wo", "xh", "xh-ZA", "xog", "xog-UG", "yav-CM", "yav", + "yi-001", "yi", "yo-BJ", "yo-NG", "yo", "yue-CN", "yue-Hans-CN", "yue-Hans", + "yue-Hant-HK", "yue-Hant", "yue-HK", "yue", "zgh-MA", "zgh", "zh-CN", + "zh-Hans-CN", "zh-Hans-HK", "zh-Hans-MO", "zh-Hans-SG", "zh-Hans", + "zh-Hant-HK", "zh-Hant-MO", "zh-Hant-TW", "zh-Hant", "zh-HK", "zh-MO", "zh-SG", + "zh-TW", "zh", "zu", "zu-ZA"]; + +// The test timeout in TSAN so we split into 9 different tests. +// "Table 5: Components of date and time formats" as in +// https://ecma-international.org/ecma-402/#sec-datetimeformat-abstracts +let table5 = [ + // ["weekday", ["narrow", "short", "long"]], + ["era", ["narrow", "short", "long"]], + // ["year", ["2-digit", "numeric"]], + // ["month", ["2-digit", "numeric", "narrow", "short", "long"]], + // ["day", ["2-digit", "numeric"]], + // ["hour", ["2-digit", "numeric"]], + // ["minute", ["2-digit", "numeric"]], + // ["second", ["2-digit", "numeric"]], + // ["timeZoneName", ["short", "long"]] +]; + +// Test each locale +for (let loc of locales) { + // Test each property in Table 5 + for (let row of table5) { + let prop = row[0]; + let values = row[1]; + // Test each value of the property + for (let value of values) { + let opt = {}; + opt[prop] = value; + let dft = new Intl.DateTimeFormat([loc], opt); + let result = dft.resolvedOptions(); + assertTrue(values.indexOf(result[prop]) >= 0, + "Expect new Intl.DateTimeFormat([" + loc + "], {" + prop + ": '" + + value + "'}).resolvedOptions()['" + prop + "'] to return one of [" + + values + "] but got '" + result[prop] + "'"); + } + } +} diff --git a/implementation-contributed/v8/intl/regress-8413-hour.js b/implementation-contributed/v8/intl/regress-8413-hour.js new file mode 100644 index 0000000000..5b08ac2291 --- /dev/null +++ b/implementation-contributed/v8/intl/regress-8413-hour.js @@ -0,0 +1,135 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// All the known locales egrep by +// find third_party/icu/source/data/locales/*.txt|cut -d: -f 1| \ +// sort -u|cut -d/ -f6|cut -d. -f1|tr "_" "-" +let locales = [ + "af-NA", "af", "af-ZA", "agq-CM", "agq", "ak-GH", "ak", "am-ET", "am", "an", + "ar-001", "ar-AE", "ar-BH", "ar-DJ", "ar-DZ", "ar-EG", "ar-EH", "ar-ER", + "ar-IL", "ar-IQ", "ar-JO", "ar-KM", "ar-KW", "ar-LB", "ar-LY", "ar-MA", + "ar-MR", "ar-OM", "ar-PS", "ar-QA", "ar-SA", "ar-SD", "ar-SO", "ar-SS", + "ars", "ar-SY", "ar-TD", "ar-TN", "ar", "ar-YE", "asa", "asa-TZ", "as-IN", + "ast-ES", "ast", "as", "az-AZ", "az-Cyrl-AZ", "az-Cyrl", "az-Latn-AZ", + "az-Latn", "az", "bas-CM", "bas", "be-BY", "bem", "bem-ZM", "be", "bez", + "bez-TZ", "bg-BG", "bg", "bm-ML", "bm", "bn-BD", "bn-IN", "bn", "bo-CN", + "bo-IN", "bo", "br-FR", "br", "brx-IN", "brx", "bs-BA", "bs-Cyrl-BA", + "bs-Cyrl", "bs-Latn-BA", "bs-Latn", "bs", "ca-AD", "ca-ES", "ca-FR", + "ca-IT", "ca", "ccp-BD", "ccp-IN", "ccp", "ce-RU", "ce", "cgg", "cgg-UG", + "chr", "chr-US", "ckb-IQ", "ckb-IR", "ckb", "cs-CZ", "cs", "cy-GB", "cy", + "da-DK", "da-GL", "da", "dav-KE", "dav", "de-AT", "de-BE", "de-CH", "de-DE", + "de-IT", "de-LI", "de-LU", "de", "dje-NE", "dje", "dsb-DE", "dsb", "dua-CM", + "dua", "dyo-SN", "dyo", "dz-BT", "dz", "ebu-KE", "ebu", "ee-GH", "ee-TG", + "ee", "el-CY", "el-GR", "el", "en-001", "en-150", "en-AG", "en-AI", "en-AS", + "en-AT", "en-AU", "en-BB", "en-BE", "en-BI", "en-BM", "en-BS", "en-BW", + "en-BZ", "en-CA", "en-CC", "en-CH", "en-CK", "en-CM", "en-CX", "en-CY", + "en-DE", "en-DG", "en-DK", "en-DM", "en-ER", "en-FI", "en-FJ", "en-FK", + "en-FM", "en-GB", "en-GD", "en-GG", "en-GH", "en-GI", "en-GM", "en-GU", + "en-GY", "en-HK", "en-IE", "en-IL", "en-IM", "en-IN", "en-IO", "en-JE", + "en-JM", "en-KE", "en-KI", "en-KN", "en-KY", "en-LC", "en-LR", "en-LS", + "en-MG", "en-MH", "en-MO", "en-MP", "en-MS", "en-MT", "en-MU", "en-MW", + "en-MY", "en-NA", "en-NF", "en-NG", "en-NH", "en-NL", "en-NR", "en-NU", + "en-NZ", "en-PG", "en-PH", "en-PK", "en-PN", "en-PR", "en-PW", "en-RH", + "en-RW", "en-SB", "en-SC", "en-SD", "en-SE", "en-SG", "en-SH", "en-SI", + "en-SL", "en-SS", "en-SX", "en-SZ", "en-TC", "en-TK", "en-TO", "en-TT", + "en-TV", "en", "en-TZ", "en-UG", "en-UM", "en-US-POSIX", "en-US", "en-VC", + "en-VG", "en-VI", "en-VU", "en-WS", "en-ZA", "en-ZM", "en-ZW", "eo", "es-419", + "es-AR", "es-BO", "es-BR", "es-BZ", "es-CL", "es-CO", "es-CR", "es-CU", + "es-DO", "es-EA", "es-EC", "es-ES", "es-GQ", "es-GT", "es-HN", "es-IC", + "es-MX", "es-NI", "es-PA", "es-PE", "es-PH", "es-PR", "es-PY", "es-SV", "es", + "es-US", "es-UY", "es-VE", "et-EE", "et", "eu-ES", "eu", "ewo-CM", "ewo", + "fa-AF", "fa-IR", "fa", "ff", "fi-FI", "fil-PH", "fil", "fi", "fo-DK", + "fo-FO", "fo", "fr-BE", "fr-BF", "fr-BI", "fr-BJ", "fr-BL", "fr-CA", "fr-CD", + "fr-CF", "fr-CG", "fr-CH", "fr-CI", "fr-CM", "fr-DJ", "fr-DZ", "fr-FR", + "fr-GA", "fr-GF", "fr-GN", "fr-GP", "fr-GQ", "fr-HT", "fr-KM", "fr-LU", + "fr-MA", "fr-MC", "fr-MF", "fr-MG", "fr-ML", "fr-MQ", "fr-MR", "fr-MU", + "fr-NC", "fr-NE", "fr-PF", "fr-PM", "fr-RE", "fr-RW", "fr-SC", "fr-SN", + "fr-SY", "fr-TD", "fr-TG", "fr-TN", "fr", "fr-VU", "fr-WF", "fr-YT", + "fur-IT", "fur", "fy-NL", "fy", "ga-IE", "ga", "gd-GB", "gd", "gl-ES", "gl", + "gsw-CH", "gsw-FR", "gsw-LI", "gsw", "gu-IN", "gu", "guz-KE", "guz", "gv-IM", + "gv", "ha-GH", "ha-NE", "ha-NG", "ha", "haw", "haw-US", "he-IL", "he", + "hi-IN", "hi", "hr-BA", "hr-HR", "hr", "hsb-DE", "hsb", "hu-HU", "hu", + "hy-AM", "hy", "ia-001", "ia", "id-ID", "id", "ig-NG", "ig", "ii-CN", "ii", + "in-ID", "in", "is-IS", "is", "it-CH", "it-IT", "it-SM", "it", "it-VA", + "iw-IL", "iw", "ja-JP", "ja", "jgo-CM", "jgo", "jmc", + "jmc-TZ", "jv-ID", "jv", "kab-DZ", "kab", "ka-GE", "kam-KE", "kam", "ka", + "kde", "kde-TZ", "kea-CV", "kea", "khq-ML", "khq", "ki-KE", "ki", "kkj-CM", + "kkj", "kk-KZ", "kk", "kl-GL", "kln-KE", "kln", "kl", "km-KH", "km", "kn-IN", + "kn", "kok-IN", "ko-KP", "ko-KR", "kok", "ko", "ksb", "ksb-TZ", "ksf-CM", + "ksf", "ksh-DE", "ksh", "ks-IN", "ks", "ku-TR", "ku", "kw-GB", "kw", "ky-KG", + "ky", "lag", "lag-TZ", "lb-LU", "lb", "lg", "lg-UG", "lkt", "lkt-US", "ln-AO", + "ln-CD", "ln-CF", "ln-CG", "ln", "lo-LA", "lo", "lrc-IQ", "lrc-IR", "lrc", + "lt-LT", "lt", "lu-CD", "luo-KE", "luo", "lu", "luy-KE", "luy", "lv-LV", "lv", + "mas-KE", "mas", "mas-TZ", "mer-KE", "mer", "mfe-MU", "mfe", "mgh-MZ", "mgh", + "mg-MG", "mgo-CM", "mgo", "mg", "mi-NZ", "mi", "mk-MK", "mk", "ml-IN", "ml", + "mn-MN", "mn", "mo", "mr-IN", "mr", "ms-BN", "ms-MY", "ms-SG", "ms", "mt-MT", + "mt", "mua-CM", "mua", "my-MM", "my", "mzn-IR", "mzn", "naq-NA", "naq", + "nb-NO", "nb-SJ", "nb", "nds-DE", "nds-NL", "nds", "nd", "nd-ZW", "ne-IN", + "ne-NP", "ne", "nl-AW", "nl-BE", "nl-BQ", "nl-CW", "nl-NL", "nl-SR", "nl-SX", + "nl", "nmg-CM", "nmg", "nnh-CM", "nnh", "nn-NO", "nn", "no-NY", "no-NO", + "no", "nus-SS", "nus", "nyn", "nyn-UG", "om-ET", "om-KE", "om", "or-IN", "or", + "os-GE", "os-RU", "os", "pa-Arab-PK", "pa-Arab", "pa-Guru-IN", "pa-Guru", + "pa-IN", "pa-PK", "pa", "pl-PL", "pl", "ps-AF", "ps", "pt-AO", "pt-BR", + "pt-CH", "pt-CV", "pt-GQ", "pt-GW", "pt-LU", "pt-MO", "pt-MZ", "pt-PT", + "pt-ST", "pt-TL", "pt", "qu-BO", "qu-EC", "qu-PE", "qu", "rm-CH", "rm", + "rn-BI", "rn", "rof", "rof-TZ", "ro-MD", "root", "ro-RO", "ro", "ru-BY", + "ru-KG", "ru-KZ", "ru-MD", "ru-RU", "ru", "ru-UA", "rwk", "rwk-TZ", "rw-RW", + "rw", "sah-RU", "sah", "saq-KE", "saq", "sbp", "sbp-TZ", "sd-PK", "sd", + "se-FI", "seh-MZ", "seh", "se-NO", "se-SE", "ses-ML", "ses", "se", "sg-CF", + "sg", "sh-BA", "sh-CS", "shi-Latn-MA", "shi-Latn", "shi-MA", "shi-Tfng-MA", + "shi-Tfng", "shi", "sh", "sh-YU", "si-LK", "si", "sk-SK", "sk", "sl-SI", "sl", + "smn-FI", "smn", "sn", "sn-ZW", "so-DJ", "so-ET", "so-KE", "so-SO", "so", + "sq-AL", "sq-MK", "sq", "sq-XK", "sr-BA", "sr-CS", "sr-Cyrl-BA", "sr-Cyrl-CS", + "sr-Cyrl-ME", "sr-Cyrl-RS", "sr-Cyrl", "sr-Cyrl-XK", "sr-Cyrl-YU", + "sr-Latn-BA", "sr-Latn-CS", "sr-Latn-ME", "sr-Latn-RS", "sr-Latn", + "sr-Latn-XK", "sr-Latn-YU", "sr-ME", "sr-RS", "sr", "sr-XK", "sr-YU", "sv-AX", + "sv-FI", "sv-SE", "sv", "sw-CD", "sw-KE", "sw", "sw-TZ", "sw-UG", "ta-IN", + "ta-LK", "ta-MY", "ta-SG", "ta", "te-IN", "teo-KE", "teo", "teo-UG", "te", + "tg-TJ", "tg", "th-TH", "th", "ti-ER", "ti-ET", "ti", + "tk-TM", "tk", "tl-PH", "tl", "to-TO", "to", "tr-CY", "tr-TR", "tr", "tt-RU", + "tt", "twq-NE", "twq", "tzm-MA", "tzm", "ug-CN", "ug", "uk", "uk-UA", "ur-IN", + "ur-PK", "ur", "uz-AF", "uz-Arab-AF", "uz-Arab", "uz-Cyrl", "uz-Cyrl-UZ", + "uz-Latn", "uz-Latn-UZ", "uz", "uz-UZ", "vai-Latn-LR", "vai-Latn", "vai-LR", + "vai", "vai-Vaii-LR", "vai-Vaii", "vi", "vi-VN", "vun", "vun-TZ", "wae-CH", + "wae", "wa", "wo-SN", "wo", "xh", "xh-ZA", "xog", "xog-UG", "yav-CM", "yav", + "yi-001", "yi", "yo-BJ", "yo-NG", "yo", "yue-CN", "yue-Hans-CN", "yue-Hans", + "yue-Hant-HK", "yue-Hant", "yue-HK", "yue", "zgh-MA", "zgh", "zh-CN", + "zh-Hans-CN", "zh-Hans-HK", "zh-Hans-MO", "zh-Hans-SG", "zh-Hans", + "zh-Hant-HK", "zh-Hant-MO", "zh-Hant-TW", "zh-Hant", "zh-HK", "zh-MO", "zh-SG", + "zh-TW", "zh", "zu", "zu-ZA"]; + +// The test timeout in TSAN so we split into 9 different tests. +// "Table 5: Components of date and time formats" as in +// https://ecma-international.org/ecma-402/#sec-datetimeformat-abstracts +let table5 = [ + // ["weekday", ["narrow", "short", "long"]], + // ["era", ["narrow", "short", "long"]], + // ["year", ["2-digit", "numeric"]], + // ["month", ["2-digit", "numeric", "narrow", "short", "long"]], + // ["day", ["2-digit", "numeric"]], + ["hour", ["2-digit", "numeric"]], + // ["minute", ["2-digit", "numeric"]], + // ["second", ["2-digit", "numeric"]], + // ["timeZoneName", ["short", "long"]] +]; + +// Test each locale +for (let loc of locales) { + // Test each property in Table 5 + for (let row of table5) { + let prop = row[0]; + let values = row[1]; + // Test each value of the property + for (let value of values) { + let opt = {}; + opt[prop] = value; + let dft = new Intl.DateTimeFormat([loc], opt); + let result = dft.resolvedOptions(); + assertTrue(values.indexOf(result[prop]) >= 0, + "Expect new Intl.DateTimeFormat([" + loc + "], {" + prop + ": '" + + value + "'}).resolvedOptions()['" + prop + "'] to return one of [" + + values + "] but got '" + result[prop] + "'"); + } + } +} diff --git a/implementation-contributed/v8/intl/regress-8413-minute.js b/implementation-contributed/v8/intl/regress-8413-minute.js new file mode 100644 index 0000000000..3542319731 --- /dev/null +++ b/implementation-contributed/v8/intl/regress-8413-minute.js @@ -0,0 +1,135 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// All the known locales egrep by +// find third_party/icu/source/data/locales/*.txt|cut -d: -f 1| \ +// sort -u|cut -d/ -f6|cut -d. -f1|tr "_" "-" +let locales = [ + "af-NA", "af", "af-ZA", "agq-CM", "agq", "ak-GH", "ak", "am-ET", "am", "an", + "ar-001", "ar-AE", "ar-BH", "ar-DJ", "ar-DZ", "ar-EG", "ar-EH", "ar-ER", + "ar-IL", "ar-IQ", "ar-JO", "ar-KM", "ar-KW", "ar-LB", "ar-LY", "ar-MA", + "ar-MR", "ar-OM", "ar-PS", "ar-QA", "ar-SA", "ar-SD", "ar-SO", "ar-SS", + "ars", "ar-SY", "ar-TD", "ar-TN", "ar", "ar-YE", "asa", "asa-TZ", "as-IN", + "ast-ES", "ast", "as", "az-AZ", "az-Cyrl-AZ", "az-Cyrl", "az-Latn-AZ", + "az-Latn", "az", "bas-CM", "bas", "be-BY", "bem", "bem-ZM", "be", "bez", + "bez-TZ", "bg-BG", "bg", "bm-ML", "bm", "bn-BD", "bn-IN", "bn", "bo-CN", + "bo-IN", "bo", "br-FR", "br", "brx-IN", "brx", "bs-BA", "bs-Cyrl-BA", + "bs-Cyrl", "bs-Latn-BA", "bs-Latn", "bs", "ca-AD", "ca-ES", "ca-FR", + "ca-IT", "ca", "ccp-BD", "ccp-IN", "ccp", "ce-RU", "ce", "cgg", "cgg-UG", + "chr", "chr-US", "ckb-IQ", "ckb-IR", "ckb", "cs-CZ", "cs", "cy-GB", "cy", + "da-DK", "da-GL", "da", "dav-KE", "dav", "de-AT", "de-BE", "de-CH", "de-DE", + "de-IT", "de-LI", "de-LU", "de", "dje-NE", "dje", "dsb-DE", "dsb", "dua-CM", + "dua", "dyo-SN", "dyo", "dz-BT", "dz", "ebu-KE", "ebu", "ee-GH", "ee-TG", + "ee", "el-CY", "el-GR", "el", "en-001", "en-150", "en-AG", "en-AI", "en-AS", + "en-AT", "en-AU", "en-BB", "en-BE", "en-BI", "en-BM", "en-BS", "en-BW", + "en-BZ", "en-CA", "en-CC", "en-CH", "en-CK", "en-CM", "en-CX", "en-CY", + "en-DE", "en-DG", "en-DK", "en-DM", "en-ER", "en-FI", "en-FJ", "en-FK", + "en-FM", "en-GB", "en-GD", "en-GG", "en-GH", "en-GI", "en-GM", "en-GU", + "en-GY", "en-HK", "en-IE", "en-IL", "en-IM", "en-IN", "en-IO", "en-JE", + "en-JM", "en-KE", "en-KI", "en-KN", "en-KY", "en-LC", "en-LR", "en-LS", + "en-MG", "en-MH", "en-MO", "en-MP", "en-MS", "en-MT", "en-MU", "en-MW", + "en-MY", "en-NA", "en-NF", "en-NG", "en-NH", "en-NL", "en-NR", "en-NU", + "en-NZ", "en-PG", "en-PH", "en-PK", "en-PN", "en-PR", "en-PW", "en-RH", + "en-RW", "en-SB", "en-SC", "en-SD", "en-SE", "en-SG", "en-SH", "en-SI", + "en-SL", "en-SS", "en-SX", "en-SZ", "en-TC", "en-TK", "en-TO", "en-TT", + "en-TV", "en", "en-TZ", "en-UG", "en-UM", "en-US-POSIX", "en-US", "en-VC", + "en-VG", "en-VI", "en-VU", "en-WS", "en-ZA", "en-ZM", "en-ZW", "eo", "es-419", + "es-AR", "es-BO", "es-BR", "es-BZ", "es-CL", "es-CO", "es-CR", "es-CU", + "es-DO", "es-EA", "es-EC", "es-ES", "es-GQ", "es-GT", "es-HN", "es-IC", + "es-MX", "es-NI", "es-PA", "es-PE", "es-PH", "es-PR", "es-PY", "es-SV", "es", + "es-US", "es-UY", "es-VE", "et-EE", "et", "eu-ES", "eu", "ewo-CM", "ewo", + "fa-AF", "fa-IR", "fa", "ff", "fi-FI", "fil-PH", "fil", "fi", "fo-DK", + "fo-FO", "fo", "fr-BE", "fr-BF", "fr-BI", "fr-BJ", "fr-BL", "fr-CA", "fr-CD", + "fr-CF", "fr-CG", "fr-CH", "fr-CI", "fr-CM", "fr-DJ", "fr-DZ", "fr-FR", + "fr-GA", "fr-GF", "fr-GN", "fr-GP", "fr-GQ", "fr-HT", "fr-KM", "fr-LU", + "fr-MA", "fr-MC", "fr-MF", "fr-MG", "fr-ML", "fr-MQ", "fr-MR", "fr-MU", + "fr-NC", "fr-NE", "fr-PF", "fr-PM", "fr-RE", "fr-RW", "fr-SC", "fr-SN", + "fr-SY", "fr-TD", "fr-TG", "fr-TN", "fr", "fr-VU", "fr-WF", "fr-YT", + "fur-IT", "fur", "fy-NL", "fy", "ga-IE", "ga", "gd-GB", "gd", "gl-ES", "gl", + "gsw-CH", "gsw-FR", "gsw-LI", "gsw", "gu-IN", "gu", "guz-KE", "guz", "gv-IM", + "gv", "ha-GH", "ha-NE", "ha-NG", "ha", "haw", "haw-US", "he-IL", "he", + "hi-IN", "hi", "hr-BA", "hr-HR", "hr", "hsb-DE", "hsb", "hu-HU", "hu", + "hy-AM", "hy", "ia-001", "ia", "id-ID", "id", "ig-NG", "ig", "ii-CN", "ii", + "in-ID", "in", "is-IS", "is", "it-CH", "it-IT", "it-SM", "it", "it-VA", + "iw-IL", "iw", "ja-JP", "ja", "jgo-CM", "jgo", "jmc", + "jmc-TZ", "jv-ID", "jv", "kab-DZ", "kab", "ka-GE", "kam-KE", "kam", "ka", + "kde", "kde-TZ", "kea-CV", "kea", "khq-ML", "khq", "ki-KE", "ki", "kkj-CM", + "kkj", "kk-KZ", "kk", "kl-GL", "kln-KE", "kln", "kl", "km-KH", "km", "kn-IN", + "kn", "kok-IN", "ko-KP", "ko-KR", "kok", "ko", "ksb", "ksb-TZ", "ksf-CM", + "ksf", "ksh-DE", "ksh", "ks-IN", "ks", "ku-TR", "ku", "kw-GB", "kw", "ky-KG", + "ky", "lag", "lag-TZ", "lb-LU", "lb", "lg", "lg-UG", "lkt", "lkt-US", "ln-AO", + "ln-CD", "ln-CF", "ln-CG", "ln", "lo-LA", "lo", "lrc-IQ", "lrc-IR", "lrc", + "lt-LT", "lt", "lu-CD", "luo-KE", "luo", "lu", "luy-KE", "luy", "lv-LV", "lv", + "mas-KE", "mas", "mas-TZ", "mer-KE", "mer", "mfe-MU", "mfe", "mgh-MZ", "mgh", + "mg-MG", "mgo-CM", "mgo", "mg", "mi-NZ", "mi", "mk-MK", "mk", "ml-IN", "ml", + "mn-MN", "mn", "mo", "mr-IN", "mr", "ms-BN", "ms-MY", "ms-SG", "ms", "mt-MT", + "mt", "mua-CM", "mua", "my-MM", "my", "mzn-IR", "mzn", "naq-NA", "naq", + "nb-NO", "nb-SJ", "nb", "nds-DE", "nds-NL", "nds", "nd", "nd-ZW", "ne-IN", + "ne-NP", "ne", "nl-AW", "nl-BE", "nl-BQ", "nl-CW", "nl-NL", "nl-SR", "nl-SX", + "nl", "nmg-CM", "nmg", "nnh-CM", "nnh", "nn-NO", "nn", "no-NY", "no-NO", + "no", "nus-SS", "nus", "nyn", "nyn-UG", "om-ET", "om-KE", "om", "or-IN", "or", + "os-GE", "os-RU", "os", "pa-Arab-PK", "pa-Arab", "pa-Guru-IN", "pa-Guru", + "pa-IN", "pa-PK", "pa", "pl-PL", "pl", "ps-AF", "ps", "pt-AO", "pt-BR", + "pt-CH", "pt-CV", "pt-GQ", "pt-GW", "pt-LU", "pt-MO", "pt-MZ", "pt-PT", + "pt-ST", "pt-TL", "pt", "qu-BO", "qu-EC", "qu-PE", "qu", "rm-CH", "rm", + "rn-BI", "rn", "rof", "rof-TZ", "ro-MD", "root", "ro-RO", "ro", "ru-BY", + "ru-KG", "ru-KZ", "ru-MD", "ru-RU", "ru", "ru-UA", "rwk", "rwk-TZ", "rw-RW", + "rw", "sah-RU", "sah", "saq-KE", "saq", "sbp", "sbp-TZ", "sd-PK", "sd", + "se-FI", "seh-MZ", "seh", "se-NO", "se-SE", "ses-ML", "ses", "se", "sg-CF", + "sg", "sh-BA", "sh-CS", "shi-Latn-MA", "shi-Latn", "shi-MA", "shi-Tfng-MA", + "shi-Tfng", "shi", "sh", "sh-YU", "si-LK", "si", "sk-SK", "sk", "sl-SI", "sl", + "smn-FI", "smn", "sn", "sn-ZW", "so-DJ", "so-ET", "so-KE", "so-SO", "so", + "sq-AL", "sq-MK", "sq", "sq-XK", "sr-BA", "sr-CS", "sr-Cyrl-BA", "sr-Cyrl-CS", + "sr-Cyrl-ME", "sr-Cyrl-RS", "sr-Cyrl", "sr-Cyrl-XK", "sr-Cyrl-YU", + "sr-Latn-BA", "sr-Latn-CS", "sr-Latn-ME", "sr-Latn-RS", "sr-Latn", + "sr-Latn-XK", "sr-Latn-YU", "sr-ME", "sr-RS", "sr", "sr-XK", "sr-YU", "sv-AX", + "sv-FI", "sv-SE", "sv", "sw-CD", "sw-KE", "sw", "sw-TZ", "sw-UG", "ta-IN", + "ta-LK", "ta-MY", "ta-SG", "ta", "te-IN", "teo-KE", "teo", "teo-UG", "te", + "tg-TJ", "tg", "th-TH", "th", "ti-ER", "ti-ET", "ti", + "tk-TM", "tk", "tl-PH", "tl", "to-TO", "to", "tr-CY", "tr-TR", "tr", "tt-RU", + "tt", "twq-NE", "twq", "tzm-MA", "tzm", "ug-CN", "ug", "uk", "uk-UA", "ur-IN", + "ur-PK", "ur", "uz-AF", "uz-Arab-AF", "uz-Arab", "uz-Cyrl", "uz-Cyrl-UZ", + "uz-Latn", "uz-Latn-UZ", "uz", "uz-UZ", "vai-Latn-LR", "vai-Latn", "vai-LR", + "vai", "vai-Vaii-LR", "vai-Vaii", "vi", "vi-VN", "vun", "vun-TZ", "wae-CH", + "wae", "wa", "wo-SN", "wo", "xh", "xh-ZA", "xog", "xog-UG", "yav-CM", "yav", + "yi-001", "yi", "yo-BJ", "yo-NG", "yo", "yue-CN", "yue-Hans-CN", "yue-Hans", + "yue-Hant-HK", "yue-Hant", "yue-HK", "yue", "zgh-MA", "zgh", "zh-CN", + "zh-Hans-CN", "zh-Hans-HK", "zh-Hans-MO", "zh-Hans-SG", "zh-Hans", + "zh-Hant-HK", "zh-Hant-MO", "zh-Hant-TW", "zh-Hant", "zh-HK", "zh-MO", "zh-SG", + "zh-TW", "zh", "zu", "zu-ZA"]; + +// The test timeout in TSAN so we split into 9 different tests. +// "Table 5: Components of date and time formats" as in +// https://ecma-international.org/ecma-402/#sec-datetimeformat-abstracts +let table5 = [ + // ["weekday", ["narrow", "short", "long"]], + // ["era", ["narrow", "short", "long"]], + // ["year", ["2-digit", "numeric"]], + // ["month", ["2-digit", "numeric", "narrow", "short", "long"]], + // ["day", ["2-digit", "numeric"]], + // ["hour", ["2-digit", "numeric"]], + ["minute", ["2-digit", "numeric"]], + // ["second", ["2-digit", "numeric"]], + // ["timeZoneName", ["short", "long"]] +]; + +// Test each locale +for (let loc of locales) { + // Test each property in Table 5 + for (let row of table5) { + let prop = row[0]; + let values = row[1]; + // Test each value of the property + for (let value of values) { + let opt = {}; + opt[prop] = value; + let dft = new Intl.DateTimeFormat([loc], opt); + let result = dft.resolvedOptions(); + assertTrue(values.indexOf(result[prop]) >= 0, + "Expect new Intl.DateTimeFormat([" + loc + "], {" + prop + ": '" + + value + "'}).resolvedOptions()['" + prop + "'] to return one of [" + + values + "] but got '" + result[prop] + "'"); + } + } +} diff --git a/implementation-contributed/v8/intl/regress-8413-month.js b/implementation-contributed/v8/intl/regress-8413-month.js new file mode 100644 index 0000000000..530745b555 --- /dev/null +++ b/implementation-contributed/v8/intl/regress-8413-month.js @@ -0,0 +1,135 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// All the known locales egrep by +// find third_party/icu/source/data/locales/*.txt|cut -d: -f 1| \ +// sort -u|cut -d/ -f6|cut -d. -f1|tr "_" "-" +let locales = [ + "af-NA", "af", "af-ZA", "agq-CM", "agq", "ak-GH", "ak", "am-ET", "am", "an", + "ar-001", "ar-AE", "ar-BH", "ar-DJ", "ar-DZ", "ar-EG", "ar-EH", "ar-ER", + "ar-IL", "ar-IQ", "ar-JO", "ar-KM", "ar-KW", "ar-LB", "ar-LY", "ar-MA", + "ar-MR", "ar-OM", "ar-PS", "ar-QA", "ar-SA", "ar-SD", "ar-SO", "ar-SS", + "ars", "ar-SY", "ar-TD", "ar-TN", "ar", "ar-YE", "asa", "asa-TZ", "as-IN", + "ast-ES", "ast", "as", "az-AZ", "az-Cyrl-AZ", "az-Cyrl", "az-Latn-AZ", + "az-Latn", "az", "bas-CM", "bas", "be-BY", "bem", "bem-ZM", "be", "bez", + "bez-TZ", "bg-BG", "bg", "bm-ML", "bm", "bn-BD", "bn-IN", "bn", "bo-CN", + "bo-IN", "bo", "br-FR", "br", "brx-IN", "brx", "bs-BA", "bs-Cyrl-BA", + "bs-Cyrl", "bs-Latn-BA", "bs-Latn", "bs", "ca-AD", "ca-ES", "ca-FR", + "ca-IT", "ca", "ccp-BD", "ccp-IN", "ccp", "ce-RU", "ce", "cgg", "cgg-UG", + "chr", "chr-US", "ckb-IQ", "ckb-IR", "ckb", "cs-CZ", "cs", "cy-GB", "cy", + "da-DK", "da-GL", "da", "dav-KE", "dav", "de-AT", "de-BE", "de-CH", "de-DE", + "de-IT", "de-LI", "de-LU", "de", "dje-NE", "dje", "dsb-DE", "dsb", "dua-CM", + "dua", "dyo-SN", "dyo", "dz-BT", "dz", "ebu-KE", "ebu", "ee-GH", "ee-TG", + "ee", "el-CY", "el-GR", "el", "en-001", "en-150", "en-AG", "en-AI", "en-AS", + "en-AT", "en-AU", "en-BB", "en-BE", "en-BI", "en-BM", "en-BS", "en-BW", + "en-BZ", "en-CA", "en-CC", "en-CH", "en-CK", "en-CM", "en-CX", "en-CY", + "en-DE", "en-DG", "en-DK", "en-DM", "en-ER", "en-FI", "en-FJ", "en-FK", + "en-FM", "en-GB", "en-GD", "en-GG", "en-GH", "en-GI", "en-GM", "en-GU", + "en-GY", "en-HK", "en-IE", "en-IL", "en-IM", "en-IN", "en-IO", "en-JE", + "en-JM", "en-KE", "en-KI", "en-KN", "en-KY", "en-LC", "en-LR", "en-LS", + "en-MG", "en-MH", "en-MO", "en-MP", "en-MS", "en-MT", "en-MU", "en-MW", + "en-MY", "en-NA", "en-NF", "en-NG", "en-NH", "en-NL", "en-NR", "en-NU", + "en-NZ", "en-PG", "en-PH", "en-PK", "en-PN", "en-PR", "en-PW", "en-RH", + "en-RW", "en-SB", "en-SC", "en-SD", "en-SE", "en-SG", "en-SH", "en-SI", + "en-SL", "en-SS", "en-SX", "en-SZ", "en-TC", "en-TK", "en-TO", "en-TT", + "en-TV", "en", "en-TZ", "en-UG", "en-UM", "en-US-POSIX", "en-US", "en-VC", + "en-VG", "en-VI", "en-VU", "en-WS", "en-ZA", "en-ZM", "en-ZW", "eo", "es-419", + "es-AR", "es-BO", "es-BR", "es-BZ", "es-CL", "es-CO", "es-CR", "es-CU", + "es-DO", "es-EA", "es-EC", "es-ES", "es-GQ", "es-GT", "es-HN", "es-IC", + "es-MX", "es-NI", "es-PA", "es-PE", "es-PH", "es-PR", "es-PY", "es-SV", "es", + "es-US", "es-UY", "es-VE", "et-EE", "et", "eu-ES", "eu", "ewo-CM", "ewo", + "fa-AF", "fa-IR", "fa", "ff", "fi-FI", "fil-PH", "fil", "fi", "fo-DK", + "fo-FO", "fo", "fr-BE", "fr-BF", "fr-BI", "fr-BJ", "fr-BL", "fr-CA", "fr-CD", + "fr-CF", "fr-CG", "fr-CH", "fr-CI", "fr-CM", "fr-DJ", "fr-DZ", "fr-FR", + "fr-GA", "fr-GF", "fr-GN", "fr-GP", "fr-GQ", "fr-HT", "fr-KM", "fr-LU", + "fr-MA", "fr-MC", "fr-MF", "fr-MG", "fr-ML", "fr-MQ", "fr-MR", "fr-MU", + "fr-NC", "fr-NE", "fr-PF", "fr-PM", "fr-RE", "fr-RW", "fr-SC", "fr-SN", + "fr-SY", "fr-TD", "fr-TG", "fr-TN", "fr", "fr-VU", "fr-WF", "fr-YT", + "fur-IT", "fur", "fy-NL", "fy", "ga-IE", "ga", "gd-GB", "gd", "gl-ES", "gl", + "gsw-CH", "gsw-FR", "gsw-LI", "gsw", "gu-IN", "gu", "guz-KE", "guz", "gv-IM", + "gv", "ha-GH", "ha-NE", "ha-NG", "ha", "haw", "haw-US", "he-IL", "he", + "hi-IN", "hi", "hr-BA", "hr-HR", "hr", "hsb-DE", "hsb", "hu-HU", "hu", + "hy-AM", "hy", "ia-001", "ia", "id-ID", "id", "ig-NG", "ig", "ii-CN", "ii", + "in-ID", "in", "is-IS", "is", "it-CH", "it-IT", "it-SM", "it", "it-VA", + "iw-IL", "iw", "ja-JP", "ja", "jgo-CM", "jgo", "jmc", + "jmc-TZ", "jv-ID", "jv", "kab-DZ", "kab", "ka-GE", "kam-KE", "kam", "ka", + "kde", "kde-TZ", "kea-CV", "kea", "khq-ML", "khq", "ki-KE", "ki", "kkj-CM", + "kkj", "kk-KZ", "kk", "kl-GL", "kln-KE", "kln", "kl", "km-KH", "km", "kn-IN", + "kn", "kok-IN", "ko-KP", "ko-KR", "kok", "ko", "ksb", "ksb-TZ", "ksf-CM", + "ksf", "ksh-DE", "ksh", "ks-IN", "ks", "ku-TR", "ku", "kw-GB", "kw", "ky-KG", + "ky", "lag", "lag-TZ", "lb-LU", "lb", "lg", "lg-UG", "lkt", "lkt-US", "ln-AO", + "ln-CD", "ln-CF", "ln-CG", "ln", "lo-LA", "lo", "lrc-IQ", "lrc-IR", "lrc", + "lt-LT", "lt", "lu-CD", "luo-KE", "luo", "lu", "luy-KE", "luy", "lv-LV", "lv", + "mas-KE", "mas", "mas-TZ", "mer-KE", "mer", "mfe-MU", "mfe", "mgh-MZ", "mgh", + "mg-MG", "mgo-CM", "mgo", "mg", "mi-NZ", "mi", "mk-MK", "mk", "ml-IN", "ml", + "mn-MN", "mn", "mo", "mr-IN", "mr", "ms-BN", "ms-MY", "ms-SG", "ms", "mt-MT", + "mt", "mua-CM", "mua", "my-MM", "my", "mzn-IR", "mzn", "naq-NA", "naq", + "nb-NO", "nb-SJ", "nb", "nds-DE", "nds-NL", "nds", "nd", "nd-ZW", "ne-IN", + "ne-NP", "ne", "nl-AW", "nl-BE", "nl-BQ", "nl-CW", "nl-NL", "nl-SR", "nl-SX", + "nl", "nmg-CM", "nmg", "nnh-CM", "nnh", "nn-NO", "nn", "no-NY", "no-NO", + "no", "nus-SS", "nus", "nyn", "nyn-UG", "om-ET", "om-KE", "om", "or-IN", "or", + "os-GE", "os-RU", "os", "pa-Arab-PK", "pa-Arab", "pa-Guru-IN", "pa-Guru", + "pa-IN", "pa-PK", "pa", "pl-PL", "pl", "ps-AF", "ps", "pt-AO", "pt-BR", + "pt-CH", "pt-CV", "pt-GQ", "pt-GW", "pt-LU", "pt-MO", "pt-MZ", "pt-PT", + "pt-ST", "pt-TL", "pt", "qu-BO", "qu-EC", "qu-PE", "qu", "rm-CH", "rm", + "rn-BI", "rn", "rof", "rof-TZ", "ro-MD", "root", "ro-RO", "ro", "ru-BY", + "ru-KG", "ru-KZ", "ru-MD", "ru-RU", "ru", "ru-UA", "rwk", "rwk-TZ", "rw-RW", + "rw", "sah-RU", "sah", "saq-KE", "saq", "sbp", "sbp-TZ", "sd-PK", "sd", + "se-FI", "seh-MZ", "seh", "se-NO", "se-SE", "ses-ML", "ses", "se", "sg-CF", + "sg", "sh-BA", "sh-CS", "shi-Latn-MA", "shi-Latn", "shi-MA", "shi-Tfng-MA", + "shi-Tfng", "shi", "sh", "sh-YU", "si-LK", "si", "sk-SK", "sk", "sl-SI", "sl", + "smn-FI", "smn", "sn", "sn-ZW", "so-DJ", "so-ET", "so-KE", "so-SO", "so", + "sq-AL", "sq-MK", "sq", "sq-XK", "sr-BA", "sr-CS", "sr-Cyrl-BA", "sr-Cyrl-CS", + "sr-Cyrl-ME", "sr-Cyrl-RS", "sr-Cyrl", "sr-Cyrl-XK", "sr-Cyrl-YU", + "sr-Latn-BA", "sr-Latn-CS", "sr-Latn-ME", "sr-Latn-RS", "sr-Latn", + "sr-Latn-XK", "sr-Latn-YU", "sr-ME", "sr-RS", "sr", "sr-XK", "sr-YU", "sv-AX", + "sv-FI", "sv-SE", "sv", "sw-CD", "sw-KE", "sw", "sw-TZ", "sw-UG", "ta-IN", + "ta-LK", "ta-MY", "ta-SG", "ta", "te-IN", "teo-KE", "teo", "teo-UG", "te", + "tg-TJ", "tg", "th-TH", "th", "ti-ER", "ti-ET", "ti", + "tk-TM", "tk", "tl-PH", "tl", "to-TO", "to", "tr-CY", "tr-TR", "tr", "tt-RU", + "tt", "twq-NE", "twq", "tzm-MA", "tzm", "ug-CN", "ug", "uk", "uk-UA", "ur-IN", + "ur-PK", "ur", "uz-AF", "uz-Arab-AF", "uz-Arab", "uz-Cyrl", "uz-Cyrl-UZ", + "uz-Latn", "uz-Latn-UZ", "uz", "uz-UZ", "vai-Latn-LR", "vai-Latn", "vai-LR", + "vai", "vai-Vaii-LR", "vai-Vaii", "vi", "vi-VN", "vun", "vun-TZ", "wae-CH", + "wae", "wa", "wo-SN", "wo", "xh", "xh-ZA", "xog", "xog-UG", "yav-CM", "yav", + "yi-001", "yi", "yo-BJ", "yo-NG", "yo", "yue-CN", "yue-Hans-CN", "yue-Hans", + "yue-Hant-HK", "yue-Hant", "yue-HK", "yue", "zgh-MA", "zgh", "zh-CN", + "zh-Hans-CN", "zh-Hans-HK", "zh-Hans-MO", "zh-Hans-SG", "zh-Hans", + "zh-Hant-HK", "zh-Hant-MO", "zh-Hant-TW", "zh-Hant", "zh-HK", "zh-MO", "zh-SG", + "zh-TW", "zh", "zu", "zu-ZA"]; + +// The test timeout in TSAN so we split into 9 different tests. +// "Table 5: Components of date and time formats" as in +// https://ecma-international.org/ecma-402/#sec-datetimeformat-abstracts +let table5 = [ + // ["weekday", ["narrow", "short", "long"]], + // ["era", ["narrow", "short", "long"]], + // ["year", ["2-digit", "numeric"]], + ["month", ["2-digit", "numeric", "narrow", "short", "long"]], + // ["day", ["2-digit", "numeric"]], + // ["hour", ["2-digit", "numeric"]], + // ["minute", ["2-digit", "numeric"]], + // ["second", ["2-digit", "numeric"]], + // ["timeZoneName", ["short", "long"]] +]; + +// Test each locale +for (let loc of locales) { + // Test each property in Table 5 + for (let row of table5) { + let prop = row[0]; + let values = row[1]; + // Test each value of the property + for (let value of values) { + let opt = {}; + opt[prop] = value; + let dft = new Intl.DateTimeFormat([loc], opt); + let result = dft.resolvedOptions(); + assertTrue(values.indexOf(result[prop]) >= 0, + "Expect new Intl.DateTimeFormat([" + loc + "], {" + prop + ": '" + + value + "'}).resolvedOptions()['" + prop + "'] to return one of [" + + values + "] but got '" + result[prop] + "'"); + } + } +} diff --git a/implementation-contributed/v8/intl/regress-8413-second.js b/implementation-contributed/v8/intl/regress-8413-second.js new file mode 100644 index 0000000000..37aaefbfee --- /dev/null +++ b/implementation-contributed/v8/intl/regress-8413-second.js @@ -0,0 +1,135 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// All the known locales egrep by +// find third_party/icu/source/data/locales/*.txt|cut -d: -f 1| \ +// sort -u|cut -d/ -f6|cut -d. -f1|tr "_" "-" +let locales = [ + "af-NA", "af", "af-ZA", "agq-CM", "agq", "ak-GH", "ak", "am-ET", "am", "an", + "ar-001", "ar-AE", "ar-BH", "ar-DJ", "ar-DZ", "ar-EG", "ar-EH", "ar-ER", + "ar-IL", "ar-IQ", "ar-JO", "ar-KM", "ar-KW", "ar-LB", "ar-LY", "ar-MA", + "ar-MR", "ar-OM", "ar-PS", "ar-QA", "ar-SA", "ar-SD", "ar-SO", "ar-SS", + "ars", "ar-SY", "ar-TD", "ar-TN", "ar", "ar-YE", "asa", "asa-TZ", "as-IN", + "ast-ES", "ast", "as", "az-AZ", "az-Cyrl-AZ", "az-Cyrl", "az-Latn-AZ", + "az-Latn", "az", "bas-CM", "bas", "be-BY", "bem", "bem-ZM", "be", "bez", + "bez-TZ", "bg-BG", "bg", "bm-ML", "bm", "bn-BD", "bn-IN", "bn", "bo-CN", + "bo-IN", "bo", "br-FR", "br", "brx-IN", "brx", "bs-BA", "bs-Cyrl-BA", + "bs-Cyrl", "bs-Latn-BA", "bs-Latn", "bs", "ca-AD", "ca-ES", "ca-FR", + "ca-IT", "ca", "ccp-BD", "ccp-IN", "ccp", "ce-RU", "ce", "cgg", "cgg-UG", + "chr", "chr-US", "ckb-IQ", "ckb-IR", "ckb", "cs-CZ", "cs", "cy-GB", "cy", + "da-DK", "da-GL", "da", "dav-KE", "dav", "de-AT", "de-BE", "de-CH", "de-DE", + "de-IT", "de-LI", "de-LU", "de", "dje-NE", "dje", "dsb-DE", "dsb", "dua-CM", + "dua", "dyo-SN", "dyo", "dz-BT", "dz", "ebu-KE", "ebu", "ee-GH", "ee-TG", + "ee", "el-CY", "el-GR", "el", "en-001", "en-150", "en-AG", "en-AI", "en-AS", + "en-AT", "en-AU", "en-BB", "en-BE", "en-BI", "en-BM", "en-BS", "en-BW", + "en-BZ", "en-CA", "en-CC", "en-CH", "en-CK", "en-CM", "en-CX", "en-CY", + "en-DE", "en-DG", "en-DK", "en-DM", "en-ER", "en-FI", "en-FJ", "en-FK", + "en-FM", "en-GB", "en-GD", "en-GG", "en-GH", "en-GI", "en-GM", "en-GU", + "en-GY", "en-HK", "en-IE", "en-IL", "en-IM", "en-IN", "en-IO", "en-JE", + "en-JM", "en-KE", "en-KI", "en-KN", "en-KY", "en-LC", "en-LR", "en-LS", + "en-MG", "en-MH", "en-MO", "en-MP", "en-MS", "en-MT", "en-MU", "en-MW", + "en-MY", "en-NA", "en-NF", "en-NG", "en-NH", "en-NL", "en-NR", "en-NU", + "en-NZ", "en-PG", "en-PH", "en-PK", "en-PN", "en-PR", "en-PW", "en-RH", + "en-RW", "en-SB", "en-SC", "en-SD", "en-SE", "en-SG", "en-SH", "en-SI", + "en-SL", "en-SS", "en-SX", "en-SZ", "en-TC", "en-TK", "en-TO", "en-TT", + "en-TV", "en", "en-TZ", "en-UG", "en-UM", "en-US-POSIX", "en-US", "en-VC", + "en-VG", "en-VI", "en-VU", "en-WS", "en-ZA", "en-ZM", "en-ZW", "eo", "es-419", + "es-AR", "es-BO", "es-BR", "es-BZ", "es-CL", "es-CO", "es-CR", "es-CU", + "es-DO", "es-EA", "es-EC", "es-ES", "es-GQ", "es-GT", "es-HN", "es-IC", + "es-MX", "es-NI", "es-PA", "es-PE", "es-PH", "es-PR", "es-PY", "es-SV", "es", + "es-US", "es-UY", "es-VE", "et-EE", "et", "eu-ES", "eu", "ewo-CM", "ewo", + "fa-AF", "fa-IR", "fa", "ff", "fi-FI", "fil-PH", "fil", "fi", "fo-DK", + "fo-FO", "fo", "fr-BE", "fr-BF", "fr-BI", "fr-BJ", "fr-BL", "fr-CA", "fr-CD", + "fr-CF", "fr-CG", "fr-CH", "fr-CI", "fr-CM", "fr-DJ", "fr-DZ", "fr-FR", + "fr-GA", "fr-GF", "fr-GN", "fr-GP", "fr-GQ", "fr-HT", "fr-KM", "fr-LU", + "fr-MA", "fr-MC", "fr-MF", "fr-MG", "fr-ML", "fr-MQ", "fr-MR", "fr-MU", + "fr-NC", "fr-NE", "fr-PF", "fr-PM", "fr-RE", "fr-RW", "fr-SC", "fr-SN", + "fr-SY", "fr-TD", "fr-TG", "fr-TN", "fr", "fr-VU", "fr-WF", "fr-YT", + "fur-IT", "fur", "fy-NL", "fy", "ga-IE", "ga", "gd-GB", "gd", "gl-ES", "gl", + "gsw-CH", "gsw-FR", "gsw-LI", "gsw", "gu-IN", "gu", "guz-KE", "guz", "gv-IM", + "gv", "ha-GH", "ha-NE", "ha-NG", "ha", "haw", "haw-US", "he-IL", "he", + "hi-IN", "hi", "hr-BA", "hr-HR", "hr", "hsb-DE", "hsb", "hu-HU", "hu", + "hy-AM", "hy", "ia-001", "ia", "id-ID", "id", "ig-NG", "ig", "ii-CN", "ii", + "in-ID", "in", "is-IS", "is", "it-CH", "it-IT", "it-SM", "it", "it-VA", + "iw-IL", "iw", "ja-JP", "ja", "jgo-CM", "jgo", "jmc", + "jmc-TZ", "jv-ID", "jv", "kab-DZ", "kab", "ka-GE", "kam-KE", "kam", "ka", + "kde", "kde-TZ", "kea-CV", "kea", "khq-ML", "khq", "ki-KE", "ki", "kkj-CM", + "kkj", "kk-KZ", "kk", "kl-GL", "kln-KE", "kln", "kl", "km-KH", "km", "kn-IN", + "kn", "kok-IN", "ko-KP", "ko-KR", "kok", "ko", "ksb", "ksb-TZ", "ksf-CM", + "ksf", "ksh-DE", "ksh", "ks-IN", "ks", "ku-TR", "ku", "kw-GB", "kw", "ky-KG", + "ky", "lag", "lag-TZ", "lb-LU", "lb", "lg", "lg-UG", "lkt", "lkt-US", "ln-AO", + "ln-CD", "ln-CF", "ln-CG", "ln", "lo-LA", "lo", "lrc-IQ", "lrc-IR", "lrc", + "lt-LT", "lt", "lu-CD", "luo-KE", "luo", "lu", "luy-KE", "luy", "lv-LV", "lv", + "mas-KE", "mas", "mas-TZ", "mer-KE", "mer", "mfe-MU", "mfe", "mgh-MZ", "mgh", + "mg-MG", "mgo-CM", "mgo", "mg", "mi-NZ", "mi", "mk-MK", "mk", "ml-IN", "ml", + "mn-MN", "mn", "mo", "mr-IN", "mr", "ms-BN", "ms-MY", "ms-SG", "ms", "mt-MT", + "mt", "mua-CM", "mua", "my-MM", "my", "mzn-IR", "mzn", "naq-NA", "naq", + "nb-NO", "nb-SJ", "nb", "nds-DE", "nds-NL", "nds", "nd", "nd-ZW", "ne-IN", + "ne-NP", "ne", "nl-AW", "nl-BE", "nl-BQ", "nl-CW", "nl-NL", "nl-SR", "nl-SX", + "nl", "nmg-CM", "nmg", "nnh-CM", "nnh", "nn-NO", "nn", "no-NY", "no-NO", + "no", "nus-SS", "nus", "nyn", "nyn-UG", "om-ET", "om-KE", "om", "or-IN", "or", + "os-GE", "os-RU", "os", "pa-Arab-PK", "pa-Arab", "pa-Guru-IN", "pa-Guru", + "pa-IN", "pa-PK", "pa", "pl-PL", "pl", "ps-AF", "ps", "pt-AO", "pt-BR", + "pt-CH", "pt-CV", "pt-GQ", "pt-GW", "pt-LU", "pt-MO", "pt-MZ", "pt-PT", + "pt-ST", "pt-TL", "pt", "qu-BO", "qu-EC", "qu-PE", "qu", "rm-CH", "rm", + "rn-BI", "rn", "rof", "rof-TZ", "ro-MD", "root", "ro-RO", "ro", "ru-BY", + "ru-KG", "ru-KZ", "ru-MD", "ru-RU", "ru", "ru-UA", "rwk", "rwk-TZ", "rw-RW", + "rw", "sah-RU", "sah", "saq-KE", "saq", "sbp", "sbp-TZ", "sd-PK", "sd", + "se-FI", "seh-MZ", "seh", "se-NO", "se-SE", "ses-ML", "ses", "se", "sg-CF", + "sg", "sh-BA", "sh-CS", "shi-Latn-MA", "shi-Latn", "shi-MA", "shi-Tfng-MA", + "shi-Tfng", "shi", "sh", "sh-YU", "si-LK", "si", "sk-SK", "sk", "sl-SI", "sl", + "smn-FI", "smn", "sn", "sn-ZW", "so-DJ", "so-ET", "so-KE", "so-SO", "so", + "sq-AL", "sq-MK", "sq", "sq-XK", "sr-BA", "sr-CS", "sr-Cyrl-BA", "sr-Cyrl-CS", + "sr-Cyrl-ME", "sr-Cyrl-RS", "sr-Cyrl", "sr-Cyrl-XK", "sr-Cyrl-YU", + "sr-Latn-BA", "sr-Latn-CS", "sr-Latn-ME", "sr-Latn-RS", "sr-Latn", + "sr-Latn-XK", "sr-Latn-YU", "sr-ME", "sr-RS", "sr", "sr-XK", "sr-YU", "sv-AX", + "sv-FI", "sv-SE", "sv", "sw-CD", "sw-KE", "sw", "sw-TZ", "sw-UG", "ta-IN", + "ta-LK", "ta-MY", "ta-SG", "ta", "te-IN", "teo-KE", "teo", "teo-UG", "te", + "tg-TJ", "tg", "th-TH", "th", "ti-ER", "ti-ET", "ti", + "tk-TM", "tk", "tl-PH", "tl", "to-TO", "to", "tr-CY", "tr-TR", "tr", "tt-RU", + "tt", "twq-NE", "twq", "tzm-MA", "tzm", "ug-CN", "ug", "uk", "uk-UA", "ur-IN", + "ur-PK", "ur", "uz-AF", "uz-Arab-AF", "uz-Arab", "uz-Cyrl", "uz-Cyrl-UZ", + "uz-Latn", "uz-Latn-UZ", "uz", "uz-UZ", "vai-Latn-LR", "vai-Latn", "vai-LR", + "vai", "vai-Vaii-LR", "vai-Vaii", "vi", "vi-VN", "vun", "vun-TZ", "wae-CH", + "wae", "wa", "wo-SN", "wo", "xh", "xh-ZA", "xog", "xog-UG", "yav-CM", "yav", + "yi-001", "yi", "yo-BJ", "yo-NG", "yo", "yue-CN", "yue-Hans-CN", "yue-Hans", + "yue-Hant-HK", "yue-Hant", "yue-HK", "yue", "zgh-MA", "zgh", "zh-CN", + "zh-Hans-CN", "zh-Hans-HK", "zh-Hans-MO", "zh-Hans-SG", "zh-Hans", + "zh-Hant-HK", "zh-Hant-MO", "zh-Hant-TW", "zh-Hant", "zh-HK", "zh-MO", "zh-SG", + "zh-TW", "zh", "zu", "zu-ZA"]; + +// The test timeout in TSAN so we split into 9 different tests. +// "Table 5: Components of date and time formats" as in +// https://ecma-international.org/ecma-402/#sec-datetimeformat-abstracts +let table5 = [ + // ["weekday", ["narrow", "short", "long"]], + // ["era", ["narrow", "short", "long"]], + // ["year", ["2-digit", "numeric"]], + // ["month", ["2-digit", "numeric", "narrow", "short", "long"]], + // ["day", ["2-digit", "numeric"]], + // ["hour", ["2-digit", "numeric"]], + // ["minute", ["2-digit", "numeric"]], + ["second", ["2-digit", "numeric"]], + // ["timeZoneName", ["short", "long"]] +]; + +// Test each locale +for (let loc of locales) { + // Test each property in Table 5 + for (let row of table5) { + let prop = row[0]; + let values = row[1]; + // Test each value of the property + for (let value of values) { + let opt = {}; + opt[prop] = value; + let dft = new Intl.DateTimeFormat([loc], opt); + let result = dft.resolvedOptions(); + assertTrue(values.indexOf(result[prop]) >= 0, + "Expect new Intl.DateTimeFormat([" + loc + "], {" + prop + ": '" + + value + "'}).resolvedOptions()['" + prop + "'] to return one of [" + + values + "] but got '" + result[prop] + "'"); + } + } +} diff --git a/implementation-contributed/v8/intl/regress-8413-timeZoneName.js b/implementation-contributed/v8/intl/regress-8413-timeZoneName.js new file mode 100644 index 0000000000..28fda9861f --- /dev/null +++ b/implementation-contributed/v8/intl/regress-8413-timeZoneName.js @@ -0,0 +1,135 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// All the known locales egrep by +// find third_party/icu/source/data/locales/*.txt|cut -d: -f 1| \ +// sort -u|cut -d/ -f6|cut -d. -f1|tr "_" "-" +let locales = [ + "af-NA", "af", "af-ZA", "agq-CM", "agq", "ak-GH", "ak", "am-ET", "am", "an", + "ar-001", "ar-AE", "ar-BH", "ar-DJ", "ar-DZ", "ar-EG", "ar-EH", "ar-ER", + "ar-IL", "ar-IQ", "ar-JO", "ar-KM", "ar-KW", "ar-LB", "ar-LY", "ar-MA", + "ar-MR", "ar-OM", "ar-PS", "ar-QA", "ar-SA", "ar-SD", "ar-SO", "ar-SS", + "ars", "ar-SY", "ar-TD", "ar-TN", "ar", "ar-YE", "asa", "asa-TZ", "as-IN", + "ast-ES", "ast", "as", "az-AZ", "az-Cyrl-AZ", "az-Cyrl", "az-Latn-AZ", + "az-Latn", "az", "bas-CM", "bas", "be-BY", "bem", "bem-ZM", "be", "bez", + "bez-TZ", "bg-BG", "bg", "bm-ML", "bm", "bn-BD", "bn-IN", "bn", "bo-CN", + "bo-IN", "bo", "br-FR", "br", "brx-IN", "brx", "bs-BA", "bs-Cyrl-BA", + "bs-Cyrl", "bs-Latn-BA", "bs-Latn", "bs", "ca-AD", "ca-ES", "ca-FR", + "ca-IT", "ca", "ccp-BD", "ccp-IN", "ccp", "ce-RU", "ce", "cgg", "cgg-UG", + "chr", "chr-US", "ckb-IQ", "ckb-IR", "ckb", "cs-CZ", "cs", "cy-GB", "cy", + "da-DK", "da-GL", "da", "dav-KE", "dav", "de-AT", "de-BE", "de-CH", "de-DE", + "de-IT", "de-LI", "de-LU", "de", "dje-NE", "dje", "dsb-DE", "dsb", "dua-CM", + "dua", "dyo-SN", "dyo", "dz-BT", "dz", "ebu-KE", "ebu", "ee-GH", "ee-TG", + "ee", "el-CY", "el-GR", "el", "en-001", "en-150", "en-AG", "en-AI", "en-AS", + "en-AT", "en-AU", "en-BB", "en-BE", "en-BI", "en-BM", "en-BS", "en-BW", + "en-BZ", "en-CA", "en-CC", "en-CH", "en-CK", "en-CM", "en-CX", "en-CY", + "en-DE", "en-DG", "en-DK", "en-DM", "en-ER", "en-FI", "en-FJ", "en-FK", + "en-FM", "en-GB", "en-GD", "en-GG", "en-GH", "en-GI", "en-GM", "en-GU", + "en-GY", "en-HK", "en-IE", "en-IL", "en-IM", "en-IN", "en-IO", "en-JE", + "en-JM", "en-KE", "en-KI", "en-KN", "en-KY", "en-LC", "en-LR", "en-LS", + "en-MG", "en-MH", "en-MO", "en-MP", "en-MS", "en-MT", "en-MU", "en-MW", + "en-MY", "en-NA", "en-NF", "en-NG", "en-NH", "en-NL", "en-NR", "en-NU", + "en-NZ", "en-PG", "en-PH", "en-PK", "en-PN", "en-PR", "en-PW", "en-RH", + "en-RW", "en-SB", "en-SC", "en-SD", "en-SE", "en-SG", "en-SH", "en-SI", + "en-SL", "en-SS", "en-SX", "en-SZ", "en-TC", "en-TK", "en-TO", "en-TT", + "en-TV", "en", "en-TZ", "en-UG", "en-UM", "en-US-POSIX", "en-US", "en-VC", + "en-VG", "en-VI", "en-VU", "en-WS", "en-ZA", "en-ZM", "en-ZW", "eo", "es-419", + "es-AR", "es-BO", "es-BR", "es-BZ", "es-CL", "es-CO", "es-CR", "es-CU", + "es-DO", "es-EA", "es-EC", "es-ES", "es-GQ", "es-GT", "es-HN", "es-IC", + "es-MX", "es-NI", "es-PA", "es-PE", "es-PH", "es-PR", "es-PY", "es-SV", "es", + "es-US", "es-UY", "es-VE", "et-EE", "et", "eu-ES", "eu", "ewo-CM", "ewo", + "fa-AF", "fa-IR", "fa", "ff", "fi-FI", "fil-PH", "fil", "fi", "fo-DK", + "fo-FO", "fo", "fr-BE", "fr-BF", "fr-BI", "fr-BJ", "fr-BL", "fr-CA", "fr-CD", + "fr-CF", "fr-CG", "fr-CH", "fr-CI", "fr-CM", "fr-DJ", "fr-DZ", "fr-FR", + "fr-GA", "fr-GF", "fr-GN", "fr-GP", "fr-GQ", "fr-HT", "fr-KM", "fr-LU", + "fr-MA", "fr-MC", "fr-MF", "fr-MG", "fr-ML", "fr-MQ", "fr-MR", "fr-MU", + "fr-NC", "fr-NE", "fr-PF", "fr-PM", "fr-RE", "fr-RW", "fr-SC", "fr-SN", + "fr-SY", "fr-TD", "fr-TG", "fr-TN", "fr", "fr-VU", "fr-WF", "fr-YT", + "fur-IT", "fur", "fy-NL", "fy", "ga-IE", "ga", "gd-GB", "gd", "gl-ES", "gl", + "gsw-CH", "gsw-FR", "gsw-LI", "gsw", "gu-IN", "gu", "guz-KE", "guz", "gv-IM", + "gv", "ha-GH", "ha-NE", "ha-NG", "ha", "haw", "haw-US", "he-IL", "he", + "hi-IN", "hi", "hr-BA", "hr-HR", "hr", "hsb-DE", "hsb", "hu-HU", "hu", + "hy-AM", "hy", "ia-001", "ia", "id-ID", "id", "ig-NG", "ig", "ii-CN", "ii", + "in-ID", "in", "is-IS", "is", "it-CH", "it-IT", "it-SM", "it", "it-VA", + "iw-IL", "iw", "ja-JP", "ja", "jgo-CM", "jgo", "jmc", + "jmc-TZ", "jv-ID", "jv", "kab-DZ", "kab", "ka-GE", "kam-KE", "kam", "ka", + "kde", "kde-TZ", "kea-CV", "kea", "khq-ML", "khq", "ki-KE", "ki", "kkj-CM", + "kkj", "kk-KZ", "kk", "kl-GL", "kln-KE", "kln", "kl", "km-KH", "km", "kn-IN", + "kn", "kok-IN", "ko-KP", "ko-KR", "kok", "ko", "ksb", "ksb-TZ", "ksf-CM", + "ksf", "ksh-DE", "ksh", "ks-IN", "ks", "ku-TR", "ku", "kw-GB", "kw", "ky-KG", + "ky", "lag", "lag-TZ", "lb-LU", "lb", "lg", "lg-UG", "lkt", "lkt-US", "ln-AO", + "ln-CD", "ln-CF", "ln-CG", "ln", "lo-LA", "lo", "lrc-IQ", "lrc-IR", "lrc", + "lt-LT", "lt", "lu-CD", "luo-KE", "luo", "lu", "luy-KE", "luy", "lv-LV", "lv", + "mas-KE", "mas", "mas-TZ", "mer-KE", "mer", "mfe-MU", "mfe", "mgh-MZ", "mgh", + "mg-MG", "mgo-CM", "mgo", "mg", "mi-NZ", "mi", "mk-MK", "mk", "ml-IN", "ml", + "mn-MN", "mn", "mo", "mr-IN", "mr", "ms-BN", "ms-MY", "ms-SG", "ms", "mt-MT", + "mt", "mua-CM", "mua", "my-MM", "my", "mzn-IR", "mzn", "naq-NA", "naq", + "nb-NO", "nb-SJ", "nb", "nds-DE", "nds-NL", "nds", "nd", "nd-ZW", "ne-IN", + "ne-NP", "ne", "nl-AW", "nl-BE", "nl-BQ", "nl-CW", "nl-NL", "nl-SR", "nl-SX", + "nl", "nmg-CM", "nmg", "nnh-CM", "nnh", "nn-NO", "nn", "no-NY", "no-NO", + "no", "nus-SS", "nus", "nyn", "nyn-UG", "om-ET", "om-KE", "om", "or-IN", "or", + "os-GE", "os-RU", "os", "pa-Arab-PK", "pa-Arab", "pa-Guru-IN", "pa-Guru", + "pa-IN", "pa-PK", "pa", "pl-PL", "pl", "ps-AF", "ps", "pt-AO", "pt-BR", + "pt-CH", "pt-CV", "pt-GQ", "pt-GW", "pt-LU", "pt-MO", "pt-MZ", "pt-PT", + "pt-ST", "pt-TL", "pt", "qu-BO", "qu-EC", "qu-PE", "qu", "rm-CH", "rm", + "rn-BI", "rn", "rof", "rof-TZ", "ro-MD", "root", "ro-RO", "ro", "ru-BY", + "ru-KG", "ru-KZ", "ru-MD", "ru-RU", "ru", "ru-UA", "rwk", "rwk-TZ", "rw-RW", + "rw", "sah-RU", "sah", "saq-KE", "saq", "sbp", "sbp-TZ", "sd-PK", "sd", + "se-FI", "seh-MZ", "seh", "se-NO", "se-SE", "ses-ML", "ses", "se", "sg-CF", + "sg", "sh-BA", "sh-CS", "shi-Latn-MA", "shi-Latn", "shi-MA", "shi-Tfng-MA", + "shi-Tfng", "shi", "sh", "sh-YU", "si-LK", "si", "sk-SK", "sk", "sl-SI", "sl", + "smn-FI", "smn", "sn", "sn-ZW", "so-DJ", "so-ET", "so-KE", "so-SO", "so", + "sq-AL", "sq-MK", "sq", "sq-XK", "sr-BA", "sr-CS", "sr-Cyrl-BA", "sr-Cyrl-CS", + "sr-Cyrl-ME", "sr-Cyrl-RS", "sr-Cyrl", "sr-Cyrl-XK", "sr-Cyrl-YU", + "sr-Latn-BA", "sr-Latn-CS", "sr-Latn-ME", "sr-Latn-RS", "sr-Latn", + "sr-Latn-XK", "sr-Latn-YU", "sr-ME", "sr-RS", "sr", "sr-XK", "sr-YU", "sv-AX", + "sv-FI", "sv-SE", "sv", "sw-CD", "sw-KE", "sw", "sw-TZ", "sw-UG", "ta-IN", + "ta-LK", "ta-MY", "ta-SG", "ta", "te-IN", "teo-KE", "teo", "teo-UG", "te", + "tg-TJ", "tg", "th-TH", "th", "ti-ER", "ti-ET", "ti", + "tk-TM", "tk", "tl-PH", "tl", "to-TO", "to", "tr-CY", "tr-TR", "tr", "tt-RU", + "tt", "twq-NE", "twq", "tzm-MA", "tzm", "ug-CN", "ug", "uk", "uk-UA", "ur-IN", + "ur-PK", "ur", "uz-AF", "uz-Arab-AF", "uz-Arab", "uz-Cyrl", "uz-Cyrl-UZ", + "uz-Latn", "uz-Latn-UZ", "uz", "uz-UZ", "vai-Latn-LR", "vai-Latn", "vai-LR", + "vai", "vai-Vaii-LR", "vai-Vaii", "vi", "vi-VN", "vun", "vun-TZ", "wae-CH", + "wae", "wa", "wo-SN", "wo", "xh", "xh-ZA", "xog", "xog-UG", "yav-CM", "yav", + "yi-001", "yi", "yo-BJ", "yo-NG", "yo", "yue-CN", "yue-Hans-CN", "yue-Hans", + "yue-Hant-HK", "yue-Hant", "yue-HK", "yue", "zgh-MA", "zgh", "zh-CN", + "zh-Hans-CN", "zh-Hans-HK", "zh-Hans-MO", "zh-Hans-SG", "zh-Hans", + "zh-Hant-HK", "zh-Hant-MO", "zh-Hant-TW", "zh-Hant", "zh-HK", "zh-MO", "zh-SG", + "zh-TW", "zh", "zu", "zu-ZA"]; + +// The test timeout in TSAN so we split into 9 different tests. +// "Table 5: Components of date and time formats" as in +// https://ecma-international.org/ecma-402/#sec-datetimeformat-abstracts +let table5 = [ + // ["weekday", ["narrow", "short", "long"]], + // ["era", ["narrow", "short", "long"]], + // ["year", ["2-digit", "numeric"]], + // ["month", ["2-digit", "numeric", "narrow", "short", "long"]], + // ["day", ["2-digit", "numeric"]], + // ["hour", ["2-digit", "numeric"]], + // ["minute", ["2-digit", "numeric"]], + // ["second", ["2-digit", "numeric"]], + ["timeZoneName", ["short", "long"]] +]; + +// Test each locale +for (let loc of locales) { + // Test each property in Table 5 + for (let row of table5) { + let prop = row[0]; + let values = row[1]; + // Test each value of the property + for (let value of values) { + let opt = {}; + opt[prop] = value; + let dft = new Intl.DateTimeFormat([loc], opt); + let result = dft.resolvedOptions(); + assertTrue(values.indexOf(result[prop]) >= 0, + "Expect new Intl.DateTimeFormat([" + loc + "], {" + prop + ": '" + + value + "'}).resolvedOptions()['" + prop + "'] to return one of [" + + values + "] but got '" + result[prop] + "'"); + } + } +} diff --git a/implementation-contributed/v8/intl/regress-8413-weekday.js b/implementation-contributed/v8/intl/regress-8413-weekday.js new file mode 100644 index 0000000000..9d399e727f --- /dev/null +++ b/implementation-contributed/v8/intl/regress-8413-weekday.js @@ -0,0 +1,135 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// All the known locales egrep by +// find third_party/icu/source/data/locales/*.txt|cut -d: -f 1| \ +// sort -u|cut -d/ -f6|cut -d. -f1|tr "_" "-" +let locales = [ + "af-NA", "af", "af-ZA", "agq-CM", "agq", "ak-GH", "ak", "am-ET", "am", "an", + "ar-001", "ar-AE", "ar-BH", "ar-DJ", "ar-DZ", "ar-EG", "ar-EH", "ar-ER", + "ar-IL", "ar-IQ", "ar-JO", "ar-KM", "ar-KW", "ar-LB", "ar-LY", "ar-MA", + "ar-MR", "ar-OM", "ar-PS", "ar-QA", "ar-SA", "ar-SD", "ar-SO", "ar-SS", + "ars", "ar-SY", "ar-TD", "ar-TN", "ar", "ar-YE", "asa", "asa-TZ", "as-IN", + "ast-ES", "ast", "as", "az-AZ", "az-Cyrl-AZ", "az-Cyrl", "az-Latn-AZ", + "az-Latn", "az", "bas-CM", "bas", "be-BY", "bem", "bem-ZM", "be", "bez", + "bez-TZ", "bg-BG", "bg", "bm-ML", "bm", "bn-BD", "bn-IN", "bn", "bo-CN", + "bo-IN", "bo", "br-FR", "br", "brx-IN", "brx", "bs-BA", "bs-Cyrl-BA", + "bs-Cyrl", "bs-Latn-BA", "bs-Latn", "bs", "ca-AD", "ca-ES", "ca-FR", + "ca-IT", "ca", "ccp-BD", "ccp-IN", "ccp", "ce-RU", "ce", "cgg", "cgg-UG", + "chr", "chr-US", "ckb-IQ", "ckb-IR", "ckb", "cs-CZ", "cs", "cy-GB", "cy", + "da-DK", "da-GL", "da", "dav-KE", "dav", "de-AT", "de-BE", "de-CH", "de-DE", + "de-IT", "de-LI", "de-LU", "de", "dje-NE", "dje", "dsb-DE", "dsb", "dua-CM", + "dua", "dyo-SN", "dyo", "dz-BT", "dz", "ebu-KE", "ebu", "ee-GH", "ee-TG", + "ee", "el-CY", "el-GR", "el", "en-001", "en-150", "en-AG", "en-AI", "en-AS", + "en-AT", "en-AU", "en-BB", "en-BE", "en-BI", "en-BM", "en-BS", "en-BW", + "en-BZ", "en-CA", "en-CC", "en-CH", "en-CK", "en-CM", "en-CX", "en-CY", + "en-DE", "en-DG", "en-DK", "en-DM", "en-ER", "en-FI", "en-FJ", "en-FK", + "en-FM", "en-GB", "en-GD", "en-GG", "en-GH", "en-GI", "en-GM", "en-GU", + "en-GY", "en-HK", "en-IE", "en-IL", "en-IM", "en-IN", "en-IO", "en-JE", + "en-JM", "en-KE", "en-KI", "en-KN", "en-KY", "en-LC", "en-LR", "en-LS", + "en-MG", "en-MH", "en-MO", "en-MP", "en-MS", "en-MT", "en-MU", "en-MW", + "en-MY", "en-NA", "en-NF", "en-NG", "en-NH", "en-NL", "en-NR", "en-NU", + "en-NZ", "en-PG", "en-PH", "en-PK", "en-PN", "en-PR", "en-PW", "en-RH", + "en-RW", "en-SB", "en-SC", "en-SD", "en-SE", "en-SG", "en-SH", "en-SI", + "en-SL", "en-SS", "en-SX", "en-SZ", "en-TC", "en-TK", "en-TO", "en-TT", + "en-TV", "en", "en-TZ", "en-UG", "en-UM", "en-US-POSIX", "en-US", "en-VC", + "en-VG", "en-VI", "en-VU", "en-WS", "en-ZA", "en-ZM", "en-ZW", "eo", "es-419", + "es-AR", "es-BO", "es-BR", "es-BZ", "es-CL", "es-CO", "es-CR", "es-CU", + "es-DO", "es-EA", "es-EC", "es-ES", "es-GQ", "es-GT", "es-HN", "es-IC", + "es-MX", "es-NI", "es-PA", "es-PE", "es-PH", "es-PR", "es-PY", "es-SV", "es", + "es-US", "es-UY", "es-VE", "et-EE", "et", "eu-ES", "eu", "ewo-CM", "ewo", + "fa-AF", "fa-IR", "fa", "ff", "fi-FI", "fil-PH", "fil", "fi", "fo-DK", + "fo-FO", "fo", "fr-BE", "fr-BF", "fr-BI", "fr-BJ", "fr-BL", "fr-CA", "fr-CD", + "fr-CF", "fr-CG", "fr-CH", "fr-CI", "fr-CM", "fr-DJ", "fr-DZ", "fr-FR", + "fr-GA", "fr-GF", "fr-GN", "fr-GP", "fr-GQ", "fr-HT", "fr-KM", "fr-LU", + "fr-MA", "fr-MC", "fr-MF", "fr-MG", "fr-ML", "fr-MQ", "fr-MR", "fr-MU", + "fr-NC", "fr-NE", "fr-PF", "fr-PM", "fr-RE", "fr-RW", "fr-SC", "fr-SN", + "fr-SY", "fr-TD", "fr-TG", "fr-TN", "fr", "fr-VU", "fr-WF", "fr-YT", + "fur-IT", "fur", "fy-NL", "fy", "ga-IE", "ga", "gd-GB", "gd", "gl-ES", "gl", + "gsw-CH", "gsw-FR", "gsw-LI", "gsw", "gu-IN", "gu", "guz-KE", "guz", "gv-IM", + "gv", "ha-GH", "ha-NE", "ha-NG", "ha", "haw", "haw-US", "he-IL", "he", + "hi-IN", "hi", "hr-BA", "hr-HR", "hr", "hsb-DE", "hsb", "hu-HU", "hu", + "hy-AM", "hy", "ia-001", "ia", "id-ID", "id", "ig-NG", "ig", "ii-CN", "ii", + "in-ID", "in", "is-IS", "is", "it-CH", "it-IT", "it-SM", "it", "it-VA", + "iw-IL", "iw", "ja-JP", "ja", "jgo-CM", "jgo", "jmc", + "jmc-TZ", "jv-ID", "jv", "kab-DZ", "kab", "ka-GE", "kam-KE", "kam", "ka", + "kde", "kde-TZ", "kea-CV", "kea", "khq-ML", "khq", "ki-KE", "ki", "kkj-CM", + "kkj", "kk-KZ", "kk", "kl-GL", "kln-KE", "kln", "kl", "km-KH", "km", "kn-IN", + "kn", "kok-IN", "ko-KP", "ko-KR", "kok", "ko", "ksb", "ksb-TZ", "ksf-CM", + "ksf", "ksh-DE", "ksh", "ks-IN", "ks", "ku-TR", "ku", "kw-GB", "kw", "ky-KG", + "ky", "lag", "lag-TZ", "lb-LU", "lb", "lg", "lg-UG", "lkt", "lkt-US", "ln-AO", + "ln-CD", "ln-CF", "ln-CG", "ln", "lo-LA", "lo", "lrc-IQ", "lrc-IR", "lrc", + "lt-LT", "lt", "lu-CD", "luo-KE", "luo", "lu", "luy-KE", "luy", "lv-LV", "lv", + "mas-KE", "mas", "mas-TZ", "mer-KE", "mer", "mfe-MU", "mfe", "mgh-MZ", "mgh", + "mg-MG", "mgo-CM", "mgo", "mg", "mi-NZ", "mi", "mk-MK", "mk", "ml-IN", "ml", + "mn-MN", "mn", "mo", "mr-IN", "mr", "ms-BN", "ms-MY", "ms-SG", "ms", "mt-MT", + "mt", "mua-CM", "mua", "my-MM", "my", "mzn-IR", "mzn", "naq-NA", "naq", + "nb-NO", "nb-SJ", "nb", "nds-DE", "nds-NL", "nds", "nd", "nd-ZW", "ne-IN", + "ne-NP", "ne", "nl-AW", "nl-BE", "nl-BQ", "nl-CW", "nl-NL", "nl-SR", "nl-SX", + "nl", "nmg-CM", "nmg", "nnh-CM", "nnh", "nn-NO", "nn", "no-NY", "no-NO", + "no", "nus-SS", "nus", "nyn", "nyn-UG", "om-ET", "om-KE", "om", "or-IN", "or", + "os-GE", "os-RU", "os", "pa-Arab-PK", "pa-Arab", "pa-Guru-IN", "pa-Guru", + "pa-IN", "pa-PK", "pa", "pl-PL", "pl", "ps-AF", "ps", "pt-AO", "pt-BR", + "pt-CH", "pt-CV", "pt-GQ", "pt-GW", "pt-LU", "pt-MO", "pt-MZ", "pt-PT", + "pt-ST", "pt-TL", "pt", "qu-BO", "qu-EC", "qu-PE", "qu", "rm-CH", "rm", + "rn-BI", "rn", "rof", "rof-TZ", "ro-MD", "root", "ro-RO", "ro", "ru-BY", + "ru-KG", "ru-KZ", "ru-MD", "ru-RU", "ru", "ru-UA", "rwk", "rwk-TZ", "rw-RW", + "rw", "sah-RU", "sah", "saq-KE", "saq", "sbp", "sbp-TZ", "sd-PK", "sd", + "se-FI", "seh-MZ", "seh", "se-NO", "se-SE", "ses-ML", "ses", "se", "sg-CF", + "sg", "sh-BA", "sh-CS", "shi-Latn-MA", "shi-Latn", "shi-MA", "shi-Tfng-MA", + "shi-Tfng", "shi", "sh", "sh-YU", "si-LK", "si", "sk-SK", "sk", "sl-SI", "sl", + "smn-FI", "smn", "sn", "sn-ZW", "so-DJ", "so-ET", "so-KE", "so-SO", "so", + "sq-AL", "sq-MK", "sq", "sq-XK", "sr-BA", "sr-CS", "sr-Cyrl-BA", "sr-Cyrl-CS", + "sr-Cyrl-ME", "sr-Cyrl-RS", "sr-Cyrl", "sr-Cyrl-XK", "sr-Cyrl-YU", + "sr-Latn-BA", "sr-Latn-CS", "sr-Latn-ME", "sr-Latn-RS", "sr-Latn", + "sr-Latn-XK", "sr-Latn-YU", "sr-ME", "sr-RS", "sr", "sr-XK", "sr-YU", "sv-AX", + "sv-FI", "sv-SE", "sv", "sw-CD", "sw-KE", "sw", "sw-TZ", "sw-UG", "ta-IN", + "ta-LK", "ta-MY", "ta-SG", "ta", "te-IN", "teo-KE", "teo", "teo-UG", "te", + "tg-TJ", "tg", "th-TH", "th", "ti-ER", "ti-ET", "ti", + "tk-TM", "tk", "tl-PH", "tl", "to-TO", "to", "tr-CY", "tr-TR", "tr", "tt-RU", + "tt", "twq-NE", "twq", "tzm-MA", "tzm", "ug-CN", "ug", "uk", "uk-UA", "ur-IN", + "ur-PK", "ur", "uz-AF", "uz-Arab-AF", "uz-Arab", "uz-Cyrl", "uz-Cyrl-UZ", + "uz-Latn", "uz-Latn-UZ", "uz", "uz-UZ", "vai-Latn-LR", "vai-Latn", "vai-LR", + "vai", "vai-Vaii-LR", "vai-Vaii", "vi", "vi-VN", "vun", "vun-TZ", "wae-CH", + "wae", "wa", "wo-SN", "wo", "xh", "xh-ZA", "xog", "xog-UG", "yav-CM", "yav", + "yi-001", "yi", "yo-BJ", "yo-NG", "yo", "yue-CN", "yue-Hans-CN", "yue-Hans", + "yue-Hant-HK", "yue-Hant", "yue-HK", "yue", "zgh-MA", "zgh", "zh-CN", + "zh-Hans-CN", "zh-Hans-HK", "zh-Hans-MO", "zh-Hans-SG", "zh-Hans", + "zh-Hant-HK", "zh-Hant-MO", "zh-Hant-TW", "zh-Hant", "zh-HK", "zh-MO", "zh-SG", + "zh-TW", "zh", "zu", "zu-ZA"]; + +// The test timeout in TSAN so we split into 9 different tests. +// "Table 5: Components of date and time formats" as in +// https://ecma-international.org/ecma-402/#sec-datetimeformat-abstracts +let table5 = [ + ["weekday", ["narrow", "short", "long"]], + // ["era", ["narrow", "short", "long"]], + // ["year", ["2-digit", "numeric"]], + // ["month", ["2-digit", "numeric", "narrow", "short", "long"]], + // ["day", ["2-digit", "numeric"]], + // ["hour", ["2-digit", "numeric"]], + // ["minute", ["2-digit", "numeric"]], + // ["second", ["2-digit", "numeric"]], + // ["timeZoneName", ["short", "long"]] +]; + +// Test each locale +for (let loc of locales) { + // Test each property in Table 5 + for (let row of table5) { + let prop = row[0]; + let values = row[1]; + // Test each value of the property + for (let value of values) { + let opt = {}; + opt[prop] = value; + let dft = new Intl.DateTimeFormat([loc], opt); + let result = dft.resolvedOptions(); + assertTrue(values.indexOf(result[prop]) >= 0, + "Expect new Intl.DateTimeFormat([" + loc + "], {" + prop + ": '" + + value + "'}).resolvedOptions()['" + prop + "'] to return one of [" + + values + "] but got '" + result[prop] + "'"); + } + } +} diff --git a/implementation-contributed/v8/intl/regress-8413-year.js b/implementation-contributed/v8/intl/regress-8413-year.js new file mode 100644 index 0000000000..9702a2542d --- /dev/null +++ b/implementation-contributed/v8/intl/regress-8413-year.js @@ -0,0 +1,135 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// All the known locales egrep by +// find third_party/icu/source/data/locales/*.txt|cut -d: -f 1| \ +// sort -u|cut -d/ -f6|cut -d. -f1|tr "_" "-" +let locales = [ + "af-NA", "af", "af-ZA", "agq-CM", "agq", "ak-GH", "ak", "am-ET", "am", "an", + "ar-001", "ar-AE", "ar-BH", "ar-DJ", "ar-DZ", "ar-EG", "ar-EH", "ar-ER", + "ar-IL", "ar-IQ", "ar-JO", "ar-KM", "ar-KW", "ar-LB", "ar-LY", "ar-MA", + "ar-MR", "ar-OM", "ar-PS", "ar-QA", "ar-SA", "ar-SD", "ar-SO", "ar-SS", + "ars", "ar-SY", "ar-TD", "ar-TN", "ar", "ar-YE", "asa", "asa-TZ", "as-IN", + "ast-ES", "ast", "as", "az-AZ", "az-Cyrl-AZ", "az-Cyrl", "az-Latn-AZ", + "az-Latn", "az", "bas-CM", "bas", "be-BY", "bem", "bem-ZM", "be", "bez", + "bez-TZ", "bg-BG", "bg", "bm-ML", "bm", "bn-BD", "bn-IN", "bn", "bo-CN", + "bo-IN", "bo", "br-FR", "br", "brx-IN", "brx", "bs-BA", "bs-Cyrl-BA", + "bs-Cyrl", "bs-Latn-BA", "bs-Latn", "bs", "ca-AD", "ca-ES", "ca-FR", + "ca-IT", "ca", "ccp-BD", "ccp-IN", "ccp", "ce-RU", "ce", "cgg", "cgg-UG", + "chr", "chr-US", "ckb-IQ", "ckb-IR", "ckb", "cs-CZ", "cs", "cy-GB", "cy", + "da-DK", "da-GL", "da", "dav-KE", "dav", "de-AT", "de-BE", "de-CH", "de-DE", + "de-IT", "de-LI", "de-LU", "de", "dje-NE", "dje", "dsb-DE", "dsb", "dua-CM", + "dua", "dyo-SN", "dyo", "dz-BT", "dz", "ebu-KE", "ebu", "ee-GH", "ee-TG", + "ee", "el-CY", "el-GR", "el", "en-001", "en-150", "en-AG", "en-AI", "en-AS", + "en-AT", "en-AU", "en-BB", "en-BE", "en-BI", "en-BM", "en-BS", "en-BW", + "en-BZ", "en-CA", "en-CC", "en-CH", "en-CK", "en-CM", "en-CX", "en-CY", + "en-DE", "en-DG", "en-DK", "en-DM", "en-ER", "en-FI", "en-FJ", "en-FK", + "en-FM", "en-GB", "en-GD", "en-GG", "en-GH", "en-GI", "en-GM", "en-GU", + "en-GY", "en-HK", "en-IE", "en-IL", "en-IM", "en-IN", "en-IO", "en-JE", + "en-JM", "en-KE", "en-KI", "en-KN", "en-KY", "en-LC", "en-LR", "en-LS", + "en-MG", "en-MH", "en-MO", "en-MP", "en-MS", "en-MT", "en-MU", "en-MW", + "en-MY", "en-NA", "en-NF", "en-NG", "en-NH", "en-NL", "en-NR", "en-NU", + "en-NZ", "en-PG", "en-PH", "en-PK", "en-PN", "en-PR", "en-PW", "en-RH", + "en-RW", "en-SB", "en-SC", "en-SD", "en-SE", "en-SG", "en-SH", "en-SI", + "en-SL", "en-SS", "en-SX", "en-SZ", "en-TC", "en-TK", "en-TO", "en-TT", + "en-TV", "en", "en-TZ", "en-UG", "en-UM", "en-US-POSIX", "en-US", "en-VC", + "en-VG", "en-VI", "en-VU", "en-WS", "en-ZA", "en-ZM", "en-ZW", "eo", "es-419", + "es-AR", "es-BO", "es-BR", "es-BZ", "es-CL", "es-CO", "es-CR", "es-CU", + "es-DO", "es-EA", "es-EC", "es-ES", "es-GQ", "es-GT", "es-HN", "es-IC", + "es-MX", "es-NI", "es-PA", "es-PE", "es-PH", "es-PR", "es-PY", "es-SV", "es", + "es-US", "es-UY", "es-VE", "et-EE", "et", "eu-ES", "eu", "ewo-CM", "ewo", + "fa-AF", "fa-IR", "fa", "ff", "fi-FI", "fil-PH", "fil", "fi", "fo-DK", + "fo-FO", "fo", "fr-BE", "fr-BF", "fr-BI", "fr-BJ", "fr-BL", "fr-CA", "fr-CD", + "fr-CF", "fr-CG", "fr-CH", "fr-CI", "fr-CM", "fr-DJ", "fr-DZ", "fr-FR", + "fr-GA", "fr-GF", "fr-GN", "fr-GP", "fr-GQ", "fr-HT", "fr-KM", "fr-LU", + "fr-MA", "fr-MC", "fr-MF", "fr-MG", "fr-ML", "fr-MQ", "fr-MR", "fr-MU", + "fr-NC", "fr-NE", "fr-PF", "fr-PM", "fr-RE", "fr-RW", "fr-SC", "fr-SN", + "fr-SY", "fr-TD", "fr-TG", "fr-TN", "fr", "fr-VU", "fr-WF", "fr-YT", + "fur-IT", "fur", "fy-NL", "fy", "ga-IE", "ga", "gd-GB", "gd", "gl-ES", "gl", + "gsw-CH", "gsw-FR", "gsw-LI", "gsw", "gu-IN", "gu", "guz-KE", "guz", "gv-IM", + "gv", "ha-GH", "ha-NE", "ha-NG", "ha", "haw", "haw-US", "he-IL", "he", + "hi-IN", "hi", "hr-BA", "hr-HR", "hr", "hsb-DE", "hsb", "hu-HU", "hu", + "hy-AM", "hy", "ia-001", "ia", "id-ID", "id", "ig-NG", "ig", "ii-CN", "ii", + "in-ID", "in", "is-IS", "is", "it-CH", "it-IT", "it-SM", "it", "it-VA", + "iw-IL", "iw", "ja-JP", "ja", "jgo-CM", "jgo", "jmc", + "jmc-TZ", "jv-ID", "jv", "kab-DZ", "kab", "ka-GE", "kam-KE", "kam", "ka", + "kde", "kde-TZ", "kea-CV", "kea", "khq-ML", "khq", "ki-KE", "ki", "kkj-CM", + "kkj", "kk-KZ", "kk", "kl-GL", "kln-KE", "kln", "kl", "km-KH", "km", "kn-IN", + "kn", "kok-IN", "ko-KP", "ko-KR", "kok", "ko", "ksb", "ksb-TZ", "ksf-CM", + "ksf", "ksh-DE", "ksh", "ks-IN", "ks", "ku-TR", "ku", "kw-GB", "kw", "ky-KG", + "ky", "lag", "lag-TZ", "lb-LU", "lb", "lg", "lg-UG", "lkt", "lkt-US", "ln-AO", + "ln-CD", "ln-CF", "ln-CG", "ln", "lo-LA", "lo", "lrc-IQ", "lrc-IR", "lrc", + "lt-LT", "lt", "lu-CD", "luo-KE", "luo", "lu", "luy-KE", "luy", "lv-LV", "lv", + "mas-KE", "mas", "mas-TZ", "mer-KE", "mer", "mfe-MU", "mfe", "mgh-MZ", "mgh", + "mg-MG", "mgo-CM", "mgo", "mg", "mi-NZ", "mi", "mk-MK", "mk", "ml-IN", "ml", + "mn-MN", "mn", "mo", "mr-IN", "mr", "ms-BN", "ms-MY", "ms-SG", "ms", "mt-MT", + "mt", "mua-CM", "mua", "my-MM", "my", "mzn-IR", "mzn", "naq-NA", "naq", + "nb-NO", "nb-SJ", "nb", "nds-DE", "nds-NL", "nds", "nd", "nd-ZW", "ne-IN", + "ne-NP", "ne", "nl-AW", "nl-BE", "nl-BQ", "nl-CW", "nl-NL", "nl-SR", "nl-SX", + "nl", "nmg-CM", "nmg", "nnh-CM", "nnh", "nn-NO", "nn", "no-NY", "no-NO", + "no", "nus-SS", "nus", "nyn", "nyn-UG", "om-ET", "om-KE", "om", "or-IN", "or", + "os-GE", "os-RU", "os", "pa-Arab-PK", "pa-Arab", "pa-Guru-IN", "pa-Guru", + "pa-IN", "pa-PK", "pa", "pl-PL", "pl", "ps-AF", "ps", "pt-AO", "pt-BR", + "pt-CH", "pt-CV", "pt-GQ", "pt-GW", "pt-LU", "pt-MO", "pt-MZ", "pt-PT", + "pt-ST", "pt-TL", "pt", "qu-BO", "qu-EC", "qu-PE", "qu", "rm-CH", "rm", + "rn-BI", "rn", "rof", "rof-TZ", "ro-MD", "root", "ro-RO", "ro", "ru-BY", + "ru-KG", "ru-KZ", "ru-MD", "ru-RU", "ru", "ru-UA", "rwk", "rwk-TZ", "rw-RW", + "rw", "sah-RU", "sah", "saq-KE", "saq", "sbp", "sbp-TZ", "sd-PK", "sd", + "se-FI", "seh-MZ", "seh", "se-NO", "se-SE", "ses-ML", "ses", "se", "sg-CF", + "sg", "sh-BA", "sh-CS", "shi-Latn-MA", "shi-Latn", "shi-MA", "shi-Tfng-MA", + "shi-Tfng", "shi", "sh", "sh-YU", "si-LK", "si", "sk-SK", "sk", "sl-SI", "sl", + "smn-FI", "smn", "sn", "sn-ZW", "so-DJ", "so-ET", "so-KE", "so-SO", "so", + "sq-AL", "sq-MK", "sq", "sq-XK", "sr-BA", "sr-CS", "sr-Cyrl-BA", "sr-Cyrl-CS", + "sr-Cyrl-ME", "sr-Cyrl-RS", "sr-Cyrl", "sr-Cyrl-XK", "sr-Cyrl-YU", + "sr-Latn-BA", "sr-Latn-CS", "sr-Latn-ME", "sr-Latn-RS", "sr-Latn", + "sr-Latn-XK", "sr-Latn-YU", "sr-ME", "sr-RS", "sr", "sr-XK", "sr-YU", "sv-AX", + "sv-FI", "sv-SE", "sv", "sw-CD", "sw-KE", "sw", "sw-TZ", "sw-UG", "ta-IN", + "ta-LK", "ta-MY", "ta-SG", "ta", "te-IN", "teo-KE", "teo", "teo-UG", "te", + "tg-TJ", "tg", "th-TH", "th", "ti-ER", "ti-ET", "ti", + "tk-TM", "tk", "tl-PH", "tl", "to-TO", "to", "tr-CY", "tr-TR", "tr", "tt-RU", + "tt", "twq-NE", "twq", "tzm-MA", "tzm", "ug-CN", "ug", "uk", "uk-UA", "ur-IN", + "ur-PK", "ur", "uz-AF", "uz-Arab-AF", "uz-Arab", "uz-Cyrl", "uz-Cyrl-UZ", + "uz-Latn", "uz-Latn-UZ", "uz", "uz-UZ", "vai-Latn-LR", "vai-Latn", "vai-LR", + "vai", "vai-Vaii-LR", "vai-Vaii", "vi", "vi-VN", "vun", "vun-TZ", "wae-CH", + "wae", "wa", "wo-SN", "wo", "xh", "xh-ZA", "xog", "xog-UG", "yav-CM", "yav", + "yi-001", "yi", "yo-BJ", "yo-NG", "yo", "yue-CN", "yue-Hans-CN", "yue-Hans", + "yue-Hant-HK", "yue-Hant", "yue-HK", "yue", "zgh-MA", "zgh", "zh-CN", + "zh-Hans-CN", "zh-Hans-HK", "zh-Hans-MO", "zh-Hans-SG", "zh-Hans", + "zh-Hant-HK", "zh-Hant-MO", "zh-Hant-TW", "zh-Hant", "zh-HK", "zh-MO", "zh-SG", + "zh-TW", "zh", "zu", "zu-ZA"]; + +// The test timeout in TSAN so we split into 9 different tests. +// "Table 5: Components of date and time formats" as in +// https://ecma-international.org/ecma-402/#sec-datetimeformat-abstracts +let table5 = [ + // ["weekday", ["narrow", "short", "long"]], + // ["era", ["narrow", "short", "long"]], + ["year", ["2-digit", "numeric"]], + // ["month", ["2-digit", "numeric", "narrow", "short", "long"]], + // ["day", ["2-digit", "numeric"]], + // ["hour", ["2-digit", "numeric"]], + // ["minute", ["2-digit", "numeric"]], + // ["second", ["2-digit", "numeric"]], + // ["timeZoneName", ["short", "long"]] +]; + +// Test each locale +for (let loc of locales) { + // Test each property in Table 5 + for (let row of table5) { + let prop = row[0]; + let values = row[1]; + // Test each value of the property + for (let value of values) { + let opt = {}; + opt[prop] = value; + let dft = new Intl.DateTimeFormat([loc], opt); + let result = dft.resolvedOptions(); + assertTrue(values.indexOf(result[prop]) >= 0, + "Expect new Intl.DateTimeFormat([" + loc + "], {" + prop + ": '" + + value + "'}).resolvedOptions()['" + prop + "'] to return one of [" + + values + "] but got '" + result[prop] + "'"); + } + } +} diff --git a/implementation-contributed/v8/intl/regress-8414.js b/implementation-contributed/v8/intl/regress-8414.js new file mode 100644 index 0000000000..3e34421636 --- /dev/null +++ b/implementation-contributed/v8/intl/regress-8414.js @@ -0,0 +1,806 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Flags: --harmony-intl-segmenter --harmony-intl-list-format --harmony-locale + +let locales = [ + "af-NA", + "af", + "af-ZA", + "agq-CM", + "agq", + "ak-GH", + "ak", + "am-ET", + "am", + "an", + "ar-001", + "ar-AE", + "ar-BH", + "ar-DJ", + "ar-DZ", + "ar-EG", + "ar-EH", + "ar-ER", + "ar-IL", + "ar-IQ", + "ar-JO", + "ar-KM", + "ar-KW", + "ar-LB", + "ar-LY", + "ar-MA", + "ar-MR", + "ar-OM", + "ar-PS", + "ar-QA", + "ar-SA", + "ar-SD", + "ar-SO", + "ar-SS", + "ars", + "ar-SY", + "ar-TD", + "ar-TN", + "ar", + "ar-YE", + "asa", + "asa-TZ", + "as-IN", + "ast-ES", + "ast", + "as", + "az-AZ", + "az-Cyrl-AZ", + "az-Cyrl", + "az-Latn-AZ", + "az-Latn", + "az", + "bas-CM", + "bas", + "be-BY", + "bem", + "bem-ZM", + "be", + "bez", + "bez-TZ", + "bg-BG", + "bg", + "bm-ML", + "bm", + "bn-BD", + "bn-IN", + "bn", + "bo-CN", + "bo-IN", + "bo", + "br-FR", + "br", + "brx-IN", + "brx", + "bs-BA", + "bs-Cyrl-BA", + "bs-Cyrl", + "bs-Latn-BA", + "bs-Latn", + "bs", + "ca-AD", + "ca-ES", + "ca-FR", + "ca-IT", + "ca", + "ccp-BD", + "ccp-IN", + "ccp", + "ce-RU", + "ce", + "cgg", + "cgg-UG", + "chr", + "chr-US", + "ckb-IQ", + "ckb-IR", + "ckb", + "cs-CZ", + "cs", + "cy-GB", + "cy", + "da-DK", + "da-GL", + "da", + "dav-KE", + "dav", + "de-AT", + "de-BE", + "de-CH", + "de-DE", + "de-IT", + "de-LI", + "de-LU", + "de", + "dje-NE", + "dje", + "dsb-DE", + "dsb", + "dua-CM", + "dua", + "dyo-SN", + "dyo", + "dz-BT", + "dz", + "ebu-KE", + "ebu", + "ee-GH", + "ee-TG", + "ee", + "el-CY", + "el-GR", + "el", + "en-001", + "en-150", + "en-AG", + "en-AI", + "en-AS", + "en-AT", + "en-AU", + "en-BB", + "en-BE", + "en-BI", + "en-BM", + "en-BS", + "en-BW", + "en-BZ", + "en-CA", + "en-CC", + "en-CH", + "en-CK", + "en-CM", + "en-CX", + "en-CY", + "en-DE", + "en-DG", + "en-DK", + "en-DM", + "en-ER", + "en-FI", + "en-FJ", + "en-FK", + "en-FM", + "en-GB", + "en-GD", + "en-GG", + "en-GH", + "en-GI", + "en-GM", + "en-GU", + "en-GY", + "en-HK", + "en-IE", + "en-IL", + "en-IM", + "en-IN", + "en-IO", + "en-JE", + "en-JM", + "en-KE", + "en-KI", + "en-KN", + "en-KY", + "en-LC", + "en-LR", + "en-LS", + "en-MG", + "en-MH", + "en-MO", + "en-MP", + "en-MS", + "en-MT", + "en-MU", + "en-MW", + "en-MY", + "en-NA", + "en-NF", + "en-NG", + "en-NH", + "en-NL", + "en-NR", + "en-NU", + "en-NZ", + "en-PG", + "en-PH", + "en-PK", + "en-PN", + "en-PR", + "en-PW", + "en-RH", + "en-RW", + "en-SB", + "en-SC", + "en-SD", + "en-SE", + "en-SG", + "en-SH", + "en-SI", + "en-SL", + "en-SS", + "en-SX", + "en-SZ", + "en-TC", + "en-TK", + "en-TO", + "en-TT", + "en-TV", + "en", + "en-TZ", + "en-UG", + "en-UM", + "en-US-POSIX", + "en-US", + "en-VC", + "en-VG", + "en-VI", + "en-VU", + "en-WS", + "en-ZA", + "en-ZM", + "en-ZW", + "eo", + "es-419", + "es-AR", + "es-BO", + "es-BR", + "es-BZ", + "es-CL", + "es-CO", + "es-CR", + "es-CU", + "es-DO", + "es-EA", + "es-EC", + "es-ES", + "es-GQ", + "es-GT", + "es-HN", + "es-IC", + "es-MX", + "es-NI", + "es-PA", + "es-PE", + "es-PH", + "es-PR", + "es-PY", + "es-SV", + "es", + "es-US", + "es-UY", + "es-VE", + "et-EE", + "et", + "eu-ES", + "eu", + "ewo-CM", + "ewo", + "fa-AF", + "fa-IR", + "fa", + "ff", + "fi-FI", + "fil-PH", + "fil", + "fi", + "fo-DK", + "fo-FO", + "fo", + "fr-BE", + "fr-BF", + "fr-BI", + "fr-BJ", + "fr-BL", + "fr-CA", + "fr-CD", + "fr-CF", + "fr-CG", + "fr-CH", + "fr-CI", + "fr-CM", + "fr-DJ", + "fr-DZ", + "fr-FR", + "fr-GA", + "fr-GF", + "fr-GN", + "fr-GP", + "fr-GQ", + "fr-HT", + "fr-KM", + "fr-LU", + "fr-MA", + "fr-MC", + "fr-MF", + "fr-MG", + "fr-ML", + "fr-MQ", + "fr-MR", + "fr-MU", + "fr-NC", + "fr-NE", + "fr-PF", + "fr-PM", + "fr-RE", + "fr-RW", + "fr-SC", + "fr-SN", + "fr-SY", + "fr-TD", + "fr-TG", + "fr-TN", + "fr", + "fr-VU", + "fr-WF", + "fr-YT", + "fur-IT", + "fur", + "fy-NL", + "fy", + "ga-IE", + "ga", + "gd-GB", + "gd", + "gl-ES", + "gl", + "gsw-CH", + "gsw-FR", + "gsw-LI", + "gsw", + "gu-IN", + "gu", + "guz-KE", + "guz", + "gv-IM", + "gv", + "ha-GH", + "ha-NE", + "ha-NG", + "ha", + "haw", + "haw-US", + "he-IL", + "he", + "hi-IN", + "hi", + "hr-BA", + "hr-HR", + "hr", + "hsb-DE", + "hsb", + "hu-HU", + "hu", + "hy-AM", + "hy", + "ia-001", + "ia", + "id-ID", + "id", + "ig-NG", + "ig", + "ii-CN", + "ii", + "in-ID", + "in", + "is-IS", + "is", + "it-CH", + "it-IT", + "it-SM", + "it", + "it-VA", + "iw-IL", + "iw", + "ja-JP", + "ja", + "jgo-CM", + "jgo", + "jmc", + "jmc-TZ", + "jv-ID", + "jv", + "kab-DZ", + "kab", + "ka-GE", + "kam-KE", + "kam", + "ka", + "kde", + "kde-TZ", + "kea-CV", + "kea", + "khq-ML", + "khq", + "ki-KE", + "ki", + "kkj-CM", + "kkj", + "kk-KZ", + "kk", + "kl-GL", + "kln-KE", + "kln", + "kl", + "km-KH", + "km", + "kn-IN", + "kn", + "kok-IN", + "ko-KP", + "ko-KR", + "kok", + "ko", + "ksb", + "ksb-TZ", + "ksf-CM", + "ksf", + "ksh-DE", + "ksh", + "ks-IN", + "ks", + "ku-TR", + "ku", + "kw-GB", + "kw", + "ky-KG", + "ky", + "lag", + "lag-TZ", + "lb-LU", + "lb", + "lg", + "lg-UG", + "lkt", + "lkt-US", + "ln-AO", + "ln-CD", + "ln-CF", + "ln-CG", + "ln", + "lo-LA", + "lo", + "lrc-IQ", + "lrc-IR", + "lrc", + "lt-LT", + "lt", + "lu-CD", + "luo-KE", + "luo", + "lu", + "luy-KE", + "luy", + "lv-LV", + "lv", + "mas-KE", + "mas", + "mas-TZ", + "mer-KE", + "mer", + "mfe-MU", + "mfe", + "mgh-MZ", + "mgh", + "mg-MG", + "mgo-CM", + "mgo", + "mg", + "mi-NZ", + "mi", + "mk-MK", + "mk", + "ml-IN", + "ml", + "mn-MN", + "mn", + "mo", + "mr-IN", + "mr", + "ms-BN", + "ms-MY", + "ms-SG", + "ms", + "mt-MT", + "mt", + "mua-CM", + "mua", + "my-MM", + "my", + "mzn-IR", + "mzn", + "naq-NA", + "naq", + "nb-NO", + "nb-SJ", + "nb", + "nds-DE", + "nds-NL", + "nds", + "nd", + "nd-ZW", + "ne-IN", + "ne-NP", + "ne", + "nl-AW", + "nl-BE", + "nl-BQ", + "nl-CW", + "nl-NL", + "nl-SR", + "nl-SX", + "nl", + "nmg-CM", + "nmg", + "nnh-CM", + "nnh", + "nn-NO", + "nn", + "no-NY", + "no-NO", + "no", + "nus-SS", + "nus", + "nyn", + "nyn-UG", + "om-ET", + "om-KE", + "om", + "or-IN", + "or", + "os-GE", + "os-RU", + "os", + "pa-Arab-PK", + "pa-Arab", + "pa-Guru-IN", + "pa-Guru", + "pa-IN", + "pa-PK", + "pa", + "pl-PL", + "pl", + "ps-AF", + "ps", + "pt-AO", + "pt-BR", + "pt-CH", + "pt-CV", + "pt-GQ", + "pt-GW", + "pt-LU", + "pt-MO", + "pt-MZ", + "pt-PT", + "pt-ST", + "pt-TL", + "pt", + "qu-BO", + "qu-EC", + "qu-PE", + "qu", + "rm-CH", + "rm", + "rn-BI", + "rn", + "rof", + "rof-TZ", + "ro-MD", + "root", + "ro-RO", + "ro", + "ru-BY", + "ru-KG", + "ru-KZ", + "ru-MD", + "ru-RU", + "ru", + "ru-UA", + "rwk", + "rwk-TZ", + "rw-RW", + "rw", + "sah-RU", + "sah", + "saq-KE", + "saq", + "sbp", + "sbp-TZ", + "sd-PK", + "sd", + "se-FI", + "seh-MZ", + "seh", + "se-NO", + "se-SE", + "ses-ML", + "ses", + "se", + "sg-CF", + "sg", + "sh-BA", + "sh-CS", + "shi-Latn-MA", + "shi-Latn", + "shi-MA", + "shi-Tfng-MA", + "shi-Tfng", + "shi", + "sh", + "sh-YU", + "si-LK", + "si", + "sk-SK", + "sk", + "sl-SI", + "sl", + "smn-FI", + "smn", + "sn", + "sn-ZW", + "so-DJ", + "so-ET", + "so-KE", + "so-SO", + "so", + "sq-AL", + "sq-MK", + "sq", + "sq-XK", + "sr-BA", + "sr-CS", + "sr-Cyrl-BA", + "sr-Cyrl-CS", + "sr-Cyrl-ME", + "sr-Cyrl-RS", + "sr-Cyrl", + "sr-Cyrl-XK", + "sr-Cyrl-YU", + "sr-Latn-BA", + "sr-Latn-CS", + "sr-Latn-ME", + "sr-Latn-RS", + "sr-Latn", + "sr-Latn-XK", + "sr-Latn-YU", + "sr-ME", + "sr-RS", + "sr", + "sr-XK", + "sr-YU", + "sv-AX", + "sv-FI", + "sv-SE", + "sv", + "sw-CD", + "sw-KE", + "sw", + "sw-TZ", + "sw-UG", + "ta-IN", + "ta-LK", + "ta-MY", + "ta-SG", + "ta", + "te-IN", + "teo-KE", + "teo", + "teo-UG", + "te", + "tg-TJ", + "tg", + "th-TH", + "th", + "ti-ER", + "ti-ET", + "ti", + "tk-TM", + "tk", + "tl-PH", + "tl", + "to-TO", + "to", + "tr-CY", + "tr-TR", + "tr", + "tt-RU", + "tt", + "twq-NE", + "twq", + "tzm-MA", + "tzm", + "ug-CN", + "ug", + "uk", + "uk-UA", + "ur-IN", + "ur-PK", + "ur", + "uz-AF", + "uz-Arab-AF", + "uz-Arab", + "uz-Cyrl", + "uz-Cyrl-UZ", + "uz-Latn", + "uz-Latn-UZ", + "uz", + "uz-UZ", + "vai-Latn-LR", + "vai-Latn", + "vai-LR", + "vai", + "vai-Vaii-LR", + "vai-Vaii", + "vi", + "vi-VN", + "vun", + "vun-TZ", + "wae-CH", + "wae", + "wa", + "wo-SN", + "wo", + "xh", + "xh-ZA", + "xog", + "xog-UG", + "yav-CM", + "yav", + "yi-001", + "yi", + "yo-BJ", + "yo-NG", + "yo", + "yue-CN", + "yue-Hans-CN", + "yue-Hans", + "yue-Hant-HK", + "yue-Hant", + "yue-HK", + "yue", + "zgh-MA", + "zgh", + "zh-CN", + "zh-Hans-CN", + "zh-Hans-HK", + "zh-Hans-MO", + "zh-Hans-SG", + "zh-Hans", + "zh-Hant-HK", + "zh-Hant-MO", + "zh-Hant-TW", + "zh-Hant", + "zh-HK", + "zh-MO", + "zh-SG", + "zh-TW", + "zh", + "zu", + "zu-ZA" +]; + +var intlObjectNames = [ + "DateTimeFormat", + "NumberFormat", + "Collator", + "v8BreakIterator", + "PluralRules", + "Locale", + "ListFormat", + "Segmenter", + "RelativeTimeFormat" +]; + +for (let loc of locales) { + for (let constructor of intlObjectNames) { + let msg = `new Intl.${constructor}(${loc})`; + print(msg); + let obj = new Intl[constructor](loc); + assertNotNull(obj, msg + ' should not be null'); + } +} diff --git a/implementation-contributed/v8/mjsunit/arrow-with.js b/implementation-contributed/v8/mjsunit/arrow-with.js new file mode 100644 index 0000000000..a1f97afa38 --- /dev/null +++ b/implementation-contributed/v8/mjsunit/arrow-with.js @@ -0,0 +1,7 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +function f() { with ({}) { return (()=>this)() } } +var o = {} +assertEquals(o, f.call(o)) diff --git a/implementation-contributed/v8/mjsunit/compiler/osr-assert.js b/implementation-contributed/v8/mjsunit/compiler/osr-assert.js index 94b901fd4f..c67ad536ad 100644 --- a/implementation-contributed/v8/mjsunit/compiler/osr-assert.js +++ b/implementation-contributed/v8/mjsunit/compiler/osr-assert.js @@ -25,17 +25,20 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// Flags: --use-osr +// Flags: --use-osr --allow-natives-syntax function f(x, b, c) { - var outer = 1000000; + var outer = 10; var a = 1; while (outer > 0) { a = a + 5; assertEquals(b + 1, c); outer--; + if (outer === 5) { + %OptimizeOsr(); + } } return a + 4; } -assertEquals(5000005, f(5, "122", "1221")); +assertEquals(55, f(5, "122", "1221")); diff --git a/implementation-contributed/v8/mjsunit/es9/object-spread-ic.js b/implementation-contributed/v8/mjsunit/es9/object-spread-ic.js index d76ffd4eb8..55d60f2cf8 100644 --- a/implementation-contributed/v8/mjsunit/es9/object-spread-ic.js +++ b/implementation-contributed/v8/mjsunit/es9/object-spread-ic.js @@ -99,3 +99,25 @@ // Megamorphic assertEquals({ boop: 1 }, f({ boop: 1 })); })(); + +// There are 2 paths in CloneObjectIC's handler which need to handle double +// fields specially --- in object properties, and copying the property array. +function testMutableInlineProperties() { + function inobject() { "use strict"; this.x = 1.1; } + const src = new inobject(); + const x0 = src.x; + const clone = { ...src, x: x0 + 1 }; + assertEquals(x0, src.x); + assertEquals({ x: 2.1 }, clone); +} +testMutableInlineProperties() + +function testMutableOutOfLineProperties() { + const src = { a: 1, b: 2, c: 3 }; + src.x = 2.3; + const x0 = src.x; + const clone = { ...src, x: x0 + 1 }; + assertEquals(x0, src.x); + assertEquals({ a: 1, b: 2, c: 3, x: 3.3 }, clone); +} +testMutableOutOfLineProperties(); diff --git a/implementation-contributed/v8/mjsunit/mjsunit.status b/implementation-contributed/v8/mjsunit/mjsunit.status index a6d80b0553..e279bc8b50 100644 --- a/implementation-contributed/v8/mjsunit/mjsunit.status +++ b/implementation-contributed/v8/mjsunit/mjsunit.status @@ -86,7 +86,7 @@ # Issue 488: this test sometimes times out. # TODO(arm): This seems to flush out a bug on arm with simulator. - 'array-constructor': [PASS, SLOW, ['arch == arm and simulator == True', SKIP]], + 'array-constructor': [PASS, SLOW, ['arch == arm and simulator_run == True', SKIP]], # Very slow test 'regress/regress-crbug-808192' : [PASS, SLOW, NO_VARIANTS, ['mode == debug or arch == arm or arch == arm64 or arch == android_arm or arch == android_arm64 or arch == mipsel or arch == mips64el or arch == mips64 or arch == mips or arch == s390 or arch == s390x or arch == ppc or arch == ppc64', SKIP]], @@ -368,7 +368,6 @@ 'array-splice': [PASS, SLOW], 'bit-not': [PASS, SLOW], 'compiler/alloc-number': [PASS, SLOW], - 'compiler/osr-assert': [PASS, SLOW], 'compiler/osr-with-args': [PASS, SLOW], 'generated-transition-stub': [PASS, SLOW], 'json2': [PASS, SLOW], @@ -774,8 +773,8 @@ 'regress/regress-91008': [PASS, SLOW], 'harmony/regexp-property-lu-ui': [PASS, SLOW], 'whitespaces': [PASS, SLOW], - 'wasm/atomics-stress': [PASS, SLOW], - 'wasm/atomics64-stress': [PASS, SLOW], + 'wasm/atomics-stress': [SKIP], + 'wasm/atomics64-stress': [SKIP], }], # 'simulator_run and (arch == ppc or arch == ppc64 or arch == s390 or arch == s390x)' ##############################################################################