@composita/symbols
Version: 
Composita language symbols.
52 lines • 1.75 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ImplementationSymbol = exports.BlockScopeSymbol = exports.NamedScopeSymbol = exports.ProgramScopeSymbol = exports.ScopedSymbol = exports.GlobalScopeSymbol = void 0;
var GlobalScopeSymbolTag;
(function (GlobalScopeSymbolTag) {
    GlobalScopeSymbolTag[GlobalScopeSymbolTag["Tag"] = 0] = "Tag";
})(GlobalScopeSymbolTag || (GlobalScopeSymbolTag = {}));
class GlobalScopeSymbol {
    constructor() {
        this._globalScopeSymbolTag = GlobalScopeSymbolTag.Tag;
    }
}
exports.GlobalScopeSymbol = GlobalScopeSymbol;
class ScopedSymbol {
    constructor(scope) {
        this.scope = scope;
    }
}
exports.ScopedSymbol = ScopedSymbol;
class ProgramScopeSymbol extends ScopedSymbol {
    constructor(scope, name) {
        super(scope);
        this.name = name;
    }
}
exports.ProgramScopeSymbol = ProgramScopeSymbol;
class NamedScopeSymbol extends ScopedSymbol {
    constructor(scope, identifier) {
        super(scope);
        this.identifier = identifier;
    }
}
exports.NamedScopeSymbol = NamedScopeSymbol;
var BlockScopeSymbolTag;
(function (BlockScopeSymbolTag) {
    BlockScopeSymbolTag[BlockScopeSymbolTag["Tag"] = 0] = "Tag";
})(BlockScopeSymbolTag || (BlockScopeSymbolTag = {}));
class BlockScopeSymbol extends ScopedSymbol {
    constructor() {
        super(...arguments);
        this._blockScopeSymbolTag = BlockScopeSymbolTag.Tag;
    }
}
exports.BlockScopeSymbol = BlockScopeSymbol;
class ImplementationSymbol extends ScopedSymbol {
    constructor(scope, interfaceSymbol) {
        super(scope);
        this.interfaceSymbol = interfaceSymbol;
    }
}
exports.ImplementationSymbol = ImplementationSymbol;
//# sourceMappingURL=scope-symbols.js.map