diff options
Diffstat (limited to 'chromium/v8/src/harmony-string.js')
-rw-r--r-- | chromium/v8/src/harmony-string.js | 69 |
1 files changed, 26 insertions, 43 deletions
diff --git a/chromium/v8/src/harmony-string.js b/chromium/v8/src/harmony-string.js index 8e4b9a46264..4cd8e6687ed 100644 --- a/chromium/v8/src/harmony-string.js +++ b/chromium/v8/src/harmony-string.js @@ -1,29 +1,6 @@ -// Copyright 2013 the V8 project authors. All rights reserved. -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// Copyright 2014 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. 'use strict'; @@ -34,12 +11,9 @@ // ------------------------------------------------------------------- -// ES6 draft 07-15-13, section 15.5.3.21 +// ES6 draft 01-20-14, section 21.1.3.13 function StringRepeat(count) { - if (IS_NULL_OR_UNDEFINED(this) && !IS_UNDETECTABLE(this)) { - throw MakeTypeError("called_on_null_or_undefined", - ["String.prototype.repeat"]); - } + CHECK_OBJECT_COERCIBLE(this, "String.prototype.repeat"); var s = TO_STRING_INLINE(this); var n = ToInteger(count); @@ -56,14 +30,17 @@ function StringRepeat(count) { } -// ES6 draft 07-15-13, section 15.5.3.22 +// ES6 draft 04-05-14, section 21.1.3.18 function StringStartsWith(searchString /* position */) { // length == 1 - if (IS_NULL_OR_UNDEFINED(this) && !IS_UNDETECTABLE(this)) { - throw MakeTypeError("called_on_null_or_undefined", + CHECK_OBJECT_COERCIBLE(this, "String.prototype.startsWith"); + + var s = TO_STRING_INLINE(this); + + if (IS_REGEXP(searchString)) { + throw MakeTypeError("first_argument_not_regexp", ["String.prototype.startsWith"]); } - var s = TO_STRING_INLINE(this); var ss = TO_STRING_INLINE(searchString); var pos = 0; if (%_ArgumentsLength() > 1) { @@ -82,14 +59,17 @@ function StringStartsWith(searchString /* position */) { // length == 1 } -// ES6 draft 07-15-13, section 15.5.3.23 +// ES6 draft 04-05-14, section 21.1.3.7 function StringEndsWith(searchString /* position */) { // length == 1 - if (IS_NULL_OR_UNDEFINED(this) && !IS_UNDETECTABLE(this)) { - throw MakeTypeError("called_on_null_or_undefined", + CHECK_OBJECT_COERCIBLE(this, "String.prototype.endsWith"); + + var s = TO_STRING_INLINE(this); + + if (IS_REGEXP(searchString)) { + throw MakeTypeError("first_argument_not_regexp", ["String.prototype.endsWith"]); } - var s = TO_STRING_INLINE(this); var ss = TO_STRING_INLINE(searchString); var s_len = s.length; var pos = s_len; @@ -111,14 +91,17 @@ function StringEndsWith(searchString /* position */) { // length == 1 } -// ES6 draft 07-15-13, section 15.5.3.24 +// ES6 draft 04-05-14, section 21.1.3.6 function StringContains(searchString /* position */) { // length == 1 - if (IS_NULL_OR_UNDEFINED(this) && !IS_UNDETECTABLE(this)) { - throw MakeTypeError("called_on_null_or_undefined", + CHECK_OBJECT_COERCIBLE(this, "String.prototype.contains"); + + var s = TO_STRING_INLINE(this); + + if (IS_REGEXP(searchString)) { + throw MakeTypeError("first_argument_not_regexp", ["String.prototype.contains"]); } - var s = TO_STRING_INLINE(this); var ss = TO_STRING_INLINE(searchString); var pos = 0; if (%_ArgumentsLength() > 1) { |