brighterscript 0.66.0-alpha.4 → 0.66.0-alpha.6
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.
- package/CHANGELOG.md +29 -0
- package/dist/DiagnosticMessages.d.ts +21 -3
- package/dist/DiagnosticMessages.js +35 -2
- package/dist/DiagnosticMessages.js.map +1 -1
- package/dist/LanguageServer.d.ts +1 -0
- package/dist/LanguageServer.js +8 -5
- package/dist/LanguageServer.js.map +1 -1
- package/dist/Program.d.ts +20 -8
- package/dist/Program.js +107 -60
- package/dist/Program.js.map +1 -1
- package/dist/ProgramBuilder.js +14 -2
- package/dist/ProgramBuilder.js.map +1 -1
- package/dist/Scope.d.ts +15 -13
- package/dist/Scope.js +26 -65
- package/dist/Scope.js.map +1 -1
- package/dist/SymbolTable.d.ts +17 -10
- package/dist/SymbolTable.js +48 -26
- package/dist/SymbolTable.js.map +1 -1
- package/dist/XmlScope.d.ts +2 -0
- package/dist/XmlScope.js +38 -0
- package/dist/XmlScope.js.map +1 -1
- package/dist/astUtils/creators.d.ts +3 -1
- package/dist/astUtils/creators.js +14 -4
- package/dist/astUtils/creators.js.map +1 -1
- package/dist/astUtils/reflection.d.ts +24 -5
- package/dist/astUtils/reflection.js +58 -13
- package/dist/astUtils/reflection.js.map +1 -1
- package/dist/astUtils/reflection.spec.js +85 -3
- package/dist/astUtils/reflection.spec.js.map +1 -1
- package/dist/bscPlugin/CallExpressionInfo.d.ts +3 -3
- package/dist/bscPlugin/CallExpressionInfo.js.map +1 -1
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js +4 -4
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js.map +1 -1
- package/dist/bscPlugin/completions/CompletionsProcessor.d.ts +44 -1
- package/dist/bscPlugin/completions/CompletionsProcessor.js +353 -20
- package/dist/bscPlugin/completions/CompletionsProcessor.js.map +1 -1
- package/dist/bscPlugin/completions/CompletionsProcessor.spec.d.ts +1 -0
- package/dist/bscPlugin/completions/CompletionsProcessor.spec.js +1452 -0
- package/dist/bscPlugin/completions/CompletionsProcessor.spec.js.map +1 -0
- package/dist/bscPlugin/hover/HoverProcessor.d.ts +9 -4
- package/dist/bscPlugin/hover/HoverProcessor.js +64 -67
- package/dist/bscPlugin/hover/HoverProcessor.js.map +1 -1
- package/dist/bscPlugin/hover/HoverProcessor.spec.js +162 -4
- package/dist/bscPlugin/hover/HoverProcessor.spec.js.map +1 -1
- package/dist/bscPlugin/validation/BrsFileValidator.js +20 -16
- package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -1
- package/dist/bscPlugin/validation/ScopeValidator.d.ts +22 -1
- package/dist/bscPlugin/validation/ScopeValidator.js +194 -42
- package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -1
- package/dist/bscPlugin/validation/ScopeValidator.spec.js +621 -1
- package/dist/bscPlugin/validation/ScopeValidator.spec.js.map +1 -1
- package/dist/diagnosticUtils.d.ts +7 -2
- package/dist/diagnosticUtils.js +43 -15
- package/dist/diagnosticUtils.js.map +1 -1
- package/dist/files/BrsFile.Class.spec.js +10 -8
- package/dist/files/BrsFile.Class.spec.js.map +1 -1
- package/dist/files/BrsFile.d.ts +3 -20
- package/dist/files/BrsFile.js +7 -355
- package/dist/files/BrsFile.js.map +1 -1
- package/dist/files/BrsFile.spec.js +2 -248
- package/dist/files/BrsFile.spec.js.map +1 -1
- package/dist/files/XmlFile.d.ts +1 -6
- package/dist/files/XmlFile.js +0 -13
- package/dist/files/XmlFile.js.map +1 -1
- package/dist/files/XmlFile.spec.js +0 -36
- package/dist/files/XmlFile.spec.js.map +1 -1
- package/dist/globalCallables.js +1 -5
- package/dist/globalCallables.js.map +1 -1
- package/dist/interfaces.d.ts +22 -2
- package/dist/interfaces.js +4 -1
- package/dist/interfaces.js.map +1 -1
- package/dist/lexer/Lexer.d.ts +12 -0
- package/dist/lexer/Lexer.js +27 -2
- package/dist/lexer/Lexer.js.map +1 -1
- package/dist/lexer/Lexer.spec.js +40 -0
- package/dist/lexer/Lexer.spec.js.map +1 -1
- package/dist/lexer/Token.d.ts +4 -0
- package/dist/lexer/Token.js.map +1 -1
- package/dist/lexer/TokenKind.d.ts +4 -0
- package/dist/lexer/TokenKind.js +10 -1
- package/dist/lexer/TokenKind.js.map +1 -1
- package/dist/parser/AstNode.d.ts +8 -1
- package/dist/parser/AstNode.js +16 -0
- package/dist/parser/AstNode.js.map +1 -1
- package/dist/parser/Expression.d.ts +16 -1
- package/dist/parser/Expression.js +75 -11
- package/dist/parser/Expression.js.map +1 -1
- package/dist/parser/Parser.d.ts +7 -0
- package/dist/parser/Parser.js +55 -7
- package/dist/parser/Parser.js.map +1 -1
- package/dist/parser/Parser.spec.js +330 -4
- package/dist/parser/Parser.spec.js.map +1 -1
- package/dist/parser/SGTypes.d.ts +1 -1
- package/dist/parser/Statement.d.ts +18 -6
- package/dist/parser/Statement.js +54 -16
- package/dist/parser/Statement.js.map +1 -1
- package/dist/parser/tests/Parser.spec.js +2 -1
- package/dist/parser/tests/Parser.spec.js.map +1 -1
- package/dist/parser/tests/controlFlow/For.spec.js +16 -8
- package/dist/parser/tests/controlFlow/For.spec.js.map +1 -1
- package/dist/parser/tests/controlFlow/ForEach.spec.js +12 -6
- package/dist/parser/tests/controlFlow/ForEach.spec.js.map +1 -1
- package/dist/parser/tests/controlFlow/While.spec.js +8 -4
- package/dist/parser/tests/controlFlow/While.spec.js.map +1 -1
- package/dist/parser/tests/expression/Call.spec.js +4 -4
- package/dist/parser/tests/expression/Call.spec.js.map +1 -1
- package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js +13 -13
- package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js.map +1 -1
- package/dist/parser/tests/statement/ConstStatement.spec.js +1 -34
- package/dist/parser/tests/statement/ConstStatement.spec.js.map +1 -1
- package/dist/parser/tests/statement/Enum.spec.js +1 -257
- package/dist/parser/tests/statement/Enum.spec.js.map +1 -1
- package/dist/parser/tests/statement/InterfaceStatement.spec.js +8 -0
- package/dist/parser/tests/statement/InterfaceStatement.spec.js.map +1 -1
- package/dist/parser/tests/statement/PrintStatement.spec.js +6 -3
- package/dist/parser/tests/statement/PrintStatement.spec.js.map +1 -1
- package/dist/parser/tests/statement/ReturnStatement.spec.js +5 -3
- package/dist/parser/tests/statement/ReturnStatement.spec.js.map +1 -1
- package/dist/parser/tests/statement/Set.spec.js +26 -13
- package/dist/parser/tests/statement/Set.spec.js.map +1 -1
- package/dist/roku-types/data.json +156 -111
- package/dist/roku-types/index.d.ts +2 -27
- package/dist/types/ArrayType.d.ts +4 -1
- package/dist/types/ArrayType.js +43 -7
- package/dist/types/ArrayType.js.map +1 -1
- package/dist/types/ArrayType.spec.js +31 -2
- package/dist/types/ArrayType.spec.js.map +1 -1
- package/dist/types/AssociativeArrayType.d.ts +11 -0
- package/dist/types/AssociativeArrayType.js +52 -0
- package/dist/types/AssociativeArrayType.js.map +1 -0
- package/dist/types/BaseFunctionType.d.ts +2 -1
- package/dist/types/BaseFunctionType.js +1 -1
- package/dist/types/BaseFunctionType.js.map +1 -1
- package/dist/types/BooleanType.d.ts +2 -4
- package/dist/types/BooleanType.js +6 -7
- package/dist/types/BooleanType.js.map +1 -1
- package/dist/types/BscType.d.ts +8 -4
- package/dist/types/BscType.js +42 -14
- package/dist/types/BscType.js.map +1 -1
- package/dist/types/BscTypeKind.d.ts +2 -0
- package/dist/types/BscTypeKind.js +2 -0
- package/dist/types/BscTypeKind.js.map +1 -1
- package/dist/types/BuiltInInterfaceAdder.d.ts +20 -0
- package/dist/types/BuiltInInterfaceAdder.js +139 -0
- package/dist/types/BuiltInInterfaceAdder.js.map +1 -0
- package/dist/types/BuiltInInterfaceAdder.spec.d.ts +1 -0
- package/dist/types/BuiltInInterfaceAdder.spec.js +109 -0
- package/dist/types/BuiltInInterfaceAdder.spec.js.map +1 -0
- package/dist/types/ClassType.d.ts +6 -1
- package/dist/types/ClassType.js +26 -2
- package/dist/types/ClassType.js.map +1 -1
- package/dist/types/ComponentType.d.ts +26 -0
- package/dist/types/ComponentType.js +80 -0
- package/dist/types/ComponentType.js.map +1 -0
- package/dist/types/DoubleType.d.ts +2 -4
- package/dist/types/DoubleType.js +6 -7
- package/dist/types/DoubleType.js.map +1 -1
- package/dist/types/DynamicType.d.ts +2 -2
- package/dist/types/DynamicType.js +3 -1
- package/dist/types/DynamicType.js.map +1 -1
- package/dist/types/EnumType.d.ts +4 -5
- package/dist/types/EnumType.js +8 -7
- package/dist/types/EnumType.js.map +1 -1
- package/dist/types/FloatType.d.ts +2 -4
- package/dist/types/FloatType.js +6 -7
- package/dist/types/FloatType.js.map +1 -1
- package/dist/types/FunctionType.d.ts +2 -1
- package/dist/types/FunctionType.js +6 -2
- package/dist/types/FunctionType.js.map +1 -1
- package/dist/types/IntegerType.d.ts +2 -4
- package/dist/types/IntegerType.js +6 -7
- package/dist/types/IntegerType.js.map +1 -1
- package/dist/types/InterfaceType.d.ts +2 -1
- package/dist/types/InterfaceType.js +8 -4
- package/dist/types/InterfaceType.js.map +1 -1
- package/dist/types/InterfaceType.spec.js +2 -2
- package/dist/types/InvalidType.d.ts +1 -1
- package/dist/types/InvalidType.js +5 -1
- package/dist/types/InvalidType.js.map +1 -1
- package/dist/types/LongIntegerType.d.ts +2 -4
- package/dist/types/LongIntegerType.js +6 -7
- package/dist/types/LongIntegerType.js.map +1 -1
- package/dist/types/ObjectType.d.ts +3 -3
- package/dist/types/ObjectType.js +3 -1
- package/dist/types/ObjectType.js.map +1 -1
- package/dist/types/ReferenceType.d.ts +14 -0
- package/dist/types/ReferenceType.js +114 -13
- package/dist/types/ReferenceType.js.map +1 -1
- package/dist/types/ReferenceType.spec.js +15 -0
- package/dist/types/ReferenceType.spec.js.map +1 -1
- package/dist/types/StringType.d.ts +2 -4
- package/dist/types/StringType.js +5 -6
- package/dist/types/StringType.js.map +1 -1
- package/dist/types/TypedFunctionType.d.ts +2 -1
- package/dist/types/TypedFunctionType.js +10 -3
- package/dist/types/TypedFunctionType.js.map +1 -1
- package/dist/types/UninitializedType.d.ts +2 -1
- package/dist/types/UninitializedType.js +1 -1
- package/dist/types/UninitializedType.js.map +1 -1
- package/dist/types/UnionType.d.ts +4 -2
- package/dist/types/UnionType.js +25 -4
- package/dist/types/UnionType.js.map +1 -1
- package/dist/types/UnionType.spec.js +46 -19
- package/dist/types/UnionType.spec.js.map +1 -1
- package/dist/types/VoidType.d.ts +2 -1
- package/dist/types/VoidType.js +6 -2
- package/dist/types/VoidType.js.map +1 -1
- package/dist/types/helpers.d.ts +2 -0
- package/dist/types/helpers.js +18 -3
- package/dist/types/helpers.js.map +1 -1
- package/dist/util.d.ts +25 -2
- package/dist/util.js +179 -13
- package/dist/util.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Token, Identifier } from '../lexer/Token';
|
|
2
2
|
import { TokenKind } from '../lexer/TokenKind';
|
|
3
|
-
import type { FunctionExpression, FunctionParameterExpression, TypeExpression } from './Expression';
|
|
3
|
+
import type { DottedGetExpression, FunctionExpression, FunctionParameterExpression, TypeExpression } from './Expression';
|
|
4
|
+
import { VariableExpression } from './Expression';
|
|
4
5
|
import type { Range } from 'vscode-languageserver';
|
|
5
6
|
import type { BrsTranspileState } from './BrsTranspileState';
|
|
6
7
|
import { ParseMode } from './Parser';
|
|
@@ -13,7 +14,6 @@ import type { Expression } from './AstNode';
|
|
|
13
14
|
import { AstNodeKind } from './AstNode';
|
|
14
15
|
import { Statement } from './AstNode';
|
|
15
16
|
import { ClassType } from '../types/ClassType';
|
|
16
|
-
import { EnumMemberType, EnumType } from '../types/EnumType';
|
|
17
17
|
import { NamespaceType } from '../types/NamespaceType';
|
|
18
18
|
import { InterfaceType } from '../types/InterfaceType';
|
|
19
19
|
import type { BscType } from '../types/BscType';
|
|
@@ -119,6 +119,7 @@ export declare class FunctionStatement extends Statement implements TypedefProvi
|
|
|
119
119
|
* Get the name of this expression based on the parse mode
|
|
120
120
|
*/
|
|
121
121
|
getName(parseMode: ParseMode): string;
|
|
122
|
+
getLeadingTrivia(): Token[];
|
|
122
123
|
transpile(state: BrsTranspileState): any[];
|
|
123
124
|
getTypedef(state: BrsTranspileState): any[];
|
|
124
125
|
walk(visitor: WalkVisitor, options: WalkOptions): void;
|
|
@@ -222,6 +223,7 @@ export declare class LabelStatement extends Statement {
|
|
|
222
223
|
});
|
|
223
224
|
readonly kind = AstNodeKind.LabelStatement;
|
|
224
225
|
readonly range: Range;
|
|
226
|
+
getLeadingTrivia(): Token[];
|
|
225
227
|
transpile(state: BrsTranspileState): SourceNode[];
|
|
226
228
|
walk(visitor: WalkVisitor, options: WalkOptions): void;
|
|
227
229
|
}
|
|
@@ -352,10 +354,10 @@ export declare class LibraryStatement extends Statement implements TypedefProvid
|
|
|
352
354
|
}
|
|
353
355
|
export declare class NamespaceStatement extends Statement implements TypedefProvider {
|
|
354
356
|
keyword: Token;
|
|
355
|
-
nameExpression:
|
|
357
|
+
nameExpression: VariableExpression | DottedGetExpression;
|
|
356
358
|
body: Body;
|
|
357
359
|
endKeyword: Token;
|
|
358
|
-
constructor(keyword: Token, nameExpression:
|
|
360
|
+
constructor(keyword: Token, nameExpression: VariableExpression | DottedGetExpression, body: Body, endKeyword: Token);
|
|
359
361
|
readonly kind = AstNodeKind.NamespaceStatement;
|
|
360
362
|
/**
|
|
361
363
|
* The string name for this namespace
|
|
@@ -365,6 +367,7 @@ export declare class NamespaceStatement extends Statement implements TypedefProv
|
|
|
365
367
|
private _range;
|
|
366
368
|
cacheRange(): Range;
|
|
367
369
|
getName(parseMode: ParseMode): string;
|
|
370
|
+
getLeadingTrivia(): Token[];
|
|
368
371
|
getNameParts(): Identifier[];
|
|
369
372
|
transpile(state: BrsTranspileState): TranspileResult;
|
|
370
373
|
getTypedef(state: BrsTranspileState): string[];
|
|
@@ -400,6 +403,7 @@ export declare class InterfaceStatement extends Statement implements TypedefProv
|
|
|
400
403
|
get fields(): InterfaceFieldStatement[];
|
|
401
404
|
get methods(): InterfaceMethodStatement[];
|
|
402
405
|
hasParentInterface(): boolean;
|
|
406
|
+
getLeadingTrivia(): Token[];
|
|
403
407
|
/**
|
|
404
408
|
* The name of the interface WITH its leading namespace (if applicable)
|
|
405
409
|
*/
|
|
@@ -427,6 +431,7 @@ export declare class InterfaceFieldStatement extends Statement implements Typede
|
|
|
427
431
|
name: Identifier;
|
|
428
432
|
as: Token;
|
|
429
433
|
};
|
|
434
|
+
getLeadingTrivia(): Token[];
|
|
430
435
|
get name(): string;
|
|
431
436
|
walk(visitor: WalkVisitor, options: WalkOptions): void;
|
|
432
437
|
getTypedef(state: BrsTranspileState): (string | SourceNode)[];
|
|
@@ -450,6 +455,7 @@ export declare class InterfaceMethodStatement extends Statement implements Typed
|
|
|
450
455
|
rightParen: Token;
|
|
451
456
|
as: Token;
|
|
452
457
|
};
|
|
458
|
+
getLeadingTrivia(): Token[];
|
|
453
459
|
walk(visitor: WalkVisitor, options: WalkOptions): void;
|
|
454
460
|
getTypedef(state: BrsTranspileState): TranspileResult;
|
|
455
461
|
getType(options: GetTypeOptions): TypedFunctionType;
|
|
@@ -471,6 +477,7 @@ export declare class ClassStatement extends Statement implements TypedefProvider
|
|
|
471
477
|
name: Identifier, body: Statement[], end: Token, extendsKeyword?: Token, parentClassName?: TypeExpression);
|
|
472
478
|
readonly kind = AstNodeKind.ClassStatement;
|
|
473
479
|
getName(parseMode: ParseMode): string;
|
|
480
|
+
getLeadingTrivia(): Token[];
|
|
474
481
|
memberMap: Record<string, MemberStatement>;
|
|
475
482
|
methods: MethodStatement[];
|
|
476
483
|
fields: FieldStatement[];
|
|
@@ -524,6 +531,7 @@ export declare class MethodStatement extends FunctionStatement {
|
|
|
524
531
|
* Get the name of this method.
|
|
525
532
|
*/
|
|
526
533
|
getName(parseMode: ParseMode): string;
|
|
534
|
+
getLeadingTrivia(): Token[];
|
|
527
535
|
transpile(state: BrsTranspileState): any[];
|
|
528
536
|
getTypedef(state: BrsTranspileState): (string | SourceNode)[];
|
|
529
537
|
/**
|
|
@@ -552,6 +560,7 @@ export declare class FieldStatement extends Statement implements TypedefProvider
|
|
|
552
560
|
*/
|
|
553
561
|
getType(options: GetTypeOptions): BscType;
|
|
554
562
|
readonly range: Range;
|
|
563
|
+
getLeadingTrivia(): Token[];
|
|
555
564
|
transpile(state: BrsTranspileState): TranspileResult;
|
|
556
565
|
getTypedef(state: BrsTranspileState): any[];
|
|
557
566
|
walk(visitor: WalkVisitor, options: WalkOptions): void;
|
|
@@ -612,6 +621,7 @@ export declare class EnumStatement extends Statement implements TypedefProvider
|
|
|
612
621
|
symbolTable: SymbolTable;
|
|
613
622
|
get range(): Range;
|
|
614
623
|
getMembers(): EnumMemberStatement[];
|
|
624
|
+
getLeadingTrivia(): Token[];
|
|
615
625
|
/**
|
|
616
626
|
* Get a map of member names and their values.
|
|
617
627
|
* All values are stored as their AST LiteralExpression representation (i.e. string enum values include the wrapping quotes)
|
|
@@ -629,7 +639,7 @@ export declare class EnumStatement extends Statement implements TypedefProvider
|
|
|
629
639
|
transpile(state: BrsTranspileState): any[];
|
|
630
640
|
getTypedef(state: BrsTranspileState): TranspileResult;
|
|
631
641
|
walk(visitor: WalkVisitor, options: WalkOptions): void;
|
|
632
|
-
getType(options: GetTypeOptions):
|
|
642
|
+
getType(options: GetTypeOptions): any;
|
|
633
643
|
}
|
|
634
644
|
export declare class EnumMemberStatement extends Statement implements TypedefProvider {
|
|
635
645
|
tokens: {
|
|
@@ -647,10 +657,11 @@ export declare class EnumMemberStatement extends Statement implements TypedefPro
|
|
|
647
657
|
* The name of the member
|
|
648
658
|
*/
|
|
649
659
|
get name(): string;
|
|
660
|
+
getLeadingTrivia(): Token[];
|
|
650
661
|
transpile(state: BrsTranspileState): TranspileResult;
|
|
651
662
|
getTypedef(state: BrsTranspileState): (string | SourceNode)[];
|
|
652
663
|
walk(visitor: WalkVisitor, options: WalkOptions): void;
|
|
653
|
-
getType(options: GetTypeOptions):
|
|
664
|
+
getType(options: GetTypeOptions): any;
|
|
654
665
|
}
|
|
655
666
|
export declare class ConstStatement extends Statement implements TypedefProvider {
|
|
656
667
|
tokens: {
|
|
@@ -667,6 +678,7 @@ export declare class ConstStatement extends Statement implements TypedefProvider
|
|
|
667
678
|
readonly kind = AstNodeKind.ConstStatement;
|
|
668
679
|
range: Range;
|
|
669
680
|
get name(): string;
|
|
681
|
+
getLeadingTrivia(): Token[];
|
|
670
682
|
/**
|
|
671
683
|
* The name of the statement WITH its leading namespace (if applicable)
|
|
672
684
|
*/
|
package/dist/parser/Statement.js
CHANGED
|
@@ -293,6 +293,9 @@ class FunctionStatement extends AstNode_2.Statement {
|
|
|
293
293
|
return this.name.text;
|
|
294
294
|
}
|
|
295
295
|
}
|
|
296
|
+
getLeadingTrivia() {
|
|
297
|
+
return util_1.util.concatAnnotationLeadingTrivia(this, this.func.getLeadingTrivia());
|
|
298
|
+
}
|
|
296
299
|
transpile(state) {
|
|
297
300
|
//create a fake token using the full transpiled name
|
|
298
301
|
let nameToken = Object.assign(Object.assign({}, this.name), { text: this.getName(Parser_1.ParseMode.BrightScript) });
|
|
@@ -534,6 +537,9 @@ class LabelStatement extends AstNode_2.Statement {
|
|
|
534
537
|
this.kind = AstNode_1.AstNodeKind.LabelStatement;
|
|
535
538
|
this.range = util_1.util.createBoundingRange(tokens.identifier, tokens.colon);
|
|
536
539
|
}
|
|
540
|
+
getLeadingTrivia() {
|
|
541
|
+
return util_1.util.concatAnnotationLeadingTrivia(this, this.tokens.identifier.leadingTrivia);
|
|
542
|
+
}
|
|
537
543
|
transpile(state) {
|
|
538
544
|
return [
|
|
539
545
|
state.transpileToken(this.tokens.identifier),
|
|
@@ -836,9 +842,7 @@ class LibraryStatement extends AstNode_2.Statement {
|
|
|
836
842
|
}
|
|
837
843
|
exports.LibraryStatement = LibraryStatement;
|
|
838
844
|
class NamespaceStatement extends AstNode_2.Statement {
|
|
839
|
-
constructor(keyword,
|
|
840
|
-
// this should technically only be a VariableExpression or DottedGetExpression, but that can be enforced elsewhere
|
|
841
|
-
nameExpression, body, endKeyword) {
|
|
845
|
+
constructor(keyword, nameExpression, body, endKeyword) {
|
|
842
846
|
super();
|
|
843
847
|
this.keyword = keyword;
|
|
844
848
|
this.nameExpression = nameExpression;
|
|
@@ -867,6 +871,9 @@ class NamespaceStatement extends AstNode_2.Statement {
|
|
|
867
871
|
}
|
|
868
872
|
return name;
|
|
869
873
|
}
|
|
874
|
+
getLeadingTrivia() {
|
|
875
|
+
return util_1.util.concatAnnotationLeadingTrivia(this, this.keyword.leadingTrivia);
|
|
876
|
+
}
|
|
870
877
|
getNameParts() {
|
|
871
878
|
var _a, _b;
|
|
872
879
|
let parts = util_1.util.getAllDottedGetParts(this.nameExpression);
|
|
@@ -901,7 +908,6 @@ class NamespaceStatement extends AstNode_2.Statement {
|
|
|
901
908
|
}
|
|
902
909
|
getType(options) {
|
|
903
910
|
const resultType = new NamespaceType_1.NamespaceType(this.name);
|
|
904
|
-
resultType.pushMemberProvider(() => this.body.getSymbolTable());
|
|
905
911
|
return resultType;
|
|
906
912
|
}
|
|
907
913
|
}
|
|
@@ -968,6 +974,9 @@ class InterfaceStatement extends AstNode_2.Statement {
|
|
|
968
974
|
hasParentInterface() {
|
|
969
975
|
return !!this.parentInterfaceName;
|
|
970
976
|
}
|
|
977
|
+
getLeadingTrivia() {
|
|
978
|
+
return util_1.util.concatAnnotationLeadingTrivia(this, this.tokens.interface.leadingTrivia);
|
|
979
|
+
}
|
|
971
980
|
/**
|
|
972
981
|
* The name of the interface WITH its leading namespace (if applicable)
|
|
973
982
|
*/
|
|
@@ -1056,11 +1065,11 @@ class InterfaceStatement extends AstNode_2.Statement {
|
|
|
1056
1065
|
const resultType = new InterfaceType_1.InterfaceType(this.getName(Parser_1.ParseMode.BrighterScript), superIface);
|
|
1057
1066
|
for (const statement of this.methods) {
|
|
1058
1067
|
const memberType = statement === null || statement === void 0 ? void 0 : statement.getType(Object.assign(Object.assign({}, options), { typeChain: undefined })); // no typechain info needed
|
|
1059
|
-
resultType.addMember((_b = statement === null || statement === void 0 ? void 0 : statement.tokens.name) === null || _b === void 0 ? void 0 : _b.text,
|
|
1068
|
+
resultType.addMember((_b = statement === null || statement === void 0 ? void 0 : statement.tokens.name) === null || _b === void 0 ? void 0 : _b.text, { definingNode: statement }, memberType, SymbolTable_1.SymbolTypeFlag.runtime);
|
|
1060
1069
|
}
|
|
1061
1070
|
for (const statement of this.fields) {
|
|
1062
1071
|
const memberType = statement === null || statement === void 0 ? void 0 : statement.getType(Object.assign(Object.assign({}, options), { typeChain: undefined })); // no typechain info needed
|
|
1063
|
-
resultType.addMember((_c = statement === null || statement === void 0 ? void 0 : statement.tokens.name) === null || _c === void 0 ? void 0 : _c.text,
|
|
1072
|
+
resultType.addMember((_c = statement === null || statement === void 0 ? void 0 : statement.tokens.name) === null || _c === void 0 ? void 0 : _c.text, { definingNode: statement }, memberType, SymbolTable_1.SymbolTypeFlag.runtime);
|
|
1064
1073
|
}
|
|
1065
1074
|
(_d = options.typeChain) === null || _d === void 0 ? void 0 : _d.push(new interfaces_1.TypeChainEntry(this.getName(Parser_1.ParseMode.BrighterScript), resultType, this.range));
|
|
1066
1075
|
return resultType;
|
|
@@ -1080,6 +1089,9 @@ class InterfaceFieldStatement extends AstNode_2.Statement {
|
|
|
1080
1089
|
transpile(state) {
|
|
1081
1090
|
throw new Error('Method not implemented.');
|
|
1082
1091
|
}
|
|
1092
|
+
getLeadingTrivia() {
|
|
1093
|
+
return util_1.util.concatAnnotationLeadingTrivia(this, this.tokens.name.leadingTrivia);
|
|
1094
|
+
}
|
|
1083
1095
|
get name() {
|
|
1084
1096
|
return this.tokens.name.text;
|
|
1085
1097
|
}
|
|
@@ -1134,6 +1146,9 @@ class InterfaceMethodStatement extends AstNode_2.Statement {
|
|
|
1134
1146
|
getName(parseMode) {
|
|
1135
1147
|
return this.tokens.name.text;
|
|
1136
1148
|
}
|
|
1149
|
+
getLeadingTrivia() {
|
|
1150
|
+
return util_1.util.concatAnnotationLeadingTrivia(this, this.tokens.functionType.leadingTrivia);
|
|
1151
|
+
}
|
|
1137
1152
|
walk(visitor, options) {
|
|
1138
1153
|
if (options.walkMode & visitors_1.InternalWalkMode.walkExpressions) {
|
|
1139
1154
|
(0, visitors_1.walk)(this, 'returnTypeExpression', visitor, options);
|
|
@@ -1194,7 +1209,7 @@ class ClassStatement extends AstNode_2.Statement {
|
|
|
1194
1209
|
* The name of the class (without namespace prefix)
|
|
1195
1210
|
*/
|
|
1196
1211
|
name, body, end, extendsKeyword, parentClassName) {
|
|
1197
|
-
var _a, _b, _c;
|
|
1212
|
+
var _a, _b, _c, _d;
|
|
1198
1213
|
super();
|
|
1199
1214
|
this.classKeyword = classKeyword;
|
|
1200
1215
|
this.name = name;
|
|
@@ -1207,14 +1222,15 @@ class ClassStatement extends AstNode_2.Statement {
|
|
|
1207
1222
|
this.methods = [];
|
|
1208
1223
|
this.fields = [];
|
|
1209
1224
|
this.body = (_a = this.body) !== null && _a !== void 0 ? _a : [];
|
|
1225
|
+
this.symbolTable = new SymbolTable_2.SymbolTable(`ClassStatement: '${(_b = this.name) === null || _b === void 0 ? void 0 : _b.text}'`, () => { var _a; return (_a = this.parent) === null || _a === void 0 ? void 0 : _a.getSymbolTable(); });
|
|
1210
1226
|
for (let statement of this.body) {
|
|
1211
1227
|
if ((0, reflection_1.isMethodStatement)(statement)) {
|
|
1212
1228
|
this.methods.push(statement);
|
|
1213
|
-
this.memberMap[(
|
|
1229
|
+
this.memberMap[(_c = statement === null || statement === void 0 ? void 0 : statement.name) === null || _c === void 0 ? void 0 : _c.text.toLowerCase()] = statement;
|
|
1214
1230
|
}
|
|
1215
1231
|
else if ((0, reflection_1.isFieldStatement)(statement)) {
|
|
1216
1232
|
this.fields.push(statement);
|
|
1217
|
-
this.memberMap[(
|
|
1233
|
+
this.memberMap[(_d = statement === null || statement === void 0 ? void 0 : statement.name) === null || _d === void 0 ? void 0 : _d.text.toLowerCase()] = statement;
|
|
1218
1234
|
}
|
|
1219
1235
|
}
|
|
1220
1236
|
this.range = util_1.util.createBoundingRange(classKeyword, name, extendsKeyword, parentClassName, ...(body !== null && body !== void 0 ? body : []), end);
|
|
@@ -1238,6 +1254,9 @@ class ClassStatement extends AstNode_2.Statement {
|
|
|
1238
1254
|
return undefined;
|
|
1239
1255
|
}
|
|
1240
1256
|
}
|
|
1257
|
+
getLeadingTrivia() {
|
|
1258
|
+
return util_1.util.concatAnnotationLeadingTrivia(this, this.classKeyword.leadingTrivia);
|
|
1259
|
+
}
|
|
1241
1260
|
transpile(state) {
|
|
1242
1261
|
let result = [];
|
|
1243
1262
|
//make the builder
|
|
@@ -1481,11 +1500,11 @@ class ClassStatement extends AstNode_2.Statement {
|
|
|
1481
1500
|
const resultType = new ClassType_1.ClassType(this.getName(Parser_1.ParseMode.BrighterScript), superClass);
|
|
1482
1501
|
for (const statement of this.methods) {
|
|
1483
1502
|
const funcType = statement === null || statement === void 0 ? void 0 : statement.func.getType(Object.assign(Object.assign({}, options), { typeChain: undefined })); //no typechain needed
|
|
1484
|
-
resultType.addMember((_b = statement === null || statement === void 0 ? void 0 : statement.name) === null || _b === void 0 ? void 0 : _b.text,
|
|
1503
|
+
resultType.addMember((_b = statement === null || statement === void 0 ? void 0 : statement.name) === null || _b === void 0 ? void 0 : _b.text, { definingNode: statement }, funcType, SymbolTable_1.SymbolTypeFlag.runtime);
|
|
1485
1504
|
}
|
|
1486
1505
|
for (const statement of this.fields) {
|
|
1487
1506
|
const fieldType = statement.getType(Object.assign(Object.assign({}, options), { typeChain: undefined })); //no typechain needed
|
|
1488
|
-
resultType.addMember((_c = statement === null || statement === void 0 ? void 0 : statement.name) === null || _c === void 0 ? void 0 : _c.text,
|
|
1507
|
+
resultType.addMember((_c = statement === null || statement === void 0 ? void 0 : statement.name) === null || _c === void 0 ? void 0 : _c.text, { definingNode: statement }, fieldType, SymbolTable_1.SymbolTypeFlag.runtime);
|
|
1489
1508
|
}
|
|
1490
1509
|
(_d = options.typeChain) === null || _d === void 0 ? void 0 : _d.push(new interfaces_1.TypeChainEntry(resultType.name, resultType, this.range));
|
|
1491
1510
|
return resultType;
|
|
@@ -1522,6 +1541,9 @@ class MethodStatement extends FunctionStatement {
|
|
|
1522
1541
|
getName(parseMode) {
|
|
1523
1542
|
return this.name.text;
|
|
1524
1543
|
}
|
|
1544
|
+
getLeadingTrivia() {
|
|
1545
|
+
return util_1.util.concatAnnotationLeadingTrivia(this, this.func.getLeadingTrivia());
|
|
1546
|
+
}
|
|
1525
1547
|
transpile(state) {
|
|
1526
1548
|
if (this.name.text.toLowerCase() === 'new') {
|
|
1527
1549
|
this.ensureSuperConstructorCall(state);
|
|
@@ -1594,19 +1616,22 @@ class MethodStatement extends FunctionStatement {
|
|
|
1594
1616
|
text: 'super',
|
|
1595
1617
|
isReserved: false,
|
|
1596
1618
|
range: state.classStatement.name.range,
|
|
1597
|
-
leadingWhitespace: ''
|
|
1619
|
+
leadingWhitespace: '',
|
|
1620
|
+
leadingTrivia: []
|
|
1598
1621
|
}), {
|
|
1599
1622
|
kind: TokenKind_1.TokenKind.LeftParen,
|
|
1600
1623
|
text: '(',
|
|
1601
1624
|
isReserved: false,
|
|
1602
1625
|
range: state.classStatement.name.range,
|
|
1603
|
-
leadingWhitespace: ''
|
|
1626
|
+
leadingWhitespace: '',
|
|
1627
|
+
leadingTrivia: []
|
|
1604
1628
|
}, {
|
|
1605
1629
|
kind: TokenKind_1.TokenKind.RightParen,
|
|
1606
1630
|
text: ')',
|
|
1607
1631
|
isReserved: false,
|
|
1608
1632
|
range: state.classStatement.name.range,
|
|
1609
|
-
leadingWhitespace: ''
|
|
1633
|
+
leadingWhitespace: '',
|
|
1634
|
+
leadingTrivia: []
|
|
1610
1635
|
}, []));
|
|
1611
1636
|
state.editor.arrayUnshift(this.func.body.statements, superCall);
|
|
1612
1637
|
}
|
|
@@ -1657,6 +1682,10 @@ class FieldStatement extends AstNode_2.Statement {
|
|
|
1657
1682
|
var _a, _b, _c, _d;
|
|
1658
1683
|
return (_d = (_b = (_a = this.typeExpression) === null || _a === void 0 ? void 0 : _a.getType(Object.assign(Object.assign({}, options), { flags: SymbolTable_1.SymbolTypeFlag.typetime }))) !== null && _b !== void 0 ? _b : (_c = this.initialValue) === null || _c === void 0 ? void 0 : _c.getType(Object.assign(Object.assign({}, options), { flags: SymbolTable_1.SymbolTypeFlag.runtime }))) !== null && _d !== void 0 ? _d : DynamicType_1.DynamicType.instance;
|
|
1659
1684
|
}
|
|
1685
|
+
getLeadingTrivia() {
|
|
1686
|
+
var _a, _b, _c, _d;
|
|
1687
|
+
return util_1.util.concatAnnotationLeadingTrivia(this, (_d = (_b = (_a = this.accessModifier) === null || _a === void 0 ? void 0 : _a.leadingTrivia) !== null && _b !== void 0 ? _b : (_c = this.name) === null || _c === void 0 ? void 0 : _c.leadingTrivia) !== null && _d !== void 0 ? _d : []);
|
|
1688
|
+
}
|
|
1660
1689
|
transpile(state) {
|
|
1661
1690
|
throw new Error('transpile not implemented for ' + Object.getPrototypeOf(this).constructor.name);
|
|
1662
1691
|
}
|
|
@@ -1790,6 +1819,9 @@ class EnumStatement extends AstNode_2.Statement {
|
|
|
1790
1819
|
}
|
|
1791
1820
|
return result;
|
|
1792
1821
|
}
|
|
1822
|
+
getLeadingTrivia() {
|
|
1823
|
+
return util_1.util.concatAnnotationLeadingTrivia(this, this.tokens.enum.leadingTrivia);
|
|
1824
|
+
}
|
|
1793
1825
|
/**
|
|
1794
1826
|
* Get a map of member names and their values.
|
|
1795
1827
|
* All values are stored as their AST LiteralExpression representation (i.e. string enum values include the wrapping quotes)
|
|
@@ -1887,10 +1919,10 @@ class EnumStatement extends AstNode_2.Statement {
|
|
|
1887
1919
|
getType(options) {
|
|
1888
1920
|
var _a, _b, _c;
|
|
1889
1921
|
const members = this.getMembers();
|
|
1890
|
-
const resultType = new EnumType_1.EnumType(this.fullName, (_a = members[0]) === null || _a === void 0 ? void 0 : _a.getType(options));
|
|
1922
|
+
const resultType = new EnumType_1.EnumType(this.fullName, (_a = members[0]) === null || _a === void 0 ? void 0 : _a.getType(options).underlyingType);
|
|
1891
1923
|
resultType.pushMemberProvider(() => this.getSymbolTable());
|
|
1892
1924
|
for (const statement of members) {
|
|
1893
|
-
resultType.addMember((_c = (_b = statement === null || statement === void 0 ? void 0 : statement.tokens) === null || _b === void 0 ? void 0 : _b.name) === null || _c === void 0 ? void 0 : _c.text,
|
|
1925
|
+
resultType.addMember((_c = (_b = statement === null || statement === void 0 ? void 0 : statement.tokens) === null || _b === void 0 ? void 0 : _b.name) === null || _c === void 0 ? void 0 : _c.text, { definingNode: statement }, statement.getType(options), SymbolTable_1.SymbolTypeFlag.runtime);
|
|
1894
1926
|
}
|
|
1895
1927
|
return resultType;
|
|
1896
1928
|
}
|
|
@@ -1912,6 +1944,9 @@ class EnumMemberStatement extends AstNode_2.Statement {
|
|
|
1912
1944
|
get name() {
|
|
1913
1945
|
return this.tokens.name.text;
|
|
1914
1946
|
}
|
|
1947
|
+
getLeadingTrivia() {
|
|
1948
|
+
return util_1.util.concatAnnotationLeadingTrivia(this, this.tokens.name.leadingTrivia);
|
|
1949
|
+
}
|
|
1915
1950
|
transpile(state) {
|
|
1916
1951
|
return [];
|
|
1917
1952
|
}
|
|
@@ -1949,6 +1984,9 @@ class ConstStatement extends AstNode_2.Statement {
|
|
|
1949
1984
|
get name() {
|
|
1950
1985
|
return this.tokens.name.text;
|
|
1951
1986
|
}
|
|
1987
|
+
getLeadingTrivia() {
|
|
1988
|
+
return util_1.util.concatAnnotationLeadingTrivia(this, this.tokens.const.leadingTrivia);
|
|
1989
|
+
}
|
|
1952
1990
|
/**
|
|
1953
1991
|
* The name of the statement WITH its leading namespace (if applicable)
|
|
1954
1992
|
*/
|