• 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
benchmarks Loading commit data...
build_overrides Loading commit data...
docs Loading commit data...
gni Loading commit data...
gypfiles Loading commit data...
include Loading commit data...
infra Loading commit data...
samples Loading commit data...
src Loading commit data...
test Loading commit data...
testing Loading commit data...
third_party Loading commit data...
tools Loading commit data...
.clang-format Loading commit data...
.gitignore Loading commit data...
.gn Loading commit data...
.ycm_extra_conf.py Loading commit data...
AUTHORS Loading commit data...
BUILD.gn Loading commit data...
CODE_OF_CONDUCT.md Loading commit data...
ChangeLog Loading commit data...
DEPS Loading commit data...
LICENSE Loading commit data...
LICENSE.fdlibm Loading commit data...
LICENSE.strongtalk Loading commit data...
LICENSE.v8 Loading commit data...
LICENSE.valgrind Loading commit data...
Makefile Loading commit data...
Makefile.android Loading commit data...
OWNERS Loading commit data...
PRESUBMIT.py Loading commit data...
README.md Loading commit data...
WATCHLISTS Loading commit data...
codereview.settings Loading commit data...
snapshot_toolchain.gni Loading commit data...