| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 | "use strict";Object.defineProperty(exports, "__esModule", {  value: true});exports.default = void 0;class Binding {  constructor({    identifier,    scope,    path,    kind  }) {    this.identifier = void 0;    this.scope = void 0;    this.path = void 0;    this.kind = void 0;    this.constantViolations = [];    this.constant = true;    this.referencePaths = [];    this.referenced = false;    this.references = 0;    this.identifier = identifier;    this.scope = scope;    this.path = path;    this.kind = kind;    this.clearValue();  }  deoptValue() {    this.clearValue();    this.hasDeoptedValue = true;  }  setValue(value) {    if (this.hasDeoptedValue) return;    this.hasValue = true;    this.value = value;  }  clearValue() {    this.hasDeoptedValue = false;    this.hasValue = false;    this.value = null;  }  reassign(path) {    this.constant = false;    if (this.constantViolations.indexOf(path) !== -1) {      return;    }    this.constantViolations.push(path);  }  reference(path) {    if (this.referencePaths.indexOf(path) !== -1) {      return;    }    this.referenced = true;    this.references++;    this.referencePaths.push(path);  }  dereference() {    this.references--;    this.referenced = !!this.references;  }}exports.default = Binding;
 |