brighterscript 1.0.0-alpha.25 → 1.0.0-alpha.27
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 +44 -0
- package/bsconfig.schema.json +5 -0
- package/dist/AstValidationSegmenter.d.ts +1 -1
- package/dist/AstValidationSegmenter.js +6 -7
- package/dist/AstValidationSegmenter.js.map +1 -1
- package/dist/BsConfig.d.ts +1 -0
- package/dist/DiagnosticMessages.d.ts +1 -3
- package/dist/DiagnosticMessages.js +5 -8
- package/dist/DiagnosticMessages.js.map +1 -1
- package/dist/Program.d.ts +1 -1
- package/dist/Program.js +40 -42
- package/dist/Program.js.map +1 -1
- package/dist/Scope.d.ts +2 -13
- package/dist/Scope.js +27 -35
- package/dist/Scope.js.map +1 -1
- package/dist/SymbolTable.d.ts +1 -8
- package/dist/SymbolTable.js +1 -10
- package/dist/SymbolTable.js.map +1 -1
- package/dist/SymbolTableFlag.d.ts +8 -0
- package/dist/SymbolTableFlag.js +13 -0
- package/dist/SymbolTableFlag.js.map +1 -0
- package/dist/XmlScope.d.ts +1 -6
- package/dist/XmlScope.js +6 -25
- package/dist/XmlScope.js.map +1 -1
- package/dist/astUtils/CachedLookups.d.ts +1 -2
- package/dist/astUtils/CachedLookups.js +3 -14
- package/dist/astUtils/CachedLookups.js.map +1 -1
- package/dist/astUtils/Editor.spec.js +1 -1
- package/dist/astUtils/Editor.spec.js.map +1 -1
- package/dist/astUtils/creators.js +77 -18
- package/dist/astUtils/creators.js.map +1 -1
- package/dist/astUtils/creators.spec.js +4 -4
- package/dist/astUtils/creators.spec.js.map +1 -1
- package/dist/astUtils/reflection.d.ts +3 -1
- package/dist/astUtils/reflection.js +12 -4
- package/dist/astUtils/reflection.js.map +1 -1
- package/dist/astUtils/reflection.spec.js +59 -42
- package/dist/astUtils/reflection.spec.js.map +1 -1
- package/dist/astUtils/visitors.spec.js +30 -19
- package/dist/astUtils/visitors.spec.js.map +1 -1
- package/dist/bscPlugin/BscPlugin.d.ts +2 -1
- package/dist/bscPlugin/BscPlugin.js +7 -3
- package/dist/bscPlugin/BscPlugin.js.map +1 -1
- package/dist/bscPlugin/CallExpressionInfo.js +7 -7
- package/dist/bscPlugin/CallExpressionInfo.js.map +1 -1
- package/dist/bscPlugin/SignatureHelpUtil.js +5 -4
- package/dist/bscPlugin/SignatureHelpUtil.js.map +1 -1
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.js +2 -2
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.js.map +1 -1
- package/dist/bscPlugin/completions/CompletionsProcessor.js +23 -23
- package/dist/bscPlugin/completions/CompletionsProcessor.js.map +1 -1
- package/dist/bscPlugin/definition/DefinitionProvider.d.ts +13 -0
- package/dist/bscPlugin/definition/DefinitionProvider.js +210 -0
- package/dist/bscPlugin/definition/DefinitionProvider.js.map +1 -0
- package/dist/bscPlugin/definition/DefinitionProvider.spec.d.ts +1 -0
- package/dist/bscPlugin/definition/DefinitionProvider.spec.js +88 -0
- package/dist/bscPlugin/definition/DefinitionProvider.spec.js.map +1 -0
- package/dist/bscPlugin/hover/HoverProcessor.d.ts +1 -0
- package/dist/bscPlugin/hover/HoverProcessor.js +28 -8
- package/dist/bscPlugin/hover/HoverProcessor.js.map +1 -1
- package/dist/bscPlugin/hover/HoverProcessor.spec.js +74 -2
- package/dist/bscPlugin/hover/HoverProcessor.spec.js.map +1 -1
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js +2 -5
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js.map +1 -1
- package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.js +8 -6
- package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.js.map +1 -1
- package/dist/bscPlugin/validation/BrsFileValidator.js +46 -47
- package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -1
- package/dist/bscPlugin/validation/ScopeValidator.d.ts +10 -0
- package/dist/bscPlugin/validation/ScopeValidator.js +120 -39
- package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -1
- package/dist/bscPlugin/validation/ScopeValidator.spec.js +165 -10
- package/dist/bscPlugin/validation/ScopeValidator.spec.js.map +1 -1
- package/dist/diagnosticUtils.d.ts +1 -1
- package/dist/files/BrsFile.Class.spec.js +7 -6
- package/dist/files/BrsFile.Class.spec.js.map +1 -1
- package/dist/files/BrsFile.d.ts +7 -15
- package/dist/files/BrsFile.js +49 -309
- package/dist/files/BrsFile.js.map +1 -1
- package/dist/files/BrsFile.spec.js +111 -157
- package/dist/files/BrsFile.spec.js.map +1 -1
- package/dist/files/XmlFile.d.ts +2 -3
- package/dist/files/XmlFile.js +0 -2
- package/dist/files/XmlFile.js.map +1 -1
- package/dist/interfaces.d.ts +109 -84
- package/dist/interfaces.js +9 -9
- package/dist/interfaces.js.map +1 -1
- package/dist/parser/AstNode.spec.js +6 -6
- package/dist/parser/AstNode.spec.js.map +1 -1
- package/dist/parser/Expression.d.ts +301 -164
- package/dist/parser/Expression.js +355 -294
- package/dist/parser/Expression.js.map +1 -1
- package/dist/parser/Parser.Class.spec.js +26 -27
- package/dist/parser/Parser.Class.spec.js.map +1 -1
- package/dist/parser/Parser.d.ts +6 -2
- package/dist/parser/Parser.js +361 -160
- package/dist/parser/Parser.js.map +1 -1
- package/dist/parser/Parser.spec.js +69 -213
- package/dist/parser/Parser.spec.js.map +1 -1
- package/dist/parser/SGParser.js +49 -35
- package/dist/parser/SGParser.js.map +1 -1
- package/dist/parser/SGTypes.d.ts +36 -24
- package/dist/parser/SGTypes.js +26 -55
- package/dist/parser/SGTypes.js.map +1 -1
- package/dist/parser/Statement.d.ts +381 -238
- package/dist/parser/Statement.js +510 -386
- package/dist/parser/Statement.js.map +1 -1
- package/dist/parser/Statement.spec.js +2 -2
- package/dist/parser/Statement.spec.js.map +1 -1
- package/dist/parser/tests/controlFlow/For.spec.js +1 -1
- package/dist/parser/tests/controlFlow/For.spec.js.map +1 -1
- package/dist/parser/tests/controlFlow/ForEach.spec.js +2 -2
- package/dist/parser/tests/controlFlow/ForEach.spec.js.map +1 -1
- package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js +1 -1
- package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js.map +1 -1
- package/dist/parser/tests/expression/Call.spec.js +11 -11
- package/dist/parser/tests/expression/Call.spec.js.map +1 -1
- package/dist/parser/tests/expression/Indexing.spec.js +30 -5
- package/dist/parser/tests/expression/Indexing.spec.js.map +1 -1
- package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js +2 -2
- package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js.map +1 -1
- package/dist/parser/tests/expression/TernaryExpression.spec.js +2 -2
- package/dist/parser/tests/expression/TernaryExpression.spec.js.map +1 -1
- package/dist/parser/tests/expression/TypeExpression.spec.js +8 -9
- package/dist/parser/tests/expression/TypeExpression.spec.js.map +1 -1
- package/dist/parser/tests/statement/ConstStatement.spec.js +1 -1
- package/dist/parser/tests/statement/ConstStatement.spec.js.map +1 -1
- package/dist/parser/tests/statement/Dim.spec.js +8 -8
- package/dist/parser/tests/statement/Dim.spec.js.map +1 -1
- package/dist/parser/tests/statement/Enum.spec.js +2 -2
- package/dist/parser/tests/statement/Enum.spec.js.map +1 -1
- package/dist/parser/tests/statement/LibraryStatement.spec.js +2 -2
- package/dist/parser/tests/statement/LibraryStatement.spec.js.map +1 -1
- package/dist/parser/tests/statement/Misc.spec.js +2 -2
- package/dist/parser/tests/statement/Misc.spec.js.map +1 -1
- package/dist/parser/tests/statement/PrintStatement.spec.js +1 -1
- package/dist/parser/tests/statement/TryCatch.spec.js +10 -3
- package/dist/parser/tests/statement/TryCatch.spec.js.map +1 -1
- package/dist/roku-types/data.json +70 -52
- package/dist/roku-types/index.d.ts +43 -21
- package/dist/types/ArrayType.js +1 -2
- package/dist/types/ArrayType.js.map +1 -1
- package/dist/types/ArrayType.spec.js +7 -8
- package/dist/types/ArrayType.spec.js.map +1 -1
- package/dist/types/AssociativeArrayType.js +2 -3
- package/dist/types/AssociativeArrayType.js.map +1 -1
- package/dist/types/BscType.d.ts +1 -1
- package/dist/types/BscType.js +2 -3
- package/dist/types/BscType.js.map +1 -1
- package/dist/types/BuiltInInterfaceAdder.js +15 -9
- package/dist/types/BuiltInInterfaceAdder.js.map +1 -1
- package/dist/types/BuiltInInterfaceAdder.spec.js +31 -32
- package/dist/types/BuiltInInterfaceAdder.spec.js.map +1 -1
- package/dist/types/ClassType.spec.js +10 -11
- package/dist/types/ClassType.spec.js.map +1 -1
- package/dist/types/ComponentType.d.ts +2 -1
- package/dist/types/ComponentType.js.map +1 -1
- package/dist/types/EnumType.js +2 -3
- package/dist/types/EnumType.js.map +1 -1
- package/dist/types/InheritableType.js +3 -4
- package/dist/types/InheritableType.js.map +1 -1
- package/dist/types/InterfaceType.js +2 -3
- package/dist/types/InterfaceType.js.map +1 -1
- package/dist/types/InterfaceType.spec.js +3 -4
- package/dist/types/InterfaceType.spec.js.map +1 -1
- package/dist/types/ObjectType.js +1 -2
- package/dist/types/ObjectType.js.map +1 -1
- package/dist/types/ReferenceType.d.ts +1 -1
- package/dist/types/ReferenceType.spec.js +21 -22
- package/dist/types/ReferenceType.spec.js.map +1 -1
- package/dist/types/UnionType.js +3 -3
- package/dist/types/UnionType.js.map +1 -1
- package/dist/types/UnionType.spec.js +37 -38
- package/dist/types/UnionType.spec.js.map +1 -1
- package/dist/types/helper.spec.js +4 -5
- package/dist/types/helper.spec.js.map +1 -1
- package/dist/util.d.ts +16 -7
- package/dist/util.js +89 -43
- package/dist/util.js.map +1 -1
- package/dist/validators/ClassValidator.d.ts +0 -9
- package/dist/validators/ClassValidator.js +9 -52
- package/dist/validators/ClassValidator.js.map +1 -1
- package/package.json +1 -1
|
@@ -6,20 +6,19 @@ const IntegerType_1 = require("./IntegerType");
|
|
|
6
6
|
const UnionType_1 = require("./UnionType");
|
|
7
7
|
const FloatType_1 = require("./FloatType");
|
|
8
8
|
const InterfaceType_1 = require("./InterfaceType");
|
|
9
|
-
const SymbolTable_1 = require("../SymbolTable");
|
|
10
9
|
const BooleanType_1 = require("./BooleanType");
|
|
11
10
|
const testHelpers_spec_1 = require("../testHelpers.spec");
|
|
12
11
|
const reflection_1 = require("../astUtils/reflection");
|
|
13
12
|
describe('UnionType', () => {
|
|
14
13
|
it('can be assigned to by anything that can be assigned to an included type', () => {
|
|
15
14
|
const parentIFace = new InterfaceType_1.InterfaceType('IfaceParent');
|
|
16
|
-
parentIFace.addMember('name', null, StringType_1.StringType.instance,
|
|
15
|
+
parentIFace.addMember('name', null, StringType_1.StringType.instance, 1 /* SymbolTypeFlag.runtime */);
|
|
17
16
|
const iFace = new InterfaceType_1.InterfaceType('IfaceChild', parentIFace);
|
|
18
|
-
iFace.addMember('age', null, IntegerType_1.IntegerType.instance,
|
|
17
|
+
iFace.addMember('age', null, IntegerType_1.IntegerType.instance, 1 /* SymbolTypeFlag.runtime */);
|
|
19
18
|
const otheriFaceWithSameMembers = new InterfaceType_1.InterfaceType('OtherIface');
|
|
20
|
-
otheriFaceWithSameMembers.addMember('name', null, StringType_1.StringType.instance,
|
|
21
|
-
otheriFaceWithSameMembers.addMember('age', null, IntegerType_1.IntegerType.instance,
|
|
22
|
-
otheriFaceWithSameMembers.addMember('height', null, FloatType_1.FloatType.instance,
|
|
19
|
+
otheriFaceWithSameMembers.addMember('name', null, StringType_1.StringType.instance, 1 /* SymbolTypeFlag.runtime */);
|
|
20
|
+
otheriFaceWithSameMembers.addMember('age', null, IntegerType_1.IntegerType.instance, 1 /* SymbolTypeFlag.runtime */);
|
|
21
|
+
otheriFaceWithSameMembers.addMember('height', null, FloatType_1.FloatType.instance, 1 /* SymbolTypeFlag.runtime */);
|
|
23
22
|
const myUnion = new UnionType_1.UnionType([FloatType_1.FloatType.instance, iFace, StringType_1.StringType.instance]);
|
|
24
23
|
(0, chai_1.expect)(myUnion.isTypeCompatible(FloatType_1.FloatType.instance)).to.be.true;
|
|
25
24
|
(0, chai_1.expect)(myUnion.isTypeCompatible(StringType_1.StringType.instance)).to.be.true;
|
|
@@ -34,39 +33,39 @@ describe('UnionType', () => {
|
|
|
34
33
|
});
|
|
35
34
|
it('can assign to a more general Union with interfaces', () => {
|
|
36
35
|
const parentIFace = new InterfaceType_1.InterfaceType('IfaceParent');
|
|
37
|
-
parentIFace.addMember('name', null, StringType_1.StringType.instance,
|
|
36
|
+
parentIFace.addMember('name', null, StringType_1.StringType.instance, 1 /* SymbolTypeFlag.runtime */);
|
|
38
37
|
const iFace = new InterfaceType_1.InterfaceType('IfaceChild', parentIFace);
|
|
39
|
-
iFace.addMember('age', null, IntegerType_1.IntegerType.instance,
|
|
40
|
-
iFace.addMember('height', null, FloatType_1.FloatType.instance,
|
|
38
|
+
iFace.addMember('age', null, IntegerType_1.IntegerType.instance, 1 /* SymbolTypeFlag.runtime */);
|
|
39
|
+
iFace.addMember('height', null, FloatType_1.FloatType.instance, 1 /* SymbolTypeFlag.runtime */);
|
|
41
40
|
const myUnion = new UnionType_1.UnionType([FloatType_1.FloatType.instance, iFace, StringType_1.StringType.instance, BooleanType_1.BooleanType.instance]);
|
|
42
41
|
const otheriFaceWithSameMembers = new InterfaceType_1.InterfaceType('OtherIface');
|
|
43
|
-
otheriFaceWithSameMembers.addMember('name', null, StringType_1.StringType.instance,
|
|
44
|
-
otheriFaceWithSameMembers.addMember('age', null, IntegerType_1.IntegerType.instance,
|
|
45
|
-
otheriFaceWithSameMembers.addMember('height', null, FloatType_1.FloatType.instance,
|
|
42
|
+
otheriFaceWithSameMembers.addMember('name', null, StringType_1.StringType.instance, 1 /* SymbolTypeFlag.runtime */);
|
|
43
|
+
otheriFaceWithSameMembers.addMember('age', null, IntegerType_1.IntegerType.instance, 1 /* SymbolTypeFlag.runtime */);
|
|
44
|
+
otheriFaceWithSameMembers.addMember('height', null, FloatType_1.FloatType.instance, 1 /* SymbolTypeFlag.runtime */);
|
|
46
45
|
const otherUnion = new UnionType_1.UnionType([FloatType_1.FloatType.instance, otheriFaceWithSameMembers, StringType_1.StringType.instance]);
|
|
47
46
|
(0, chai_1.expect)(myUnion.isTypeCompatible(otherUnion)).to.be.true;
|
|
48
47
|
(0, chai_1.expect)(otherUnion.isTypeCompatible(myUnion)).to.be.false;
|
|
49
48
|
});
|
|
50
49
|
it('will get a string representation in order given', () => {
|
|
51
50
|
const iFace1 = new InterfaceType_1.InterfaceType('SomeIface');
|
|
52
|
-
iFace1.addMember('age', null, IntegerType_1.IntegerType.instance,
|
|
53
|
-
iFace1.addMember('name', null, StringType_1.StringType.instance,
|
|
54
|
-
iFace1.addMember('height', null, FloatType_1.FloatType.instance,
|
|
51
|
+
iFace1.addMember('age', null, IntegerType_1.IntegerType.instance, 1 /* SymbolTypeFlag.runtime */);
|
|
52
|
+
iFace1.addMember('name', null, StringType_1.StringType.instance, 1 /* SymbolTypeFlag.runtime */);
|
|
53
|
+
iFace1.addMember('height', null, FloatType_1.FloatType.instance, 1 /* SymbolTypeFlag.runtime */);
|
|
55
54
|
const myUnion = new UnionType_1.UnionType([FloatType_1.FloatType.instance, StringType_1.StringType.instance, BooleanType_1.BooleanType.instance, iFace1]);
|
|
56
55
|
(0, chai_1.expect)(myUnion.toString()).to.eq('float or string or boolean or SomeIface');
|
|
57
56
|
});
|
|
58
57
|
describe('getMemberType', () => {
|
|
59
58
|
it('will find the union of inner types', () => {
|
|
60
59
|
const iFace1 = new InterfaceType_1.InterfaceType('iFace1');
|
|
61
|
-
iFace1.addMember('age', null, IntegerType_1.IntegerType.instance,
|
|
62
|
-
iFace1.addMember('name', null, StringType_1.StringType.instance,
|
|
63
|
-
iFace1.addMember('height', null, FloatType_1.FloatType.instance,
|
|
60
|
+
iFace1.addMember('age', null, IntegerType_1.IntegerType.instance, 1 /* SymbolTypeFlag.runtime */);
|
|
61
|
+
iFace1.addMember('name', null, StringType_1.StringType.instance, 1 /* SymbolTypeFlag.runtime */);
|
|
62
|
+
iFace1.addMember('height', null, FloatType_1.FloatType.instance, 1 /* SymbolTypeFlag.runtime */);
|
|
64
63
|
const iFace2 = new InterfaceType_1.InterfaceType('iFace2');
|
|
65
|
-
iFace2.addMember('age', null, IntegerType_1.IntegerType.instance,
|
|
66
|
-
iFace2.addMember('name', null, StringType_1.StringType.instance,
|
|
67
|
-
iFace2.addMember('height', null, StringType_1.StringType.instance,
|
|
64
|
+
iFace2.addMember('age', null, IntegerType_1.IntegerType.instance, 1 /* SymbolTypeFlag.runtime */);
|
|
65
|
+
iFace2.addMember('name', null, StringType_1.StringType.instance, 1 /* SymbolTypeFlag.runtime */);
|
|
66
|
+
iFace2.addMember('height', null, StringType_1.StringType.instance, 1 /* SymbolTypeFlag.runtime */);
|
|
68
67
|
const myUnion = new UnionType_1.UnionType([iFace1, iFace2]);
|
|
69
|
-
const options = { flags:
|
|
68
|
+
const options = { flags: 1 /* SymbolTypeFlag.runtime */ };
|
|
70
69
|
const ageType = myUnion.getMemberType('age', options);
|
|
71
70
|
(0, testHelpers_spec_1.expectTypeToBe)(ageType, IntegerType_1.IntegerType);
|
|
72
71
|
const nameType = myUnion.getMemberType('name', options);
|
|
@@ -79,14 +78,14 @@ describe('UnionType', () => {
|
|
|
79
78
|
});
|
|
80
79
|
it('will return reference types if any inner type does not include the member', () => {
|
|
81
80
|
const iFace1 = new InterfaceType_1.InterfaceType('iFace1');
|
|
82
|
-
iFace1.addMember('age', null, IntegerType_1.IntegerType.instance,
|
|
83
|
-
iFace1.addMember('name', null, StringType_1.StringType.instance,
|
|
84
|
-
iFace1.addMember('height', null, FloatType_1.FloatType.instance,
|
|
81
|
+
iFace1.addMember('age', null, IntegerType_1.IntegerType.instance, 1 /* SymbolTypeFlag.runtime */);
|
|
82
|
+
iFace1.addMember('name', null, StringType_1.StringType.instance, 1 /* SymbolTypeFlag.runtime */);
|
|
83
|
+
iFace1.addMember('height', null, FloatType_1.FloatType.instance, 1 /* SymbolTypeFlag.runtime */);
|
|
85
84
|
const iFace2 = new InterfaceType_1.InterfaceType('iFace2');
|
|
86
|
-
iFace2.addMember('age', null, IntegerType_1.IntegerType.instance,
|
|
87
|
-
iFace2.addMember('name', null, StringType_1.StringType.instance,
|
|
85
|
+
iFace2.addMember('age', null, IntegerType_1.IntegerType.instance, 1 /* SymbolTypeFlag.runtime */);
|
|
86
|
+
iFace2.addMember('name', null, StringType_1.StringType.instance, 1 /* SymbolTypeFlag.runtime */);
|
|
88
87
|
const myUnion = new UnionType_1.UnionType([iFace1, iFace2]);
|
|
89
|
-
const options = { flags:
|
|
88
|
+
const options = { flags: 1 /* SymbolTypeFlag.runtime */ };
|
|
90
89
|
const heightType1 = myUnion.getMemberType('height', options);
|
|
91
90
|
(0, testHelpers_spec_1.expectTypeToBe)(heightType1, UnionType_1.UnionType);
|
|
92
91
|
const heightTypes1 = heightType1.types;
|
|
@@ -95,7 +94,7 @@ describe('UnionType', () => {
|
|
|
95
94
|
// height does not exist in iFace2
|
|
96
95
|
(0, chai_1.expect)((0, reflection_1.isReferenceType)(heightTypes1[1])).to.be.true;
|
|
97
96
|
(0, chai_1.expect)(heightTypes1[1].isResolvable()).to.be.false;
|
|
98
|
-
iFace2.addMember('height', null, FloatType_1.FloatType.instance,
|
|
97
|
+
iFace2.addMember('height', null, FloatType_1.FloatType.instance, 1 /* SymbolTypeFlag.runtime */);
|
|
99
98
|
const heightType2 = myUnion.getMemberType('height', options);
|
|
100
99
|
(0, testHelpers_spec_1.expectTypeToBe)(heightType2, FloatType_1.FloatType);
|
|
101
100
|
});
|
|
@@ -103,18 +102,18 @@ describe('UnionType', () => {
|
|
|
103
102
|
describe('getMemberTable', () => {
|
|
104
103
|
it('get an intersection of all member types', () => {
|
|
105
104
|
const iFace1 = new InterfaceType_1.InterfaceType('iFace1');
|
|
106
|
-
iFace1.addMember('age', null, IntegerType_1.IntegerType.instance,
|
|
107
|
-
iFace1.addMember('name', null, StringType_1.StringType.instance,
|
|
108
|
-
iFace1.addMember('height', null, FloatType_1.FloatType.instance,
|
|
109
|
-
iFace1.addMember('weight', null, FloatType_1.FloatType.instance,
|
|
105
|
+
iFace1.addMember('age', null, IntegerType_1.IntegerType.instance, 1 /* SymbolTypeFlag.runtime */);
|
|
106
|
+
iFace1.addMember('name', null, StringType_1.StringType.instance, 1 /* SymbolTypeFlag.runtime */);
|
|
107
|
+
iFace1.addMember('height', null, FloatType_1.FloatType.instance, 1 /* SymbolTypeFlag.runtime */);
|
|
108
|
+
iFace1.addMember('weight', null, FloatType_1.FloatType.instance, 1 /* SymbolTypeFlag.runtime */);
|
|
110
109
|
const iFace2 = new InterfaceType_1.InterfaceType('iFace2');
|
|
111
|
-
iFace2.addMember('age', null, IntegerType_1.IntegerType.instance,
|
|
112
|
-
iFace2.addMember('name', null, StringType_1.StringType.instance,
|
|
113
|
-
iFace2.addMember('height', null, StringType_1.StringType.instance,
|
|
114
|
-
iFace2.addMember('address', null, StringType_1.StringType.instance,
|
|
110
|
+
iFace2.addMember('age', null, IntegerType_1.IntegerType.instance, 1 /* SymbolTypeFlag.runtime */);
|
|
111
|
+
iFace2.addMember('name', null, StringType_1.StringType.instance, 1 /* SymbolTypeFlag.runtime */);
|
|
112
|
+
iFace2.addMember('height', null, StringType_1.StringType.instance, 1 /* SymbolTypeFlag.runtime */);
|
|
113
|
+
iFace2.addMember('address', null, StringType_1.StringType.instance, 1 /* SymbolTypeFlag.runtime */);
|
|
115
114
|
const myUnion = new UnionType_1.UnionType([iFace1, iFace2]);
|
|
116
115
|
const unionMemberTable = myUnion.getMemberTable();
|
|
117
|
-
const options = { flags:
|
|
116
|
+
const options = { flags: 1 /* SymbolTypeFlag.runtime */ };
|
|
118
117
|
(0, testHelpers_spec_1.expectTypeToBe)(unionMemberTable.getSymbolType('age', options), IntegerType_1.IntegerType);
|
|
119
118
|
(0, testHelpers_spec_1.expectTypeToBe)(unionMemberTable.getSymbolType('name', options), StringType_1.StringType);
|
|
120
119
|
const heightType1 = unionMemberTable.getSymbolType('height', options);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UnionType.spec.js","sourceRoot":"","sources":["../../src/types/UnionType.spec.ts"],"names":[],"mappings":";;AAAA,+BAA8B;AAC9B,6CAA0C;AAC1C,+CAA4C;AAC5C,2CAAwC;AACxC,2CAAwC;AACxC,mDAAgD;
|
|
1
|
+
{"version":3,"file":"UnionType.spec.js","sourceRoot":"","sources":["../../src/types/UnionType.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,6 @@ const StringType_1 = require("./StringType");
|
|
|
11
11
|
const UnionType_1 = require("./UnionType");
|
|
12
12
|
const helpers_1 = require("./helpers");
|
|
13
13
|
const InterfaceType_1 = require("./InterfaceType");
|
|
14
|
-
const SymbolTable_1 = require("../SymbolTable");
|
|
15
14
|
const DoubleType_1 = require("./DoubleType");
|
|
16
15
|
const BooleanType_1 = require("./BooleanType");
|
|
17
16
|
const EnumType_1 = require("./EnumType");
|
|
@@ -108,11 +107,11 @@ describe('getUniqueType', () => {
|
|
|
108
107
|
});
|
|
109
108
|
it('should return a a union type of two compatible interfaces', () => {
|
|
110
109
|
const iface1 = new InterfaceType_1.InterfaceType('iface1');
|
|
111
|
-
iface1.addMember('name', null, StringType_1.StringType.instance,
|
|
112
|
-
iface1.addMember('age', null, IntegerType_1.IntegerType.instance,
|
|
110
|
+
iface1.addMember('name', null, StringType_1.StringType.instance, 1 /* SymbolTypeFlag.runtime */);
|
|
111
|
+
iface1.addMember('age', null, IntegerType_1.IntegerType.instance, 1 /* SymbolTypeFlag.runtime */);
|
|
113
112
|
const iface2 = new InterfaceType_1.InterfaceType('iface2');
|
|
114
|
-
iface2.addMember('name', null, StringType_1.StringType.instance,
|
|
115
|
-
iface2.addMember('age', null, IntegerType_1.IntegerType.instance,
|
|
113
|
+
iface2.addMember('name', null, StringType_1.StringType.instance, 1 /* SymbolTypeFlag.runtime */);
|
|
114
|
+
iface2.addMember('age', null, IntegerType_1.IntegerType.instance, 1 /* SymbolTypeFlag.runtime */);
|
|
116
115
|
(0, chai_1.expect)(iface1.isTypeCompatible(iface2)).to.be.true;
|
|
117
116
|
(0, chai_1.expect)(iface2.isTypeCompatible(iface1)).to.be.true;
|
|
118
117
|
(0, chai_1.expect)(iface1.isEqual(iface2)).to.be.false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helper.spec.js","sourceRoot":"","sources":["../../src/types/helper.spec.ts"],"names":[],"mappings":";;AAAA,+BAAsC;AACtC,uDAAqD;AACrD,0DAAqD;AACrD,2CAAwC;AACxC,+CAA4C;AAC5C,2CAAwC;AACxC,+CAA4C;AAC5C,6CAA0C;AAC1C,2CAA0D;AAC1D,uCAAwG;AACxG,mDAAgD;
|
|
1
|
+
{"version":3,"file":"helper.spec.js","sourceRoot":"","sources":["../../src/types/helper.spec.ts"],"names":[],"mappings":"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"}
|
package/dist/util.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { Diagnostic, Position, Location } from 'vscode-languageserver';
|
|
2
|
+
import { Range } from 'vscode-languageserver';
|
|
2
3
|
import type { BsConfig, FinalizedBsConfig } from './BsConfig';
|
|
3
4
|
import type { CallableContainer, BsDiagnostic, FileReference, CallableContainerMap, CompilerPlugin, ExpressionInfo, TypeChainEntry, TypeChainProcessResult } from './interfaces';
|
|
4
5
|
import { BooleanType } from './types/BooleanType';
|
|
@@ -16,12 +17,11 @@ import type { Identifier, Locatable, Token } from './lexer/Token';
|
|
|
16
17
|
import { SourceNode } from 'source-map';
|
|
17
18
|
import type { BrsFile } from './files/BrsFile';
|
|
18
19
|
import type { XmlFile } from './files/XmlFile';
|
|
19
|
-
import type { AstNode } from './parser/AstNode';
|
|
20
|
-
import
|
|
20
|
+
import type { AstNode, Expression, Statement } from './parser/AstNode';
|
|
21
|
+
import type { UnresolvedSymbol } from './AstValidationSegmenter';
|
|
22
|
+
import type { SymbolTable } from './SymbolTable';
|
|
21
23
|
import type { BscType } from './types/BscType';
|
|
22
24
|
import { FunctionType } from './types/FunctionType';
|
|
23
|
-
import type { SymbolTable } from './SymbolTable';
|
|
24
|
-
import type { UnresolvedSymbol } from './AstValidationSegmenter';
|
|
25
25
|
export declare class Util {
|
|
26
26
|
clearConsole(): void;
|
|
27
27
|
/**
|
|
@@ -151,6 +151,7 @@ export declare class Util {
|
|
|
151
151
|
*/
|
|
152
152
|
rangeContains(range: Range | undefined, position: Position | undefined): boolean;
|
|
153
153
|
comparePositionToRange(position: Position | undefined, range: Range | undefined): 1 | -1 | 0;
|
|
154
|
+
comparePosition(a: Position | undefined, b: Position): 1 | -1 | 0;
|
|
154
155
|
/**
|
|
155
156
|
* Combine all the documentation found before a token (i.e. comment tokens)
|
|
156
157
|
*/
|
|
@@ -292,11 +293,19 @@ export declare class Util {
|
|
|
292
293
|
*/
|
|
293
294
|
createRangeFromPositions(startPosition: Position, endPosition: Position): Range;
|
|
294
295
|
/**
|
|
295
|
-
*
|
|
296
|
-
*
|
|
296
|
+
* Gets the bounding range of a bunch of ranges or objects that have ranges
|
|
297
|
+
* TODO: this does a full iteration of the args. If the args were guaranteed to be in range order, we could optimize this
|
|
297
298
|
*/
|
|
298
299
|
createBoundingRange(...locatables: Array<{
|
|
299
300
|
range?: Range;
|
|
301
|
+
} | Range>): Range | undefined;
|
|
302
|
+
/**
|
|
303
|
+
* Gets the bounding range of an object that contains a bunch of tokens
|
|
304
|
+
* @param tokens Object with tokens in it
|
|
305
|
+
* @returns Range containing all the tokens
|
|
306
|
+
*/
|
|
307
|
+
createBoundingRangeFromTokens(tokens: Record<string, {
|
|
308
|
+
range?: Range;
|
|
300
309
|
}>): Range | undefined;
|
|
301
310
|
/**
|
|
302
311
|
* A cache of `Position` objects. The key is a 26bit integer created from line and character and leveraging bitshifting
|
package/dist/util.js
CHANGED
|
@@ -6,6 +6,7 @@ const fsExtra = require("fs-extra");
|
|
|
6
6
|
const jsonc_parser_1 = require("jsonc-parser");
|
|
7
7
|
const path = require("path");
|
|
8
8
|
const roku_deploy_1 = require("roku-deploy");
|
|
9
|
+
const vscode_languageserver_1 = require("vscode-languageserver");
|
|
9
10
|
const vscode_uri_1 = require("vscode-uri");
|
|
10
11
|
const xml2js = require("xml2js");
|
|
11
12
|
const DiagnosticMessages_1 = require("./DiagnosticMessages");
|
|
@@ -27,14 +28,13 @@ const source_map_1 = require("source-map");
|
|
|
27
28
|
const requireRelative = require("require-relative");
|
|
28
29
|
const AstNode_1 = require("./parser/AstNode");
|
|
29
30
|
const creators_1 = require("./astUtils/creators");
|
|
30
|
-
const
|
|
31
|
+
const diagnosticUtils_1 = require("./diagnosticUtils");
|
|
32
|
+
const UnionType_1 = require("./types/UnionType");
|
|
31
33
|
const ArrayType_1 = require("./types/ArrayType");
|
|
32
|
-
const
|
|
34
|
+
const ReferenceType_1 = require("./types/ReferenceType");
|
|
33
35
|
const AssociativeArrayType_1 = require("./types/AssociativeArrayType");
|
|
34
36
|
const ComponentType_1 = require("./types/ComponentType");
|
|
35
|
-
const
|
|
36
|
-
const ReferenceType_1 = require("./types/ReferenceType");
|
|
37
|
-
const UnionType_1 = require("./types/UnionType");
|
|
37
|
+
const FunctionType_1 = require("./types/FunctionType");
|
|
38
38
|
class Util {
|
|
39
39
|
constructor() {
|
|
40
40
|
/**
|
|
@@ -350,7 +350,8 @@ class Util {
|
|
|
350
350
|
emitDefinitions: config.emitDefinitions === true ? true : false,
|
|
351
351
|
removeParameterTypes: config.removeParameterTypes === true ? true : false,
|
|
352
352
|
logLevel: logLevel,
|
|
353
|
-
bslibDestinationDir: bslibDestinationDir
|
|
353
|
+
bslibDestinationDir: bslibDestinationDir,
|
|
354
|
+
legacyCallfuncHandling: config.legacyCallfuncHandling === true ? true : false
|
|
354
355
|
};
|
|
355
356
|
//mutate `config` in case anyone is holding a reference to the incomplete one
|
|
356
357
|
const merged = Object.assign(config, configWithDefaults);
|
|
@@ -549,14 +550,27 @@ class Util {
|
|
|
549
550
|
return this.comparePositionToRange(position, range) === 0;
|
|
550
551
|
}
|
|
551
552
|
comparePositionToRange(position, range) {
|
|
552
|
-
//stop if the either range is
|
|
553
|
+
//stop if the either range is missng
|
|
553
554
|
if (!position || !range) {
|
|
554
555
|
return 0;
|
|
555
556
|
}
|
|
556
|
-
if (
|
|
557
|
+
if (this.comparePosition(position, range.start) < 0) {
|
|
557
558
|
return -1;
|
|
558
559
|
}
|
|
559
|
-
if (
|
|
560
|
+
if (this.comparePosition(position, range.end) > 0) {
|
|
561
|
+
return 1;
|
|
562
|
+
}
|
|
563
|
+
return 0;
|
|
564
|
+
}
|
|
565
|
+
comparePosition(a, b) {
|
|
566
|
+
//stop if the either position is missing
|
|
567
|
+
if (!a || !b) {
|
|
568
|
+
return 0;
|
|
569
|
+
}
|
|
570
|
+
if (a.line < b.line || (a.line === b.line && a.character < b.character)) {
|
|
571
|
+
return -1;
|
|
572
|
+
}
|
|
573
|
+
if (a.line > b.line || (a.line === b.line && a.character > b.character)) {
|
|
560
574
|
return 1;
|
|
561
575
|
}
|
|
562
576
|
return 0;
|
|
@@ -969,35 +983,67 @@ class Util {
|
|
|
969
983
|
return this.createRange(startPosition.line, startPosition.character, endPosition.line, endPosition.character);
|
|
970
984
|
}
|
|
971
985
|
/**
|
|
972
|
-
*
|
|
973
|
-
*
|
|
986
|
+
* Gets the bounding range of a bunch of ranges or objects that have ranges
|
|
987
|
+
* TODO: this does a full iteration of the args. If the args were guaranteed to be in range order, we could optimize this
|
|
974
988
|
*/
|
|
975
989
|
createBoundingRange(...locatables) {
|
|
976
|
-
let
|
|
977
|
-
let
|
|
978
|
-
for (let
|
|
979
|
-
//set the leftmost non-null-range item
|
|
980
|
-
const left = locatables[i];
|
|
990
|
+
let startPosition;
|
|
991
|
+
let endPosition;
|
|
992
|
+
for (let locatable of locatables) {
|
|
981
993
|
//the range might be a getter, so access it exactly once
|
|
982
|
-
const
|
|
983
|
-
if (!
|
|
984
|
-
|
|
994
|
+
const locatableRange = vscode_languageserver_1.Range.is(locatable) ? locatable : locatable === null || locatable === void 0 ? void 0 : locatable.range;
|
|
995
|
+
if (!locatableRange) {
|
|
996
|
+
continue;
|
|
985
997
|
}
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
//the range might be a getter, so access it exactly once
|
|
989
|
-
const rightRange = right === null || right === void 0 ? void 0 : right.range;
|
|
990
|
-
if (!rightmostRange && rightRange) {
|
|
991
|
-
rightmostRange = rightRange;
|
|
998
|
+
if (!startPosition) {
|
|
999
|
+
startPosition = locatableRange.start;
|
|
992
1000
|
}
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
1001
|
+
else if (this.comparePosition(locatableRange.start, startPosition) < 0) {
|
|
1002
|
+
startPosition = locatableRange.start;
|
|
1003
|
+
}
|
|
1004
|
+
if (!endPosition) {
|
|
1005
|
+
endPosition = locatableRange.end;
|
|
1006
|
+
}
|
|
1007
|
+
else if (this.comparePosition(locatableRange.end, endPosition) > 0) {
|
|
1008
|
+
endPosition = locatableRange.end;
|
|
1009
|
+
}
|
|
1010
|
+
}
|
|
1011
|
+
if (startPosition && endPosition) {
|
|
1012
|
+
return this.createRangeFromPositions(startPosition, endPosition);
|
|
1013
|
+
}
|
|
1014
|
+
else {
|
|
1015
|
+
return undefined;
|
|
1016
|
+
}
|
|
1017
|
+
}
|
|
1018
|
+
/**
|
|
1019
|
+
* Gets the bounding range of an object that contains a bunch of tokens
|
|
1020
|
+
* @param tokens Object with tokens in it
|
|
1021
|
+
* @returns Range containing all the tokens
|
|
1022
|
+
*/
|
|
1023
|
+
createBoundingRangeFromTokens(tokens) {
|
|
1024
|
+
var _a;
|
|
1025
|
+
let startPosition;
|
|
1026
|
+
let endPosition;
|
|
1027
|
+
for (let key in tokens) {
|
|
1028
|
+
let locatableRange = (_a = tokens === null || tokens === void 0 ? void 0 : tokens[key]) === null || _a === void 0 ? void 0 : _a.range;
|
|
1029
|
+
if (!locatableRange) {
|
|
1030
|
+
continue;
|
|
1031
|
+
}
|
|
1032
|
+
if (!startPosition) {
|
|
1033
|
+
startPosition = locatableRange.start;
|
|
1034
|
+
}
|
|
1035
|
+
else if (this.comparePosition(locatableRange.start, startPosition) < 0) {
|
|
1036
|
+
startPosition = locatableRange.start;
|
|
1037
|
+
}
|
|
1038
|
+
if (!endPosition) {
|
|
1039
|
+
endPosition = locatableRange.end;
|
|
1040
|
+
}
|
|
1041
|
+
else if (this.comparePosition(locatableRange.end, endPosition) > 0) {
|
|
1042
|
+
endPosition = locatableRange.end;
|
|
996
1043
|
}
|
|
997
1044
|
}
|
|
998
|
-
if (
|
|
999
|
-
|
|
1000
|
-
return this.createRangeFromPositions(leftmostRange.start, rightmostRange ? rightmostRange.end : leftmostRange.end);
|
|
1045
|
+
if (startPosition && endPosition) {
|
|
1046
|
+
return this.createRangeFromPositions(startPosition, endPosition);
|
|
1001
1047
|
}
|
|
1002
1048
|
else {
|
|
1003
1049
|
return undefined;
|
|
@@ -1115,10 +1161,10 @@ class Util {
|
|
|
1115
1161
|
}
|
|
1116
1162
|
function getRect2dType() {
|
|
1117
1163
|
const rect2dType = new AssociativeArrayType_1.AssociativeArrayType();
|
|
1118
|
-
rect2dType.addMember('height', {}, FloatType_1.FloatType.instance,
|
|
1119
|
-
rect2dType.addMember('width', {}, FloatType_1.FloatType.instance,
|
|
1120
|
-
rect2dType.addMember('x', {}, FloatType_1.FloatType.instance,
|
|
1121
|
-
rect2dType.addMember('y', {}, FloatType_1.FloatType.instance,
|
|
1164
|
+
rect2dType.addMember('height', {}, FloatType_1.FloatType.instance, 1 /* SymbolTypeFlag.runtime */);
|
|
1165
|
+
rect2dType.addMember('width', {}, FloatType_1.FloatType.instance, 1 /* SymbolTypeFlag.runtime */);
|
|
1166
|
+
rect2dType.addMember('x', {}, FloatType_1.FloatType.instance, 1 /* SymbolTypeFlag.runtime */);
|
|
1167
|
+
rect2dType.addMember('y', {}, FloatType_1.FloatType.instance, 1 /* SymbolTypeFlag.runtime */);
|
|
1122
1168
|
return rect2dType;
|
|
1123
1169
|
}
|
|
1124
1170
|
function getColorType() {
|
|
@@ -1201,7 +1247,7 @@ class Util {
|
|
|
1201
1247
|
}
|
|
1202
1248
|
else if (lookupTable) {
|
|
1203
1249
|
//try doing a lookup
|
|
1204
|
-
return lookupTable.getSymbolType(typeDescriptorLower, { flags:
|
|
1250
|
+
return lookupTable.getSymbolType(typeDescriptorLower, { flags: 2 /* SymbolTypeFlag.typetime */ });
|
|
1205
1251
|
}
|
|
1206
1252
|
// TODO: Handle 'rect2d', 'rect2dArray',
|
|
1207
1253
|
return DynamicType_1.DynamicType.instance;
|
|
@@ -1433,7 +1479,7 @@ class Util {
|
|
|
1433
1479
|
}
|
|
1434
1480
|
if ((0, reflection_1.isVariableExpression)(expression)) {
|
|
1435
1481
|
variableExpressions.push(expression);
|
|
1436
|
-
uniqueVarNames.add(expression.name.text);
|
|
1482
|
+
uniqueVarNames.add(expression.tokens.name.text);
|
|
1437
1483
|
}
|
|
1438
1484
|
}
|
|
1439
1485
|
// Collect all expressions. Most of these expressions are fairly small so this should be quick!
|
|
@@ -1596,9 +1642,9 @@ class Util {
|
|
|
1596
1642
|
loop: while (nextPart) {
|
|
1597
1643
|
switch (nextPart === null || nextPart === void 0 ? void 0 : nextPart.kind) {
|
|
1598
1644
|
case AstNode_1.AstNodeKind.AssignmentStatement:
|
|
1599
|
-
return [node.name];
|
|
1645
|
+
return [node.tokens.name];
|
|
1600
1646
|
case AstNode_1.AstNodeKind.DottedGetExpression:
|
|
1601
|
-
parts.push(nextPart === null || nextPart === void 0 ? void 0 : nextPart.name);
|
|
1647
|
+
parts.push(nextPart === null || nextPart === void 0 ? void 0 : nextPart.tokens.name);
|
|
1602
1648
|
nextPart = nextPart.obj;
|
|
1603
1649
|
continue;
|
|
1604
1650
|
case AstNode_1.AstNodeKind.CallExpression:
|
|
@@ -1608,16 +1654,16 @@ class Util {
|
|
|
1608
1654
|
nextPart = nextPart.expression;
|
|
1609
1655
|
continue;
|
|
1610
1656
|
case AstNode_1.AstNodeKind.VariableExpression:
|
|
1611
|
-
parts.push(nextPart === null || nextPart === void 0 ? void 0 : nextPart.name);
|
|
1657
|
+
parts.push(nextPart === null || nextPart === void 0 ? void 0 : nextPart.tokens.name);
|
|
1612
1658
|
break loop;
|
|
1613
1659
|
case AstNode_1.AstNodeKind.LiteralExpression:
|
|
1614
|
-
parts.push(nextPart === null || nextPart === void 0 ? void 0 : nextPart.
|
|
1660
|
+
parts.push(nextPart === null || nextPart === void 0 ? void 0 : nextPart.tokens.value);
|
|
1615
1661
|
break loop;
|
|
1616
1662
|
case AstNode_1.AstNodeKind.IndexedGetExpression:
|
|
1617
1663
|
nextPart = nextPart.obj;
|
|
1618
1664
|
continue;
|
|
1619
1665
|
case AstNode_1.AstNodeKind.FunctionParameterExpression:
|
|
1620
|
-
return [nextPart.name];
|
|
1666
|
+
return [nextPart.tokens.name];
|
|
1621
1667
|
case AstNode_1.AstNodeKind.GroupingExpression:
|
|
1622
1668
|
parts.push((0, creators_1.createIdentifier)('()', nextPart.range));
|
|
1623
1669
|
break loop;
|
|
@@ -1806,7 +1852,7 @@ class Util {
|
|
|
1806
1852
|
}
|
|
1807
1853
|
if ((0, reflection_1.isBinaryExpression)(expression.parent)) {
|
|
1808
1854
|
let currentExpr = expression.parent;
|
|
1809
|
-
while ((0, reflection_1.isBinaryExpression)(currentExpr) && currentExpr.operator.kind === TokenKind_1.TokenKind.Or) {
|
|
1855
|
+
while ((0, reflection_1.isBinaryExpression)(currentExpr) && currentExpr.tokens.operator.kind === TokenKind_1.TokenKind.Or) {
|
|
1810
1856
|
currentExpr = currentExpr.parent;
|
|
1811
1857
|
}
|
|
1812
1858
|
return (0, reflection_1.isTypeExpression)(currentExpr) || (0, reflection_1.isTypedArrayExpression)(currentExpr);
|