Index: src/js/i18n.js |
diff --git a/src/js/i18n.js b/src/js/i18n.js |
index dbc0d389aa2bc8a681034c109f36d47b04c0e27a..6d38a3f2db194c5c1f262dbfa4d0b88599f3f7af 100644 |
--- a/src/js/i18n.js |
+++ b/src/js/i18n.js |
@@ -718,7 +718,6 @@ |
/** |
* Canonicalizes the language tag, or throws in case the tag is invalid. |
- * ECMA 402 9.2.1 steps 7.c ii ~ v. |
*/ |
function canonicalizeLanguageTag(localeID) { |
// null is typeof 'object' so we have to do extra check. |
@@ -736,14 +735,11 @@ |
var localeString = TO_STRING(localeID); |
- if (isStructuallyValidLanguageTag(localeString) === false) { |
+ if (isValidLanguageTag(localeString) === false) { |
throw %make_range_error(kInvalidLanguageTag, localeString); |
} |
- // ECMA 402 6.2.3 |
var tag = %CanonicalizeLanguageTag(localeString); |
- // TODO(jshin): This should not happen because the structual validity |
- // is already checked. If that's the case, remove this. |
if (tag === 'invalid-tag') { |
throw %make_range_error(kInvalidLanguageTag, localeString); |
} |
@@ -755,7 +751,6 @@ |
/** |
* Returns an array where all locales are canonicalized and duplicates removed. |
* Throws on locales that are not well formed BCP47 tags. |
- * ECMA 402 8.2.1 steps 1 and 2. |
*/ |
function initializeLocaleList(locales) { |
var seen = new InternalArray(); |
@@ -787,22 +782,15 @@ |
/** |
- * Check the structual Validity of the language tag per ECMA 402 6.2.2: |
- * - Well-formed per RFC 5646 2.1 |
- * - There are no duplicate variant subtags |
- * - There are no duplicate singletion (extension) subtags |
- * |
- * One extra-check is done (from RFC 5646 2.2.9): the tag is compared |
- * against the list of grandfathered tags. However, subtags for |
- * primary/extended language, script, region, variant are not checked |
- * against the IANA language subtag registry. |
+ * Validates the language tag. Section 2.2.9 of the bcp47 spec |
+ * defines a valid tag. |
* |
* ICU is too permissible and lets invalid tags, like |
* hant-cmn-cn, through. |
* |
* Returns false if the language tag is invalid. |
*/ |
-function isStructuallyValidLanguageTag(locale) { |
+function isValidLanguageTag(locale) { |
// Check if it's well-formed, including grandfadered tags. |
if (IS_NULL(InternalRegExpMatch(GetLanguageTagRE(), locale))) { |
return false; |
@@ -896,16 +884,6 @@ |
this[resolvedSymbol] = value; |
} |
}; |
- |
-// ECMA 402 section 8.2.1 |
-InstallFunction(Intl, 'getCanonicalLocales', function(locales) { |
- if (!IS_UNDEFINED(new.target)) { |
- throw %make_type_error(kOrdinaryFunctionCalledAsConstructor); |
- } |
- |
- return initializeLocaleList(locales); |
- } |
-); |
/** |
* Initializes the given object so it's a valid Collator instance. |