fix corner case with class (#4713)
This commit is contained in:
22
lib/parse.js
22
lib/parse.js
@@ -1053,6 +1053,16 @@ function parse($TEXT, options) {
|
||||
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;
|
||||
@@ -1078,16 +1088,8 @@ function parse($TEXT, options) {
|
||||
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);
|
||||
|
||||
Reference in New Issue
Block a user