Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
sl.tok(Tag.object, Tag.Identifier, { sym: ctx }),
sl.tok(Tag.property, Tag.Identifier, {
node: { name: fld.subField }
}),
...sl.leave()
);
} else init.push(sl.tok(Tag.object, Tag.Identifier, { sym: ctx }));
init.push(
sl.tok(Tag.property, Tag.Identifier, {
node: { name: fld.fieldName }
}),
...sl.leave()
);
} else init.push(sl.tok(Tag.init, Tag.Identifier, { sym: fld }));
} else {
const pos = varField ? Tag.object : Tag.init;
init.push(sl.tok(pos, Tag.Identifier, { sym: ctx }));
if (varField) {
init.unshift(sl.enter(Tag.init, Tag.MemberExpression));
init.push(
sl.tok(Tag.property, Tag.Identifier, {
node: { name: root.opts.varStorageField }
}),
...sl.leave()
);
}
}
if (closConv && !closField) {
saved.set(copy, {
raw: null,
init: [
sl.enter(Tag.init, Tag.MemberExpression),
if (closConv) {
closures = root.closSavedDecls;
closArg = root.closureArgSym;
}
if (ctxDeps && ctxDeps.size && root.opts.closureShortcuts !== false) {
const varField = root.opts.varStorageField;
const closField = root.opts.closureStorageField;
for (const { copy, fld, ctx } of ctxDeps.values()) {
const init = [];
if (fld) {
if (fld.interpr === Bind.ctxField) {
init.push(sl.enter(Tag.init, Tag.MemberExpression));
if (fld.subField) {
init.push(
sl.enter(Tag.object, Tag.MemberExpression),
sl.tok(Tag.object, Tag.Identifier, { sym: ctx }),
sl.tok(Tag.property, Tag.Identifier, {
node: { name: fld.subField }
}),
...sl.leave()
);
} else init.push(sl.tok(Tag.object, Tag.Identifier, { sym: ctx }));
init.push(
sl.tok(Tag.property, Tag.Identifier, {
node: { name: fld.fieldName }
}),
...sl.leave()
);
} else init.push(sl.tok(Tag.init, Tag.Identifier, { sym: fld }));
} else {
const pos = varField ? Tag.object : Tag.init;
init.push(sl.tok(pos, Tag.Identifier, { sym: ctx }));
lhs: false,
rhs: true,
decl: false
});
continue;
case Tag.CallExpression:
if (s.cur().type !== Tag.MemberExpression) break;
const m = s.take();
if (s.cur().type !== Tag.Super) {
yield i;
yield m;
continue;
}
yield i;
yield s.enter(Tag.callee, Tag.MemberExpression);
yield s.enter(Tag.object, Tag.MemberExpression, m.value);
yield* walk();
yield* s.leave();
s.close(m);
yield s.tok(Tag.property, Tag.Identifier, {
node: { name: "call" }
});
yield* s.leave();
yield* s.till(i => i.pos === Tag.arguments);
yield s.tok(Tag.push, Tag.Identifier, {
sym: thisSym,
lhs: false,
rhs: true,
decl: false
});
continue;
case Tag.Super:
const closField = root.opts.closureStorageField;
for (const { copy, fld, ctx } of ctxDeps.values()) {
const init = [];
if (fld) {
if (fld.interpr === Bind.ctxField) {
init.push(sl.enter(Tag.init, Tag.MemberExpression));
if (fld.subField) {
init.push(
sl.enter(Tag.object, Tag.MemberExpression),
sl.tok(Tag.object, Tag.Identifier, { sym: ctx }),
sl.tok(Tag.property, Tag.Identifier, {
node: { name: fld.subField }
}),
...sl.leave()
);
} else init.push(sl.tok(Tag.object, Tag.Identifier, { sym: ctx }));
init.push(
sl.tok(Tag.property, Tag.Identifier, {
node: { name: fld.fieldName }
}),
...sl.leave()
);
} else init.push(sl.tok(Tag.init, Tag.Identifier, { sym: fld }));
} else {
const pos = varField ? Tag.object : Tag.init;
init.push(sl.tok(pos, Tag.Identifier, { sym: ctx }));
if (varField) {
init.unshift(sl.enter(Tag.init, Tag.MemberExpression));
init.push(
sl.tok(Tag.property, Tag.Identifier, {
node: { name: root.opts.varStorageField }
}),