brighterscript 1.0.0-alpha.26 → 1.0.0-alpha.28

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 (200) hide show
  1. package/CHANGELOG.md +82 -5
  2. package/README.md +1 -1
  3. package/dist/AstValidationSegmenter.d.ts +1 -1
  4. package/dist/AstValidationSegmenter.js +4 -5
  5. package/dist/AstValidationSegmenter.js.map +1 -1
  6. package/dist/DiagnosticFilterer.d.ts +7 -4
  7. package/dist/DiagnosticFilterer.js +67 -37
  8. package/dist/DiagnosticFilterer.js.map +1 -1
  9. package/dist/DiagnosticMessages.d.ts +1 -3
  10. package/dist/DiagnosticMessages.js +5 -8
  11. package/dist/DiagnosticMessages.js.map +1 -1
  12. package/dist/PluginInterface.js +1 -1
  13. package/dist/PluginInterface.js.map +1 -1
  14. package/dist/Program.d.ts +1 -1
  15. package/dist/Program.js +34 -31
  16. package/dist/Program.js.map +1 -1
  17. package/dist/Scope.d.ts +7 -34
  18. package/dist/Scope.js +45 -305
  19. package/dist/Scope.js.map +1 -1
  20. package/dist/SymbolTable.d.ts +1 -8
  21. package/dist/SymbolTable.js +1 -10
  22. package/dist/SymbolTable.js.map +1 -1
  23. package/dist/SymbolTypeFlag.d.ts +8 -0
  24. package/dist/SymbolTypeFlag.js +13 -0
  25. package/dist/SymbolTypeFlag.js.map +1 -0
  26. package/dist/XmlScope.d.ts +0 -8
  27. package/dist/XmlScope.js +6 -84
  28. package/dist/XmlScope.js.map +1 -1
  29. package/dist/astUtils/CachedLookups.d.ts +1 -2
  30. package/dist/astUtils/CachedLookups.js +4 -19
  31. package/dist/astUtils/CachedLookups.js.map +1 -1
  32. package/dist/astUtils/creators.d.ts +1 -0
  33. package/dist/astUtils/creators.js +48 -8
  34. package/dist/astUtils/creators.js.map +1 -1
  35. package/dist/astUtils/creators.spec.js +0 -10
  36. package/dist/astUtils/creators.spec.js.map +1 -1
  37. package/dist/astUtils/reflection.d.ts +3 -2
  38. package/dist/astUtils/reflection.js +11 -7
  39. package/dist/astUtils/reflection.js.map +1 -1
  40. package/dist/astUtils/reflection.spec.js +11 -16
  41. package/dist/astUtils/reflection.spec.js.map +1 -1
  42. package/dist/astUtils/visitors.d.ts +1 -2
  43. package/dist/astUtils/visitors.js.map +1 -1
  44. package/dist/astUtils/visitors.spec.js +1 -5
  45. package/dist/astUtils/visitors.spec.js.map +1 -1
  46. package/dist/bscPlugin/BscPlugin.d.ts +2 -1
  47. package/dist/bscPlugin/BscPlugin.js +4 -0
  48. package/dist/bscPlugin/BscPlugin.js.map +1 -1
  49. package/dist/bscPlugin/SignatureHelpUtil.js +4 -3
  50. package/dist/bscPlugin/SignatureHelpUtil.js.map +1 -1
  51. package/dist/bscPlugin/completions/CompletionsProcessor.d.ts +1 -0
  52. package/dist/bscPlugin/completions/CompletionsProcessor.js +46 -29
  53. package/dist/bscPlugin/completions/CompletionsProcessor.js.map +1 -1
  54. package/dist/bscPlugin/completions/CompletionsProcessor.spec.js +39 -0
  55. package/dist/bscPlugin/completions/CompletionsProcessor.spec.js.map +1 -1
  56. package/dist/bscPlugin/hover/HoverProcessor.d.ts +1 -0
  57. package/dist/bscPlugin/hover/HoverProcessor.js +30 -10
  58. package/dist/bscPlugin/hover/HoverProcessor.js.map +1 -1
  59. package/dist/bscPlugin/hover/HoverProcessor.spec.js +125 -7
  60. package/dist/bscPlugin/hover/HoverProcessor.spec.js.map +1 -1
  61. package/dist/bscPlugin/references/ReferencesProvider.d.ts +12 -0
  62. package/dist/bscPlugin/references/ReferencesProvider.js +56 -0
  63. package/dist/bscPlugin/references/ReferencesProvider.js.map +1 -0
  64. package/dist/bscPlugin/references/ReferencesProvider.spec.d.ts +1 -0
  65. package/dist/bscPlugin/references/ReferencesProvider.spec.js +51 -0
  66. package/dist/bscPlugin/references/ReferencesProvider.spec.js.map +1 -0
  67. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js +2 -3
  68. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js.map +1 -1
  69. package/dist/bscPlugin/validation/BrsFileValidator.js +25 -31
  70. package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -1
  71. package/dist/bscPlugin/validation/ScopeValidator.d.ts +34 -1
  72. package/dist/bscPlugin/validation/ScopeValidator.js +435 -27
  73. package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -1
  74. package/dist/bscPlugin/validation/ScopeValidator.spec.js +178 -10
  75. package/dist/bscPlugin/validation/ScopeValidator.spec.js.map +1 -1
  76. package/dist/diagnosticUtils.d.ts +1 -1
  77. package/dist/files/BrsFile.Class.spec.js +15 -7
  78. package/dist/files/BrsFile.Class.spec.js.map +1 -1
  79. package/dist/files/BrsFile.d.ts +14 -5
  80. package/dist/files/BrsFile.js +83 -150
  81. package/dist/files/BrsFile.js.map +1 -1
  82. package/dist/files/BrsFile.spec.js +429 -162
  83. package/dist/files/BrsFile.spec.js.map +1 -1
  84. package/dist/files/XmlFile.d.ts +2 -3
  85. package/dist/files/XmlFile.js +1 -3
  86. package/dist/files/XmlFile.js.map +1 -1
  87. package/dist/index.d.ts +1 -0
  88. package/dist/index.js +1 -0
  89. package/dist/index.js.map +1 -1
  90. package/dist/interfaces.d.ts +117 -85
  91. package/dist/interfaces.js +9 -9
  92. package/dist/interfaces.js.map +1 -1
  93. package/dist/lexer/Lexer.d.ts +9 -3
  94. package/dist/lexer/Lexer.js +36 -15
  95. package/dist/lexer/Lexer.js.map +1 -1
  96. package/dist/lexer/Lexer.spec.js +76 -38
  97. package/dist/lexer/Lexer.spec.js.map +1 -1
  98. package/dist/lexer/Token.js +1 -1
  99. package/dist/lexer/Token.js.map +1 -1
  100. package/dist/lexer/TokenKind.d.ts +1 -0
  101. package/dist/lexer/TokenKind.js +4 -1
  102. package/dist/lexer/TokenKind.js.map +1 -1
  103. package/dist/parser/AstNode.d.ts +1 -2
  104. package/dist/parser/AstNode.js +0 -1
  105. package/dist/parser/AstNode.js.map +1 -1
  106. package/dist/parser/BrsTranspileState.d.ts +1 -1
  107. package/dist/parser/Expression.d.ts +153 -135
  108. package/dist/parser/Expression.js +204 -114
  109. package/dist/parser/Expression.js.map +1 -1
  110. package/dist/parser/Parser.Class.spec.js +15 -16
  111. package/dist/parser/Parser.Class.spec.js.map +1 -1
  112. package/dist/parser/Parser.d.ts +8 -4
  113. package/dist/parser/Parser.js +108 -149
  114. package/dist/parser/Parser.js.map +1 -1
  115. package/dist/parser/Parser.spec.js +48 -72
  116. package/dist/parser/Parser.spec.js.map +1 -1
  117. package/dist/parser/SGParser.js +49 -35
  118. package/dist/parser/SGParser.js.map +1 -1
  119. package/dist/parser/SGTypes.d.ts +36 -24
  120. package/dist/parser/SGTypes.js +31 -60
  121. package/dist/parser/SGTypes.js.map +1 -1
  122. package/dist/parser/Statement.d.ts +214 -207
  123. package/dist/parser/Statement.js +248 -169
  124. package/dist/parser/Statement.js.map +1 -1
  125. package/dist/parser/Statement.spec.js +0 -13
  126. package/dist/parser/Statement.spec.js.map +1 -1
  127. package/dist/parser/TranspileState.d.ts +17 -8
  128. package/dist/parser/TranspileState.js +64 -6
  129. package/dist/parser/TranspileState.js.map +1 -1
  130. package/dist/parser/tests/Parser.spec.d.ts +1 -1
  131. package/dist/parser/tests/Parser.spec.js +1 -2
  132. package/dist/parser/tests/Parser.spec.js.map +1 -1
  133. package/dist/parser/tests/controlFlow/If.spec.js +1 -1
  134. package/dist/parser/tests/controlFlow/If.spec.js.map +1 -1
  135. package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js +1 -3
  136. package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js.map +1 -1
  137. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js +44 -0
  138. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js.map +1 -1
  139. package/dist/parser/tests/expression/TemplateStringExpression.spec.js +6 -6
  140. package/dist/parser/tests/expression/TernaryExpression.spec.js +47 -0
  141. package/dist/parser/tests/expression/TernaryExpression.spec.js.map +1 -1
  142. package/dist/parser/tests/expression/TypeExpression.spec.js +8 -9
  143. package/dist/parser/tests/expression/TypeExpression.spec.js.map +1 -1
  144. package/dist/parser/tests/statement/ConstStatement.spec.js +2 -2
  145. package/dist/parser/tests/statement/InterfaceStatement.spec.js +8 -1
  146. package/dist/parser/tests/statement/InterfaceStatement.spec.js.map +1 -1
  147. package/dist/parser/tests/statement/Misc.spec.js +25 -5
  148. package/dist/parser/tests/statement/Misc.spec.js.map +1 -1
  149. package/dist/parser/tests/statement/TryCatch.spec.js +9 -2
  150. package/dist/parser/tests/statement/TryCatch.spec.js.map +1 -1
  151. package/dist/preprocessor/Chunk.js +1 -2
  152. package/dist/preprocessor/Chunk.js.map +1 -1
  153. package/dist/preprocessor/PreprocessorParser.js +2 -1
  154. package/dist/preprocessor/PreprocessorParser.js.map +1 -1
  155. package/dist/roku-types/data.json +70 -52
  156. package/dist/roku-types/index.d.ts +43 -21
  157. package/dist/types/ArrayType.js +1 -2
  158. package/dist/types/ArrayType.js.map +1 -1
  159. package/dist/types/ArrayType.spec.js +7 -8
  160. package/dist/types/ArrayType.spec.js.map +1 -1
  161. package/dist/types/AssociativeArrayType.d.ts +3 -0
  162. package/dist/types/AssociativeArrayType.js +10 -2
  163. package/dist/types/AssociativeArrayType.js.map +1 -1
  164. package/dist/types/BscType.d.ts +1 -1
  165. package/dist/types/BscType.js +3 -3
  166. package/dist/types/BscType.js.map +1 -1
  167. package/dist/types/BuiltInInterfaceAdder.js +7 -8
  168. package/dist/types/BuiltInInterfaceAdder.js.map +1 -1
  169. package/dist/types/BuiltInInterfaceAdder.spec.js +31 -32
  170. package/dist/types/BuiltInInterfaceAdder.spec.js.map +1 -1
  171. package/dist/types/ClassType.spec.js +10 -11
  172. package/dist/types/ClassType.spec.js.map +1 -1
  173. package/dist/types/ComponentType.d.ts +2 -1
  174. package/dist/types/ComponentType.js.map +1 -1
  175. package/dist/types/EnumType.js +2 -3
  176. package/dist/types/EnumType.js.map +1 -1
  177. package/dist/types/InheritableType.js +3 -4
  178. package/dist/types/InheritableType.js.map +1 -1
  179. package/dist/types/InterfaceType.js +2 -3
  180. package/dist/types/InterfaceType.js.map +1 -1
  181. package/dist/types/InterfaceType.spec.js +3 -4
  182. package/dist/types/InterfaceType.spec.js.map +1 -1
  183. package/dist/types/ObjectType.js +1 -2
  184. package/dist/types/ObjectType.js.map +1 -1
  185. package/dist/types/ReferenceType.d.ts +1 -1
  186. package/dist/types/ReferenceType.spec.js +21 -22
  187. package/dist/types/ReferenceType.spec.js.map +1 -1
  188. package/dist/types/UnionType.js +3 -3
  189. package/dist/types/UnionType.js.map +1 -1
  190. package/dist/types/UnionType.spec.js +37 -38
  191. package/dist/types/UnionType.spec.js.map +1 -1
  192. package/dist/types/helper.spec.js +4 -5
  193. package/dist/types/helper.spec.js.map +1 -1
  194. package/dist/util.d.ts +21 -11
  195. package/dist/util.js +116 -37
  196. package/dist/util.js.map +1 -1
  197. package/dist/validators/ClassValidator.d.ts +0 -9
  198. package/dist/validators/ClassValidator.js +3 -46
  199. package/dist/validators/ClassValidator.js.map +1 -1
  200. package/package.json +6 -3
@@ -1,19 +1,19 @@
1
1
  import type { Token, Identifier } from '../lexer/Token';
2
- import type { Block, CommentStatement, FunctionStatement } from './Statement';
2
+ import type { Block, FunctionStatement } from './Statement';
3
3
  import type { Range } from 'vscode-languageserver';
4
4
  import type { BrsTranspileState } from './BrsTranspileState';
5
5
  import { ParseMode } from './Parser';
6
6
  import type { WalkOptions, WalkVisitor } from '../astUtils/visitors';
7
- import type { GetTypeOptions } from '../interfaces';
8
- import { type TranspileResult, type TypedefProvider } from '../interfaces';
7
+ import type { GetTypeOptions, TranspileResult, TypedefProvider } from '../interfaces';
9
8
  import { VoidType } from '../types/VoidType';
10
9
  import { DynamicType } from '../types/DynamicType';
11
10
  import type { BscType } from '../types/BscType';
12
- import { TypedFunctionType } from '../types/TypedFunctionType';
13
11
  import { AstNodeKind, Expression } from './AstNode';
14
12
  import { SourceNode } from 'source-map';
15
13
  import type { TranspileState } from './TranspileState';
16
14
  import { StringType } from '../types/StringType';
15
+ import { TypedFunctionType } from '../types';
16
+ import { FunctionType } from '../types/FunctionType';
17
17
  export declare type ExpressionVisitor = (expression: Expression, parent: Expression) => void;
18
18
  export declare class BinaryExpression extends Expression {
19
19
  constructor(options: {
@@ -21,16 +21,17 @@ export declare class BinaryExpression extends Expression {
21
21
  operator: Token;
22
22
  right: Expression;
23
23
  });
24
- tokens: {
25
- operator: Token;
24
+ readonly tokens: {
25
+ readonly operator: Token;
26
26
  };
27
- left: Expression;
28
- right: Expression;
27
+ readonly left: Expression;
28
+ readonly right: Expression;
29
29
  readonly kind = AstNodeKind.BinaryExpression;
30
- readonly range: Range;
31
- transpile(state: BrsTranspileState): (string | SourceNode)[];
30
+ readonly range: Range | undefined;
31
+ transpile(state: BrsTranspileState): TranspileResult;
32
32
  walk(visitor: WalkVisitor, options: WalkOptions): void;
33
33
  getType(options: GetTypeOptions): BscType;
34
+ getLeadingTrivia(): Token[];
34
35
  }
35
36
  export declare class CallExpression extends Expression {
36
37
  static MaximumArguments: number;
@@ -42,7 +43,7 @@ export declare class CallExpression extends Expression {
42
43
  });
43
44
  readonly callee: Expression;
44
45
  readonly args: Expression[];
45
- tokens: {
46
+ readonly tokens: {
46
47
  /**
47
48
  * Can either be `(`, or `?(` for optional chaining - defaults to '('
48
49
  */
@@ -50,10 +51,11 @@ export declare class CallExpression extends Expression {
50
51
  readonly closingParen?: Token;
51
52
  };
52
53
  readonly kind = AstNodeKind.CallExpression;
53
- readonly range: Range;
54
- transpile(state: BrsTranspileState, nameOverride?: string): (string | SourceNode)[];
54
+ readonly range: Range | undefined;
55
+ transpile(state: BrsTranspileState, nameOverride?: string): TranspileResult;
55
56
  walk(visitor: WalkVisitor, options: WalkOptions): void;
56
57
  getType(options: GetTypeOptions): any;
58
+ getLeadingTrivia(): Token[];
57
59
  }
58
60
  export declare class FunctionExpression extends Expression implements TypedefProvider {
59
61
  constructor(options: {
@@ -68,20 +70,15 @@ export declare class FunctionExpression extends Expression implements TypedefPro
68
70
  });
69
71
  readonly kind = AstNodeKind.FunctionExpression;
70
72
  readonly parameters: FunctionParameterExpression[];
71
- body: Block;
72
- returnTypeExpression?: TypeExpression;
73
+ readonly body: Block;
74
+ readonly returnTypeExpression?: TypeExpression;
73
75
  readonly tokens: {
74
- functionType?: Token;
75
- endFunctionType?: Token;
76
- leftParen?: Token;
77
- rightParen?: Token;
78
- as?: Token;
76
+ readonly functionType?: Token;
77
+ readonly endFunctionType?: Token;
78
+ readonly leftParen?: Token;
79
+ readonly rightParen?: Token;
80
+ readonly as?: Token;
79
81
  };
80
- /**
81
- * The list of function calls that are declared within this function scope. This excludes CallExpressions
82
- * declared in child functions
83
- */
84
- callExpressions: CallExpression[];
85
82
  /**
86
83
  * If this function is part of a FunctionStatement, this will be set. Otherwise this will be undefined
87
84
  */
@@ -92,7 +89,7 @@ export declare class FunctionExpression extends Expression implements TypedefPro
92
89
  * and ending with the last n' in 'end function' or 'b' in 'end sub'
93
90
  */
94
91
  get range(): Range;
95
- transpile(state: BrsTranspileState, name?: Identifier, includeBody?: boolean): any[];
92
+ transpile(state: BrsTranspileState, name?: Identifier, includeBody?: boolean): TranspileResult;
96
93
  getTypedef(state: BrsTranspileState): SourceNode[];
97
94
  walk(visitor: WalkVisitor, options: WalkOptions): void;
98
95
  getType(options: GetTypeOptions): TypedFunctionType;
@@ -106,18 +103,19 @@ export declare class FunctionParameterExpression extends Expression {
106
103
  typeExpression?: TypeExpression;
107
104
  });
108
105
  readonly kind = AstNodeKind.FunctionParameterExpression;
109
- tokens: {
110
- name: Identifier;
111
- equals?: Token;
112
- as?: Token;
106
+ readonly tokens: {
107
+ readonly name: Identifier;
108
+ readonly equals?: Token;
109
+ readonly as?: Token;
113
110
  };
114
- defaultValue?: Expression;
115
- typeExpression?: TypeExpression;
111
+ readonly defaultValue?: Expression;
112
+ readonly typeExpression?: TypeExpression;
116
113
  getType(options: GetTypeOptions): BscType;
117
- get range(): Range;
118
- transpile(state: BrsTranspileState): any[];
114
+ get range(): Range | undefined;
115
+ transpile(state: BrsTranspileState): TranspileResult;
119
116
  getTypedef(state: BrsTranspileState): TranspileResult;
120
117
  walk(visitor: WalkVisitor, options: WalkOptions): void;
118
+ getLeadingTrivia(): Token[];
121
119
  }
122
120
  export declare class DottedGetExpression extends Expression {
123
121
  constructor(options: {
@@ -129,16 +127,17 @@ export declare class DottedGetExpression extends Expression {
129
127
  dot?: Token;
130
128
  });
131
129
  readonly tokens: {
132
- name: Identifier;
133
- dot?: Token;
130
+ readonly name: Identifier;
131
+ readonly dot?: Token;
134
132
  };
135
133
  readonly obj: Expression;
136
134
  readonly kind = AstNodeKind.DottedGetExpression;
137
- readonly range: Range;
138
- transpile(state: BrsTranspileState): (string | SourceNode)[];
135
+ readonly range: Range | undefined;
136
+ transpile(state: BrsTranspileState): (string | SourceNode | TranspileResult)[];
139
137
  walk(visitor: WalkVisitor, options: WalkOptions): void;
140
138
  getType(options: GetTypeOptions): BscType;
141
139
  getName(parseMode: ParseMode): string;
140
+ getLeadingTrivia(): Token[];
142
141
  }
143
142
  export declare class XmlAttributeGetExpression extends Expression {
144
143
  constructor(options: {
@@ -150,14 +149,15 @@ export declare class XmlAttributeGetExpression extends Expression {
150
149
  name: Identifier;
151
150
  });
152
151
  readonly kind = AstNodeKind.XmlAttributeGetExpression;
153
- tokens: {
152
+ readonly tokens: {
154
153
  name: Identifier;
155
154
  at?: Token;
156
155
  };
157
156
  readonly obj: Expression;
158
- readonly range: Range;
159
- transpile(state: BrsTranspileState): (string | SourceNode)[];
157
+ readonly range: Range | undefined;
158
+ transpile(state: BrsTranspileState): (string | SourceNode | TranspileResult)[];
160
159
  walk(visitor: WalkVisitor, options: WalkOptions): void;
160
+ getLeadingTrivia(): Token[];
161
161
  }
162
162
  export declare class IndexedGetExpression extends Expression {
163
163
  constructor(options: {
@@ -171,20 +171,21 @@ export declare class IndexedGetExpression extends Expression {
171
171
  questionDot?: Token;
172
172
  });
173
173
  readonly kind = AstNodeKind.IndexedGetExpression;
174
- obj: Expression;
175
- indexes: Expression[];
176
- tokens: {
174
+ readonly obj: Expression;
175
+ readonly indexes: Expression[];
176
+ readonly tokens: {
177
177
  /**
178
178
  * Can either be `[` or `?[`. If `?.[` is used, this will be `[` and `optionalChainingToken` will be `?.` - defaults to '[' in transpile
179
179
  */
180
- openingSquare?: Token;
181
- closingSquare?: Token;
182
- questionDot?: Token;
180
+ readonly openingSquare?: Token;
181
+ readonly closingSquare?: Token;
182
+ readonly questionDot?: Token;
183
183
  };
184
- readonly range: Range;
184
+ readonly range: Range | undefined;
185
185
  transpile(state: BrsTranspileState): any[];
186
186
  walk(visitor: WalkVisitor, options: WalkOptions): void;
187
187
  getType(options: GetTypeOptions): BscType;
188
+ getLeadingTrivia(): Token[];
188
189
  }
189
190
  export declare class GroupingExpression extends Expression {
190
191
  constructor(options: {
@@ -193,28 +194,30 @@ export declare class GroupingExpression extends Expression {
193
194
  expression: Expression;
194
195
  });
195
196
  readonly tokens: {
196
- leftParen?: Token;
197
- rightParen?: Token;
197
+ readonly leftParen?: Token;
198
+ readonly rightParen?: Token;
198
199
  };
199
- expression: Expression;
200
+ readonly expression: Expression;
200
201
  readonly kind = AstNodeKind.GroupingExpression;
201
- readonly range: Range;
202
+ readonly range: Range | undefined;
202
203
  transpile(state: BrsTranspileState): TranspileResult;
203
204
  walk(visitor: WalkVisitor, options: WalkOptions): void;
204
205
  getType(options: GetTypeOptions): BscType;
206
+ getLeadingTrivia(): Token[];
205
207
  }
206
208
  export declare class LiteralExpression extends Expression {
207
209
  constructor(options: {
208
210
  value: Token;
209
211
  });
210
- tokens: {
211
- value: Token;
212
+ readonly tokens: {
213
+ readonly value: Token;
212
214
  };
213
215
  readonly kind = AstNodeKind.LiteralExpression;
214
216
  get range(): Range;
215
- getType(options?: GetTypeOptions): DynamicType | import("../types").ObjectType | StringType | import("../types").IntegerType | import("../types").BooleanType | import("../types").FloatType | import("../types").DoubleType | import("../types").LongIntegerType | VoidType | import("../types/FunctionType").FunctionType;
216
- transpile(state: BrsTranspileState): SourceNode[];
217
+ getType(options?: GetTypeOptions): DynamicType | import("../types").ObjectType | StringType | import("../types").IntegerType | import("../types").BooleanType | import("../types").FloatType | import("../types").DoubleType | import("../types").LongIntegerType | VoidType | FunctionType;
218
+ transpile(state: BrsTranspileState): TranspileResult[];
217
219
  walk(visitor: WalkVisitor, options: WalkOptions): void;
220
+ getLeadingTrivia(): Token[];
218
221
  }
219
222
  /**
220
223
  * This is a special expression only used within template strings. It exists so we can prevent producing lots of empty strings
@@ -227,8 +230,8 @@ export declare class EscapedCharCodeLiteralExpression extends Expression {
227
230
  };
228
231
  });
229
232
  readonly kind = AstNodeKind.EscapedCharCodeLiteralExpression;
230
- tokens: {
231
- value: Token & {
233
+ readonly tokens: {
234
+ readonly value: Token & {
232
235
  charCode: number;
233
236
  };
234
237
  };
@@ -238,20 +241,21 @@ export declare class EscapedCharCodeLiteralExpression extends Expression {
238
241
  }
239
242
  export declare class ArrayLiteralExpression extends Expression {
240
243
  constructor(options: {
241
- elements: Array<Expression | CommentStatement>;
244
+ elements: Array<Expression>;
242
245
  open?: Token;
243
246
  close?: Token;
244
247
  });
245
- readonly elements: Array<Expression | CommentStatement>;
248
+ readonly elements: Array<Expression>;
246
249
  readonly tokens: {
247
- open?: Token;
248
- close?: Token;
250
+ readonly open?: Token;
251
+ readonly close?: Token;
249
252
  };
250
253
  readonly kind = AstNodeKind.ArrayLiteralExpression;
251
- readonly range: Range;
252
- transpile(state: BrsTranspileState): any[];
254
+ readonly range: Range | undefined;
255
+ transpile(state: BrsTranspileState): TranspileResult;
253
256
  walk(visitor: WalkVisitor, options: WalkOptions): void;
254
257
  getType(options: GetTypeOptions): BscType;
258
+ getLeadingTrivia(): Token[];
255
259
  }
256
260
  export declare class AAMemberExpression extends Expression {
257
261
  constructor(options: {
@@ -262,34 +266,36 @@ export declare class AAMemberExpression extends Expression {
262
266
  comma?: Token;
263
267
  });
264
268
  readonly kind = AstNodeKind.AAMemberExpression;
265
- range: Range;
266
- tokens: {
267
- key: Token;
268
- colon?: Token;
269
- comma?: Token;
269
+ readonly range: Range | undefined;
270
+ readonly tokens: {
271
+ readonly key: Token;
272
+ readonly colon?: Token;
273
+ readonly comma?: Token;
270
274
  };
271
275
  /** The expression evaluated to determine the member's initial value. */
272
- value: Expression;
276
+ readonly value: Expression;
273
277
  transpile(state: BrsTranspileState): any[];
274
278
  walk(visitor: WalkVisitor, options: WalkOptions): void;
275
279
  getType(options: GetTypeOptions): BscType;
280
+ getLeadingTrivia(): Token[];
276
281
  }
277
282
  export declare class AALiteralExpression extends Expression {
278
283
  constructor(options: {
279
- elements: Array<AAMemberExpression | CommentStatement>;
284
+ elements: Array<AAMemberExpression>;
280
285
  open?: Token;
281
286
  close?: Token;
282
287
  });
283
- readonly elements: Array<AAMemberExpression | CommentStatement>;
288
+ readonly elements: Array<AAMemberExpression>;
284
289
  readonly tokens: {
285
- open?: Token;
286
- close?: Token;
290
+ readonly open?: Token;
291
+ readonly close?: Token;
287
292
  };
288
293
  readonly kind = AstNodeKind.AALiteralExpression;
289
- readonly range: Range;
290
- transpile(state: BrsTranspileState): any[];
294
+ readonly range: Range | undefined;
295
+ transpile(state: BrsTranspileState): TranspileResult;
291
296
  walk(visitor: WalkVisitor, options: WalkOptions): void;
292
297
  getType(options: GetTypeOptions): BscType;
298
+ getLeadingTrivia(): Token[];
293
299
  }
294
300
  export declare class UnaryExpression extends Expression {
295
301
  constructor(options: {
@@ -297,28 +303,30 @@ export declare class UnaryExpression extends Expression {
297
303
  right: Expression;
298
304
  });
299
305
  readonly kind = AstNodeKind.UnaryExpression;
300
- readonly range: Range;
301
- tokens: {
302
- operator: Token;
306
+ readonly range: Range | undefined;
307
+ readonly tokens: {
308
+ readonly operator: Token;
303
309
  };
304
- right: Expression;
305
- transpile(state: BrsTranspileState): (string | SourceNode)[];
310
+ readonly right: Expression;
311
+ transpile(state: BrsTranspileState): (string | SourceNode | TranspileResult)[];
306
312
  walk(visitor: WalkVisitor, options: WalkOptions): void;
307
313
  getType(options: GetTypeOptions): BscType;
314
+ getLeadingTrivia(): Token[];
308
315
  }
309
316
  export declare class VariableExpression extends Expression {
310
317
  constructor(options: {
311
318
  name: Identifier;
312
319
  });
313
320
  readonly tokens: {
314
- name: Identifier;
321
+ readonly name: Identifier;
315
322
  };
316
323
  readonly kind = AstNodeKind.VariableExpression;
317
324
  readonly range: Range;
318
325
  getName(parseMode?: ParseMode): string;
319
- transpile(state: BrsTranspileState): any[];
326
+ transpile(state: BrsTranspileState): TranspileResult;
320
327
  walk(visitor: WalkVisitor, options: WalkOptions): void;
321
328
  getType(options: GetTypeOptions): BscType;
329
+ getLeadingTrivia(): Token[];
322
330
  }
323
331
  export declare class SourceLiteralExpression extends Expression {
324
332
  constructor(options: {
@@ -327,15 +335,20 @@ export declare class SourceLiteralExpression extends Expression {
327
335
  readonly range: Range;
328
336
  readonly kind = AstNodeKind.SourceLiteralExpression;
329
337
  readonly tokens: {
330
- value: Token;
338
+ readonly value: Token;
331
339
  };
332
340
  /**
333
341
  * Find the index of the function in its parent
334
342
  */
335
343
  private findFunctionIndex;
336
344
  private getFunctionName;
345
+ /**
346
+ * Get the line number from our token or from the closest ancestor that has a range
347
+ */
348
+ private getClosestLineNumber;
337
349
  transpile(state: BrsTranspileState): SourceNode[];
338
350
  walk(visitor: WalkVisitor, options: WalkOptions): void;
351
+ getLeadingTrivia(): Token[];
339
352
  }
340
353
  /**
341
354
  * This expression transpiles and acts exactly like a CallExpression,
@@ -348,18 +361,19 @@ export declare class NewExpression extends Expression {
348
361
  call: CallExpression;
349
362
  });
350
363
  readonly kind = AstNodeKind.NewExpression;
351
- readonly range: Range;
364
+ readonly range: Range | undefined;
352
365
  readonly tokens: {
353
- new?: Token;
366
+ readonly new?: Token;
354
367
  };
355
368
  readonly call: CallExpression;
356
369
  /**
357
370
  * The name of the class to initialize (with optional namespace prefixed)
358
371
  */
359
372
  get className(): DottedGetExpression | VariableExpression;
360
- transpile(state: BrsTranspileState): (string | SourceNode)[];
373
+ transpile(state: BrsTranspileState): TranspileResult;
361
374
  walk(visitor: WalkVisitor, options: WalkOptions): void;
362
375
  getType(options: GetTypeOptions): any;
376
+ getLeadingTrivia(): Token[];
363
377
  }
364
378
  export declare class CallfuncExpression extends Expression {
365
379
  constructor(options: {
@@ -373,16 +387,17 @@ export declare class CallfuncExpression extends Expression {
373
387
  readonly callee: Expression;
374
388
  readonly args: Expression[];
375
389
  readonly tokens: {
376
- operator: Token;
377
- methodName: Identifier;
378
- openingParen?: Token;
379
- closingParen?: Token;
390
+ readonly operator: Token;
391
+ readonly methodName: Identifier;
392
+ readonly openingParen?: Token;
393
+ readonly closingParen?: Token;
380
394
  };
381
395
  readonly kind = AstNodeKind.CallfuncExpression;
382
- readonly range: Range;
383
- transpile(state: BrsTranspileState): any[];
396
+ readonly range: Range | undefined;
397
+ transpile(state: BrsTranspileState): TranspileResult;
384
398
  walk(visitor: WalkVisitor, options: WalkOptions): void;
385
399
  getType(options: GetTypeOptions): BscType;
400
+ getLeadingTrivia(): Token[];
386
401
  }
387
402
  /**
388
403
  * Since template strings can contain newlines, we need to concatenate multiple strings together with chr() calls.
@@ -394,8 +409,8 @@ export declare class TemplateStringQuasiExpression extends Expression {
394
409
  });
395
410
  readonly expressions: Array<LiteralExpression | EscapedCharCodeLiteralExpression>;
396
411
  readonly kind = AstNodeKind.TemplateStringQuasiExpression;
397
- readonly range: Range;
398
- transpile(state: BrsTranspileState, skipEmptyStrings?: boolean): any[];
412
+ readonly range: Range | undefined;
413
+ transpile(state: BrsTranspileState, skipEmptyStrings?: boolean): TranspileResult;
399
414
  walk(visitor: WalkVisitor, options: WalkOptions): void;
400
415
  }
401
416
  export declare class TemplateStringExpression extends Expression {
@@ -407,14 +422,14 @@ export declare class TemplateStringExpression extends Expression {
407
422
  });
408
423
  readonly kind = AstNodeKind.TemplateStringExpression;
409
424
  readonly tokens: {
410
- openingBacktick?: Token;
411
- closingBacktick?: Token;
425
+ readonly openingBacktick?: Token;
426
+ readonly closingBacktick?: Token;
412
427
  };
413
428
  readonly quasis: TemplateStringQuasiExpression[];
414
429
  readonly expressions: Expression[];
415
- readonly range: Range;
430
+ readonly range: Range | undefined;
416
431
  getType(options: GetTypeOptions): StringType;
417
- transpile(state: BrsTranspileState): any[];
432
+ transpile(state: BrsTranspileState): TranspileResult;
418
433
  walk(visitor: WalkVisitor, options: WalkOptions): void;
419
434
  }
420
435
  export declare class TaggedTemplateStringExpression extends Expression {
@@ -426,15 +441,15 @@ export declare class TaggedTemplateStringExpression extends Expression {
426
441
  closingBacktick?: Token;
427
442
  });
428
443
  readonly kind = AstNodeKind.TaggedTemplateStringExpression;
429
- tokens: {
430
- tagName: Identifier;
431
- openingBacktick?: Token;
432
- closingBacktick?: Token;
444
+ readonly tokens: {
445
+ readonly tagName: Identifier;
446
+ readonly openingBacktick?: Token;
447
+ readonly closingBacktick?: Token;
433
448
  };
434
449
  readonly quasis: TemplateStringQuasiExpression[];
435
450
  readonly expressions: Expression[];
436
- readonly range: Range;
437
- transpile(state: BrsTranspileState): any[];
451
+ readonly range: Range | undefined;
452
+ transpile(state: BrsTranspileState): TranspileResult;
438
453
  walk(visitor: WalkVisitor, options: WalkOptions): void;
439
454
  }
440
455
  export declare class AnnotationExpression extends Expression {
@@ -445,11 +460,11 @@ export declare class AnnotationExpression extends Expression {
445
460
  });
446
461
  readonly kind = AstNodeKind.AnnotationExpression;
447
462
  readonly tokens: {
448
- at: Token;
449
- name: Token;
463
+ readonly at: Token;
464
+ readonly name: Token;
450
465
  };
451
- get range(): Range;
452
- name: string;
466
+ get range(): Range | undefined;
467
+ readonly name: string;
453
468
  call: CallExpression;
454
469
  /**
455
470
  * Convert annotation arguments to JavaScript types
@@ -459,7 +474,7 @@ export declare class AnnotationExpression extends Expression {
459
474
  getLeadingTrivia(): Token[];
460
475
  transpile(state: BrsTranspileState): any[];
461
476
  walk(visitor: WalkVisitor, options: WalkOptions): void;
462
- getTypedef(state: BrsTranspileState): (string | SourceNode)[];
477
+ getTypedef(state: BrsTranspileState): (string | SourceNode | TranspileResult)[];
463
478
  }
464
479
  export declare class TernaryExpression extends Expression {
465
480
  constructor(options: {
@@ -470,16 +485,17 @@ export declare class TernaryExpression extends Expression {
470
485
  alternate?: Expression;
471
486
  });
472
487
  readonly kind = AstNodeKind.TernaryExpression;
473
- range: Range;
488
+ readonly range: Range | undefined;
474
489
  readonly tokens: {
475
- questionMark?: Token;
476
- colon?: Token;
490
+ readonly questionMark?: Token;
491
+ readonly colon?: Token;
477
492
  };
478
493
  readonly test: Expression;
479
494
  readonly consequent?: Expression;
480
495
  readonly alternate?: Expression;
481
- transpile(state: BrsTranspileState): any[];
496
+ transpile(state: BrsTranspileState): TranspileResult;
482
497
  walk(visitor: WalkVisitor, options: WalkOptions): void;
498
+ getLeadingTrivia(): Token[];
483
499
  }
484
500
  export declare class NullCoalescingExpression extends Expression {
485
501
  constructor(options: {
@@ -488,30 +504,32 @@ export declare class NullCoalescingExpression extends Expression {
488
504
  alternate: Expression;
489
505
  });
490
506
  readonly kind = AstNodeKind.NullCoalescingExpression;
491
- readonly range: Range;
492
- tokens: {
493
- questionQuestion?: Token;
507
+ readonly range: Range | undefined;
508
+ readonly tokens: {
509
+ readonly questionQuestion?: Token;
494
510
  };
495
- consequent: Expression;
496
- alternate: Expression;
497
- transpile(state: BrsTranspileState): any[];
511
+ readonly consequent: Expression;
512
+ readonly alternate: Expression;
513
+ transpile(state: BrsTranspileState): TranspileResult;
498
514
  walk(visitor: WalkVisitor, options: WalkOptions): void;
515
+ getLeadingTrivia(): Token[];
499
516
  }
500
517
  export declare class RegexLiteralExpression extends Expression {
501
518
  constructor(options: {
502
519
  regexLiteral: Token;
503
520
  });
504
521
  readonly kind = AstNodeKind.RegexLiteralExpression;
505
- tokens: {
506
- regexLiteral: Token;
522
+ readonly tokens: {
523
+ readonly regexLiteral: Token;
507
524
  };
508
525
  get range(): Range;
509
526
  transpile(state: BrsTranspileState): TranspileResult;
510
527
  walk(visitor: WalkVisitor, options: WalkOptions): void;
528
+ getLeadingTrivia(): Token[];
511
529
  }
512
530
  declare type ExpressionValue = string | number | boolean | Expression | ExpressionValue[] | {
513
531
  [key: string]: ExpressionValue;
514
- };
532
+ } | null;
515
533
  export declare class TypeExpression extends Expression implements TypedefProvider {
516
534
  constructor(options: {
517
535
  /**
@@ -523,12 +541,12 @@ export declare class TypeExpression extends Expression implements TypedefProvide
523
541
  /**
524
542
  * The standard AST expression that represents the type for this TypeExpression.
525
543
  */
526
- expression: Expression;
527
- range: Range;
544
+ readonly expression: Expression;
545
+ readonly range: Range;
528
546
  transpile(state: BrsTranspileState): TranspileResult;
529
547
  walk(visitor: WalkVisitor, options: WalkOptions): void;
530
548
  getType(options: GetTypeOptions): BscType;
531
- getTypedef(state: TranspileState): (string | SourceNode)[];
549
+ getTypedef(state: TranspileState): TranspileResult;
532
550
  getName(parseMode?: ParseMode): string;
533
551
  getNameParts(): string[];
534
552
  }
@@ -539,12 +557,12 @@ export declare class TypeCastExpression extends Expression {
539
557
  typeExpression?: TypeExpression;
540
558
  });
541
559
  readonly kind = AstNodeKind.TypeCastExpression;
542
- obj: Expression;
543
- tokens: {
544
- as?: Token;
560
+ readonly obj: Expression;
561
+ readonly tokens: {
562
+ readonly as?: Token;
545
563
  };
546
564
  typeExpression?: TypeExpression;
547
- range: Range;
565
+ readonly range: Range;
548
566
  transpile(state: BrsTranspileState): TranspileResult;
549
567
  walk(visitor: WalkVisitor, options: WalkOptions): void;
550
568
  getType(options: GetTypeOptions): BscType;
@@ -555,13 +573,13 @@ export declare class TypedArrayExpression extends Expression {
555
573
  leftBracket?: Token;
556
574
  rightBracket?: Token;
557
575
  });
558
- tokens: {
559
- leftBracket?: Token;
560
- rightBracket?: Token;
576
+ readonly tokens: {
577
+ readonly leftBracket?: Token;
578
+ readonly rightBracket?: Token;
561
579
  };
562
- innerType: Expression;
580
+ readonly innerType: Expression;
563
581
  readonly kind = AstNodeKind.TypedArrayExpression;
564
- range: Range;
582
+ readonly range: Range;
565
583
  transpile(state: BrsTranspileState): TranspileResult;
566
584
  walk(visitor: WalkVisitor, options: WalkOptions): void;
567
585
  getType(options: GetTypeOptions): BscType;