return stat;
}
+ function has_modifier(name) {
+ if (!is("name", name)) return;
+ var token = peek();
+ if (!token) return;
+ if (is_token(token, "operator", "=")) return;
+ if (token.type == "punc" && /^[(;}]$/.test(token.value)) return;
+ if (has_newline_before(token)) return;
+ return next();
+ }
+
function class_(ctor) {
var was_async = S.in_async;
var was_gen = S.in_generator;
continue;
}
var start = S.token;
- var fixed = is("name", "static");
- if (fixed) next();
- var async = is("name", "async") && peek();
- if (async) {
- if (async.type == "punc" && /^[(=;}]$/.test(async.value) || has_newline_before(async)) {
- async = false;
- } else {
- async = next();
- }
- }
+ var fixed = !!has_modifier("static");
+ var async = has_modifier("async");
if (is("operator", "*")) {
next();
var internal = is("name") && /^#/.test(S.token.value);
node_version: ">=12"
}
+modifier_as_field_name: {
+ input: {
+ for (var k in new class { async; static = 42 })
+ console.log(k);
+ }
+ expect_exact: "for(var k in new class{async;static=42})console.log(k);"
+ expect_stdout: [
+ "async",
+ "static",
+ ]
+ node_version: ">=12"
+}
+
methods: {
input: {
"use strict";