mirror of
				https://gitea.com/actions/setup-python.git
				synced 2025-11-01 01:28:08 +07:00 
			
		
		
		
	
		
			
				
	
	
		
			71 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| "use strict";
 | |
| 
 | |
| Object.defineProperty(exports, "__esModule", {
 | |
|   value: true
 | |
| });
 | |
| exports.default = void 0;
 | |
| 
 | |
| class Binding {
 | |
|   constructor({
 | |
|     identifier,
 | |
|     scope,
 | |
|     path,
 | |
|     kind
 | |
|   }) {
 | |
|     this.identifier = identifier;
 | |
|     this.scope = scope;
 | |
|     this.path = path;
 | |
|     this.kind = kind;
 | |
|     this.constantViolations = [];
 | |
|     this.constant = true;
 | |
|     this.referencePaths = [];
 | |
|     this.referenced = false;
 | |
|     this.references = 0;
 | |
|     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; |