mirror of
https://github.com/crazy-max/ghaction-upx.git
synced 2024-12-25 17:36:08 -07:00
102 lines
3.2 KiB
JavaScript
102 lines
3.2 KiB
JavaScript
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.types = exports.TokContext = void 0;
|
|
|
|
var _types = require("./types");
|
|
|
|
var _whitespace = require("../util/whitespace");
|
|
|
|
class TokContext {
|
|
constructor(token, isExpr, preserveSpace, override) {
|
|
this.token = token;
|
|
this.isExpr = !!isExpr;
|
|
this.preserveSpace = !!preserveSpace;
|
|
this.override = override;
|
|
}
|
|
|
|
}
|
|
|
|
exports.TokContext = TokContext;
|
|
const types = {
|
|
braceStatement: new TokContext("{", false),
|
|
braceExpression: new TokContext("{", true),
|
|
templateQuasi: new TokContext("${", false),
|
|
parenStatement: new TokContext("(", false),
|
|
parenExpression: new TokContext("(", true),
|
|
template: new TokContext("`", true, true, p => p.readTmplToken()),
|
|
functionExpression: new TokContext("function", true),
|
|
functionStatement: new TokContext("function", false)
|
|
};
|
|
exports.types = types;
|
|
|
|
_types.types.parenR.updateContext = _types.types.braceR.updateContext = function () {
|
|
if (this.state.context.length === 1) {
|
|
this.state.exprAllowed = true;
|
|
return;
|
|
}
|
|
|
|
let out = this.state.context.pop();
|
|
|
|
if (out === types.braceStatement && this.curContext().token === "function") {
|
|
out = this.state.context.pop();
|
|
}
|
|
|
|
this.state.exprAllowed = !out.isExpr;
|
|
};
|
|
|
|
_types.types.name.updateContext = function (prevType) {
|
|
let allowed = false;
|
|
|
|
if (prevType !== _types.types.dot) {
|
|
if (this.state.value === "of" && !this.state.exprAllowed || this.state.value === "yield" && this.scope.inGenerator) {
|
|
allowed = true;
|
|
}
|
|
}
|
|
|
|
this.state.exprAllowed = allowed;
|
|
|
|
if (this.state.isIterator) {
|
|
this.state.isIterator = false;
|
|
}
|
|
};
|
|
|
|
_types.types.braceL.updateContext = function (prevType) {
|
|
this.state.context.push(this.braceIsBlock(prevType) ? types.braceStatement : types.braceExpression);
|
|
this.state.exprAllowed = true;
|
|
};
|
|
|
|
_types.types.dollarBraceL.updateContext = function () {
|
|
this.state.context.push(types.templateQuasi);
|
|
this.state.exprAllowed = true;
|
|
};
|
|
|
|
_types.types.parenL.updateContext = function (prevType) {
|
|
const statementParens = prevType === _types.types._if || prevType === _types.types._for || prevType === _types.types._with || prevType === _types.types._while;
|
|
this.state.context.push(statementParens ? types.parenStatement : types.parenExpression);
|
|
this.state.exprAllowed = true;
|
|
};
|
|
|
|
_types.types.incDec.updateContext = function () {};
|
|
|
|
_types.types._function.updateContext = _types.types._class.updateContext = function (prevType) {
|
|
if (prevType.beforeExpr && prevType !== _types.types.semi && prevType !== _types.types._else && !(prevType === _types.types._return && _whitespace.lineBreak.test(this.input.slice(this.state.lastTokEnd, this.state.start))) && !((prevType === _types.types.colon || prevType === _types.types.braceL) && this.curContext() === types.b_stat)) {
|
|
this.state.context.push(types.functionExpression);
|
|
} else {
|
|
this.state.context.push(types.functionStatement);
|
|
}
|
|
|
|
this.state.exprAllowed = false;
|
|
};
|
|
|
|
_types.types.backQuote.updateContext = function () {
|
|
if (this.curContext() === types.template) {
|
|
this.state.context.pop();
|
|
} else {
|
|
this.state.context.push(types.template);
|
|
}
|
|
|
|
this.state.exprAllowed = false;
|
|
}; |