| Index: src/i18n.js
|
| diff --git a/src/i18n.js b/src/i18n.js
|
| index edfb065c9c998afd12ec059c04b30532289592bb..2e5485749ae766fc469c8cd52c8257fe5b57e7b4 100644
|
| --- a/src/i18n.js
|
| +++ b/src/i18n.js
|
| @@ -232,7 +232,8 @@ var ORDINARY_FUNCTION_CALLED_AS_CONSTRUCTOR =
|
| */
|
| function addBoundMethod(obj, methodName, implementation, length) {
|
| function getter() {
|
| - if (!%IsInitializedIntlObject(this)) {
|
| + if (!this || typeof this !== 'object' ||
|
| + this.__initializedIntlObject === undefined) {
|
| throw new $TypeError('Method ' + methodName + ' called on a ' +
|
| 'non-object or on a wrong type of object.');
|
| }
|
| @@ -895,7 +896,7 @@ function BuildLanguageTagREs() {
|
| * Useful for subclassing.
|
| */
|
| function initializeCollator(collator, locales, options) {
|
| - if (%IsInitializedIntlObject(collator)) {
|
| + if (collator.hasOwnProperty('__initializedIntlObject')) {
|
| throw new $TypeError('Trying to re-initialize Collator object.');
|
| }
|
|
|
| @@ -966,7 +967,9 @@ function initializeCollator(collator, locales, options) {
|
| resolved);
|
|
|
| // Writable, configurable and enumerable are set to false by default.
|
| - %MarkAsInitializedIntlObjectOfType(collator, 'collator', internalCollator);
|
| + $Object.defineProperty(collator, 'collator', {value: internalCollator});
|
| + $Object.defineProperty(collator, '__initializedIntlObject',
|
| + {value: 'collator'});
|
| $Object.defineProperty(collator, 'resolved', {value: resolved});
|
|
|
| return collator;
|
| @@ -1002,7 +1005,8 @@ function initializeCollator(collator, locales, options) {
|
| throw new $TypeError(ORDINARY_FUNCTION_CALLED_AS_CONSTRUCTOR);
|
| }
|
|
|
| - if (!%IsInitializedIntlObjectOfType(this, 'collator')) {
|
| + if (!this || typeof this !== 'object' ||
|
| + this.__initializedIntlObject !== 'collator') {
|
| throw new $TypeError('resolvedOptions method called on a non-object ' +
|
| 'or on a object that is not Intl.Collator.');
|
| }
|
| @@ -1059,8 +1063,7 @@ function initializeCollator(collator, locales, options) {
|
| * the sort order, or x comes after y in the sort order, respectively.
|
| */
|
| function compare(collator, x, y) {
|
| - return %InternalCompare(%GetImplFromInitializedIntlObject(collator),
|
| - $String(x), $String(y));
|
| + return %InternalCompare(collator.collator, $String(x), $String(y));
|
| };
|
|
|
|
|
| @@ -1101,7 +1104,7 @@ function getNumberOption(options, property, min, max, fallback) {
|
| * Useful for subclassing.
|
| */
|
| function initializeNumberFormat(numberFormat, locales, options) {
|
| - if (%IsInitializedIntlObject(numberFormat)) {
|
| + if (numberFormat.hasOwnProperty('__initializedIntlObject')) {
|
| throw new $TypeError('Trying to re-initialize NumberFormat object.');
|
| }
|
|
|
| @@ -1193,8 +1196,10 @@ function initializeNumberFormat(numberFormat, locales, options) {
|
| writable: true});
|
| }
|
|
|
| - %MarkAsInitializedIntlObjectOfType(numberFormat, 'numberformat', formatter);
|
| + $Object.defineProperty(numberFormat, 'formatter', {value: formatter});
|
| $Object.defineProperty(numberFormat, 'resolved', {value: resolved});
|
| + $Object.defineProperty(numberFormat, '__initializedIntlObject',
|
| + {value: 'numberformat'});
|
|
|
| return numberFormat;
|
| }
|
| @@ -1229,7 +1234,8 @@ function initializeNumberFormat(numberFormat, locales, options) {
|
| throw new $TypeError(ORDINARY_FUNCTION_CALLED_AS_CONSTRUCTOR);
|
| }
|
|
|
| - if (!%IsInitializedIntlObjectOfType(this, 'numberformat')) {
|
| + if (!this || typeof this !== 'object' ||
|
| + this.__initializedIntlObject !== 'numberformat') {
|
| throw new $TypeError('resolvedOptions method called on a non-object' +
|
| ' or on a object that is not Intl.NumberFormat.');
|
| }
|
| @@ -1303,8 +1309,7 @@ function formatNumber(formatter, value) {
|
| // Spec treats -0 and +0 as 0.
|
| var number = $Number(value) + 0;
|
|
|
| - return %InternalNumberFormat(%GetImplFromInitializedIntlObject(formatter),
|
| - number);
|
| + return %InternalNumberFormat(formatter.formatter, number);
|
| }
|
|
|
|
|
| @@ -1312,8 +1317,7 @@ function formatNumber(formatter, value) {
|
| * Returns a Number that represents string value that was passed in.
|
| */
|
| function parseNumber(formatter, value) {
|
| - return %InternalNumberParse(%GetImplFromInitializedIntlObject(formatter),
|
| - $String(value));
|
| + return %InternalNumberParse(formatter.formatter, $String(value));
|
| }
|
|
|
|
|
| @@ -1526,7 +1530,7 @@ function toDateTimeOptions(options, required, defaults) {
|
| */
|
| function initializeDateTimeFormat(dateFormat, locales, options) {
|
|
|
| - if (%IsInitializedIntlObject(dateFormat)) {
|
| + if (dateFormat.hasOwnProperty('__initializedIntlObject')) {
|
| throw new $TypeError('Trying to re-initialize DateTimeFormat object.');
|
| }
|
|
|
| @@ -1588,8 +1592,10 @@ function initializeDateTimeFormat(dateFormat, locales, options) {
|
| throw new $RangeError('Unsupported time zone specified ' + tz);
|
| }
|
|
|
| - %MarkAsInitializedIntlObjectOfType(dateFormat, 'dateformat', formatter);
|
| + $Object.defineProperty(dateFormat, 'formatter', {value: formatter});
|
| $Object.defineProperty(dateFormat, 'resolved', {value: resolved});
|
| + $Object.defineProperty(dateFormat, '__initializedIntlObject',
|
| + {value: 'dateformat'});
|
|
|
| return dateFormat;
|
| }
|
| @@ -1624,7 +1630,8 @@ function initializeDateTimeFormat(dateFormat, locales, options) {
|
| throw new $TypeError(ORDINARY_FUNCTION_CALLED_AS_CONSTRUCTOR);
|
| }
|
|
|
| - if (!%IsInitializedIntlObjectOfType(this, 'dateformat')) {
|
| + if (!this || typeof this !== 'object' ||
|
| + this.__initializedIntlObject !== 'dateformat') {
|
| throw new $TypeError('resolvedOptions method called on a non-object or ' +
|
| 'on a object that is not Intl.DateTimeFormat.');
|
| }
|
| @@ -1706,8 +1713,7 @@ function formatDate(formatter, dateValue) {
|
| throw new $RangeError('Provided date is not in valid range.');
|
| }
|
|
|
| - return %InternalDateFormat(%GetImplFromInitializedIntlObject(formatter),
|
| - new $Date(dateMs));
|
| + return %InternalDateFormat(formatter.formatter, new $Date(dateMs));
|
| }
|
|
|
|
|
| @@ -1718,8 +1724,7 @@ function formatDate(formatter, dateValue) {
|
| * Returns undefined if date string cannot be parsed.
|
| */
|
| function parseDate(formatter, value) {
|
| - return %InternalDateParse(%GetImplFromInitializedIntlObject(formatter),
|
| - $String(value));
|
| + return %InternalDateParse(formatter.formatter, $String(value));
|
| }
|
|
|
|
|
| @@ -1767,7 +1772,7 @@ function canonicalizeTimeZoneID(tzID) {
|
| * Useful for subclassing.
|
| */
|
| function initializeBreakIterator(iterator, locales, options) {
|
| - if (%IsInitializedIntlObject(iterator)) {
|
| + if (iterator.hasOwnProperty('__initializedIntlObject')) {
|
| throw new $TypeError('Trying to re-initialize v8BreakIterator object.');
|
| }
|
|
|
| @@ -1793,9 +1798,10 @@ function initializeBreakIterator(iterator, locales, options) {
|
| internalOptions,
|
| resolved);
|
|
|
| - %MarkAsInitializedIntlObjectOfType(iterator, 'breakiterator',
|
| - internalIterator);
|
| + $Object.defineProperty(iterator, 'iterator', {value: internalIterator});
|
| $Object.defineProperty(iterator, 'resolved', {value: resolved});
|
| + $Object.defineProperty(iterator, '__initializedIntlObject',
|
| + {value: 'breakiterator'});
|
|
|
| return iterator;
|
| }
|
| @@ -1830,7 +1836,8 @@ function initializeBreakIterator(iterator, locales, options) {
|
| throw new $TypeError(ORDINARY_FUNCTION_CALLED_AS_CONSTRUCTOR);
|
| }
|
|
|
| - if (!%IsInitializedIntlObjectOfType(this, 'breakiterator')) {
|
| + if (!this || typeof this !== 'object' ||
|
| + this.__initializedIntlObject !== 'breakiterator') {
|
| throw new $TypeError('resolvedOptions method called on a non-object or ' +
|
| 'on a object that is not Intl.v8BreakIterator.');
|
| }
|
| @@ -1877,8 +1884,7 @@ function initializeBreakIterator(iterator, locales, options) {
|
| * gets discarded.
|
| */
|
| function adoptText(iterator, text) {
|
| - %BreakIteratorAdoptText(%GetImplFromInitializedIntlObject(iterator),
|
| - $String(text));
|
| + %BreakIteratorAdoptText(iterator.iterator, $String(text));
|
| }
|
|
|
|
|
| @@ -1886,7 +1892,7 @@ function adoptText(iterator, text) {
|
| * Returns index of the first break in the string and moves current pointer.
|
| */
|
| function first(iterator) {
|
| - return %BreakIteratorFirst(%GetImplFromInitializedIntlObject(iterator));
|
| + return %BreakIteratorFirst(iterator.iterator);
|
| }
|
|
|
|
|
| @@ -1894,7 +1900,7 @@ function first(iterator) {
|
| * Returns the index of the next break and moves the pointer.
|
| */
|
| function next(iterator) {
|
| - return %BreakIteratorNext(%GetImplFromInitializedIntlObject(iterator));
|
| + return %BreakIteratorNext(iterator.iterator);
|
| }
|
|
|
|
|
| @@ -1902,7 +1908,7 @@ function next(iterator) {
|
| * Returns index of the current break.
|
| */
|
| function current(iterator) {
|
| - return %BreakIteratorCurrent(%GetImplFromInitializedIntlObject(iterator));
|
| + return %BreakIteratorCurrent(iterator.iterator);
|
| }
|
|
|
|
|
| @@ -1910,7 +1916,7 @@ function current(iterator) {
|
| * Returns type of the current break.
|
| */
|
| function breakType(iterator) {
|
| - return %BreakIteratorBreakType(%GetImplFromInitializedIntlObject(iterator));
|
| + return %BreakIteratorBreakType(iterator.iterator);
|
| }
|
|
|
|
|
|
|