brighterscript 0.66.0-alpha.3 → 0.66.0-alpha.5
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 +56 -0
- package/dist/BusyStatusTracker.d.ts +31 -0
- package/dist/BusyStatusTracker.js +83 -0
- package/dist/BusyStatusTracker.js.map +1 -0
- package/dist/DiagnosticMessages.d.ts +6 -1
- package/dist/DiagnosticMessages.js +5 -0
- package/dist/DiagnosticMessages.js.map +1 -1
- package/dist/LanguageServer.d.ts +18 -0
- package/dist/LanguageServer.js +126 -57
- package/dist/LanguageServer.js.map +1 -1
- package/dist/Logger.d.ts +1 -1
- package/dist/Logger.js.map +1 -1
- package/dist/Program.d.ts +3 -8
- package/dist/Program.js +13 -55
- 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 +1 -13
- package/dist/Scope.js +10 -65
- package/dist/Scope.js.map +1 -1
- package/dist/SymbolTable.d.ts +12 -10
- package/dist/SymbolTable.js +33 -24
- package/dist/SymbolTable.js.map +1 -1
- package/dist/Throttler.d.ts +12 -0
- package/dist/Throttler.js +39 -0
- package/dist/Throttler.js.map +1 -1
- package/dist/astUtils/creators.js +5 -3
- package/dist/astUtils/creators.js.map +1 -1
- package/dist/astUtils/reflection.d.ts +3 -1
- package/dist/astUtils/reflection.js +12 -1
- package/dist/astUtils/reflection.js.map +1 -1
- package/dist/astUtils/reflection.spec.js +2 -1
- 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/completions/CompletionsProcessor.d.ts +39 -1
- package/dist/bscPlugin/completions/CompletionsProcessor.js +305 -3
- 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 +1369 -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 +107 -4
- package/dist/bscPlugin/hover/HoverProcessor.spec.js.map +1 -1
- package/dist/bscPlugin/validation/BrsFileValidator.js +18 -15
- package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -1
- package/dist/bscPlugin/validation/ScopeValidator.d.ts +10 -1
- package/dist/bscPlugin/validation/ScopeValidator.js +85 -42
- package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -1
- package/dist/bscPlugin/validation/ScopeValidator.spec.js +307 -0
- package/dist/bscPlugin/validation/ScopeValidator.spec.js.map +1 -1
- package/dist/cli.js +9 -1
- package/dist/cli.js.map +1 -1
- package/dist/deferred.d.ts +1 -1
- package/dist/deferred.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 +9 -1
- package/dist/globalCallables.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/interfaces.d.ts +12 -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 +43 -1
- package/dist/parser/Expression.js.map +1 -1
- package/dist/parser/Parser.d.ts +7 -0
- package/dist/parser/Parser.js +46 -6
- package/dist/parser/Parser.js.map +1 -1
- package/dist/parser/Parser.spec.js +327 -3
- package/dist/parser/Parser.spec.js.map +1 -1
- package/dist/parser/SGTypes.d.ts +1 -1
- package/dist/parser/Statement.d.ts +16 -3
- package/dist/parser/Statement.js +53 -15
- 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 +0 -33
- 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/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 +158 -137
- package/dist/roku-types/index.d.ts +3 -38
- package/dist/types/ArrayType.d.ts +3 -1
- package/dist/types/ArrayType.js +42 -6
- package/dist/types/ArrayType.js.map +1 -1
- package/dist/types/ArrayType.spec.js +21 -2
- package/dist/types/ArrayType.spec.js.map +1 -1
- package/dist/types/BooleanType.js +5 -1
- package/dist/types/BooleanType.js.map +1 -1
- package/dist/types/BscType.d.ts +6 -2
- package/dist/types/BscType.js +20 -4
- package/dist/types/BscType.js.map +1 -1
- package/dist/types/BuiltInInterfaceAdder.d.ts +15 -0
- package/dist/types/BuiltInInterfaceAdder.js +93 -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 +4 -0
- package/dist/types/ClassType.js +25 -1
- package/dist/types/ClassType.js.map +1 -1
- package/dist/types/DoubleType.d.ts +1 -1
- package/dist/types/DoubleType.js +5 -1
- package/dist/types/DoubleType.js.map +1 -1
- package/dist/types/DynamicType.js +2 -0
- package/dist/types/DynamicType.js.map +1 -1
- package/dist/types/EnumType.d.ts +1 -0
- package/dist/types/EnumType.js +6 -1
- package/dist/types/EnumType.js.map +1 -1
- package/dist/types/FloatType.d.ts +1 -1
- package/dist/types/FloatType.js +5 -1
- package/dist/types/FloatType.js.map +1 -1
- package/dist/types/FunctionType.js +5 -1
- package/dist/types/FunctionType.js.map +1 -1
- package/dist/types/IntegerType.d.ts +1 -1
- package/dist/types/IntegerType.js +5 -1
- package/dist/types/IntegerType.js.map +1 -1
- package/dist/types/InterfaceType.js +2 -1
- package/dist/types/InterfaceType.js.map +1 -1
- 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 +1 -1
- package/dist/types/LongIntegerType.js +5 -1
- package/dist/types/LongIntegerType.js.map +1 -1
- package/dist/types/ObjectType.js +2 -0
- package/dist/types/ObjectType.js.map +1 -1
- package/dist/types/ReferenceType.d.ts +12 -0
- package/dist/types/ReferenceType.js +69 -12
- 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 +1 -1
- package/dist/types/StringType.js +4 -0
- package/dist/types/StringType.js.map +1 -1
- package/dist/types/TypedFunctionType.js +9 -2
- package/dist/types/TypedFunctionType.js.map +1 -1
- package/dist/types/UnionType.d.ts +2 -0
- package/dist/types/UnionType.js +22 -1
- package/dist/types/UnionType.js.map +1 -1
- package/dist/types/UnionType.spec.js +43 -17
- package/dist/types/UnionType.spec.js.map +1 -1
- package/dist/types/VoidType.d.ts +1 -1
- package/dist/types/VoidType.js +5 -1
- package/dist/types/VoidType.js.map +1 -1
- package/dist/types/helpers.d.ts +1 -0
- package/dist/types/helpers.js +18 -3
- package/dist/types/helpers.js.map +1 -1
- package/dist/util.d.ts +10 -2
- package/dist/util.js +82 -6
- package/dist/util.js.map +1 -1
- package/package.json +2 -2
|
@@ -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';
|
|
@@ -119,6 +120,7 @@ export declare class FunctionStatement extends Statement implements TypedefProvi
|
|
|
119
120
|
* Get the name of this expression based on the parse mode
|
|
120
121
|
*/
|
|
121
122
|
getName(parseMode: ParseMode): string;
|
|
123
|
+
getLeadingTrivia(): Token[];
|
|
122
124
|
transpile(state: BrsTranspileState): any[];
|
|
123
125
|
getTypedef(state: BrsTranspileState): any[];
|
|
124
126
|
walk(visitor: WalkVisitor, options: WalkOptions): void;
|
|
@@ -222,6 +224,7 @@ export declare class LabelStatement extends Statement {
|
|
|
222
224
|
});
|
|
223
225
|
readonly kind = AstNodeKind.LabelStatement;
|
|
224
226
|
readonly range: Range;
|
|
227
|
+
getLeadingTrivia(): Token[];
|
|
225
228
|
transpile(state: BrsTranspileState): SourceNode[];
|
|
226
229
|
walk(visitor: WalkVisitor, options: WalkOptions): void;
|
|
227
230
|
}
|
|
@@ -352,10 +355,10 @@ export declare class LibraryStatement extends Statement implements TypedefProvid
|
|
|
352
355
|
}
|
|
353
356
|
export declare class NamespaceStatement extends Statement implements TypedefProvider {
|
|
354
357
|
keyword: Token;
|
|
355
|
-
nameExpression:
|
|
358
|
+
nameExpression: VariableExpression | DottedGetExpression;
|
|
356
359
|
body: Body;
|
|
357
360
|
endKeyword: Token;
|
|
358
|
-
constructor(keyword: Token, nameExpression:
|
|
361
|
+
constructor(keyword: Token, nameExpression: VariableExpression | DottedGetExpression, body: Body, endKeyword: Token);
|
|
359
362
|
readonly kind = AstNodeKind.NamespaceStatement;
|
|
360
363
|
/**
|
|
361
364
|
* The string name for this namespace
|
|
@@ -365,6 +368,7 @@ export declare class NamespaceStatement extends Statement implements TypedefProv
|
|
|
365
368
|
private _range;
|
|
366
369
|
cacheRange(): Range;
|
|
367
370
|
getName(parseMode: ParseMode): string;
|
|
371
|
+
getLeadingTrivia(): Token[];
|
|
368
372
|
getNameParts(): Identifier[];
|
|
369
373
|
transpile(state: BrsTranspileState): TranspileResult;
|
|
370
374
|
getTypedef(state: BrsTranspileState): string[];
|
|
@@ -400,6 +404,7 @@ export declare class InterfaceStatement extends Statement implements TypedefProv
|
|
|
400
404
|
get fields(): InterfaceFieldStatement[];
|
|
401
405
|
get methods(): InterfaceMethodStatement[];
|
|
402
406
|
hasParentInterface(): boolean;
|
|
407
|
+
getLeadingTrivia(): Token[];
|
|
403
408
|
/**
|
|
404
409
|
* The name of the interface WITH its leading namespace (if applicable)
|
|
405
410
|
*/
|
|
@@ -427,6 +432,7 @@ export declare class InterfaceFieldStatement extends Statement implements Typede
|
|
|
427
432
|
name: Identifier;
|
|
428
433
|
as: Token;
|
|
429
434
|
};
|
|
435
|
+
getLeadingTrivia(): Token[];
|
|
430
436
|
get name(): string;
|
|
431
437
|
walk(visitor: WalkVisitor, options: WalkOptions): void;
|
|
432
438
|
getTypedef(state: BrsTranspileState): (string | SourceNode)[];
|
|
@@ -450,6 +456,7 @@ export declare class InterfaceMethodStatement extends Statement implements Typed
|
|
|
450
456
|
rightParen: Token;
|
|
451
457
|
as: Token;
|
|
452
458
|
};
|
|
459
|
+
getLeadingTrivia(): Token[];
|
|
453
460
|
walk(visitor: WalkVisitor, options: WalkOptions): void;
|
|
454
461
|
getTypedef(state: BrsTranspileState): TranspileResult;
|
|
455
462
|
getType(options: GetTypeOptions): TypedFunctionType;
|
|
@@ -471,6 +478,7 @@ export declare class ClassStatement extends Statement implements TypedefProvider
|
|
|
471
478
|
name: Identifier, body: Statement[], end: Token, extendsKeyword?: Token, parentClassName?: TypeExpression);
|
|
472
479
|
readonly kind = AstNodeKind.ClassStatement;
|
|
473
480
|
getName(parseMode: ParseMode): string;
|
|
481
|
+
getLeadingTrivia(): Token[];
|
|
474
482
|
memberMap: Record<string, MemberStatement>;
|
|
475
483
|
methods: MethodStatement[];
|
|
476
484
|
fields: FieldStatement[];
|
|
@@ -524,6 +532,7 @@ export declare class MethodStatement extends FunctionStatement {
|
|
|
524
532
|
* Get the name of this method.
|
|
525
533
|
*/
|
|
526
534
|
getName(parseMode: ParseMode): string;
|
|
535
|
+
getLeadingTrivia(): Token[];
|
|
527
536
|
transpile(state: BrsTranspileState): any[];
|
|
528
537
|
getTypedef(state: BrsTranspileState): (string | SourceNode)[];
|
|
529
538
|
/**
|
|
@@ -552,6 +561,7 @@ export declare class FieldStatement extends Statement implements TypedefProvider
|
|
|
552
561
|
*/
|
|
553
562
|
getType(options: GetTypeOptions): BscType;
|
|
554
563
|
readonly range: Range;
|
|
564
|
+
getLeadingTrivia(): Token[];
|
|
555
565
|
transpile(state: BrsTranspileState): TranspileResult;
|
|
556
566
|
getTypedef(state: BrsTranspileState): any[];
|
|
557
567
|
walk(visitor: WalkVisitor, options: WalkOptions): void;
|
|
@@ -612,6 +622,7 @@ export declare class EnumStatement extends Statement implements TypedefProvider
|
|
|
612
622
|
symbolTable: SymbolTable;
|
|
613
623
|
get range(): Range;
|
|
614
624
|
getMembers(): EnumMemberStatement[];
|
|
625
|
+
getLeadingTrivia(): Token[];
|
|
615
626
|
/**
|
|
616
627
|
* Get a map of member names and their values.
|
|
617
628
|
* All values are stored as their AST LiteralExpression representation (i.e. string enum values include the wrapping quotes)
|
|
@@ -647,6 +658,7 @@ export declare class EnumMemberStatement extends Statement implements TypedefPro
|
|
|
647
658
|
* The name of the member
|
|
648
659
|
*/
|
|
649
660
|
get name(): string;
|
|
661
|
+
getLeadingTrivia(): Token[];
|
|
650
662
|
transpile(state: BrsTranspileState): TranspileResult;
|
|
651
663
|
getTypedef(state: BrsTranspileState): (string | SourceNode)[];
|
|
652
664
|
walk(visitor: WalkVisitor, options: WalkOptions): void;
|
|
@@ -667,6 +679,7 @@ export declare class ConstStatement extends Statement implements TypedefProvider
|
|
|
667
679
|
readonly kind = AstNodeKind.ConstStatement;
|
|
668
680
|
range: Range;
|
|
669
681
|
get name(): string;
|
|
682
|
+
getLeadingTrivia(): Token[];
|
|
670
683
|
/**
|
|
671
684
|
* The name of the statement WITH its leading namespace (if applicable)
|
|
672
685
|
*/
|
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)
|
|
@@ -1890,7 +1922,7 @@ class EnumStatement extends AstNode_2.Statement {
|
|
|
1890
1922
|
const resultType = new EnumType_1.EnumType(this.fullName, (_a = members[0]) === null || _a === void 0 ? void 0 : _a.getType(options));
|
|
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
|
*/
|