brighterscript 1.0.0-alpha.13 → 1.0.0-alpha.14
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 +46 -2
- package/dist/Cache.d.ts +3 -3
- package/dist/Cache.js +10 -6
- package/dist/Cache.js.map +1 -1
- package/dist/LanguageServer.d.ts +1 -6
- package/dist/LanguageServer.js +0 -9
- package/dist/LanguageServer.js.map +1 -1
- package/dist/PluginInterface.d.ts +3 -3
- package/dist/PluginInterface.js +3 -0
- package/dist/PluginInterface.js.map +1 -1
- package/dist/Program.d.ts +30 -16
- package/dist/Program.js +106 -43
- package/dist/Program.js.map +1 -1
- package/dist/ProgramBuilder.js +3 -3
- package/dist/ProgramBuilder.js.map +1 -1
- package/dist/Scope.d.ts +15 -6
- package/dist/Scope.js +39 -25
- package/dist/Scope.js.map +1 -1
- package/dist/SymbolTable.d.ts +1 -1
- package/dist/astUtils/reflection.spec.js +6 -6
- package/dist/astUtils/reflection.spec.js.map +1 -1
- package/dist/astUtils/visitors.spec.js +8 -8
- package/dist/astUtils/visitors.spec.js.map +1 -1
- package/dist/bscPlugin/BscPlugin.js +5 -2
- package/dist/bscPlugin/BscPlugin.js.map +1 -1
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.js +3 -3
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.js.map +1 -1
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js.map +1 -1
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.d.ts +8 -0
- package/dist/bscPlugin/semanticTokens/{SemanticTokensProcessor.js → BrsFileSemanticTokensProcessor.js} +12 -14
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js.map +1 -0
- package/dist/bscPlugin/semanticTokens/{SemanticTokensProcessor.spec.d.ts → BrsFileSemanticTokensProcessor.spec.d.ts} +0 -0
- package/dist/bscPlugin/semanticTokens/{SemanticTokensProcessor.spec.js → BrsFileSemanticTokensProcessor.spec.js} +2 -2
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js.map +1 -0
- package/dist/files/BrsFile.Class.spec.js +389 -238
- package/dist/files/BrsFile.Class.spec.js.map +1 -1
- package/dist/files/BrsFile.d.ts +17 -11
- package/dist/files/BrsFile.js +160 -91
- package/dist/files/BrsFile.js.map +1 -1
- package/dist/files/BrsFile.spec.js +442 -109
- package/dist/files/BrsFile.spec.js.map +1 -1
- package/dist/files/XmlFile.d.ts +6 -5
- package/dist/files/XmlFile.js +13 -8
- package/dist/files/XmlFile.js.map +1 -1
- package/dist/files/XmlFile.spec.js +57 -55
- package/dist/files/XmlFile.spec.js.map +1 -1
- package/dist/files/tests/imports.spec.js +8 -6
- package/dist/files/tests/imports.spec.js.map +1 -1
- package/dist/index.d.ts +12 -3
- package/dist/index.js +21 -4
- package/dist/index.js.map +1 -1
- package/dist/interfaces.d.ts +46 -10
- package/dist/lexer/Lexer.js +1 -2
- package/dist/lexer/Lexer.js.map +1 -1
- package/dist/lexer/Lexer.spec.js +462 -462
- package/dist/lexer/Lexer.spec.js.map +1 -1
- package/dist/parser/Expression.d.ts +1 -1
- package/dist/parser/Expression.js +10 -10
- package/dist/parser/Expression.js.map +1 -1
- package/dist/parser/Parser.Class.spec.js +33 -32
- package/dist/parser/Parser.Class.spec.js.map +1 -1
- package/dist/parser/Parser.d.ts +17 -5
- package/dist/parser/Parser.js +403 -288
- package/dist/parser/Parser.js.map +1 -1
- package/dist/parser/Parser.spec.js +157 -35
- package/dist/parser/Parser.spec.js.map +1 -1
- package/dist/parser/SGTypes.spec.js +9 -9
- package/dist/parser/SGTypes.spec.js.map +1 -1
- package/dist/parser/Statement.d.ts +3 -3
- package/dist/parser/Statement.js +8 -8
- package/dist/parser/Statement.js.map +1 -1
- package/dist/parser/tests/Parser.spec.d.ts +3 -3
- package/dist/parser/tests/Parser.spec.js +4 -4
- package/dist/parser/tests/Parser.spec.js.map +1 -1
- package/dist/parser/tests/controlFlow/For.spec.js +40 -40
- package/dist/parser/tests/controlFlow/For.spec.js.map +1 -1
- package/dist/parser/tests/controlFlow/ForEach.spec.js +22 -21
- package/dist/parser/tests/controlFlow/ForEach.spec.js.map +1 -1
- package/dist/parser/tests/controlFlow/If.spec.js +100 -99
- package/dist/parser/tests/controlFlow/If.spec.js.map +1 -1
- package/dist/parser/tests/controlFlow/While.spec.js +25 -25
- package/dist/parser/tests/controlFlow/While.spec.js.map +1 -1
- package/dist/parser/tests/expression/Additive.spec.js +21 -21
- package/dist/parser/tests/expression/Additive.spec.js.map +1 -1
- package/dist/parser/tests/expression/ArrayLiterals.spec.js +91 -91
- package/dist/parser/tests/expression/ArrayLiterals.spec.js.map +1 -1
- package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js +102 -102
- package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js.map +1 -1
- package/dist/parser/tests/expression/Boolean.spec.js +15 -15
- package/dist/parser/tests/expression/Boolean.spec.js.map +1 -1
- package/dist/parser/tests/expression/Call.spec.js +22 -21
- package/dist/parser/tests/expression/Call.spec.js.map +1 -1
- package/dist/parser/tests/expression/Exponential.spec.js +11 -11
- package/dist/parser/tests/expression/Exponential.spec.js.map +1 -1
- package/dist/parser/tests/expression/Function.spec.js +171 -171
- package/dist/parser/tests/expression/Function.spec.js.map +1 -1
- package/dist/parser/tests/expression/Indexing.spec.js +50 -50
- package/dist/parser/tests/expression/Indexing.spec.js.map +1 -1
- package/dist/parser/tests/expression/Multiplicative.spec.js +25 -25
- package/dist/parser/tests/expression/Multiplicative.spec.js.map +1 -1
- package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js +16 -16
- package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js.map +1 -1
- package/dist/parser/tests/expression/PrefixUnary.spec.js +26 -26
- package/dist/parser/tests/expression/PrefixUnary.spec.js.map +1 -1
- package/dist/parser/tests/expression/Primary.spec.js +27 -27
- package/dist/parser/tests/expression/Primary.spec.js.map +1 -1
- package/dist/parser/tests/expression/RegexLiteralExpression.spec.js +3 -2
- package/dist/parser/tests/expression/RegexLiteralExpression.spec.js.map +1 -1
- package/dist/parser/tests/expression/Relational.spec.js +25 -25
- package/dist/parser/tests/expression/Relational.spec.js.map +1 -1
- package/dist/parser/tests/expression/TemplateStringExpression.spec.js +7 -7
- package/dist/parser/tests/expression/TemplateStringExpression.spec.js.map +1 -1
- package/dist/parser/tests/expression/TernaryExpression.spec.js +6 -6
- package/dist/parser/tests/expression/TernaryExpression.spec.js.map +1 -1
- package/dist/parser/tests/statement/AssignmentOperators.spec.js +15 -15
- package/dist/parser/tests/statement/AssignmentOperators.spec.js.map +1 -1
- package/dist/parser/tests/statement/Declaration.spec.js +20 -20
- package/dist/parser/tests/statement/Declaration.spec.js.map +1 -1
- package/dist/parser/tests/statement/Function.spec.js +121 -120
- package/dist/parser/tests/statement/Function.spec.js.map +1 -1
- package/dist/parser/tests/statement/Goto.spec.js +9 -8
- package/dist/parser/tests/statement/Goto.spec.js.map +1 -1
- package/dist/parser/tests/statement/Increment.spec.js +22 -22
- package/dist/parser/tests/statement/Increment.spec.js.map +1 -1
- package/dist/parser/tests/statement/InterfaceStatement.spec.js +12 -0
- package/dist/parser/tests/statement/InterfaceStatement.spec.js.map +1 -1
- package/dist/parser/tests/statement/LibraryStatement.spec.js +7 -7
- package/dist/parser/tests/statement/LibraryStatement.spec.js.map +1 -1
- package/dist/parser/tests/statement/Misc.spec.js +71 -70
- package/dist/parser/tests/statement/Misc.spec.js.map +1 -1
- package/dist/parser/tests/statement/PrintStatement.spec.js +17 -17
- package/dist/parser/tests/statement/PrintStatement.spec.js.map +1 -1
- package/dist/parser/tests/statement/ReturnStatement.spec.js +33 -33
- package/dist/parser/tests/statement/ReturnStatement.spec.js.map +1 -1
- package/dist/parser/tests/statement/Set.spec.js +53 -53
- package/dist/parser/tests/statement/Set.spec.js.map +1 -1
- package/dist/parser/tests/statement/Stop.spec.js +7 -6
- package/dist/parser/tests/statement/Stop.spec.js.map +1 -1
- package/dist/preprocessor/Chunk.d.ts +1 -1
- package/dist/preprocessor/Preprocessor.d.ts +1 -1
- package/dist/preprocessor/Preprocessor.js +7 -7
- package/dist/preprocessor/Preprocessor.js.map +1 -1
- package/dist/types/ArrayType.d.ts +8 -5
- package/dist/types/ArrayType.js +45 -9
- package/dist/types/ArrayType.js.map +1 -1
- package/dist/types/ArrayType.spec.js +62 -3
- package/dist/types/ArrayType.spec.js.map +1 -1
- package/dist/types/BscType.d.ts +1 -1
- package/dist/types/CustomType.d.ts +1 -1
- package/dist/types/CustomType.js +4 -2
- package/dist/types/CustomType.js.map +1 -1
- package/dist/types/FunctionType.d.ts +5 -5
- package/dist/types/FunctionType.js +11 -11
- package/dist/types/FunctionType.js.map +1 -1
- package/dist/types/LazyType.d.ts +1 -2
- package/dist/types/LazyType.js +1 -5
- package/dist/types/LazyType.js.map +1 -1
- package/dist/types/helpers.js +1 -1
- package/dist/types/helpers.js.map +1 -1
- package/dist/util.d.ts +15 -9
- package/dist/util.js +93 -50
- package/dist/util.js.map +1 -1
- package/dist/validators/ClassValidator.js +17 -24
- package/dist/validators/ClassValidator.js.map +1 -1
- package/package.json +2 -1
- package/dist/astUtils/index.d.ts +0 -7
- package/dist/astUtils/index.js +0 -26
- package/dist/astUtils/index.js.map +0 -1
- package/dist/bscPlugin/semanticTokens/SemanticTokensProcessor.d.ts +0 -7
- package/dist/bscPlugin/semanticTokens/SemanticTokensProcessor.js.map +0 -1
- package/dist/bscPlugin/semanticTokens/SemanticTokensProcessor.spec.js.map +0 -1
- package/dist/lexer/index.d.ts +0 -3
- package/dist/lexer/index.js +0 -18
- package/dist/lexer/index.js.map +0 -1
- package/dist/parser/index.d.ts +0 -3
- package/dist/parser/index.js +0 -16
- package/dist/parser/index.js.map +0 -1
- package/dist/preprocessor/index.d.ts +0 -3
- package/dist/preprocessor/index.js +0 -16
- package/dist/preprocessor/index.js.map +0 -1
package/dist/types/ArrayType.js
CHANGED
|
@@ -2,12 +2,13 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ArrayType = void 0;
|
|
4
4
|
const reflection_1 = require("../astUtils/reflection");
|
|
5
|
+
const DynamicType_1 = require("./DynamicType");
|
|
5
6
|
class ArrayType {
|
|
6
7
|
constructor(...innerTypes) {
|
|
7
8
|
this.innerTypes = [];
|
|
8
|
-
this.innerTypes = innerTypes;
|
|
9
|
+
this.innerTypes = this.getUniqueTypesByAssignability(innerTypes);
|
|
9
10
|
}
|
|
10
|
-
isAssignableTo(targetType) {
|
|
11
|
+
isAssignableTo(targetType, context) {
|
|
11
12
|
if ((0, reflection_1.isArrayType)(targetType)) {
|
|
12
13
|
//this array type is assignable to the target IF
|
|
13
14
|
//1. all of the types in this array are present in the target
|
|
@@ -16,7 +17,7 @@ class ArrayType {
|
|
|
16
17
|
// eslint-disable-next-line no-unreachable-loop
|
|
17
18
|
for (let targetInnerType of targetType.innerTypes) {
|
|
18
19
|
//TODO TYPES is this loop correct? It ends after 1 iteration but we might need to do more iterations
|
|
19
|
-
if (innerType.isAssignableTo(targetInnerType)) {
|
|
20
|
+
if (innerType.isAssignableTo(targetInnerType, context)) {
|
|
20
21
|
continue outer;
|
|
21
22
|
}
|
|
22
23
|
//our array contains a type that the target array does not...so these arrays are different
|
|
@@ -31,17 +32,52 @@ class ArrayType {
|
|
|
31
32
|
}
|
|
32
33
|
return false;
|
|
33
34
|
}
|
|
34
|
-
isConvertibleTo(targetType) {
|
|
35
|
-
return this.isAssignableTo(targetType);
|
|
35
|
+
isConvertibleTo(targetType, context) {
|
|
36
|
+
return this.isAssignableTo(targetType, context);
|
|
36
37
|
}
|
|
37
|
-
toString() {
|
|
38
|
-
|
|
38
|
+
toString(context) {
|
|
39
|
+
// TODO TYPES: When we support union types, the output should be more like:
|
|
40
|
+
// `Array<${this.innerTypes.map((x) => x.toString(context)).join(' | ')}>`;
|
|
41
|
+
return `${this.getDefaultType(context).toString(context)}[]`;
|
|
42
|
+
}
|
|
43
|
+
toJsString(context) {
|
|
44
|
+
const uniqueInnerTypes = this.getUniqueTypesByAssignability(this.innerTypes);
|
|
45
|
+
return `Array<${uniqueInnerTypes.map((x) => x.toString(context)).join(' | ')}>`;
|
|
39
46
|
}
|
|
40
47
|
toTypeString() {
|
|
41
48
|
return 'object';
|
|
42
49
|
}
|
|
43
|
-
|
|
44
|
-
|
|
50
|
+
getDefaultType(context) {
|
|
51
|
+
const uniqueInnerTypes = this.getUniqueTypesByAssignability(this.innerTypes, context);
|
|
52
|
+
return (uniqueInnerTypes === null || uniqueInnerTypes === void 0 ? void 0 : uniqueInnerTypes.length) === 1 ? uniqueInnerTypes[0] : new DynamicType_1.DynamicType();
|
|
53
|
+
}
|
|
54
|
+
equals(targetType, context) {
|
|
55
|
+
return (0, reflection_1.isArrayType)(targetType) && this.isAssignableTo(targetType, context);
|
|
56
|
+
}
|
|
57
|
+
getUniqueTypesByAssignability(innerTypes, context) {
|
|
58
|
+
const uniqueTypes = [];
|
|
59
|
+
for (const innerType of innerTypes) {
|
|
60
|
+
let shouldAddType = true;
|
|
61
|
+
for (let i = 0; i < uniqueTypes.length; i++) {
|
|
62
|
+
const uniqueType = uniqueTypes[i];
|
|
63
|
+
if (innerType.isAssignableTo(uniqueType, context)) {
|
|
64
|
+
// this type is already assignable to the existing type
|
|
65
|
+
shouldAddType = false;
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
68
|
+
else if (uniqueType.isAssignableTo(innerType, context)) {
|
|
69
|
+
// an existing type is assignable to this type. replace the existing type with this
|
|
70
|
+
// as this is more general
|
|
71
|
+
shouldAddType = false;
|
|
72
|
+
uniqueTypes[i] = innerType;
|
|
73
|
+
break;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
if (shouldAddType) {
|
|
77
|
+
uniqueTypes.push(innerType);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return uniqueTypes;
|
|
45
81
|
}
|
|
46
82
|
}
|
|
47
83
|
exports.ArrayType = ArrayType;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArrayType.js","sourceRoot":"","sources":["../../src/types/ArrayType.ts"],"names":[],"mappings":";;;AAAA,uDAAkF;
|
|
1
|
+
{"version":3,"file":"ArrayType.js","sourceRoot":"","sources":["../../src/types/ArrayType.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,11 @@ const ArrayType_1 = require("./ArrayType");
|
|
|
5
5
|
const DynamicType_1 = require("./DynamicType");
|
|
6
6
|
const BooleanType_1 = require("./BooleanType");
|
|
7
7
|
const StringType_1 = require("./StringType");
|
|
8
|
+
const CustomType_1 = require("./CustomType");
|
|
9
|
+
const IntegerType_1 = require("./IntegerType");
|
|
10
|
+
const FloatType_1 = require("./FloatType");
|
|
11
|
+
const Program_1 = require("../Program");
|
|
12
|
+
const vscode_languageserver_protocol_1 = require("vscode-languageserver-protocol");
|
|
8
13
|
describe('ArrayType', () => {
|
|
9
14
|
it('is equivalent to array types', () => {
|
|
10
15
|
(0, chai_1.expect)(new ArrayType_1.ArrayType().isAssignableTo(new ArrayType_1.ArrayType())).to.be.true;
|
|
@@ -14,16 +19,70 @@ describe('ArrayType', () => {
|
|
|
14
19
|
(0, chai_1.expect)(new ArrayType_1.ArrayType(new BooleanType_1.BooleanType()).isAssignableTo(new ArrayType_1.ArrayType(new BooleanType_1.BooleanType()))).to.be.true;
|
|
15
20
|
(0, chai_1.expect)(new ArrayType_1.ArrayType(new BooleanType_1.BooleanType()).isAssignableTo(new ArrayType_1.ArrayType(new StringType_1.StringType()))).to.be.false;
|
|
16
21
|
});
|
|
22
|
+
it('sets the innerTypes to unique types', () => {
|
|
23
|
+
const boolArray = new ArrayType_1.ArrayType(new BooleanType_1.BooleanType(), new BooleanType_1.BooleanType());
|
|
24
|
+
(0, chai_1.expect)(boolArray.innerTypes.length).to.eql(1);
|
|
25
|
+
(0, chai_1.expect)(boolArray.innerTypes[0].equals(new BooleanType_1.BooleanType())).to.be.true;
|
|
26
|
+
(0, chai_1.expect)(boolArray.toJsString()).to.eql('Array<boolean>');
|
|
27
|
+
const multiTypeArray = new ArrayType_1.ArrayType(new BooleanType_1.BooleanType(), new StringType_1.StringType(), new BooleanType_1.BooleanType());
|
|
28
|
+
(0, chai_1.expect)(multiTypeArray.innerTypes.length).to.eql(2);
|
|
29
|
+
(0, chai_1.expect)(multiTypeArray.innerTypes[0].equals(new BooleanType_1.BooleanType())).to.be.true;
|
|
30
|
+
(0, chai_1.expect)(multiTypeArray.innerTypes[1].equals(new StringType_1.StringType())).to.be.true;
|
|
31
|
+
(0, chai_1.expect)(multiTypeArray.toJsString()).to.eql('Array<boolean | string>');
|
|
32
|
+
});
|
|
33
|
+
it('sets the innerTypes to custom types', () => {
|
|
34
|
+
(0, chai_1.expect)(new ArrayType_1.ArrayType(new CustomType_1.CustomType('MyKlass')).toString()).to.eql('MyKlass[]');
|
|
35
|
+
});
|
|
17
36
|
it('is not equivalent to other types', () => {
|
|
18
37
|
(0, chai_1.expect)(new ArrayType_1.ArrayType().isAssignableTo(new BooleanType_1.BooleanType())).to.be.false;
|
|
19
38
|
});
|
|
20
|
-
describe('
|
|
39
|
+
describe('isConvertibleTo', () => {
|
|
21
40
|
(0, chai_1.expect)(new ArrayType_1.ArrayType().isConvertibleTo(new BooleanType_1.BooleanType())).to.be.false;
|
|
22
41
|
(0, chai_1.expect)(new ArrayType_1.ArrayType().isConvertibleTo(new ArrayType_1.ArrayType())).to.be.true;
|
|
23
42
|
});
|
|
24
43
|
describe('toString', () => {
|
|
25
|
-
it('
|
|
26
|
-
(0, chai_1.expect)(new ArrayType_1.ArrayType(new BooleanType_1.BooleanType()
|
|
44
|
+
it('returns the default type', () => {
|
|
45
|
+
(0, chai_1.expect)(new ArrayType_1.ArrayType(new BooleanType_1.BooleanType()).toString()).to.eql('boolean[]');
|
|
46
|
+
(0, chai_1.expect)(new ArrayType_1.ArrayType(new StringType_1.StringType()).toString()).to.eql('string[]');
|
|
47
|
+
(0, chai_1.expect)(new ArrayType_1.ArrayType(new CustomType_1.CustomType('MyKlass')).toString()).to.eql('MyKlass[]');
|
|
48
|
+
});
|
|
49
|
+
it('returns dynamic if more than one type is assigned', () => {
|
|
50
|
+
(0, chai_1.expect)(new ArrayType_1.ArrayType(new BooleanType_1.BooleanType(), new StringType_1.StringType()).toString()).to.eql('dynamic[]');
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
describe('unique types by assignability', () => {
|
|
54
|
+
it('follows the isAssignable method on the type', () => {
|
|
55
|
+
const numbersArray = new ArrayType_1.ArrayType(new IntegerType_1.IntegerType(), new FloatType_1.FloatType(), new IntegerType_1.IntegerType(), new FloatType_1.FloatType());
|
|
56
|
+
// integers ARE NOT assignable to float, and vice versa
|
|
57
|
+
(0, chai_1.expect)(numbersArray.innerTypes.length).to.eql(2);
|
|
58
|
+
(0, chai_1.expect)(numbersArray.innerTypes[0].equals(new IntegerType_1.IntegerType())).to.be.true;
|
|
59
|
+
(0, chai_1.expect)(numbersArray.innerTypes[1].equals(new FloatType_1.FloatType())).to.be.true;
|
|
60
|
+
});
|
|
61
|
+
it('sets the default type to Dynamic if types are not assignable', () => {
|
|
62
|
+
const numbersArray = new ArrayType_1.ArrayType(new IntegerType_1.IntegerType(), new FloatType_1.FloatType(), new IntegerType_1.IntegerType(), new FloatType_1.FloatType());
|
|
63
|
+
// integers ARE NOT assignable to float, and vice versa
|
|
64
|
+
(0, chai_1.expect)(numbersArray.getDefaultType().equals(new DynamicType_1.DynamicType())).to.be.true;
|
|
65
|
+
});
|
|
66
|
+
it('sets the default type to the most general of the types provided', () => {
|
|
67
|
+
const program = new Program_1.Program({
|
|
68
|
+
rootDir: process.cwd()
|
|
69
|
+
});
|
|
70
|
+
program.createSourceScope();
|
|
71
|
+
const file = program.setFile('source/main.bs', `
|
|
72
|
+
class Parent
|
|
73
|
+
end class
|
|
74
|
+
|
|
75
|
+
class Child extends Parent
|
|
76
|
+
end class
|
|
77
|
+
|
|
78
|
+
sub main()
|
|
79
|
+
' inside main
|
|
80
|
+
end sub
|
|
81
|
+
`);
|
|
82
|
+
const klassesArray = new ArrayType_1.ArrayType(new CustomType_1.CustomType('Child'), new CustomType_1.CustomType('Parent'), new CustomType_1.CustomType('Child'));
|
|
83
|
+
const context = { scope: program.getScopesForFile(file)[0], file: file, position: vscode_languageserver_protocol_1.Position.create(8, 23) };
|
|
84
|
+
(0, chai_1.expect)(klassesArray.innerTypes.length).to.eql(2);
|
|
85
|
+
(0, chai_1.expect)(klassesArray.getDefaultType(context).equals(new CustomType_1.CustomType('Parent'))).to.be.true;
|
|
27
86
|
});
|
|
28
87
|
});
|
|
29
88
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArrayType.spec.js","sourceRoot":"","sources":["../../src/types/ArrayType.spec.ts"],"names":[],"mappings":";;AAAA,+BAA8B;AAE9B,2CAAwC;AACxC,+CAA4C;AAC5C,+CAA4C;AAC5C,6CAA0C;
|
|
1
|
+
{"version":3,"file":"ArrayType.spec.js","sourceRoot":"","sources":["../../src/types/ArrayType.spec.ts"],"names":[],"mappings":"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"}
|
package/dist/types/BscType.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ export declare class CustomType implements BscType, SymbolContainer {
|
|
|
6
6
|
constructor(name: string, memberTable?: SymbolTable);
|
|
7
7
|
toString(): string;
|
|
8
8
|
toTypeString(): string;
|
|
9
|
-
isAssignableTo(targetType: BscType, context?: TypeContext
|
|
9
|
+
isAssignableTo(targetType: BscType, context?: TypeContext): boolean;
|
|
10
10
|
isConvertibleTo(targetType: BscType, context?: TypeContext): boolean;
|
|
11
11
|
equals(targetType: BscType, context?: TypeContext): boolean;
|
|
12
12
|
}
|
package/dist/types/CustomType.js
CHANGED
|
@@ -13,7 +13,9 @@ class CustomType {
|
|
|
13
13
|
toTypeString() {
|
|
14
14
|
return 'object';
|
|
15
15
|
}
|
|
16
|
-
isAssignableTo(targetType, context
|
|
16
|
+
isAssignableTo(targetType, context) {
|
|
17
|
+
var _a;
|
|
18
|
+
const ancestorTypes = (_a = context === null || context === void 0 ? void 0 : context.scope) === null || _a === void 0 ? void 0 : _a.getAncestorTypeListByContext(this, context);
|
|
17
19
|
if (ancestorTypes === null || ancestorTypes === void 0 ? void 0 : ancestorTypes.find(ancestorType => targetType.equals(ancestorType, context))) {
|
|
18
20
|
return true;
|
|
19
21
|
}
|
|
@@ -25,7 +27,7 @@ class CustomType {
|
|
|
25
27
|
return this.isAssignableTo(targetType, context);
|
|
26
28
|
}
|
|
27
29
|
equals(targetType, context) {
|
|
28
|
-
return this.toString() === (targetType === null || targetType === void 0 ? void 0 : targetType.toString(
|
|
30
|
+
return (0, reflection_1.isCustomType)(targetType) && this.toString() === (targetType === null || targetType === void 0 ? void 0 : targetType.toString());
|
|
29
31
|
}
|
|
30
32
|
}
|
|
31
33
|
exports.CustomType = CustomType;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CustomType.js","sourceRoot":"","sources":["../../src/types/CustomType.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"CustomType.js","sourceRoot":"","sources":["../../src/types/CustomType.ts"],"names":[],"mappings":";;;AAAA,uDAAmF;AAInF,MAAa,UAAU;IAEnB,YAAmB,IAAY,EAAS,cAA2B,IAAI;QAApD,SAAI,GAAJ,IAAI,CAAQ;QAAS,gBAAW,GAAX,WAAW,CAAoB;IACvE,CAAC;IAEM,QAAQ;QACX,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAEM,YAAY;QACf,OAAO,QAAQ,CAAC;IACpB,CAAC;IAEM,cAAc,CAAC,UAAmB,EAAE,OAAqB;;QAC5D,MAAM,aAAa,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,0CAAE,4BAA4B,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAClF,IAAI,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,EAAE;YAC/E,OAAO,IAAI,CAAC;SACf;QACD,OAAO,CACH,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC;YAChC,IAAA,yBAAY,EAAC,UAAU,CAAC;YACxB,IAAA,0BAAa,EAAC,UAAU,CAAC,CAC5B,CAAC;IACN,CAAC;IAEM,eAAe,CAAC,UAAmB,EAAE,OAAqB;QAC7D,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IAEM,MAAM,CAAC,UAAmB,EAAE,OAAqB;QACpD,OAAO,IAAA,yBAAY,EAAC,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAK,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,QAAQ,EAAE,CAAA,CAAC;IAClF,CAAC;CACJ;AAhCD,gCAgCC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { CallableParam } from '../interfaces';
|
|
2
|
-
import type { BscType } from './BscType';
|
|
2
|
+
import type { BscType, TypeContext } from './BscType';
|
|
3
3
|
export declare class FunctionType implements BscType {
|
|
4
4
|
returnType: BscType;
|
|
5
5
|
/**
|
|
@@ -19,9 +19,9 @@ export declare class FunctionType implements BscType {
|
|
|
19
19
|
name: string;
|
|
20
20
|
setName(name: string): this;
|
|
21
21
|
addParameter(paramOrName: CallableParam | string, type?: BscType, isOptional?: boolean): this;
|
|
22
|
-
isAssignableTo(targetType: BscType): boolean;
|
|
23
|
-
isConvertibleTo(targetType: BscType): boolean;
|
|
24
|
-
toString(): string;
|
|
22
|
+
isAssignableTo(targetType: BscType, context?: TypeContext): boolean;
|
|
23
|
+
isConvertibleTo(targetType: BscType, context?: TypeContext): boolean;
|
|
24
|
+
toString(context?: TypeContext): string;
|
|
25
25
|
toTypeString(): string;
|
|
26
|
-
equals(targetType: BscType): boolean;
|
|
26
|
+
equals(targetType: BscType, context?: TypeContext): boolean;
|
|
27
27
|
}
|
|
@@ -23,7 +23,7 @@ class FunctionType {
|
|
|
23
23
|
this.params.push({
|
|
24
24
|
name: paramOrName,
|
|
25
25
|
type: type !== null && type !== void 0 ? type : new DynamicType_1.DynamicType(),
|
|
26
|
-
isOptional:
|
|
26
|
+
isOptional: isOptional === true ? true : false,
|
|
27
27
|
isRestArgument: false
|
|
28
28
|
});
|
|
29
29
|
}
|
|
@@ -32,19 +32,19 @@ class FunctionType {
|
|
|
32
32
|
}
|
|
33
33
|
return this;
|
|
34
34
|
}
|
|
35
|
-
isAssignableTo(targetType) {
|
|
35
|
+
isAssignableTo(targetType, context) {
|
|
36
36
|
if ((0, reflection_1.isFunctionType)(targetType)) {
|
|
37
37
|
//compare all parameters
|
|
38
38
|
let len = Math.max(this.params.length, targetType.params.length);
|
|
39
39
|
for (let i = 0; i < len; i++) {
|
|
40
40
|
let myParam = this.params[i];
|
|
41
41
|
let targetParam = targetType.params[i];
|
|
42
|
-
if (!myParam || !targetParam || !myParam.type.isAssignableTo(targetParam.type)) {
|
|
42
|
+
if (!myParam || !targetParam || !myParam.type.isAssignableTo(targetParam.type, context)) {
|
|
43
43
|
return false;
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
//compare return type
|
|
47
|
-
if (!this.returnType || !targetType.returnType || !this.returnType.isAssignableTo(targetType.returnType)) {
|
|
47
|
+
if (!this.returnType || !targetType.returnType || !this.returnType.isAssignableTo(targetType.returnType, context)) {
|
|
48
48
|
return false;
|
|
49
49
|
}
|
|
50
50
|
//made it here, all params and return type are equivalent
|
|
@@ -57,25 +57,25 @@ class FunctionType {
|
|
|
57
57
|
return false;
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
|
-
isConvertibleTo(targetType) {
|
|
61
|
-
return this.isAssignableTo(targetType);
|
|
60
|
+
isConvertibleTo(targetType, context) {
|
|
61
|
+
return this.isAssignableTo(targetType, context);
|
|
62
62
|
}
|
|
63
|
-
toString() {
|
|
63
|
+
toString(context) {
|
|
64
64
|
var _a, _b;
|
|
65
65
|
let paramTexts = [];
|
|
66
66
|
for (let param of this.params) {
|
|
67
|
-
paramTexts.push(`${param.name}${param.isOptional ? '?' : ''} as ${param.type.toString()}`);
|
|
67
|
+
paramTexts.push(`${param.name}${param.isOptional ? '?' : ''} as ${param.type.toString(context)}`);
|
|
68
68
|
}
|
|
69
69
|
if (this.isNew) {
|
|
70
70
|
return `new ${(_a = this.name) !== null && _a !== void 0 ? _a : ''}(${paramTexts.join(', ')})`;
|
|
71
71
|
}
|
|
72
|
-
return `${this.isSub ? 'sub' : 'function'} ${(_b = this.name) !== null && _b !== void 0 ? _b : ''}(${paramTexts.join(', ')}) as ${this.returnType.toString()}`;
|
|
72
|
+
return `${this.isSub ? 'sub' : 'function'} ${(_b = this.name) !== null && _b !== void 0 ? _b : ''}(${paramTexts.join(', ')}) as ${this.returnType.toString(context)}`;
|
|
73
73
|
}
|
|
74
74
|
toTypeString() {
|
|
75
75
|
return 'Function';
|
|
76
76
|
}
|
|
77
|
-
equals(targetType) {
|
|
78
|
-
return ((0, reflection_1.isFunctionType)(targetType)) && this.isAssignableTo(targetType);
|
|
77
|
+
equals(targetType, context) {
|
|
78
|
+
return ((0, reflection_1.isFunctionType)(targetType)) && this.isAssignableTo(targetType, context);
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
81
|
exports.FunctionType = FunctionType;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FunctionType.js","sourceRoot":"","sources":["../../src/types/FunctionType.ts"],"names":[],"mappings":";;;AAAA,uDAAuE;AAGvE,+CAA4C;AAE5C,MAAa,YAAY;IACrB,YACW,UAAmB;IAC1B;;OAEG;IACI,QAAQ,KAAK,EACb,SAA0B,EAAE,EAC5B,QAAQ,KAAK;QANb,eAAU,GAAV,UAAU,CAAS;QAInB,UAAK,GAAL,KAAK,CAAQ;QACb,WAAM,GAAN,MAAM,CAAsB;QAC5B,UAAK,GAAL,KAAK,CAAQ;IAExB,CAAC;IAOM,OAAO,CAAC,IAAY;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,OAAO,IAAI,CAAC;IAChB,CAAC;IACM,YAAY,CAAC,WAAmC,EAAE,IAAc,EAAE,UAAoB;QACzF,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;YACjC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gBACb,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,IAAI,yBAAW,EAAE;gBAC/B,UAAU,EAAE,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"FunctionType.js","sourceRoot":"","sources":["../../src/types/FunctionType.ts"],"names":[],"mappings":"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"}
|
package/dist/types/LazyType.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { BscType, TypeContext } from './BscType';
|
|
2
|
-
import type { CustomType } from './CustomType';
|
|
3
2
|
/**
|
|
4
3
|
* A type whose actual type is not computed until requested.
|
|
5
4
|
* This is useful when the parser creates types in the middle of the file that depend on items further down in the file that haven't been parsed yet
|
|
@@ -9,7 +8,7 @@ export declare class LazyType implements BscType {
|
|
|
9
8
|
constructor(factory: (context?: TypeContext) => BscType);
|
|
10
9
|
get type(): BscType;
|
|
11
10
|
getTypeFromContext(context?: TypeContext): BscType;
|
|
12
|
-
isAssignableTo(targetType: BscType, context?: TypeContext
|
|
11
|
+
isAssignableTo(targetType: BscType, context?: TypeContext): boolean;
|
|
13
12
|
isConvertibleTo(targetType: BscType, context?: TypeContext): boolean;
|
|
14
13
|
toString(context?: TypeContext): string;
|
|
15
14
|
toTypeString(context?: TypeContext): string;
|
package/dist/types/LazyType.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.LazyType = void 0;
|
|
4
|
-
const astUtils_1 = require("../astUtils");
|
|
5
4
|
/**
|
|
6
5
|
* A type whose actual type is not computed until requested.
|
|
7
6
|
* This is useful when the parser creates types in the middle of the file that depend on items further down in the file that haven't been parsed yet
|
|
@@ -16,11 +15,8 @@ class LazyType {
|
|
|
16
15
|
getTypeFromContext(context) {
|
|
17
16
|
return this.factory(context);
|
|
18
17
|
}
|
|
19
|
-
isAssignableTo(targetType, context
|
|
18
|
+
isAssignableTo(targetType, context) {
|
|
20
19
|
const foundType = this.getTypeFromContext(context);
|
|
21
|
-
if ((0, astUtils_1.isCustomType)(foundType)) {
|
|
22
|
-
return foundType.isAssignableTo(targetType, context, potentialAncestorTypes);
|
|
23
|
-
}
|
|
24
20
|
return foundType === null || foundType === void 0 ? void 0 : foundType.isAssignableTo(targetType, context);
|
|
25
21
|
}
|
|
26
22
|
isConvertibleTo(targetType, context) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LazyType.js","sourceRoot":"","sources":["../../src/types/LazyType.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"LazyType.js","sourceRoot":"","sources":["../../src/types/LazyType.ts"],"names":[],"mappings":";;;AAEA;;;GAGG;AACH,MAAa,QAAQ;IACjB,YACY,OAA2C;QAA3C,YAAO,GAAP,OAAO,CAAoC;IAEvD,CAAC;IAED,IAAW,IAAI;QACX,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC;IACM,kBAAkB,CAAC,OAAqB;QAC3C,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAEM,cAAc,CAAC,UAAmB,EAAE,OAAqB;QAC5D,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACnD,OAAO,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,cAAc,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC1D,CAAC;IAEM,eAAe,CAAC,UAAmB,EAAE,OAAqB;;QAC7D,OAAO,MAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,0CAAE,eAAe,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAClF,CAAC;IAEM,QAAQ,CAAC,OAAqB;;QACjC,OAAO,MAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,0CAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC/D,CAAC;IAEM,YAAY,CAAC,OAAqB;;QACrC,OAAO,MAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,0CAAE,YAAY,CAAC,OAAO,CAAC,CAAC;IACnE,CAAC;IAEM,MAAM,CAAC,UAAmB,EAAE,OAAqB;;QACpD,OAAO,MAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,0CAAE,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;CACJ;AAjCD,4BAiCC"}
|
package/dist/types/helpers.js
CHANGED
|
@@ -57,7 +57,7 @@ exports.getTypeFromCallExpression = getTypeFromCallExpression;
|
|
|
57
57
|
function getTypeFromVariableExpression(variable, functionExpression) {
|
|
58
58
|
let variableName = variable.name.text.toLowerCase();
|
|
59
59
|
const currentKnownType = functionExpression.symbolTable.getSymbolType(variableName);
|
|
60
|
-
if ((0, reflection_1.isPrimitiveType)(currentKnownType)) {
|
|
60
|
+
if ((0, reflection_1.isPrimitiveType)(currentKnownType) || (0, reflection_1.isArrayType)(currentKnownType)) {
|
|
61
61
|
// for "contextless" types, eg. myVar = 3.14
|
|
62
62
|
return currentKnownType;
|
|
63
63
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/types/helpers.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/types/helpers.ts"],"names":[],"mappings":"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"}
|
package/dist/util.d.ts
CHANGED
|
@@ -10,14 +10,13 @@ import { FunctionType } from './types/FunctionType';
|
|
|
10
10
|
import { IntegerType } from './types/IntegerType';
|
|
11
11
|
import { InvalidType } from './types/InvalidType';
|
|
12
12
|
import { LongIntegerType } from './types/LongIntegerType';
|
|
13
|
-
import { ObjectType } from './types/ObjectType';
|
|
14
13
|
import { StringType } from './types/StringType';
|
|
15
14
|
import { VoidType } from './types/VoidType';
|
|
16
15
|
import type { DottedGetExpression, Expression, NamespacedVariableNameExpression, VariableExpression } from './parser/Expression';
|
|
17
|
-
import type { Locatable, Token } from './lexer';
|
|
16
|
+
import type { Locatable, Token } from './lexer/Token';
|
|
18
17
|
import { SourceNode } from 'source-map';
|
|
19
18
|
import { SGAttribute } from './parser/SGTypes';
|
|
20
|
-
import {
|
|
19
|
+
import type { BscType } from './types/BscType';
|
|
21
20
|
export declare class Util {
|
|
22
21
|
clearConsole(): void;
|
|
23
22
|
/**
|
|
@@ -279,7 +278,7 @@ export declare class Util {
|
|
|
279
278
|
/**
|
|
280
279
|
* Convert a token into a BscType
|
|
281
280
|
*/
|
|
282
|
-
tokenToBscType(token: Token,
|
|
281
|
+
tokenToBscType(token: Token, allowBrighterscriptTypes?: boolean, currentNamespaceName?: NamespacedVariableNameExpression): DynamicType | BscType | FloatType | FunctionType | IntegerType | LongIntegerType | StringType | BooleanType | DoubleType | InvalidType | VoidType;
|
|
283
282
|
/**
|
|
284
283
|
* Get the extension for the given file path. Basically the part after the final dot, except for
|
|
285
284
|
* `d.bs` which is treated as single extension
|
|
@@ -314,7 +313,13 @@ export declare class Util {
|
|
|
314
313
|
* Remove leading simple protocols from a path (if present)
|
|
315
314
|
*/
|
|
316
315
|
removeProtocol(pkgPath: string): string;
|
|
316
|
+
/**
|
|
317
|
+
* Converts a path into a standardized format (drive letter to lower, remove extra slashes, use single slash type, resolve relative parts, etc...)
|
|
318
|
+
*/
|
|
317
319
|
standardizePath(thePath: string): string;
|
|
320
|
+
/**
|
|
321
|
+
* Copy the version of bslib from local node_modules to the staging folder
|
|
322
|
+
*/
|
|
318
323
|
copyBslibToStaging(stagingDir: string): Promise<void>;
|
|
319
324
|
/**
|
|
320
325
|
* Given a Diagnostic or BsDiagnostic, return a copy of the diagnostic
|
|
@@ -363,12 +368,13 @@ export declare class Util {
|
|
|
363
368
|
text: string;
|
|
364
369
|
range: Range;
|
|
365
370
|
}[];
|
|
371
|
+
mdFence(code: string, language?: string): string;
|
|
366
372
|
/**
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
373
|
+
* Finds a callable from a container map based on the name AND number of arguments
|
|
374
|
+
* If the callable was called in a function in a namespace, functions in that namespace are preferred
|
|
375
|
+
* The first callable that matches the name AND will accept the number of arguments given is returned
|
|
376
|
+
* @return a callable containers that matches the call
|
|
377
|
+
*/
|
|
372
378
|
getCallableContainerByFunctionCall(callablesByLowerName: CallableContainerMap, expCall: FunctionCall): CallableContainer;
|
|
373
379
|
}
|
|
374
380
|
/**
|