UNPKG

@awayfl/avm2

Version:

Virtual machine for executing AS3 code

41 lines (40 loc) 1.92 kB
import { emitInlineLocal } from './emitInlineVars'; export function emitAnnotationOld(state) { var params = state.methodInfo.parameters; var methodName = state.methodInfo.meta.name; var js0 = []; js0.push("".concat(state.indent, "return function compiled_").concat(methodName.replace(/([^a-z0-9]+)/gi, '_'), "() {")); state.moveIndent(1); for (var i = 0; i < params.length; i++) if (params[i].hasOptionalValue()) { js0.push("".concat(state.indent, "let argnum = arguments.length;")); break; } var thisAlias = emitInlineLocal(state, 0); if (thisAlias !== 'this') { // eslint-disable-next-line max-len js0.push("".concat(state.indent, "let ").concat(emitInlineLocal(state, 0), " = this === context.jsGlobal ? context.savedScope.global.object : this;")); } else { js0.push("".concat(state.indent, "// Possible use a real \"this\"")); } for (var i = 0; i < params.length; i++) { var p = params[i]; js0.push("".concat(state.indent, "let ").concat(emitInlineLocal(state, i + 1), " = arguments[").concat(i, "];")); if (params[i].hasOptionalValue()) switch (p.optionalValueKind) { case 1 /* CONSTANT.Utf8 */: // eslint-disable-next-line max-len js0.push("".concat(state.indent, "if (argnum <= ").concat(i, ") ").concat(emitInlineLocal(state, i + 1), " = context.abc.getString(").concat(p.optionalValueIndex, ");")); break; default: // eslint-disable-next-line max-len js0.push("".concat(state.indent, "if (argnum <= ").concat(i, ") ").concat(emitInlineLocal(state, i + 1), " = ").concat(p.getOptionalValue(), ";")); break; } } return { annotation: js0.join('\n'), paramsShift: 0 }; }