[Intl] Convert options arg to Object before processing it
This makes us spec compliant. Bug: chromium:875643 Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng Change-Id: I489870495fe1d326991c99f0551fe3329268c984 Reviewed-on: https://chromium-review.googlesource.com/1199910 Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org> Reviewed-by: Adam Klein <adamk@chromium.org> Cr-Commit-Position: refs/heads/master@{#55567}
This commit is contained in:
parent
e56bf9f45e
commit
992a4f61ed
@ -621,6 +621,8 @@ function SetNumberFormatDigitOptions(internalOptions, options,
|
||||
function CreateNumberFormat(locales, options) {
|
||||
if (IS_UNDEFINED(options)) {
|
||||
options = {__proto__: null};
|
||||
} else {
|
||||
options = TO_OBJECT(options);
|
||||
}
|
||||
|
||||
var getOption = getGetOption(options, 'numberformat');
|
||||
|
13
test/intl/number-format/options.js
Normal file
13
test/intl/number-format/options.js
Normal file
@ -0,0 +1,13 @@
|
||||
// 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.
|
||||
|
||||
assertThrows(() => new Intl.NumberFormat('en', null));
|
||||
assertDoesNotThrow(() => new Intl.NumberFormat('en', undefined));
|
||||
|
||||
for (let key of [false, true, "foo", Symbol, 1]) {
|
||||
assertDoesNotThrow(() => new Intl.NumberFormat('en', key));
|
||||
}
|
||||
|
||||
assertDoesNotThrow(() => new Intl.NumberFormat('en', {}));
|
||||
assertDoesNotThrow(() => new Intl.NumberFormat('en', new Proxy({}, {})));
|
5
test/intl/regress-875643.js
Normal file
5
test/intl/regress-875643.js
Normal file
@ -0,0 +1,5 @@
|
||||
// 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.
|
||||
|
||||
new Intl.NumberFormat(undefined, false)
|
Loading…
Reference in New Issue
Block a user