UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

51 lines (49 loc) 5.56 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const ResolvedScope_1 = require("./ResolvedScope"); class CapturingScope { constructor(node, index, parent) { this.node = node; this.index = index; this.parent = parent; this.mutableVariableCount = 0; this.bindings = new Set(); } add(name) { this.mutableVariableCount += 1; this.bindings.add(name); return { nameBrand: 0 }; } addUnique() { this.mutableVariableCount += 1; return { nameBrand: 0 }; } set(sb, node) { sb.emitOp(node, 'NOP'); } get(sb, node) { sb.emitOp(node, 'NOP'); } getThis(sb, node) { sb.emitOp(node, 'NOP'); } getGlobal(sb, node) { sb.emitOp(node, 'NOP'); } setGlobal(sb, node) { sb.emitOp(node, 'NOP'); } pushAll(sb, node) { sb.emitOp(node, 'NOP'); } emit(sb, node, options, func) { sb.emitOp(node, 'NOP'); func(options); sb.emitOp(node, 'NOP'); } resolve(parent) { return new ResolvedScope_1.ResolvedScope(this.mutableVariableCount, parent); } } exports.CapturingScope = CapturingScope; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNhcHR1cmluZ1Njb3BlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBR0EsbURBQWdEO0FBR2hELE1BQWEsY0FBYztJQUl6QixZQUNrQixJQUFhLEVBQ2IsS0FBYSxFQUNiLE1BQW1DO1FBRm5DLFNBQUksR0FBSixJQUFJLENBQVM7UUFDYixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ2IsV0FBTSxHQUFOLE1BQU0sQ0FBNkI7UUFON0MseUJBQW9CLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLGFBQVEsR0FBZ0IsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQU1oRCxDQUFDO0lBRUcsR0FBRyxDQUFDLElBQVk7UUFDckIsSUFBSSxDQUFDLG9CQUFvQixJQUFJLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV4QixPQUFPLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFTSxTQUFTO1FBQ2QsSUFBSSxDQUFDLG9CQUFvQixJQUFJLENBQUMsQ0FBQztRQUUvQixPQUFPLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFTSxHQUFHLENBQUMsRUFBaUIsRUFBRSxJQUFhO1FBQ3pDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFTSxHQUFHLENBQUMsRUFBaUIsRUFBRSxJQUFhO1FBQ3pDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFTSxPQUFPLENBQUMsRUFBaUIsRUFBRSxJQUFhO1FBQzdDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFTSxTQUFTLENBQUMsRUFBaUIsRUFBRSxJQUFhO1FBQy9DLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFTSxTQUFTLENBQUMsRUFBaUIsRUFBRSxJQUFhO1FBQy9DLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFTSxPQUFPLENBQUMsRUFBaUIsRUFBRSxJQUFhO1FBQzdDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFTSxJQUFJLENBQUMsRUFBaUIsRUFBRSxJQUFhLEVBQUUsT0FBcUIsRUFBRSxJQUFxQztRQUN4RyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZCxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRU0sT0FBTyxDQUFDLE1BQWtDO1FBQy9DLE9BQU8sSUFBSSw2QkFBYSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM5RCxDQUFDO0NBQ0Y7QUF4REQsd0NBd0RDIiwiZmlsZSI6Im5lby1vbmUtc21hcnQtY29udHJhY3QtY29tcGlsZXIvc3JjL2NvbXBpbGUvc2NvcGUvQ2FwdHVyaW5nU2NvcGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5pbXBvcnQgeyBTY3JpcHRCdWlsZGVyIH0gZnJvbSAnLi4vc2InO1xuaW1wb3J0IHsgVmlzaXRPcHRpb25zIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgUmVzb2x2ZWRTY29wZSB9IGZyb20gJy4vUmVzb2x2ZWRTY29wZSc7XG5pbXBvcnQgeyBOYW1lLCBTY29wZSB9IGZyb20gJy4vU2NvcGUnO1xuXG5leHBvcnQgY2xhc3MgQ2FwdHVyaW5nU2NvcGUgaW1wbGVtZW50cyBTY29wZSB7XG4gIHByaXZhdGUgbXV0YWJsZVZhcmlhYmxlQ291bnQgPSAwO1xuICBwcml2YXRlIHJlYWRvbmx5IGJpbmRpbmdzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoKTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IG5vZGU6IHRzLk5vZGUsXG4gICAgcHVibGljIHJlYWRvbmx5IGluZGV4OiBudW1iZXIsXG4gICAgcHVibGljIHJlYWRvbmx5IHBhcmVudD86IENhcHR1cmluZ1Njb3BlIHwgdW5kZWZpbmVkLFxuICApIHt9XG5cbiAgcHVibGljIGFkZChuYW1lOiBzdHJpbmcpOiBOYW1lIHtcbiAgICB0aGlzLm11dGFibGVWYXJpYWJsZUNvdW50ICs9IDE7XG4gICAgdGhpcy5iaW5kaW5ncy5hZGQobmFtZSk7XG5cbiAgICByZXR1cm4geyBuYW1lQnJhbmQ6IDAgfTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRVbmlxdWUoKTogTmFtZSB7XG4gICAgdGhpcy5tdXRhYmxlVmFyaWFibGVDb3VudCArPSAxO1xuXG4gICAgcmV0dXJuIHsgbmFtZUJyYW5kOiAwIH07XG4gIH1cblxuICBwdWJsaWMgc2V0KHNiOiBTY3JpcHRCdWlsZGVyLCBub2RlOiB0cy5Ob2RlKTogdm9pZCB7XG4gICAgc2IuZW1pdE9wKG5vZGUsICdOT1AnKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQoc2I6IFNjcmlwdEJ1aWxkZXIsIG5vZGU6IHRzLk5vZGUpOiB2b2lkIHtcbiAgICBzYi5lbWl0T3Aobm9kZSwgJ05PUCcpO1xuICB9XG5cbiAgcHVibGljIGdldFRoaXMoc2I6IFNjcmlwdEJ1aWxkZXIsIG5vZGU6IHRzLk5vZGUpOiB2b2lkIHtcbiAgICBzYi5lbWl0T3Aobm9kZSwgJ05PUCcpO1xuICB9XG5cbiAgcHVibGljIGdldEdsb2JhbChzYjogU2NyaXB0QnVpbGRlciwgbm9kZTogdHMuTm9kZSk6IHZvaWQge1xuICAgIHNiLmVtaXRPcChub2RlLCAnTk9QJyk7XG4gIH1cblxuICBwdWJsaWMgc2V0R2xvYmFsKHNiOiBTY3JpcHRCdWlsZGVyLCBub2RlOiB0cy5Ob2RlKTogdm9pZCB7XG4gICAgc2IuZW1pdE9wKG5vZGUsICdOT1AnKTtcbiAgfVxuXG4gIHB1YmxpYyBwdXNoQWxsKHNiOiBTY3JpcHRCdWlsZGVyLCBub2RlOiB0cy5Ob2RlKTogdm9pZCB7XG4gICAgc2IuZW1pdE9wKG5vZGUsICdOT1AnKTtcbiAgfVxuXG4gIHB1YmxpYyBlbWl0KHNiOiBTY3JpcHRCdWlsZGVyLCBub2RlOiB0cy5Ob2RlLCBvcHRpb25zOiBWaXNpdE9wdGlvbnMsIGZ1bmM6IChvcHRpb25zOiBWaXNpdE9wdGlvbnMpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBzYi5lbWl0T3Aobm9kZSwgJ05PUCcpO1xuICAgIGZ1bmMob3B0aW9ucyk7XG4gICAgc2IuZW1pdE9wKG5vZGUsICdOT1AnKTtcbiAgfVxuXG4gIHB1YmxpYyByZXNvbHZlKHBhcmVudD86IFJlc29sdmVkU2NvcGUgfCB1bmRlZmluZWQpOiBSZXNvbHZlZFNjb3BlIHtcbiAgICByZXR1cm4gbmV3IFJlc29sdmVkU2NvcGUodGhpcy5tdXRhYmxlVmFyaWFibGVDb3VudCwgcGFyZW50KTtcbiAgfVxufVxuIl19