@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
35 lines (33 loc) • 1.48 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.SuperExpressionCompiler = void 0;
const tslib_1 = require("tslib");
const ts_utils_1 = require("@neo-one/ts-utils");
const typescript_1 = tslib_1.__importDefault(require("typescript"));
const NodeCompiler_1 = require("../NodeCompiler");
class SuperExpressionCompiler extends NodeCompiler_1.NodeCompiler {
constructor() {
super(...arguments);
this.kind = typescript_1.default.SyntaxKind.SuperKeyword;
}
visitNode(sb, node, options) {
if (options.pushValue) {
const superClass = options.superClass;
if (superClass === undefined) {
throw new Error('Something went wrong, expected super class to be defined.');
}
const methodDeclaration = ts_utils_1.tsUtils.node.getFirstAncestorByKind(node, typescript_1.default.SyntaxKind.MethodDeclaration);
if (methodDeclaration === undefined) {
sb.context.reportUnsupported(node);
return;
}
sb.scope.get(sb, node, options, superClass);
if (!ts_utils_1.tsUtils.modifier.isStatic(methodDeclaration)) {
sb.emitPushString(node, 'prototype');
sb.emitHelper(node, options, sb.helpers.getPropertyObjectProperty);
}
}
}
}
exports.SuperExpressionCompiler = SuperExpressionCompiler;
//# sourceMappingURL=SuperExpressionCompiler.js.map