1 | import type { Core, Dict } from '@glimmer/interfaces';
|
2 | import * as ASTv2 from './v2/api';
|
3 | export interface Upvar {
|
4 | readonly name: string;
|
5 | readonly resolution: ASTv2.FreeVarResolution;
|
6 | }
|
7 | interface SymbolTableOptions {
|
8 | customizeComponentName: (input: string) => string;
|
9 | lexicalScope: (variable: string) => boolean;
|
10 | }
|
11 | export declare abstract class SymbolTable {
|
12 | static top(locals: readonly string[], keywords: readonly string[], options: SymbolTableOptions): ProgramSymbolTable;
|
13 | abstract root(): ProgramSymbolTable;
|
14 | abstract has(name: string): boolean;
|
15 | abstract get(name: string): [symbol: number, isRoot: boolean];
|
16 | abstract hasKeyword(name: string): boolean;
|
17 | abstract getKeyword(name: string): number;
|
18 | abstract hasLexical(name: string): boolean;
|
19 | abstract getLocalsMap(): Dict<number>;
|
20 | abstract getDebugInfo(): Core.DebugSymbols;
|
21 | abstract allocateFree(name: string, resolution: ASTv2.FreeVarResolution): number;
|
22 | abstract allocateNamed(name: string): number;
|
23 | abstract allocateBlock(name: string): number;
|
24 | abstract allocate(identifier: string): number;
|
25 | child(locals: string[]): BlockSymbolTable;
|
26 | }
|
27 | export declare class ProgramSymbolTable extends SymbolTable {
|
28 | private templateLocals;
|
29 | private keywords;
|
30 | private options;
|
31 | constructor(templateLocals: readonly string[], keywords: readonly string[], options: SymbolTableOptions);
|
32 | readonly symbols: string[];
|
33 | readonly upvars: string[];
|
34 | private size;
|
35 | readonly named: Dict<number>;
|
36 | readonly blocks: Dict<number>;
|
37 | readonly usedTemplateLocals: string[];
|
38 | root(): this;
|
39 | hasLexical(name: string): boolean;
|
40 | hasKeyword(name: string): boolean;
|
41 | getKeyword(name: string): number;
|
42 | getUsedTemplateLocals(): string[];
|
43 | has(name: string): boolean;
|
44 | get(name: string): [number, boolean];
|
45 | getLocalsMap(): Dict<number>;
|
46 | getDebugInfo(): Core.DebugSymbols;
|
47 | allocateFree(name: string, resolution: ASTv2.FreeVarResolution): number;
|
48 | allocateNamed(name: string): number;
|
49 | allocateBlock(name: string): number;
|
50 | allocate(identifier: string): number;
|
51 | }
|
52 | export declare class BlockSymbolTable extends SymbolTable {
|
53 | #private;
|
54 | private parent;
|
55 | symbols: string[];
|
56 | slots: number[];
|
57 | constructor(parent: SymbolTable, symbols: string[], slots: number[]);
|
58 | root(): ProgramSymbolTable;
|
59 | get locals(): string[];
|
60 | hasLexical(name: string): boolean;
|
61 | getKeyword(name: string): number;
|
62 | hasKeyword(name: string): boolean;
|
63 | has(name: string): boolean;
|
64 | get(name: string): [number, boolean];
|
65 | getLocalsMap(): Dict<number>;
|
66 | getDebugInfo(): [locals: Record<string, number>, upvars: Record<string, number>];
|
67 | allocateFree(name: string, resolution: ASTv2.FreeVarResolution): number;
|
68 | allocateNamed(name: string): number;
|
69 | allocateBlock(name: string): number;
|
70 | allocate(identifier: string): number;
|
71 | }
|
72 | export {};
|