• rossberg's avatar
    [es6] Implement proper TDZ for parameters · 4273f66e
    rossberg authored
    Previously, examples like (({a = x}, x) => {})({}, 0) did not throw a ReferenceError like they should. This CL
    
    - Splits up DeclareFormalParameters such that the formals can be recorded first and declared later.
    
    - Declaration then takes the complete parameter list into account. If it is not simple, temporaries are introduced for all parameters.
    
    - BuildParameterInitializationBlock desugars all parameters from non-simple lists into let-bindings.
    
    - Refactored Pre/ParserFormalParameters, so that the arity information is no longer duplicated in Parser.
    
    - Rest is currently handled specially, until rest-via-destructuring has landed.
    
    R=adamk@chromium.org, littledan@chromium.org
    BUG=v8:811
    LOG=N
    
    Review URL: https://codereview.chromium.org/1259283002
    
    Cr-Commit-Position: refs/heads/master@{#30025}
    4273f66e
Name
Last commit
Last update
..
regress Loading commit data...
array-concat.js Loading commit data...
array-copywithin.js Loading commit data...
array-fill.js Loading commit data...
array-find.js Loading commit data...
array-findindex.js Loading commit data...
array-from.js Loading commit data...
array-includes-to-object-sloppy.js Loading commit data...
array-includes-to-object-strict.js Loading commit data...
array-includes.js Loading commit data...
array-of.js Loading commit data...
arrow-functions-lexical-arguments.js Loading commit data...
arrow-functions-this.js Loading commit data...
arrow-functions.js Loading commit data...
arrow-rest-params.js Loading commit data...
atomics.js Loading commit data...
block-conflicts-sloppy.js Loading commit data...
block-const-assign-sloppy.js Loading commit data...
block-for-sloppy.js Loading commit data...
block-lazy-compile.js Loading commit data...
block-leave-sloppy.js Loading commit data...
block-let-crankshaft-sloppy.js Loading commit data...
block-let-declaration-sloppy.js Loading commit data...
block-let-semantics-sloppy.js Loading commit data...
block-scope-class.js Loading commit data...
block-scoping-sloppy.js Loading commit data...
block-scoping-top-level-sloppy.js Loading commit data...
class-computed-property-names-super.js Loading commit data...
classes-derived-return-type.js Loading commit data...
computed-property-names-classes.js Loading commit data...
computed-property-names-deopt.js Loading commit data...
computed-property-names-object-literals-methods.js Loading commit data...
computed-property-names-super.js Loading commit data...
computed-property-names.js Loading commit data...
dataview-accessors.js Loading commit data...
destructuring-parameters-literalcount-nolazy.js Loading commit data...
destructuring-parameters-literalcount.js Loading commit data...
destructuring.js Loading commit data...
futex.js Loading commit data...
module-linking.js Loading commit data...
module-parsing-eval.js Loading commit data...
module-recompile.js Loading commit data...
module-resolution.js Loading commit data...
modules.js Loading commit data...
new-target.js Loading commit data...
object-assign.js Loading commit data...
object-literals-super.js Loading commit data...
private.js Loading commit data...
proxies-example-membrane.js Loading commit data...
proxies-for.js Loading commit data...
proxies-function.js Loading commit data...
proxies-hash.js Loading commit data...
proxies-json.js Loading commit data...
proxies-symbols.js Loading commit data...
proxies-with-unscopables.js Loading commit data...
proxies-with.js Loading commit data...
proxies.js Loading commit data...
reflect-apply.js Loading commit data...
reflect-construct.js Loading commit data...
regexp-flags.js Loading commit data...
regexp-sticky.js Loading commit data...
rest-params-lazy-parsing.js Loading commit data...
rest-params.js Loading commit data...
set-prototype-of.js Loading commit data...
sharedarraybuffer.js Loading commit data...
simd.js Loading commit data...
spread-array.js Loading commit data...
spread-call-new-class.js Loading commit data...
spread-call-new.js Loading commit data...
spread-call-super-property.js Loading commit data...
spread-call.js Loading commit data...
super.js Loading commit data...
unicode-escapes-in-regexps.js Loading commit data...
unicode-escapes.js Loading commit data...