@neo-one/smart-contract-compiler
Version:
NEO•ONE TypeScript smart contract compiler.
51 lines (49 loc) • 5.56 kB
JavaScript
;
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