• jwolfe's avatar
    Implement new Function.prototype.toString --harmony-function-tostring · d1d4b9ce
    jwolfe authored
    For functions declared in source code, the .toString() representation
    will be an excerpt of the source code.
    * For functions declared with the "function" keyword, the excerpt
      starts at the "function" or "async" keyword and ends at the final "}".
      The previous behavior would start the excerpt at the "(" of the
      parameter list, and prepend a canonical `"function " + name` or
      similar, which would discard comments and formatting surrounding the
      function's name. Anonymous functions declared as function expressions
      no longer get the name "anonymous" in their toString representation.
    * For methods, the excerpt starts at the "get", "set", "*" (for
      generator methods), or property name, whichever comes first.
      Previously, the toString representation for methods would use a
      canonical prefix before the "(" of the parameter list. Note that any
      "static" keyword is omitted.
    * For arrow functions and class declarations, the excerpt is unchanged.
    
    For functions created with the Function, GeneratorFunction, or
    AsyncFunction constructors:
    * The string separating the parameter text and body text is now
      "\n) {\n", where previously it was "\n/*``*/) {\n" or ") {\n".
    * At one point, newline normalization was required by the spec here,
      but that was removed from the spec, and so this CL does not do it.
    
    Included in this CL is a fix for CreateDynamicFunction parsing. ')'
    and '`' characters in the parameter string are no longer disallowed,
    and Function("a=function(", "}){") is no longer allowed.
    
    BUG=v8:4958, v8:4230
    
    Review-Url: https://codereview.chromium.org/2156303002
    Cr-Commit-Position: refs/heads/master@{#43262}
    d1d4b9ce
Name
Last commit
Last update
..
regress Loading commit data...
array-concat-array-proto-getter.js Loading commit data...
array-concat-array-proto.js Loading commit data...
array-concat-object-proto-dict-getter.js Loading commit data...
array-concat-object-proto-dict.js Loading commit data...
array-concat-object-proto-generic-dict.js Loading commit data...
array-concat-object-proto.js Loading commit data...
atomics.js Loading commit data...
block-lazy-compile.js Loading commit data...
dataview-accessors.js Loading commit data...
default-parameter-do-expression.js Loading commit data...
do-expressions-control.js Loading commit data...
do-expressions.js Loading commit data...
for-await-of.js Loading commit data...
function-sent.js Loading commit data...
function-tostring.js Loading commit data...
futex.js Loading commit data...
generators.js Loading commit data...
harmony-string-pad-end.js Loading commit data...
harmony-string-pad-start.js Loading commit data...
module-parsing-eval.js Loading commit data...
object-rest-basic.js Loading commit data...
object-spread-basic.js Loading commit data...
private-symbols.js Loading commit data...
private.js Loading commit data...
regexp-change-exec.js Loading commit data...
regexp-lookbehind.js Loading commit data...
regexp-named-captures.js Loading commit data...
regexp-property-binary.js Loading commit data...
regexp-property-char-class.js Loading commit data...
regexp-property-disabled.js Loading commit data...
regexp-property-enumerated.js Loading commit data...
regexp-property-exact-match.js Loading commit data...
regexp-property-general-category.js Loading commit data...
regexp-property-invalid.js Loading commit data...
regexp-property-lu-ui.js Loading commit data...
regexp-property-script-extensions.js Loading commit data...
regexp-property-scripts.js Loading commit data...
regexp-property-special.js Loading commit data...
set-prototype-of.js Loading commit data...
sharedarraybuffer.js Loading commit data...
sloppy-legacy-duplicate-generators.js Loading commit data...
sloppy-no-duplicate-generators.js Loading commit data...
symbol-async-iterator.js Loading commit data...
to-length.js Loading commit data...
to-name.js Loading commit data...
to-number.js Loading commit data...
to-primitive.js Loading commit data...
to-string.js Loading commit data...
trailing-commas-length.js Loading commit data...