UNPKG

2.19 kBTypeScriptView Raw
1import { Core, Dict } from '@glimmer/interfaces';
2import { ASTv2 } from '..';
3export declare abstract class SymbolTable {
4 static top(locals: string[], customizeComponentName: (input: string) => string): ProgramSymbolTable;
5 abstract has(name: string): boolean;
6 abstract get(name: string): [symbol: number, isRoot: boolean];
7 abstract getLocalsMap(): Dict<number>;
8 abstract getEvalInfo(): Core.EvalInfo;
9 abstract allocateFree(name: string, resolution: ASTv2.FreeVarResolution): number;
10 abstract allocateNamed(name: string): number;
11 abstract allocateBlock(name: string): number;
12 abstract allocate(identifier: string): number;
13 abstract setHasEval(): void;
14 child(locals: string[]): BlockSymbolTable;
15}
16export declare class ProgramSymbolTable extends SymbolTable {
17 private templateLocals;
18 private customizeComponentName;
19 constructor(templateLocals: string[], customizeComponentName: (input: string) => string);
20 symbols: string[];
21 upvars: string[];
22 private size;
23 private named;
24 private blocks;
25 private usedTemplateLocals;
26 _hasEval: boolean;
27 getUsedTemplateLocals(): string[];
28 setHasEval(): void;
29 get hasEval(): boolean;
30 has(name: string): boolean;
31 get(name: string): [number, boolean];
32 getLocalsMap(): Dict<number>;
33 getEvalInfo(): Core.EvalInfo;
34 allocateFree(name: string, resolution: ASTv2.FreeVarResolution): number;
35 allocateNamed(name: string): number;
36 allocateBlock(name: string): number;
37 allocate(identifier: string): number;
38}
39export declare class BlockSymbolTable extends SymbolTable {
40 private parent;
41 symbols: string[];
42 slots: number[];
43 constructor(parent: SymbolTable, symbols: string[], slots: number[]);
44 get locals(): string[];
45 has(name: string): boolean;
46 get(name: string): [number, boolean];
47 getLocalsMap(): Dict<number>;
48 getEvalInfo(): Core.EvalInfo;
49 setHasEval(): void;
50 allocateFree(name: string, resolution: ASTv2.FreeVarResolution): number;
51 allocateNamed(name: string): number;
52 allocateBlock(name: string): number;
53 allocate(identifier: string): number;
54}
55//# sourceMappingURL=symbol-table.d.ts.map
\No newline at end of file