@dbml/parse 5.4.0 → 5.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/LICENSE +0 -0
  2. package/dist/{tests → __tests__/examples}/binder/binder.test.d.ts +0 -0
  3. package/dist/{tests → __tests__/examples}/compiler/applyTextEdits.test.d.ts +0 -0
  4. package/dist/{tests → __tests__/examples}/compiler/renameTable.test.d.ts +0 -0
  5. package/dist/{tests → __tests__/examples}/interpreter/interpreter.test.d.ts +0 -0
  6. package/dist/{tests → __tests__/examples}/lexer/lexer.test.d.ts +0 -0
  7. package/dist/{tests → __tests__/examples}/parser/parser.test.d.ts +0 -0
  8. package/dist/{tests/NaN_errors/interpreter_NaN.test.d.ts → __tests__/examples/services/definition.test.d.ts} +0 -0
  9. package/dist/{tests/validator/validator.test.d.ts → __tests__/examples/services/references.test.d.ts} +0 -0
  10. package/dist/__tests__/examples/services/service_utils.test.d.ts +1 -0
  11. package/dist/__tests__/examples/services/suggestions.test.d.ts +1 -0
  12. package/dist/__tests__/examples/validator/validator.test.d.ts +1 -0
  13. package/dist/__tests__/fuzz/interpreter.test.d.ts +1 -0
  14. package/dist/__tests__/fuzz/parser.test.d.ts +1 -0
  15. package/dist/__tests__/fuzz/services.test.d.ts +1 -0
  16. package/dist/__tests__/properties/lexer.test.d.ts +1 -0
  17. package/dist/__tests__/properties/parser.test.d.ts +1 -0
  18. package/dist/__tests__/snapshots/binder/binder.test.d.ts +1 -0
  19. package/dist/__tests__/snapshots/interpreter/interpreter.test.d.ts +1 -0
  20. package/dist/__tests__/snapshots/lexer/lexer.test.d.ts +1 -0
  21. package/dist/__tests__/snapshots/nan/nan.test.d.ts +1 -0
  22. package/dist/__tests__/snapshots/parser/parser.test.d.ts +1 -0
  23. package/dist/__tests__/snapshots/validator/validator.test.d.ts +1 -0
  24. package/dist/__tests__/utils/arbitraries/grammars.d.ts +100 -0
  25. package/dist/__tests__/utils/arbitraries/index.d.ts +3 -0
  26. package/dist/__tests__/utils/arbitraries/tokens.d.ts +20 -0
  27. package/dist/__tests__/utils/arbitraries/utils.d.ts +59 -0
  28. package/dist/__tests__/utils/compiler.d.ts +13 -0
  29. package/dist/__tests__/utils/index.d.ts +3 -0
  30. package/dist/__tests__/utils/mocks.d.ts +16 -0
  31. package/dist/__tests__/utils/testHelpers.d.ts +16 -0
  32. package/dist/dbml-parse.js +29 -10
  33. package/dist/dbml-parse.mjs +8505 -4841
  34. package/dist/index.d.ts +2 -0
  35. package/dist/src/compiler/index.d.ts +0 -0
  36. package/dist/src/compiler/queries/container/element.d.ts +0 -0
  37. package/dist/src/compiler/queries/container/index.d.ts +0 -0
  38. package/dist/src/compiler/queries/container/scope.d.ts +0 -0
  39. package/dist/src/compiler/queries/container/scopeKind.d.ts +0 -0
  40. package/dist/src/compiler/queries/container/stack.d.ts +0 -0
  41. package/dist/src/compiler/queries/container/token.d.ts +0 -0
  42. package/dist/src/compiler/queries/parse.d.ts +0 -0
  43. package/dist/src/compiler/queries/symbol.d.ts +0 -0
  44. package/dist/src/compiler/queries/token.d.ts +0 -0
  45. package/dist/src/compiler/queries/transform/applyTextEdits.d.ts +0 -0
  46. package/dist/src/compiler/queries/transform/index.d.ts +0 -0
  47. package/dist/src/compiler/queries/transform/renameTable.d.ts +0 -0
  48. package/dist/src/compiler/types.d.ts +0 -0
  49. package/dist/src/constants.d.ts +0 -0
  50. package/dist/src/core/analyzer/analyzer.d.ts +0 -0
  51. package/dist/src/core/analyzer/binder/binder.d.ts +4 -3
  52. package/dist/src/core/analyzer/binder/elementBinder/checks.d.ts +12 -11
  53. package/dist/src/core/analyzer/binder/elementBinder/custom.d.ts +15 -9
  54. package/dist/src/core/analyzer/binder/elementBinder/enum.d.ts +15 -11
  55. package/dist/src/core/analyzer/binder/elementBinder/indexes.d.ts +16 -16
  56. package/dist/src/core/analyzer/binder/elementBinder/note.d.ts +15 -11
  57. package/dist/src/core/analyzer/binder/elementBinder/project.d.ts +15 -9
  58. package/dist/src/core/analyzer/binder/elementBinder/ref.d.ts +16 -16
  59. package/dist/src/core/analyzer/binder/elementBinder/table.d.ts +20 -48
  60. package/dist/src/core/analyzer/binder/elementBinder/tableGroup.d.ts +16 -16
  61. package/dist/src/core/analyzer/binder/elementBinder/tablePartial.d.ts +18 -36
  62. package/dist/src/core/analyzer/binder/types.d.ts +3 -16
  63. package/dist/src/core/analyzer/binder/utils.d.ts +18 -2
  64. package/dist/src/core/analyzer/symbol/factory.d.ts +0 -0
  65. package/dist/src/core/analyzer/symbol/symbolIndex.d.ts +2 -4
  66. package/dist/src/core/analyzer/symbol/symbolTable.d.ts +0 -0
  67. package/dist/src/core/analyzer/symbol/symbols.d.ts +9 -8
  68. package/dist/src/core/analyzer/symbol/utils.d.ts +3 -3
  69. package/dist/src/core/analyzer/types.d.ts +0 -0
  70. package/dist/src/core/analyzer/utils.d.ts +8 -5
  71. package/dist/src/core/analyzer/validator/elementValidators/checks.d.ts +0 -0
  72. package/dist/src/core/analyzer/validator/elementValidators/custom.d.ts +0 -0
  73. package/dist/src/core/analyzer/validator/elementValidators/enum.d.ts +0 -0
  74. package/dist/src/core/analyzer/validator/elementValidators/indexes.d.ts +0 -0
  75. package/dist/src/core/analyzer/validator/elementValidators/note.d.ts +0 -0
  76. package/dist/src/core/analyzer/validator/elementValidators/project.d.ts +0 -0
  77. package/dist/src/core/analyzer/validator/elementValidators/ref.d.ts +0 -0
  78. package/dist/src/core/analyzer/validator/elementValidators/table.d.ts +1 -3
  79. package/dist/src/core/analyzer/validator/elementValidators/tableGroup.d.ts +0 -0
  80. package/dist/src/core/analyzer/validator/elementValidators/tablePartial.d.ts +0 -0
  81. package/dist/src/core/analyzer/validator/types.d.ts +0 -0
  82. package/dist/src/core/analyzer/validator/utils.d.ts +18 -3
  83. package/dist/src/core/analyzer/validator/validator.d.ts +0 -0
  84. package/dist/src/core/errors.d.ts +0 -0
  85. package/dist/src/core/interpreter/elementInterpreter/enum.d.ts +0 -0
  86. package/dist/src/core/interpreter/elementInterpreter/project.d.ts +0 -0
  87. package/dist/src/core/interpreter/elementInterpreter/ref.d.ts +0 -0
  88. package/dist/src/core/interpreter/elementInterpreter/sticky_note.d.ts +0 -0
  89. package/dist/src/core/interpreter/elementInterpreter/table.d.ts +0 -0
  90. package/dist/src/core/interpreter/elementInterpreter/tableGroup.d.ts +0 -0
  91. package/dist/src/core/interpreter/elementInterpreter/tablePartial.d.ts +0 -0
  92. package/dist/src/core/interpreter/interpreter.d.ts +0 -0
  93. package/dist/src/core/interpreter/types.d.ts +1 -1
  94. package/dist/src/core/interpreter/utils.d.ts +0 -0
  95. package/dist/src/core/lexer/lexer.d.ts +0 -0
  96. package/dist/src/core/lexer/tokens.d.ts +0 -1
  97. package/dist/src/core/lexer/utils.d.ts +0 -0
  98. package/dist/src/core/option.d.ts +0 -0
  99. package/dist/src/core/parser/contextStack.d.ts +0 -0
  100. package/dist/src/core/parser/factory.d.ts +0 -0
  101. package/dist/src/core/parser/nodes.d.ts +3 -11
  102. package/dist/src/core/parser/parser.d.ts +0 -1
  103. package/dist/src/core/parser/utils.d.ts +1 -0
  104. package/dist/src/core/report.d.ts +0 -0
  105. package/dist/src/core/serialization/serialize.d.ts +0 -0
  106. package/dist/src/core/types.d.ts +0 -0
  107. package/dist/src/core/utils.d.ts +0 -0
  108. package/dist/src/index.d.ts +0 -0
  109. package/dist/src/services/definition/provider.d.ts +0 -0
  110. package/dist/src/services/index.d.ts +0 -0
  111. package/dist/src/services/references/provider.d.ts +0 -0
  112. package/dist/src/services/suggestions/provider.d.ts +0 -0
  113. package/dist/src/services/suggestions/utils.d.ts +0 -0
  114. package/dist/src/services/types.d.ts +1 -1
  115. package/dist/src/services/utils.d.ts +0 -0
  116. package/package.json +5 -5
  117. package/dist/src/core/analyzer/binder/elementBinder/elementBinder.d.ts +0 -25
  118. package/dist/tests/jestHelpers.d.ts +0 -1
@@ -0,0 +1,2 @@
1
+ export * from './src/index'
2
+ export {}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -4,7 +4,8 @@ import { default as Report } from '../../report';
4
4
  import { default as SymbolFactory } from '../symbol/factory';
5
5
  export default class Binder {
6
6
  private ast;
7
- private errors;
8
- constructor(ast: ProgramNode);
9
- resolve(symbolFactory: SymbolFactory): Report<ProgramNode, CompileError>;
7
+ private symbolFactory;
8
+ constructor(ast: ProgramNode, symbolFactory: SymbolFactory);
9
+ private resolvePartialInjections;
10
+ resolve(): Report<ProgramNode, CompileError>;
10
11
  }
@@ -1,12 +1,13 @@
1
- import { default as ElementBinder } from './elementBinder';
2
- export default class ChecksBinder extends ElementBinder {
3
- protected subfield: {
4
- arg: {
5
- argBinderRules: {
6
- shouldBind: false;
7
- }[];
8
- };
9
- settingList: {};
10
- };
11
- protected settingList: {};
1
+ import { ElementDeclarationNode, ProgramNode, SyntaxToken } from '../../../..';
2
+ import { CompileError } from '../../../errors';
3
+ import { default as SymbolFactory } from '../../symbol/factory';
4
+ import { ElementBinder } from '../types';
5
+ export default class ChecksBinder implements ElementBinder {
6
+ private symbolFactory;
7
+ private declarationNode;
8
+ private ast;
9
+ constructor(declarationNode: ElementDeclarationNode & {
10
+ type: SyntaxToken;
11
+ }, ast: ProgramNode, symbolFactory: SymbolFactory);
12
+ bind(): CompileError[];
12
13
  }
@@ -1,10 +1,16 @@
1
- import { default as ElementBinder } from './elementBinder';
2
- export default class CustomBinder extends ElementBinder {
3
- protected subfield: {
4
- arg: {
5
- argBinderRules: never[];
6
- };
7
- settingList: {};
8
- };
9
- protected settingList: {};
1
+ import { CompileError } from '../../../errors';
2
+ import { ElementBinder } from '../types';
3
+ import { ElementDeclarationNode, ProgramNode } from '../../../parser/nodes';
4
+ import { SyntaxToken } from '../../../lexer/tokens';
5
+ import { default as SymbolFactory } from '../../symbol/factory';
6
+ export default class CustomBinder implements ElementBinder {
7
+ private symbolFactory;
8
+ private declarationNode;
9
+ private ast;
10
+ constructor(declarationNode: ElementDeclarationNode & {
11
+ type: SyntaxToken;
12
+ }, ast: ProgramNode, symbolFactory: SymbolFactory);
13
+ bind(): CompileError[];
14
+ private bindBody;
15
+ private bindSubElements;
10
16
  }
@@ -1,12 +1,16 @@
1
- import { default as ElementBinder } from './elementBinder';
2
- export default class EnumBinder extends ElementBinder {
3
- protected subfield: {
4
- arg: {
5
- argBinderRules: {
6
- shouldBind: false;
7
- }[];
8
- };
9
- settingList: {};
10
- };
11
- protected settingList: {};
1
+ import { CompileError } from '../../../errors';
2
+ import { ElementBinder } from '../types';
3
+ import { ElementDeclarationNode, ProgramNode } from '../../../parser/nodes';
4
+ import { SyntaxToken } from '../../../lexer/tokens';
5
+ import { default as SymbolFactory } from '../../symbol/factory';
6
+ export default class EnumBinder implements ElementBinder {
7
+ private symbolFactory;
8
+ private declarationNode;
9
+ private ast;
10
+ constructor(declarationNode: ElementDeclarationNode & {
11
+ type: SyntaxToken;
12
+ }, ast: ProgramNode, symbolFactory: SymbolFactory);
13
+ bind(): CompileError[];
14
+ private bindBody;
15
+ private bindSubElements;
12
16
  }
@@ -1,17 +1,17 @@
1
- import { SymbolKind } from '../../symbol/symbolIndex';
2
- import { default as ElementBinder } from './elementBinder';
3
- export default class IndexesBinder extends ElementBinder {
4
- protected subfield: {
5
- arg: {
6
- argBinderRules: {
7
- shouldBind: true;
8
- topSubnamesSymbolKind: SymbolKind[];
9
- remainingSubnamesSymbolKind: SymbolKind;
10
- ignoreNameNotFound: boolean;
11
- ignoreNameNotFoundForQuotedVariable: boolean;
12
- }[];
13
- };
14
- settingList: {};
15
- };
16
- protected settingList: {};
1
+ import { ElementDeclarationNode, ProgramNode } from '../../../parser/nodes';
2
+ import { ElementBinder } from '../types';
3
+ import { SyntaxToken } from '../../../lexer/tokens';
4
+ import { CompileError } from '../../../errors';
5
+ import { default as SymbolFactory } from '../../symbol/factory';
6
+ export default class IndexesBinder implements ElementBinder {
7
+ private symbolFactory;
8
+ private declarationNode;
9
+ private ast;
10
+ constructor(declarationNode: ElementDeclarationNode & {
11
+ type: SyntaxToken;
12
+ }, ast: ProgramNode, symbolFactory: SymbolFactory);
13
+ bind(): CompileError[];
14
+ private bindBody;
15
+ private bindFields;
16
+ private bindSubElements;
17
17
  }
@@ -1,12 +1,16 @@
1
- import { default as ElementBinder } from './elementBinder';
2
- export default class NoteBinder extends ElementBinder {
3
- protected subfield: {
4
- arg: {
5
- argBinderRules: {
6
- shouldBind: false;
7
- }[];
8
- };
9
- settingList: {};
10
- };
11
- protected settingList: {};
1
+ import { CompileError } from '../../../errors';
2
+ import { ElementBinder } from '../types';
3
+ import { ElementDeclarationNode, ProgramNode } from '../../../parser/nodes';
4
+ import { SyntaxToken } from '../../../lexer/tokens';
5
+ import { default as SymbolFactory } from '../../symbol/factory';
6
+ export default class NoteBinder implements ElementBinder {
7
+ private symbolFactory;
8
+ private declarationNode;
9
+ private ast;
10
+ constructor(declarationNode: ElementDeclarationNode & {
11
+ type: SyntaxToken;
12
+ }, ast: ProgramNode, symbolFactory: SymbolFactory);
13
+ bind(): CompileError[];
14
+ private bindBody;
15
+ private bindSubElements;
12
16
  }
@@ -1,10 +1,16 @@
1
- import { default as ElementBinder } from './elementBinder';
2
- export default class ProjectBinder extends ElementBinder {
3
- protected subfield: {
4
- arg: {
5
- argBinderRules: never[];
6
- };
7
- settingList: {};
8
- };
9
- protected settingList: {};
1
+ import { SyntaxToken } from '../../../lexer/tokens';
2
+ import { ElementBinder } from '../types';
3
+ import { ElementDeclarationNode, ProgramNode } from '../../../parser/nodes';
4
+ import { CompileError } from '../../../errors';
5
+ import { default as SymbolFactory } from '../../symbol/factory';
6
+ export default class ProjectBinder implements ElementBinder {
7
+ private symbolFactory;
8
+ private declarationNode;
9
+ private ast;
10
+ constructor(declarationNode: ElementDeclarationNode & {
11
+ type: SyntaxToken;
12
+ }, ast: ProgramNode, symbolFactory: SymbolFactory);
13
+ bind(): CompileError[];
14
+ private bindBody;
15
+ private bindSubElements;
10
16
  }
@@ -1,17 +1,17 @@
1
- import { SymbolKind } from '../../symbol/symbolIndex';
2
- import { default as ElementBinder } from './elementBinder';
3
- export default class RefBinder extends ElementBinder {
4
- protected subfield: {
5
- arg: {
6
- argBinderRules: {
7
- shouldBind: true;
8
- topSubnamesSymbolKind: SymbolKind[];
9
- remainingSubnamesSymbolKind: SymbolKind;
10
- ignoreNameNotFound: boolean;
11
- ignoreNameNotFoundForQuotedVariable: boolean;
12
- }[];
13
- };
14
- settingList: {};
15
- };
16
- protected settingList: {};
1
+ import { ElementDeclarationNode, ProgramNode } from '../../../parser/nodes';
2
+ import { ElementBinder } from '../types';
3
+ import { SyntaxToken } from '../../../lexer/tokens';
4
+ import { CompileError } from '../../../errors';
5
+ import { default as SymbolFactory } from '../../symbol/factory';
6
+ export default class RefBinder implements ElementBinder {
7
+ private symbolFactory;
8
+ private declarationNode;
9
+ private ast;
10
+ constructor(declarationNode: ElementDeclarationNode & {
11
+ type: SyntaxToken;
12
+ }, ast: ProgramNode, symbolFactory: SymbolFactory);
13
+ bind(): CompileError[];
14
+ private bindBody;
15
+ private bindFields;
16
+ private bindSubElements;
17
17
  }
@@ -1,49 +1,21 @@
1
- import { SymbolKind } from '../../symbol/symbolIndex';
2
- import { default as ElementBinder } from './elementBinder';
3
- export default class TableBinder extends ElementBinder {
4
- protected subfield: {
5
- arg: {
6
- argBinderRules: ({
7
- shouldBind: false;
8
- topSubnamesSymbolKind?: undefined;
9
- remainingSubnamesSymbolKind?: undefined;
10
- ignoreNameNotFound?: undefined;
11
- ignoreNameNotFoundForQuotedVariable?: undefined;
12
- } | {
13
- shouldBind: true;
14
- topSubnamesSymbolKind: SymbolKind[];
15
- remainingSubnamesSymbolKind: SymbolKind;
16
- ignoreNameNotFound: boolean;
17
- ignoreNameNotFoundForQuotedVariable: boolean;
18
- })[];
19
- };
20
- settingList: {
21
- ref: {
22
- shouldBind: true;
23
- topSubnamesSymbolKind: SymbolKind[];
24
- remainingSubnamesSymbolKind: SymbolKind;
25
- ignoreNameNotFound: boolean;
26
- ignoreNameNotFoundForQuotedVariable: boolean;
27
- };
28
- default: {
29
- shouldBind: true;
30
- topSubnamesSymbolKind: SymbolKind[];
31
- remainingSubnamesSymbolKind: SymbolKind;
32
- ignoreNameNotFound: boolean;
33
- keywords: string[];
34
- ignoreNameNotFoundForQuotedVariable: boolean;
35
- };
36
- check: {
37
- shouldBind: false;
38
- };
39
- };
40
- };
41
- protected settingList: {};
42
- protected injectionBinderRule: {
43
- shouldBind: true;
44
- topSubnamesSymbolKind: never[];
45
- remainingSubnamesSymbolKind: SymbolKind;
46
- ignoreNameNotFound: boolean;
47
- ignoreNameNotFoundForQuotedVariable: boolean;
48
- };
1
+ import { ElementDeclarationNode, ProgramNode } from '../../../parser/nodes';
2
+ import { ElementBinder } from '../types';
3
+ import { SyntaxToken } from '../../../lexer/tokens';
4
+ import { CompileError } from '../../../errors';
5
+ import { default as SymbolFactory } from '../../symbol/factory';
6
+ export default class TableBinder implements ElementBinder {
7
+ private symbolFactory;
8
+ private declarationNode;
9
+ private ast;
10
+ constructor(declarationNode: ElementDeclarationNode & {
11
+ type: SyntaxToken;
12
+ }, ast: ProgramNode, symbolFactory: SymbolFactory);
13
+ bind(): CompileError[];
14
+ resolvePartialInjections(): CompileError[];
15
+ private bindBody;
16
+ private bindFields;
17
+ private tryToBindColumnType;
18
+ private tryToBindEnumFieldRef;
19
+ private bindInlineRef;
20
+ private bindSubElements;
49
21
  }
@@ -1,17 +1,17 @@
1
- import { SymbolKind } from '../../symbol/symbolIndex';
2
- import { default as ElementBinder } from './elementBinder';
3
- export default class TableGroupBinder extends ElementBinder {
4
- protected subfield: {
5
- arg: {
6
- argBinderRules: {
7
- shouldBind: true;
8
- topSubnamesSymbolKind: SymbolKind[];
9
- remainingSubnamesSymbolKind: SymbolKind;
10
- ignoreNameNotFound: boolean;
11
- ignoreNameNotFoundForQuotedVariable: boolean;
12
- }[];
13
- };
14
- settingList: {};
15
- };
16
- protected settingList: {};
1
+ import { ElementDeclarationNode, ProgramNode } from '../../../parser/nodes';
2
+ import { ElementBinder } from '../types';
3
+ import { SyntaxToken } from '../../../lexer/tokens';
4
+ import { CompileError } from '../../../errors';
5
+ import { default as SymbolFactory } from '../../symbol/factory';
6
+ export default class TableGroupBinder implements ElementBinder {
7
+ private symbolFactory;
8
+ private declarationNode;
9
+ private ast;
10
+ constructor(declarationNode: ElementDeclarationNode & {
11
+ type: SyntaxToken;
12
+ }, ast: ProgramNode, symbolFactory: SymbolFactory);
13
+ bind(): CompileError[];
14
+ private bindBody;
15
+ private bindFields;
16
+ private bindSubElements;
17
17
  }
@@ -1,37 +1,19 @@
1
- import { SymbolKind } from '../../symbol/symbolIndex';
2
- import { default as ElementBinder } from './elementBinder';
3
- export default class TablePartialBinder extends ElementBinder {
4
- protected subfield: {
5
- arg: {
6
- argBinderRules: ({
7
- shouldBind: false;
8
- topSubnamesSymbolKind?: undefined;
9
- remainingSubnamesSymbolKind?: undefined;
10
- ignoreNameNotFound?: undefined;
11
- ignoreNameNotFoundForQuotedVariable?: undefined;
12
- } | {
13
- shouldBind: true;
14
- topSubnamesSymbolKind: SymbolKind[];
15
- remainingSubnamesSymbolKind: SymbolKind;
16
- ignoreNameNotFound: boolean;
17
- ignoreNameNotFoundForQuotedVariable: boolean;
18
- })[];
19
- };
20
- settingList: {
21
- ref: {
22
- shouldBind: true;
23
- topSubnamesSymbolKind: SymbolKind[];
24
- remainingSubnamesSymbolKind: SymbolKind;
25
- ignoreNameNotFound: boolean;
26
- ignoreNameNotFoundForQuotedVariable: boolean;
27
- };
28
- default: {
29
- shouldBind: false;
30
- };
31
- check: {
32
- shouldBind: false;
33
- };
34
- };
35
- };
36
- protected settingList: {};
1
+ import { ElementDeclarationNode, ProgramNode } from '../../../parser/nodes';
2
+ import { SyntaxToken } from '../../../lexer/tokens';
3
+ import { ElementBinder } from '../types';
4
+ import { CompileError } from '../../../errors';
5
+ import { default as SymbolFactory } from '../../symbol/factory';
6
+ export default class TablePartialBinder implements ElementBinder {
7
+ private symbolFactory;
8
+ private declarationNode;
9
+ private ast;
10
+ constructor(declarationNode: ElementDeclarationNode & {
11
+ type: SyntaxToken;
12
+ }, ast: ProgramNode, symbolFactory: SymbolFactory);
13
+ bind(): CompileError[];
14
+ private bindBody;
15
+ private bindFields;
16
+ private tryToBindColumnType;
17
+ private bindInlineRef;
18
+ private bindSubElements;
37
19
  }
@@ -1,17 +1,4 @@
1
- import { SymbolKind } from '../symbol/symbolIndex';
2
- export type BinderRule = {
3
- shouldBind: true;
4
- topSubnamesSymbolKind: SymbolKind[];
5
- remainingSubnamesSymbolKind: SymbolKind;
6
- ignoreNameNotFound: boolean;
7
- keywords?: readonly string[];
8
- ignoreNameNotFoundForQuotedVariable?: boolean;
9
- } | {
10
- shouldBind: false;
11
- };
12
- export interface ArgumentBinderRule {
13
- argBinderRules: BinderRule[];
14
- }
15
- export interface SettingListBinderRule {
16
- [index: string]: BinderRule;
1
+ import { CompileError } from '../../errors';
2
+ export interface ElementBinder {
3
+ bind(): CompileError[];
17
4
  }
@@ -1,5 +1,5 @@
1
1
  import { SyntaxToken } from '../../lexer/tokens';
2
- import { ElementDeclarationNode } from '../../parser/nodes';
2
+ import { ElementDeclarationNode, PrimaryExpressionNode, ProgramNode, SyntaxNode, VariableNode } from '../../parser/nodes';
3
3
  import { default as ChecksBinder } from './elementBinder/checks';
4
4
  import { default as CustomBinder } from './elementBinder/custom';
5
5
  import { default as EnumBinder } from './elementBinder/enum';
@@ -10,6 +10,22 @@ import { default as RefBinder } from './elementBinder/ref';
10
10
  import { default as TableBinder } from './elementBinder/table';
11
11
  import { default as TableGroupBinder } from './elementBinder/tableGroup';
12
12
  import { default as TablePartialBinder } from './elementBinder/tablePartial';
13
+ import { SymbolKind } from '../symbol/symbolIndex';
14
+ import { CompileError } from '../../errors';
13
15
  export declare function pickBinder(element: ElementDeclarationNode & {
14
16
  type: SyntaxToken;
15
- }): typeof EnumBinder | typeof TableBinder | typeof TableGroupBinder | typeof ProjectBinder | typeof RefBinder | typeof NoteBinder | typeof IndexesBinder | typeof TablePartialBinder | typeof ChecksBinder | typeof CustomBinder;
17
+ }): typeof ChecksBinder | typeof CustomBinder | typeof EnumBinder | typeof TableBinder | typeof TableGroupBinder | typeof ProjectBinder | typeof RefBinder | typeof NoteBinder | typeof IndexesBinder | typeof TablePartialBinder;
18
+ export declare function scanNonListNodeForBinding(node?: SyntaxNode): {
19
+ variables: (PrimaryExpressionNode & {
20
+ expression: VariableNode;
21
+ })[];
22
+ tupleElements: (PrimaryExpressionNode & {
23
+ expression: VariableNode;
24
+ })[];
25
+ }[];
26
+ export declare function lookupAndBindInScope(initialScope: ElementDeclarationNode | ProgramNode, symbolInfos: {
27
+ node: PrimaryExpressionNode & {
28
+ expression: VariableNode;
29
+ };
30
+ kind: SymbolKind;
31
+ }[]): CompileError[];
File without changes
@@ -10,7 +10,7 @@ export declare enum SymbolKind {
10
10
  EnumField = "Enum field",
11
11
  Note = "Note",
12
12
  TablePartial = "TablePartial",
13
- TablePartialInjection = "TablePartialInjection"
13
+ PartialInjection = "PartialInjection"
14
14
  }
15
15
  export declare function createSchemaSymbolIndex(key: string): NodeSymbolIndex;
16
16
  export declare function createTableSymbolIndex(key: string): NodeSymbolIndex;
@@ -21,12 +21,10 @@ export declare function createTableGroupSymbolIndex(key: string): NodeSymbolInde
21
21
  export declare function createTableGroupFieldSymbolIndex(key: string): NodeSymbolIndex;
22
22
  export declare function createStickyNoteSymbolIndex(key: string): NodeSymbolIndex;
23
23
  export declare function createTablePartialSymbolIndex(key: string): NodeSymbolIndex;
24
- export declare function createTablePartialInjectionSymbolIndex(key: string): NodeSymbolIndex;
24
+ export declare function createPartialInjectionSymbolIndex(key: string): NodeSymbolIndex;
25
25
  export declare function createNodeSymbolIndex(key: string, symbolKind: SymbolKind): NodeSymbolIndex;
26
26
  export declare function destructureIndex(id: NodeSymbolIndex): Option<{
27
27
  name: string;
28
28
  kind: SymbolKind;
29
29
  }>;
30
30
  export declare function isPublicSchemaIndex(id: NodeSymbolIndex): boolean;
31
- export declare function isInjectionIndex(id: NodeSymbolIndex): boolean;
32
- export declare function getInjectorIndex(injectionNodeIndex: NodeSymbolIndex): NodeSymbolIndex | null;
File without changes
@@ -11,7 +11,6 @@ export interface NodeSymbol {
11
11
  symbolTable?: SymbolTable;
12
12
  declaration?: SyntaxNode;
13
13
  references: SyntaxNode[];
14
- injectorDeclaration?: SyntaxNode;
15
14
  }
16
15
  export declare class SchemaSymbol implements NodeSymbol {
17
16
  id: NodeSymbolId;
@@ -85,21 +84,23 @@ export declare class TablePartialSymbol implements NodeSymbol {
85
84
  declaration: SyntaxNode;
86
85
  }, id: NodeSymbolId);
87
86
  }
88
- export declare class TablePartialInjectionSymbol implements NodeSymbol {
87
+ export declare class PartialInjectionSymbol implements NodeSymbol {
89
88
  id: NodeSymbolId;
89
+ symbolTable: SymbolTable;
90
90
  declaration: SyntaxNode;
91
91
  references: SyntaxNode[];
92
- constructor({ declaration }: {
92
+ constructor({ symbolTable, declaration }: {
93
+ symbolTable: SymbolTable;
93
94
  declaration: SyntaxNode;
94
95
  }, id: NodeSymbolId);
95
96
  }
96
97
  export declare class TablePartialInjectedColumnSymbol implements NodeSymbol {
97
98
  id: NodeSymbolId;
98
- injectorDeclaration: SyntaxNode;
99
- injectorFieldSymbol: NodeSymbol;
99
+ declaration: SyntaxNode;
100
+ tablePartialSymbol: TablePartialSymbol;
100
101
  references: SyntaxNode[];
101
- constructor({ injectorFieldSymbol, injectorDeclaration }: {
102
- injectorFieldSymbol: NodeSymbol;
103
- injectorDeclaration: SyntaxNode;
102
+ constructor({ declaration, tablePartialSymbol }: {
103
+ declaration: SyntaxNode;
104
+ tablePartialSymbol: TablePartialSymbol;
104
105
  }, id: NodeSymbolId);
105
106
  }
@@ -1,4 +1,4 @@
1
- import { NodeSymbolIndex } from './symbolIndex';
2
- import { NodeSymbol, TablePartialInjectedColumnSymbol } from './symbols';
1
+ import { NodeSymbolIndex, SymbolKind } from './symbolIndex';
2
+ import { NodeSymbol } from './symbols';
3
3
  export declare function generatePossibleIndexes(name: string): NodeSymbolIndex[];
4
- export declare function getInjectedFieldSymbolFromInjectorFieldSymbol(injectorSymbol: NodeSymbol): typeof TablePartialInjectedColumnSymbol | null;
4
+ export declare function getSymbolKind(symbol: NodeSymbol): SymbolKind;
File without changes
@@ -1,5 +1,5 @@
1
1
  import { Option } from '../option';
2
- import { ElementDeclarationNode, FunctionExpressionNode, InfixExpressionNode, PartialInjectionNode, PrimaryExpressionNode, SyntaxNode, VariableNode } from '../parser/nodes';
2
+ import { ElementDeclarationNode, FunctionExpressionNode, InfixExpressionNode, PrimaryExpressionNode, SyntaxNode, VariableNode } from '../parser/nodes';
3
3
  import { NodeSymbolIndex } from './symbol/symbolIndex';
4
4
  import { NodeSymbol } from './symbol/symbols';
5
5
  import { SyntaxToken } from '../lexer/tokens';
@@ -7,9 +7,13 @@ import { ElementKind } from './types';
7
7
  export declare function getElementKind(node?: ElementDeclarationNode): Option<ElementKind>;
8
8
  export declare function destructureMemberAccessExpression(node?: SyntaxNode): Option<SyntaxNode[]>;
9
9
  export declare function destructureComplexVariable(node?: SyntaxNode): Option<string[]>;
10
- export declare function destructureComplexTuple(node?: SyntaxNode): Option<{
11
- variables: string[];
12
- tupleElements?: string[];
10
+ export declare function destructureComplexVariableTuple(node?: SyntaxNode): Option<{
11
+ variables: (PrimaryExpressionNode & {
12
+ expression: VariableNode;
13
+ })[];
14
+ tupleElements: (PrimaryExpressionNode & {
15
+ expression: VariableNode;
16
+ })[];
13
17
  }>;
14
18
  export declare function extractVariableFromExpression(node?: SyntaxNode): Option<string>;
15
19
  export declare function destructureIndexNode(node?: SyntaxNode): Option<{
@@ -21,7 +25,6 @@ export declare function destructureIndexNode(node?: SyntaxNode): Option<{
21
25
  export declare function extractVarNameFromPrimaryVariable(node?: PrimaryExpressionNode & {
22
26
  expression: VariableNode;
23
27
  }): Option<string>;
24
- export declare function extractVarNameFromPartialInjection(node?: PartialInjectionNode): Option<string>;
25
28
  export declare function extractQuotedStringToken(value?: SyntaxNode): Option<string>;
26
29
  export declare function isBinaryRelationship(value?: SyntaxNode): value is InfixExpressionNode;
27
30
  export declare function isEqualTupleOperands(value: InfixExpressionNode): value is InfixExpressionNode;