brighterscript 1.0.0-alpha.15 → 1.0.0-alpha.18

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 (163) hide show
  1. package/CHANGELOG.md +83 -0
  2. package/README.md +28 -9
  3. package/dist/DependencyGraph.js +5 -4
  4. package/dist/DependencyGraph.js.map +1 -1
  5. package/dist/DiagnosticMessages.d.ts +16 -1
  6. package/dist/DiagnosticMessages.js +15 -0
  7. package/dist/DiagnosticMessages.js.map +1 -1
  8. package/dist/Logger.js +5 -5
  9. package/dist/Logger.js.map +1 -1
  10. package/dist/Program.d.ts +2 -2
  11. package/dist/Program.js +5 -3
  12. package/dist/Program.js.map +1 -1
  13. package/dist/ProgramBuilder.js +1 -1
  14. package/dist/ProgramBuilder.js.map +1 -1
  15. package/dist/Scope.d.ts +58 -8
  16. package/dist/Scope.js +142 -23
  17. package/dist/Scope.js.map +1 -1
  18. package/dist/XmlScope.js +1 -1
  19. package/dist/XmlScope.js.map +1 -1
  20. package/dist/astUtils/creators.d.ts +10 -6
  21. package/dist/astUtils/creators.js +93 -12
  22. package/dist/astUtils/creators.js.map +1 -1
  23. package/dist/astUtils/creators.spec.js +10 -0
  24. package/dist/astUtils/creators.spec.js.map +1 -1
  25. package/dist/astUtils/reflection.d.ts +8 -3
  26. package/dist/astUtils/reflection.js +18 -2
  27. package/dist/astUtils/reflection.js.map +1 -1
  28. package/dist/astUtils/reflection.spec.js +15 -4
  29. package/dist/astUtils/reflection.spec.js.map +1 -1
  30. package/dist/astUtils/visitors.d.ts +4 -1
  31. package/dist/astUtils/visitors.js.map +1 -1
  32. package/dist/astUtils/visitors.spec.js +2 -0
  33. package/dist/astUtils/visitors.spec.js.map +1 -1
  34. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js +2 -2
  35. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js.map +1 -1
  36. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js +7 -3
  37. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js.map +1 -1
  38. package/dist/{types/FunctionType.spec.d.ts → bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.d.ts} +0 -0
  39. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.js +32 -0
  40. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.js.map +1 -0
  41. package/dist/diagnosticUtils.js +3 -3
  42. package/dist/diagnosticUtils.js.map +1 -1
  43. package/dist/examples/plugins/removePrint.js +12 -14
  44. package/dist/examples/plugins/removePrint.js.map +1 -1
  45. package/dist/files/BrsFile.Class.spec.js +3 -3
  46. package/dist/files/BrsFile.Class.spec.js.map +1 -1
  47. package/dist/files/BrsFile.d.ts +2 -2
  48. package/dist/files/BrsFile.js +99 -63
  49. package/dist/files/BrsFile.js.map +1 -1
  50. package/dist/files/BrsFile.spec.js +187 -67
  51. package/dist/files/BrsFile.spec.js.map +1 -1
  52. package/dist/files/XmlFile.js +3 -3
  53. package/dist/files/XmlFile.js.map +1 -1
  54. package/dist/globalCallables.js +79 -79
  55. package/dist/globalCallables.js.map +1 -1
  56. package/dist/interfaces.d.ts +43 -4
  57. package/dist/parser/Expression.d.ts +91 -22
  58. package/dist/parser/Expression.js +191 -57
  59. package/dist/parser/Expression.js.map +1 -1
  60. package/dist/parser/Parser.Class.spec.js +6 -6
  61. package/dist/parser/Parser.Class.spec.js.map +1 -1
  62. package/dist/parser/Parser.d.ts +3 -6
  63. package/dist/parser/Parser.js +166 -155
  64. package/dist/parser/Parser.js.map +1 -1
  65. package/dist/parser/Parser.spec.js +61 -6
  66. package/dist/parser/Parser.spec.js.map +1 -1
  67. package/dist/parser/SGTypes.d.ts +2 -2
  68. package/dist/parser/SGTypes.js +2 -2
  69. package/dist/parser/SGTypes.js.map +1 -1
  70. package/dist/parser/Statement.d.ts +85 -57
  71. package/dist/parser/Statement.js +228 -173
  72. package/dist/parser/Statement.js.map +1 -1
  73. package/dist/parser/tests/statement/For.spec.d.ts +1 -0
  74. package/dist/parser/tests/statement/For.spec.js +46 -0
  75. package/dist/parser/tests/statement/For.spec.js.map +1 -0
  76. package/dist/parser/tests/statement/ForEach.spec.d.ts +1 -0
  77. package/dist/parser/tests/statement/ForEach.spec.js +37 -0
  78. package/dist/parser/tests/statement/ForEach.spec.js.map +1 -0
  79. package/dist/parser/tests/statement/InterfaceStatement.spec.js +181 -0
  80. package/dist/parser/tests/statement/InterfaceStatement.spec.js.map +1 -1
  81. package/dist/parser/tests/statement/TryCatch.spec.js +7 -5
  82. package/dist/parser/tests/statement/TryCatch.spec.js.map +1 -1
  83. package/dist/types/ArrayType.js +4 -1
  84. package/dist/types/ArrayType.js.map +1 -1
  85. package/dist/types/ArrayType.spec.js +3 -1
  86. package/dist/types/ArrayType.spec.js.map +1 -1
  87. package/dist/types/BooleanType.d.ts +4 -2
  88. package/dist/types/BooleanType.js +7 -2
  89. package/dist/types/BooleanType.js.map +1 -1
  90. package/dist/types/BooleanType.spec.js +3 -1
  91. package/dist/types/BooleanType.spec.js.map +1 -1
  92. package/dist/types/BscType.d.ts +1 -0
  93. package/dist/types/BscType.js +16 -1
  94. package/dist/types/BscType.js.map +1 -1
  95. package/dist/types/CustomType.js +10 -0
  96. package/dist/types/CustomType.js.map +1 -1
  97. package/dist/types/DoubleType.d.ts +2 -0
  98. package/dist/types/DoubleType.js +7 -2
  99. package/dist/types/DoubleType.js.map +1 -1
  100. package/dist/types/DoubleType.spec.js +3 -1
  101. package/dist/types/DoubleType.spec.js.map +1 -1
  102. package/dist/types/DynamicType.d.ts +2 -0
  103. package/dist/types/DynamicType.js +5 -1
  104. package/dist/types/DynamicType.js.map +1 -1
  105. package/dist/types/FloatType.d.ts +3 -1
  106. package/dist/types/FloatType.js +7 -2
  107. package/dist/types/FloatType.js.map +1 -1
  108. package/dist/types/FloatType.spec.js +2 -0
  109. package/dist/types/FloatType.spec.js.map +1 -1
  110. package/dist/types/FunctionType.d.ts +3 -21
  111. package/dist/types/FunctionType.js +8 -65
  112. package/dist/types/FunctionType.js.map +1 -1
  113. package/dist/types/IntegerType.d.ts +3 -1
  114. package/dist/types/IntegerType.js +7 -2
  115. package/dist/types/IntegerType.js.map +1 -1
  116. package/dist/types/IntegerType.spec.js +3 -1
  117. package/dist/types/IntegerType.spec.js.map +1 -1
  118. package/dist/types/InterfaceType.d.ts +13 -10
  119. package/dist/types/InterfaceType.js +33 -29
  120. package/dist/types/InterfaceType.js.map +1 -1
  121. package/dist/types/InterfaceType.spec.js +36 -16
  122. package/dist/types/InterfaceType.spec.js.map +1 -1
  123. package/dist/types/InvalidType.d.ts +4 -2
  124. package/dist/types/InvalidType.js +7 -2
  125. package/dist/types/InvalidType.js.map +1 -1
  126. package/dist/types/InvalidType.spec.js +2 -0
  127. package/dist/types/InvalidType.spec.js.map +1 -1
  128. package/dist/types/LazyType.js +4 -0
  129. package/dist/types/LazyType.js.map +1 -1
  130. package/dist/types/LongIntegerType.d.ts +3 -1
  131. package/dist/types/LongIntegerType.js +7 -2
  132. package/dist/types/LongIntegerType.js.map +1 -1
  133. package/dist/types/LongIntegerType.spec.js +2 -0
  134. package/dist/types/LongIntegerType.spec.js.map +1 -1
  135. package/dist/types/ObjectType.d.ts +2 -1
  136. package/dist/types/ObjectType.js +4 -2
  137. package/dist/types/ObjectType.js.map +1 -1
  138. package/dist/types/StringType.d.ts +4 -2
  139. package/dist/types/StringType.js +7 -2
  140. package/dist/types/StringType.js.map +1 -1
  141. package/dist/types/StringType.spec.js +2 -0
  142. package/dist/types/StringType.spec.js.map +1 -1
  143. package/dist/types/TypedFunctionType.d.ts +28 -0
  144. package/dist/types/TypedFunctionType.js +88 -0
  145. package/dist/types/TypedFunctionType.js.map +1 -0
  146. package/dist/types/TypedFunctionType.spec.d.ts +1 -0
  147. package/dist/types/TypedFunctionType.spec.js +37 -0
  148. package/dist/types/TypedFunctionType.spec.js.map +1 -0
  149. package/dist/types/UninitializedType.js.map +1 -1
  150. package/dist/types/VoidType.d.ts +4 -2
  151. package/dist/types/VoidType.js +5 -1
  152. package/dist/types/VoidType.js.map +1 -1
  153. package/dist/types/helpers.js +7 -2
  154. package/dist/types/helpers.js.map +1 -1
  155. package/dist/util.d.ts +2 -2
  156. package/dist/util.js +39 -46
  157. package/dist/util.js.map +1 -1
  158. package/dist/validators/ClassValidator.d.ts +14 -1
  159. package/dist/validators/ClassValidator.js +129 -82
  160. package/dist/validators/ClassValidator.js.map +1 -1
  161. package/package.json +2 -3
  162. package/dist/types/FunctionType.spec.js +0 -29
  163. package/dist/types/FunctionType.spec.js.map +0 -1
@@ -1,18 +1,18 @@
1
1
  import type { Token, Identifier } from '../lexer/Token';
2
2
  import { TokenKind } from '../lexer/TokenKind';
3
- import type { Expression, NamespacedVariableNameExpression, FunctionExpression, AnnotationExpression, FunctionParameterExpression } from './Expression';
3
+ import type { Expression, NamespacedVariableNameExpression, FunctionExpression, AnnotationExpression, TypeExpression } from './Expression';
4
4
  import type { Range } from 'vscode-languageserver';
5
5
  import type { BrsTranspileState } from './BrsTranspileState';
6
6
  import { ParseMode } from './Parser';
7
7
  import type { WalkVisitor, WalkOptions } from '../astUtils/visitors';
8
8
  import { InternalWalkMode } from '../astUtils/visitors';
9
- import type { TranspileResult, TypedefProvider } from '../interfaces';
9
+ import type { TranspileResult, TypedefProvider, MemberSymbolTableProvider, InheritableStatement } from '../interfaces';
10
10
  import { DynamicType } from '../types/DynamicType';
11
- import type { BscType, SymbolContainer } from '../types/BscType';
12
11
  import type { SourceNode } from 'source-map';
13
12
  import type { TranspileState } from './TranspileState';
14
13
  import { SymbolTable } from '../SymbolTable';
15
14
  import { CustomType } from '../types/CustomType';
15
+ import { InterfaceType } from '../types/InterfaceType';
16
16
  /**
17
17
  * A BrightScript statement
18
18
  */
@@ -20,7 +20,7 @@ export declare abstract class Statement {
20
20
  /**
21
21
  * The starting and ending location of the statement.
22
22
  **/
23
- abstract range: Range;
23
+ abstract readonly range: Range;
24
24
  /**
25
25
  * Statement annotations
26
26
  */
@@ -51,7 +51,7 @@ export declare class EmptyStatement extends Statement {
51
51
  export declare class Body extends Statement implements TypedefProvider {
52
52
  statements: Statement[];
53
53
  constructor(statements?: Statement[]);
54
- get range(): Range;
54
+ readonly range: Range;
55
55
  transpile(state: BrsTranspileState): TranspileResult;
56
56
  getTypedef(state: BrsTranspileState): any[];
57
57
  walk(visitor: WalkVisitor, options: WalkOptions): void;
@@ -84,7 +84,7 @@ export declare class ExpressionStatement extends Statement {
84
84
  export declare class CommentStatement extends Statement implements Expression, TypedefProvider {
85
85
  comments: Token[];
86
86
  constructor(comments: Token[]);
87
- range: Range;
87
+ readonly range: Range;
88
88
  get text(): string;
89
89
  transpile(state: BrsTranspileState): any[];
90
90
  getTypedef(state: TranspileState): any[];
@@ -117,7 +117,9 @@ export declare class FunctionStatement extends Statement implements TypedefProvi
117
117
  func: FunctionExpression;
118
118
  namespaceName: NamespacedVariableNameExpression;
119
119
  constructor(name: Identifier, func: FunctionExpression, namespaceName: NamespacedVariableNameExpression);
120
- readonly range: Range;
120
+ get range(): Range;
121
+ cacheRange(): Range;
122
+ protected _range: Range;
121
123
  /**
122
124
  * Get the name of this expression based on the parse mode
123
125
  */
@@ -190,7 +192,7 @@ export declare class DimStatement extends Statement {
190
192
  dimensions?: Expression[];
191
193
  closingSquare?: Token;
192
194
  constructor(dimToken: Token, identifier?: Identifier, openingSquare?: Token, dimensions?: Expression[], closingSquare?: Token);
193
- range: Range;
195
+ readonly range: Range;
194
196
  transpile(state: BrsTranspileState): (string | SourceNode)[];
195
197
  walk(visitor: WalkVisitor, options: WalkOptions): void;
196
198
  }
@@ -299,7 +301,9 @@ export declare class DottedSetStatement extends Statement {
299
301
  readonly obj: Expression;
300
302
  readonly name: Identifier;
301
303
  readonly value: Expression;
302
- constructor(obj: Expression, name: Identifier, value: Expression);
304
+ dot: Token;
305
+ operator: Token;
306
+ constructor(obj: Expression, name: Identifier, value: Expression, dot: Token, operator: Token);
303
307
  readonly range: Range;
304
308
  transpile(state: BrsTranspileState): TranspileResult;
305
309
  walk(visitor: WalkVisitor, options: WalkOptions): void;
@@ -310,7 +314,8 @@ export declare class IndexedSetStatement extends Statement {
310
314
  readonly value: Expression;
311
315
  readonly openingSquare: Token;
312
316
  readonly closingSquare: Token;
313
- constructor(obj: Expression, index: Expression, value: Expression, openingSquare: Token, closingSquare: Token);
317
+ operator: Token;
318
+ constructor(obj: Expression, index: Expression, value: Expression, openingSquare: Token, closingSquare: Token, operator: Token);
314
319
  readonly range: Range;
315
320
  transpile(state: BrsTranspileState): TranspileResult;
316
321
  walk(visitor: WalkVisitor, options: WalkOptions): void;
@@ -337,11 +342,13 @@ export declare class NamespaceStatement extends Statement implements TypedefProv
337
342
  readonly parentSymbolTable?: SymbolTable;
338
343
  readonly symbolTable: SymbolTable;
339
344
  constructor(keyword: Token, nameExpression: NamespacedVariableNameExpression, body: Body, endKeyword: Token, parentSymbolTable?: SymbolTable);
345
+ get range(): Range;
346
+ cacheRange(): Range;
347
+ private _range;
340
348
  /**
341
349
  * The string name for this namespace
342
350
  */
343
351
  name: string;
344
- get range(): Range;
345
352
  getName(parseMode: ParseMode): string;
346
353
  transpile(state: BrsTranspileState): TranspileResult;
347
354
  getTypedef(state: BrsTranspileState): string[];
@@ -352,7 +359,7 @@ export declare class ImportStatement extends Statement implements TypedefProvide
352
359
  readonly filePathToken: Token;
353
360
  constructor(importToken: Token, filePathToken: Token);
354
361
  filePath: string;
355
- range: Range;
362
+ readonly range: Range;
356
363
  transpile(state: BrsTranspileState): (string | SourceNode)[];
357
364
  /**
358
365
  * Get the typedef for this statement
@@ -360,10 +367,12 @@ export declare class ImportStatement extends Statement implements TypedefProvide
360
367
  getTypedef(state: BrsTranspileState): string[];
361
368
  walk(visitor: WalkVisitor, options: WalkOptions): void;
362
369
  }
363
- export declare class InterfaceStatement extends Statement implements TypedefProvider {
370
+ export declare class InterfaceStatement extends Statement implements TypedefProvider, MemberSymbolTableProvider {
371
+ name: Identifier;
364
372
  parentInterfaceName: NamespacedVariableNameExpression;
365
373
  body: Statement[];
366
374
  namespaceName: NamespacedVariableNameExpression;
375
+ readonly memberTable: SymbolTable;
367
376
  constructor(interfaceToken: Token, name: Identifier, extendsToken: Token, parentInterfaceName: NamespacedVariableNameExpression, body: Statement[], endInterfaceToken: Token, namespaceName: NamespacedVariableNameExpression);
368
377
  tokens: {
369
378
  interface: Token;
@@ -371,53 +380,48 @@ export declare class InterfaceStatement extends Statement implements TypedefProv
371
380
  extends: Token;
372
381
  endInterface: Token;
373
382
  };
374
- range: Range;
375
- get fields(): Statement[];
376
- get methods(): Statement[];
383
+ readonly range: Range;
384
+ memberMap: Record<string, InterfaceMemberStatement>;
385
+ methods: InterfaceMethodStatement[];
386
+ fields: InterfaceFieldStatement[];
377
387
  /**
378
388
  * The name of the interface WITH its leading namespace (if applicable)
379
389
  */
380
- get fullName(): string;
390
+ getName(parseMode: ParseMode): string;
391
+ buildSymbolTable(parentIface?: InheritableStatement): void;
392
+ hasParent(): boolean;
393
+ getParentName(): boolean;
381
394
  /**
382
- * The name of the interface (without the namespace prefix)
395
+ * Gets an array of possible parent interface names, taking into account the namespace this interface was created under
396
+ * @returns array of possible parent interface names
383
397
  */
384
- get name(): string;
398
+ getPossibleFullParentNames(): string[];
399
+ getThisBscType(): InterfaceType;
385
400
  transpile(state: BrsTranspileState): TranspileResult;
386
401
  getTypedef(state: BrsTranspileState): TranspileResult;
387
402
  walk(visitor: WalkVisitor, options: WalkOptions): void;
388
403
  }
389
404
  export declare class InterfaceFieldStatement extends Statement implements TypedefProvider {
390
- type: BscType;
405
+ type?: TypeExpression;
406
+ namespaceName?: NamespacedVariableNameExpression;
391
407
  transpile(state: BrsTranspileState): TranspileResult;
392
- constructor(nameToken: Identifier, asToken: Token, typeToken: Token, type: BscType);
393
- get range(): Range;
408
+ constructor(nameToken: Identifier, asToken: Token, type?: TypeExpression, namespaceName?: NamespacedVariableNameExpression);
409
+ readonly range: Range;
394
410
  tokens: {
395
411
  name: Identifier;
396
412
  as: Token;
397
- type: Token;
398
413
  };
399
- get name(): string;
414
+ getType(): import("../types/BscType").BscType;
415
+ get name(): Identifier;
400
416
  walk(visitor: WalkVisitor, options: WalkOptions): void;
401
417
  getTypedef(state: BrsTranspileState): (string | SourceNode)[];
402
418
  }
403
- export declare class InterfaceMethodStatement extends Statement implements TypedefProvider {
404
- params: FunctionParameterExpression[];
405
- returnType?: BscType;
419
+ export declare class InterfaceMethodStatement extends FunctionStatement implements TypedefProvider {
406
420
  transpile(state: BrsTranspileState): TranspileResult;
407
- constructor(functionTypeToken: Token, nameToken: Identifier, leftParen: Token, params: FunctionParameterExpression[], rightParen: Token, asToken?: Token, returnTypeToken?: Token, returnType?: BscType);
408
- get range(): Range;
409
- tokens: {
410
- functionType: Token;
411
- name: Identifier;
412
- leftParen: Token;
413
- rightParen: Token;
414
- as: Token;
415
- returnType: Token;
416
- };
421
+ constructor(name: Identifier, func: FunctionExpression);
417
422
  walk(visitor: WalkVisitor, options: WalkOptions): void;
418
- getTypedef(state: BrsTranspileState): TranspileResult;
419
423
  }
420
- export declare class ClassStatement extends Statement implements TypedefProvider, SymbolContainer {
424
+ export declare class ClassStatement extends Statement implements TypedefProvider, MemberSymbolTableProvider {
421
425
  readonly classKeyword: Token;
422
426
  /**
423
427
  * The name of the class (without namespace prefix)
@@ -441,9 +445,9 @@ export declare class ClassStatement extends Statement implements TypedefProvider
441
445
  methods: ClassMethodStatement[];
442
446
  fields: ClassFieldStatement[];
443
447
  readonly range: Range;
444
- getCustomType(): CustomType;
445
- getConstructorFunctionType(): import("../types/FunctionType").FunctionType;
446
- buildSymbolTable(parentClass?: ClassStatement): void;
448
+ getThisBscType(): CustomType;
449
+ getConstructorFunctionType(): import("../types/TypedFunctionType").TypedFunctionType;
450
+ buildSymbolTable(parentClass?: InheritableStatement): void;
447
451
  transpile(state: BrsTranspileState): any[];
448
452
  getTypedef(state: BrsTranspileState): TranspileResult;
449
453
  /**
@@ -452,7 +456,7 @@ export declare class ClassStatement extends Statement implements TypedefProvider
452
456
  * The base class is index 0, its child is index 1, and so on.
453
457
  */
454
458
  getParentClassIndex(state: BrsTranspileState): number;
455
- hasParentClass(): boolean;
459
+ hasParent(): boolean;
456
460
  /**
457
461
  * Gets an array of possible parent class names, taking into account the namespace this class was created under
458
462
  * @returns array of possible parent class names
@@ -469,6 +473,10 @@ export declare class ClassStatement extends Statement implements TypedefProvider
469
473
  */
470
474
  private getConstructorFunction;
471
475
  private getEmptyNewFunction;
476
+ /**
477
+ * Create an empty `new` function if class is missing it (simplifies transpile logic)
478
+ */
479
+ private ensureConstructorFunctionExists;
472
480
  /**
473
481
  * Determine if the specified field was declared in one of the ancestor classes
474
482
  */
@@ -488,10 +496,11 @@ export declare class ClassStatement extends Statement implements TypedefProvider
488
496
  walk(visitor: WalkVisitor, options: WalkOptions): void;
489
497
  }
490
498
  export declare class ClassMethodStatement extends FunctionStatement {
491
- readonly accessModifier: Token;
492
- readonly override: Token;
499
+ accessModifier: Token;
500
+ override: Token;
493
501
  constructor(accessModifier: Token, name: Identifier, func: FunctionExpression, override: Token);
494
- readonly range: Range;
502
+ get range(): Range;
503
+ cacheRange(): Range;
495
504
  transpile(state: BrsTranspileState): any[];
496
505
  getTypedef(state: BrsTranspileState): string[];
497
506
  /**
@@ -509,30 +518,49 @@ export declare class ClassFieldStatement extends Statement implements TypedefPro
509
518
  readonly accessModifier?: Token;
510
519
  readonly name?: Identifier;
511
520
  readonly as?: Token;
512
- readonly type?: Token;
521
+ readonly type?: TypeExpression;
513
522
  readonly equal?: Token;
514
523
  readonly initialValue?: Expression;
515
524
  readonly namespaceName?: NamespacedVariableNameExpression;
516
- constructor(accessModifier?: Token, name?: Identifier, as?: Token, type?: Token, equal?: Token, initialValue?: Expression, namespaceName?: NamespacedVariableNameExpression);
525
+ constructor(accessModifier?: Token, name?: Identifier, as?: Token, type?: TypeExpression, equal?: Token, initialValue?: Expression, namespaceName?: NamespacedVariableNameExpression);
526
+ readonly range: Range;
517
527
  /**
518
528
  * Derive a ValueKind from the type token, or the initial value.
519
529
  * Defaults to `DynamicType`
520
530
  */
521
- getType(parseMode?: ParseMode): DynamicType | BscType | import("../types/FloatType").FloatType | import("../types/FunctionType").FunctionType | import("../types/IntegerType").IntegerType | import("../types/LongIntegerType").LongIntegerType | import("../types/StringType").StringType | import("../types/BooleanType").BooleanType | import("../types/DoubleType").DoubleType | import("../types/InvalidType").InvalidType | import("../types/VoidType").VoidType;
522
- readonly range: Range;
531
+ getType(parseMode?: ParseMode): DynamicType | import("../types/BscType").BscType;
523
532
  transpile(state: BrsTranspileState): TranspileResult;
524
533
  getTypedef(state: BrsTranspileState): any[];
525
534
  walk(visitor: WalkVisitor, options: WalkOptions): void;
526
535
  }
527
536
  export declare type ClassMemberStatement = ClassFieldStatement | ClassMethodStatement;
537
+ export declare type InterfaceMemberStatement = InterfaceFieldStatement | InterfaceMethodStatement;
538
+ export declare type MemberFieldStatement = ClassFieldStatement | InterfaceFieldStatement;
539
+ export declare type MemberMethodStatement = ClassMethodStatement | InterfaceMethodStatement;
528
540
  export declare class TryCatchStatement extends Statement {
529
- tryToken: Token;
541
+ tokens: {
542
+ try: Token;
543
+ endTry?: Token;
544
+ };
530
545
  tryBranch?: Block;
531
- catchToken?: Token;
546
+ catchStatement?: CatchStatement;
547
+ constructor(tokens: {
548
+ try: Token;
549
+ endTry?: Token;
550
+ }, tryBranch?: Block, catchStatement?: CatchStatement);
551
+ readonly range: Range;
552
+ transpile(state: BrsTranspileState): TranspileResult;
553
+ walk(visitor: WalkVisitor, options: WalkOptions): void;
554
+ }
555
+ export declare class CatchStatement extends Statement {
556
+ tokens: {
557
+ catch: Token;
558
+ };
532
559
  exceptionVariable?: Identifier;
533
560
  catchBranch?: Block;
534
- endTryToken?: Token;
535
- constructor(tryToken: Token, tryBranch?: Block, catchToken?: Token, exceptionVariable?: Identifier, catchBranch?: Block, endTryToken?: Token);
561
+ constructor(tokens: {
562
+ catch: Token;
563
+ }, exceptionVariable?: Identifier, catchBranch?: Block);
536
564
  get range(): Range;
537
565
  transpile(state: BrsTranspileState): TranspileResult;
538
566
  walk(visitor: WalkVisitor, options: WalkOptions): void;
@@ -541,7 +569,7 @@ export declare class ThrowStatement extends Statement {
541
569
  throwToken: Token;
542
570
  expression?: Expression;
543
571
  constructor(throwToken: Token, expression?: Expression);
544
- range: Range;
572
+ readonly range: Range;
545
573
  transpile(state: BrsTranspileState): (string | SourceNode)[];
546
574
  walk(visitor: WalkVisitor, options: WalkOptions): void;
547
575
  }
@@ -558,7 +586,7 @@ export declare class EnumStatement extends Statement implements TypedefProvider
558
586
  name: Identifier;
559
587
  endEnum: Token;
560
588
  }, body: Array<EnumMemberStatement | CommentStatement>, namespaceName?: NamespacedVariableNameExpression);
561
- get range(): Range;
589
+ readonly range: Range;
562
590
  getMembers(): EnumMemberStatement[];
563
591
  /**
564
592
  * Get a map of member names and their values.
@@ -588,11 +616,11 @@ export declare class EnumMemberStatement extends Statement implements TypedefPro
588
616
  name: Identifier;
589
617
  equal?: Token;
590
618
  }, value?: Expression);
619
+ readonly range: Range;
591
620
  /**
592
621
  * The name of the member
593
622
  */
594
623
  get name(): string;
595
- get range(): Range;
596
624
  transpile(state: BrsTranspileState): TranspileResult;
597
625
  getTypedef(state: BrsTranspileState): (string | SourceNode)[];
598
626
  walk(visitor: WalkVisitor, options: WalkOptions): void;