tc39 / Function-prototype-toString-revision

:fishing_pole_and_fish: ECMA-262 proposal to update Function.prototype.toString
https://tc39.github.io/Function-prototype-toString-revision
26 stars 10 forks source link

Revisit allowing abrupt completions in HostHasSourceTextAvailable #27

Closed anba closed 6 years ago

anba commented 6 years ago

As mentioned by @domenic in https://github.com/tc39/Function-prototype-toString-revision/pull/26#discussion_r163721299, I'm not sure we really want to allow abrupt completions from HostHasSourceTextAvailable.

For example the following test262 tests need to be updated to handle the case when Function.prototype.toString throws an abrupt completion when invoked on an ordinary function object.

test/built-ins/Function/prototype/toString/arrow-function.js test/built-ins/Function/prototype/toString/async-arrow-function.js test/built-ins/Function/prototype/toString/async-function-declaration.js test/built-ins/Function/prototype/toString/async-function-expression.js test/built-ins/Function/prototype/toString/async-generator-declaration.js test/built-ins/Function/prototype/toString/async-generator-expression.js test/built-ins/Function/prototype/toString/async-generator-method-class-expression-static.js test/built-ins/Function/prototype/toString/async-generator-method-class-expression.js test/built-ins/Function/prototype/toString/async-generator-method-class-statement-static.js test/built-ins/Function/prototype/toString/async-generator-method-class-statement.js test/built-ins/Function/prototype/toString/async-generator-method-object.js test/built-ins/Function/prototype/toString/async-method-class-expression-static.js test/built-ins/Function/prototype/toString/async-method-class-expression.js test/built-ins/Function/prototype/toString/async-method-class-statement-static.js test/built-ins/Function/prototype/toString/async-method-class-statement.js test/built-ins/Function/prototype/toString/async-method-object.js test/built-ins/Function/prototype/toString/AsyncFunction.js test/built-ins/Function/prototype/toString/AsyncGenerator.js test/built-ins/Function/prototype/toString/class-declaration-complex-heritage.js test/built-ins/Function/prototype/toString/class-declaration-explicit-ctor.js test/built-ins/Function/prototype/toString/class-declaration-implicit-ctor.js test/built-ins/Function/prototype/toString/class-expression-explicit-ctor.js test/built-ins/Function/prototype/toString/class-expression-implicit-ctor.js test/built-ins/Function/prototype/toString/function-declaration-non-simple-parameter-list.js test/built-ins/Function/prototype/toString/function-declaration.js test/built-ins/Function/prototype/toString/function-expression.js test/built-ins/Function/prototype/toString/Function.js test/built-ins/Function/prototype/toString/generator-function-declaration.js test/built-ins/Function/prototype/toString/generator-function-expression.js test/built-ins/Function/prototype/toString/generator-method.js test/built-ins/Function/prototype/toString/GeneratorFunction.js test/built-ins/Function/prototype/toString/getter-class-expression-static.js test/built-ins/Function/prototype/toString/getter-class-expression.js test/built-ins/Function/prototype/toString/getter-class-statement-static.js test/built-ins/Function/prototype/toString/getter-class-statement.js test/built-ins/Function/prototype/toString/getter-object.js test/built-ins/Function/prototype/toString/line-terminator-normalisation-CR-LF.js test/built-ins/Function/prototype/toString/line-terminator-normalisation-CR.js test/built-ins/Function/prototype/toString/line-terminator-normalisation-LF.js test/built-ins/Function/prototype/toString/method-class-expression-static.js test/built-ins/Function/prototype/toString/method-class-expression.js test/built-ins/Function/prototype/toString/method-class-statement-static.js test/built-ins/Function/prototype/toString/method-class-statement.js test/built-ins/Function/prototype/toString/method-computed-property-name.js test/built-ins/Function/prototype/toString/method-object.js test/built-ins/Function/prototype/toString/setter-class-expression-static.js test/built-ins/Function/prototype/toString/setter-class-expression.js test/built-ins/Function/prototype/toString/setter-class-statement-static.js test/built-ins/Function/prototype/toString/setter-class-statement.js test/built-ins/Function/prototype/toString/setter-object.js test/built-ins/Function/prototype/toString/unicode.js test/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T9.js test/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T9.js test/built-ins/String/prototype/slice/S15.5.4.13_A1_T5.js test/built-ins/String/prototype/substring/S15.5.4.15_A1_T5.js test/built-ins/String/prototype/trim/15.5.4.20-2-46.js test/language/expressions/addition/S11.6.1_A2.2_T3.js test/language/expressions/addition/S11.6.1_A3.2_T1.2.js test/language/expressions/bitwise-and/S11.10.1_A3_T1.5.js test/language/expressions/bitwise-not/S11.4.8_A3_T5.js test/language/expressions/bitwise-or/S11.10.3_A3_T1.5.js test/language/expressions/bitwise-xor/S11.10.2_A3_T1.5.js test/language/expressions/division/S11.5.2_A3_T1.5.js test/language/expressions/greater-than/S11.8.2_A3.2_T1.2.js test/language/expressions/greater-than-or-equal/S11.8.4_A3.2_T1.2.js test/language/expressions/left-shift/S11.7.1_A3_T1.5.js test/language/expressions/less-than/S11.8.1_A3.2_T1.2.js test/language/expressions/less-than-or-equal/S11.8.3_A3.2_T1.2.js test/language/expressions/modulus/S11.5.3_A3_T1.5.js test/language/expressions/multiplication/S11.5.1_A3_T1.5.js test/language/expressions/postfix-decrement/S11.3.2_A3_T5.js test/language/expressions/postfix-decrement/S11.3.2_A4_T5.js test/language/expressions/postfix-increment/S11.3.1_A3_T5.js test/language/expressions/postfix-increment/S11.3.1_A4_T5.js test/language/expressions/prefix-decrement/S11.4.5_A3_T5.js test/language/expressions/prefix-decrement/S11.4.5_A4_T5.js test/language/expressions/prefix-increment/S11.4.4_A3_T5.js test/language/expressions/prefix-increment/S11.4.4_A4_T5.js test/language/expressions/right-shift/S11.7.2_A3_T1.5.js test/language/expressions/subtraction/S11.6.2_A3_T1.5.js test/language/expressions/unary-minus/S11.4.7_A3_T5.js test/language/expressions/unary-plus/S11.4.6_A3_T5.js test/language/expressions/unsigned-right-shift/S11.7.3_A3_T1.5.js test/language/statements/function/S13.2.2_A19_T7.js