[es6] Bound function names
https://people.mozilla.org/~jorendorff/es6-draft.html#sec-function.prototype.bind
Bound functions should have a name based on the function that was
bound.
This reverts the revert f2747ed9b4
. The original
CL was reverted because the Blink layout test broke. I have a CL that disables
these tests at: https://codereview.chromium.org/1196753003/
BUG=N
LOG=N
R=adamk
CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_chromium_rel_ng;tryserver.blink:linux_blink_rel
Review URL: https://codereview.chromium.org/1195983002
Cr-Commit-Position: refs/heads/master@{#29193}
This commit is contained in:
parent
e7cdb615ae
commit
b6d950c979
@ -21,6 +21,7 @@ var GlobalFunction = global.Function;
|
||||
var GlobalNumber = global.Number;
|
||||
var GlobalObject = global.Object;
|
||||
var InternalArray = utils.InternalArray;
|
||||
var SetFunctionName = utils.SetFunctionName;
|
||||
|
||||
var MathAbs;
|
||||
var ProxyDelegateCallAndConstruct;
|
||||
@ -1764,6 +1765,10 @@ function FunctionBind(this_arg) { // Length is 1.
|
||||
var result = %FunctionBindArguments(boundFunction, this,
|
||||
this_arg, new_length);
|
||||
|
||||
var name = this.name;
|
||||
var bound_name = IS_STRING(name) ? name : "";
|
||||
SetFunctionName(result, bound_name, "bound");
|
||||
|
||||
// We already have caller and arguments properties on functions,
|
||||
// which are non-configurable. It therefore makes no sence to
|
||||
// try to redefine these as defined by the spec. The spec says
|
||||
|
13
test/mjsunit/function-bind-name.js
Normal file
13
test/mjsunit/function-bind-name.js
Normal file
@ -0,0 +1,13 @@
|
||||
// Copyright 2015 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 f() {}
|
||||
var fb = f.bind({});
|
||||
assertEquals('bound f', fb.name);
|
||||
assertEquals('function bound f() { [native code] }', fb.toString());
|
||||
|
||||
Object.defineProperty(f, 'name', {value: 42});
|
||||
var fb2 = f.bind({});
|
||||
assertEquals('bound ', fb2.name);
|
||||
assertEquals('function bound () { [native code] }', fb2.toString());
|
Loading…
Reference in New Issue
Block a user