Index: src/js/icu-case-mapping.js |
diff --git a/src/js/icu-case-mapping.js b/src/js/icu-case-mapping.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..d9abbb1ea83d6bc79bed11545a78be41d08565e3 |
--- /dev/null |
+++ b/src/js/icu-case-mapping.js |
@@ -0,0 +1,57 @@ |
+// Copyright 2016 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(global, utils) { |
+"use strict"; |
+ |
+%CheckIsBootstrapping(); |
+ |
+var GlobalString = global.String; |
+var OverrideFunction = utils.OverrideFunction; |
+var MakeTypeError; |
+var LocaleConvertCase = utils.ImportNow("LocaleConvertCase"); |
Dan Ehrenberg
2016/05/04 00:13:08
Rather than using ImportNow (generally dispreferre
jungshik at Google
2016/05/04 19:02:58
Done.
|
+ |
+utils.Import(function(from) { |
+ MakeTypeError = from.MakeTypeError; |
+}); |
+ |
+OverrideFunction(GlobalString.prototype, 'toLowerCase', function() { |
jungshik at Google
2016/05/04 19:02:58
offline, you're worried about actually defining fu
Dan Ehrenberg
2016/05/04 19:06:37
That's what I was suggesting, though if you found
|
+ if (!IS_UNDEFINED(new.target)) { |
+ throw MakeTypeError(kOrdinaryFunctionCalledAsConstructor); |
+ } |
+ CHECK_OBJECT_COERCIBLE(this, "String.prototype.toLowerCase"); |
+ var s = TO_STRING(this); |
+ return %StringToLowerCaseI18N(s); |
+ } |
+); |
+ |
+OverrideFunction(GlobalString.prototype, 'toUpperCase', function() { |
+ if (!IS_UNDEFINED(new.target)) { |
+ throw MakeTypeError(kOrdinaryFunctionCalledAsConstructor); |
+ } |
+ CHECK_OBJECT_COERCIBLE(this, "String.prototype.toLowerCase"); |
+ var s = TO_STRING(this); |
+ return %StringToUpperCaseI18N(s); |
+ } |
+); |
+ |
+OverrideFunction(GlobalString.prototype, 'toLocaleLowerCase', function() { |
+ if (!IS_UNDEFINED(new.target)) { |
+ throw MakeTypeError(kOrdinaryFunctionCalledAsConstructor); |
+ } |
+ CHECK_OBJECT_COERCIBLE(this, "String.prototype.toLocaleLowerCase"); |
+ return LocaleConvertCase(TO_STRING(this), arguments[0], false); |
+ } |
+); |
+ |
+OverrideFunction(GlobalString.prototype, 'toLocaleUpperCase', function() { |
+ if (!IS_UNDEFINED(new.target)) { |
+ throw MakeTypeError(kOrdinaryFunctionCalledAsConstructor); |
+ } |
+ CHECK_OBJECT_COERCIBLE(this, "String.prototype.toLocaleUpperCase"); |
+ return LocaleConvertCase(TO_STRING(this), arguments[0], true); |
+ } |
+); |
+ |
+}) |