| // Copyright (C) 2019 Leo Balter. All rights reserved. |
| // This code is governed by the BSD license found in the LICENSE file. |
| |
| /*--- |
| esid: pending |
| description: > |
| Hashbang comments should not be allowed in function evaluator contexts. |
| info: | |
| HashbangComment:: |
| #! SingleLineCommentChars[opt] |
| features: [hashbang] |
| ---*/ |
| |
| const AsyncFunction = (async function (){}).constructor; |
| const GeneratorFunction = (function *(){}).constructor; |
| const AsyncGeneratorFunction = (async function *(){}).constructor; |
| for (const ctor of [ |
| Function, |
| AsyncFunction, |
| GeneratorFunction, |
| AsyncGeneratorFunction, |
| ]) { |
| assert.throws(SyntaxError, () => ctor('#!\n_', ''), `${ctor.name} Call argument`); |
| assert.throws(SyntaxError, () => ctor('#!\n_'), `${ctor.name} Call body`); |
| assert.throws(SyntaxError, () => new ctor('#!\n_', ''), `${ctor.name} Construct argument`); |
| assert.throws(SyntaxError, () => new ctor('#!\n_'), `${ctor.name} Construct body`); |
| } |