Skip to content

Commit

Permalink
Merged: [Intl] Fix numberingSystem for NumberFormat
Browse files Browse the repository at this point in the history
Revision: 157af78

BUG=v8:8525
LOG=N
NOTRY=true
NOPRESUBMIT=true
NOTREECHECKS=true
[email protected]

Change-Id: I56787a43596dce96f78d33de9aba0a369428fd17
Reviewed-on: https://chromium-review.googlesource.com/c/1370012
Reviewed-by: Adam Klein <[email protected]>
Cr-Commit-Position: refs/branch-heads/7.2@{v8#17}
Cr-Branched-From: 6acd03c-refs/heads/7.2.502@{#1}
Cr-Branched-From: b03041d-refs/heads/master@{#57910}
  • Loading branch information
FrankYFTang committed Dec 10, 2018
1 parent d62c730 commit e7ceacc
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 8 deletions.
7 changes: 2 additions & 5 deletions src/objects/intl-objects.cc
Original file line number Diff line number Diff line change
Expand Up @@ -395,11 +395,8 @@ std::string Intl::GetNumberingSystem(const icu::Locale& icu_locale) {
UErrorCode status = U_ZERO_ERROR;
std::unique_ptr<icu::NumberingSystem> numbering_system(
icu::NumberingSystem::createInstance(icu_locale, status));
std::string value;
if (U_SUCCESS(status)) {
value = numbering_system->getName();
}
return value;
if (U_SUCCESS(status)) return numbering_system->getName();
return "latn";
}

icu::Locale Intl::CreateICULocale(const std::string& bcp47_locale) {
Expand Down
5 changes: 2 additions & 3 deletions src/objects/js-number-format.cc
Original file line number Diff line number Diff line change
Expand Up @@ -90,9 +90,8 @@ Handle<JSObject> JSNumberFormat::ResolvedOptions(
Handle<String> locale =
Handle<String>(number_format_holder->locale(), isolate);

UErrorCode error = U_ZERO_ERROR;
icu::Locale icu_locale = number_format->getLocale(ULOC_VALID_LOCALE, error);
DCHECK(U_SUCCESS(error));
std::unique_ptr<char[]> locale_str = locale->ToCString();
icu::Locale icu_locale = Intl::CreateICULocale(locale_str.get());

std::string numbering_system = Intl::GetNumberingSystem(icu_locale);

Expand Down
27 changes: 27 additions & 0 deletions test/intl/regress-8525.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
// 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.

// test the numberingSystem is set correctly via -u-nu-
let dtf = new Intl.DateTimeFormat(["en-u-ba-rfoo-nu-arab-fo-obar"]);
assertEquals("arab", dtf.resolvedOptions().numberingSystem);
assertEquals("en-u-nu-arab", dtf.resolvedOptions().locale);

let nf = new Intl.NumberFormat(["en-u-ba-rfoo-nu-arab-fo-obar"]);
assertEquals("arab", nf.resolvedOptions().numberingSystem);
assertEquals("١٢٣", nf.format(123));
assertEquals("en-u-nu-arab", nf.resolvedOptions().locale);

dtf = new Intl.DateTimeFormat(["en-u-ba-rfoo-nu-thai-fo-obar"]);
assertEquals("thai", dtf.resolvedOptions().numberingSystem);
assertEquals("en-u-nu-thai", dtf.resolvedOptions().locale);

nf = new Intl.NumberFormat(["en-u-ba-rfoo-nu-thai-fo-obar"]);
assertEquals("thai", nf.resolvedOptions().numberingSystem);
assertEquals("๑๒๓", nf.format(123));
assertEquals("en-u-nu-thai", nf.resolvedOptions().locale);

nf = new Intl.NumberFormat(["ar-EG-u-nu-latn"]);
assertEquals("latn", nf.resolvedOptions().numberingSystem);
assertEquals("123", nf.format(123));
assertEquals("ar-EG-u-nu-latn", nf.resolvedOptions().locale);

0 comments on commit e7ceacc

Please sign in to comment.