brighterscript 0.66.0-alpha.1 → 0.66.0-alpha.3
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 +21 -0
- package/README.md +0 -6
- package/dist/BsConfig.d.ts +0 -5
- package/dist/Cache.js +3 -3
- package/dist/Cache.js.map +1 -1
- package/dist/CacheVerifier.d.ts +0 -1
- package/dist/CodeActionUtil.d.ts +2 -2
- package/dist/DiagnosticCollection.js +8 -5
- package/dist/DiagnosticCollection.js.map +1 -1
- package/dist/DiagnosticMessages.d.ts +6 -1
- package/dist/DiagnosticMessages.js +5 -0
- package/dist/DiagnosticMessages.js.map +1 -1
- package/dist/FunctionScope.d.ts +1 -1
- package/dist/LanguageServer.d.ts +5 -1
- package/dist/LanguageServer.js +7 -0
- package/dist/LanguageServer.js.map +1 -1
- package/dist/Logger.d.ts +2 -1
- package/dist/Logger.js +10 -2
- package/dist/Logger.js.map +1 -1
- package/dist/Program.d.ts +1 -3
- package/dist/Program.js +4 -14
- package/dist/Program.js.map +1 -1
- package/dist/ProgramBuilder.js +1 -1
- package/dist/ProgramBuilder.js.map +1 -1
- package/dist/Scope.d.ts +11 -6
- package/dist/Scope.js +77 -93
- package/dist/Scope.js.map +1 -1
- package/dist/SymbolTable.d.ts +13 -5
- package/dist/SymbolTable.js +34 -10
- package/dist/SymbolTable.js.map +1 -1
- package/dist/astUtils/reflection.d.ts +4 -0
- package/dist/astUtils/reflection.js +9 -1
- package/dist/astUtils/reflection.js.map +1 -1
- package/dist/bscPlugin/hover/HoverProcessor.d.ts +5 -0
- package/dist/bscPlugin/hover/HoverProcessor.js +108 -77
- package/dist/bscPlugin/hover/HoverProcessor.js.map +1 -1
- package/dist/bscPlugin/hover/HoverProcessor.spec.js +83 -29
- package/dist/bscPlugin/hover/HoverProcessor.spec.js.map +1 -1
- package/dist/bscPlugin/validation/BrsFileValidator.d.ts +0 -4
- package/dist/bscPlugin/validation/BrsFileValidator.js +10 -16
- package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -1
- package/dist/bscPlugin/validation/ScopeValidator.d.ts +4 -0
- package/dist/bscPlugin/validation/ScopeValidator.js +77 -42
- package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -1
- package/dist/bscPlugin/validation/ScopeValidator.spec.js +684 -0
- package/dist/bscPlugin/validation/ScopeValidator.spec.js.map +1 -0
- package/dist/cli.js +95 -13
- package/dist/cli.js.map +1 -1
- package/dist/files/BrsFile.Class.spec.js +5 -0
- package/dist/files/BrsFile.Class.spec.js.map +1 -1
- package/dist/files/BrsFile.d.ts +1 -11
- package/dist/files/BrsFile.js +9 -101
- package/dist/files/BrsFile.js.map +1 -1
- package/dist/files/BrsFile.spec.js +3 -267
- package/dist/files/BrsFile.spec.js.map +1 -1
- package/dist/globalCallables.js +78 -78
- package/dist/globalCallables.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/interfaces.d.ts +7 -5
- package/dist/interfaces.js.map +1 -1
- package/dist/parser/Expression.d.ts +4 -3
- package/dist/parser/Expression.js +32 -9
- package/dist/parser/Expression.js.map +1 -1
- package/dist/parser/SGParser.d.ts +2 -2
- package/dist/parser/Statement.d.ts +11 -6
- package/dist/parser/Statement.js +54 -21
- package/dist/parser/Statement.js.map +1 -1
- package/dist/parser/tests/expression/TernaryExpression.spec.js +2 -2
- package/dist/types/BaseFunctionType.d.ts +8 -0
- package/dist/types/BaseFunctionType.js +25 -0
- package/dist/types/BaseFunctionType.js.map +1 -0
- package/dist/types/BooleanType.js +2 -1
- package/dist/types/BooleanType.js.map +1 -1
- package/dist/types/BscTypeKind.d.ts +1 -0
- package/dist/types/BscTypeKind.js +1 -0
- package/dist/types/BscTypeKind.js.map +1 -1
- package/dist/types/ClassType.js +1 -1
- package/dist/types/ClassType.js.map +1 -1
- package/dist/types/DoubleType.js +1 -0
- package/dist/types/DoubleType.js.map +1 -1
- package/dist/types/EnumType.d.ts +20 -4
- package/dist/types/EnumType.js +14 -2
- package/dist/types/EnumType.js.map +1 -1
- package/dist/types/FloatType.js +1 -0
- package/dist/types/FloatType.js.map +1 -1
- package/dist/types/FunctionType.d.ts +6 -19
- package/dist/types/FunctionType.js +12 -44
- package/dist/types/FunctionType.js.map +1 -1
- package/dist/types/IntegerType.js +1 -0
- package/dist/types/IntegerType.js.map +1 -1
- package/dist/types/InterfaceType.js +3 -3
- package/dist/types/InterfaceType.js.map +1 -1
- package/dist/types/InvalidType.d.ts +1 -0
- package/dist/types/InvalidType.js +3 -1
- package/dist/types/InvalidType.js.map +1 -1
- package/dist/types/LongIntegerType.js +1 -0
- package/dist/types/LongIntegerType.js.map +1 -1
- package/dist/types/ObjectType.js +2 -9
- package/dist/types/ObjectType.js.map +1 -1
- package/dist/types/ReferenceType.d.ts +1 -3
- package/dist/types/ReferenceType.js +27 -13
- package/dist/types/ReferenceType.js.map +1 -1
- package/dist/types/ReferenceType.spec.js +6 -6
- package/dist/types/ReferenceType.spec.js.map +1 -1
- package/dist/types/StringType.js +4 -1
- package/dist/types/StringType.js.map +1 -1
- package/dist/types/TypedFunctionType.d.ts +27 -0
- package/dist/types/TypedFunctionType.js +69 -0
- package/dist/types/TypedFunctionType.js.map +1 -0
- package/dist/types/TypedFunctionType.spec.d.ts +1 -0
- package/dist/types/TypedFunctionType.spec.js +23 -0
- package/dist/types/TypedFunctionType.spec.js.map +1 -0
- package/dist/types/UnionType.js +4 -1
- package/dist/types/UnionType.js.map +1 -1
- package/dist/types/VoidType.js +2 -1
- package/dist/types/VoidType.js.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.js +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/util.d.ts +22 -5
- package/dist/util.js +245 -79
- package/dist/util.js.map +1 -1
- package/package.json +3 -1
- package/dist/types/FunctionType.spec.js +0 -23
- package/dist/types/FunctionType.spec.js.map +0 -1
- /package/dist/{types/FunctionType.spec.d.ts → bscPlugin/validation/ScopeValidator.spec.d.ts} +0 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { BaseFunctionType } from './BaseFunctionType';
|
|
2
|
+
import type { BscType } from './BscType';
|
|
3
|
+
import { BscTypeKind } from './BscTypeKind';
|
|
4
|
+
export declare class TypedFunctionType extends BaseFunctionType {
|
|
5
|
+
returnType: BscType;
|
|
6
|
+
constructor(returnType: BscType);
|
|
7
|
+
readonly kind = BscTypeKind.TypedFunctionType;
|
|
8
|
+
/**
|
|
9
|
+
* The name of the function for this type. Can be null
|
|
10
|
+
*/
|
|
11
|
+
name: string;
|
|
12
|
+
/**
|
|
13
|
+
* Determines if this is a sub or not
|
|
14
|
+
*/
|
|
15
|
+
isSub: boolean;
|
|
16
|
+
params: {
|
|
17
|
+
name: string;
|
|
18
|
+
type: BscType;
|
|
19
|
+
isOptional: boolean;
|
|
20
|
+
}[];
|
|
21
|
+
setName(name: string): this;
|
|
22
|
+
addParameter(name: string, type: BscType, isOptional: boolean): this;
|
|
23
|
+
isTypeCompatible(targetType: BscType): boolean;
|
|
24
|
+
toString(): string;
|
|
25
|
+
toTypeString(): string;
|
|
26
|
+
isEqual(targetType: BscType): boolean;
|
|
27
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TypedFunctionType = void 0;
|
|
4
|
+
const reflection_1 = require("../astUtils/reflection");
|
|
5
|
+
const BaseFunctionType_1 = require("./BaseFunctionType");
|
|
6
|
+
const BscTypeKind_1 = require("./BscTypeKind");
|
|
7
|
+
class TypedFunctionType extends BaseFunctionType_1.BaseFunctionType {
|
|
8
|
+
constructor(returnType) {
|
|
9
|
+
super();
|
|
10
|
+
this.returnType = returnType;
|
|
11
|
+
this.kind = BscTypeKind_1.BscTypeKind.TypedFunctionType;
|
|
12
|
+
/**
|
|
13
|
+
* Determines if this is a sub or not
|
|
14
|
+
*/
|
|
15
|
+
this.isSub = false;
|
|
16
|
+
this.params = [];
|
|
17
|
+
}
|
|
18
|
+
setName(name) {
|
|
19
|
+
this.name = name;
|
|
20
|
+
return this;
|
|
21
|
+
}
|
|
22
|
+
addParameter(name, type, isOptional) {
|
|
23
|
+
this.params.push({
|
|
24
|
+
name: name,
|
|
25
|
+
type: type,
|
|
26
|
+
isOptional: isOptional === true ? true : false
|
|
27
|
+
});
|
|
28
|
+
return this;
|
|
29
|
+
}
|
|
30
|
+
isTypeCompatible(targetType) {
|
|
31
|
+
if ((0, reflection_1.isDynamicType)(targetType) ||
|
|
32
|
+
(0, reflection_1.isObjectType)(targetType)) {
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
return this.isEqual(targetType);
|
|
36
|
+
}
|
|
37
|
+
toString() {
|
|
38
|
+
let paramTexts = [];
|
|
39
|
+
for (let param of this.params) {
|
|
40
|
+
paramTexts.push(`${param.name}${param.isOptional ? '?' : ''} as ${param.type.toString()}`);
|
|
41
|
+
}
|
|
42
|
+
return `${this.isSub ? 'sub' : 'function'} ${this.name}(${paramTexts.join(', ')}) as ${this.returnType.toString()}`;
|
|
43
|
+
}
|
|
44
|
+
toTypeString() {
|
|
45
|
+
return 'Function';
|
|
46
|
+
}
|
|
47
|
+
isEqual(targetType) {
|
|
48
|
+
if ((0, reflection_1.isTypedFunctionType)(targetType)) {
|
|
49
|
+
//compare all parameters
|
|
50
|
+
let len = Math.max(this.params.length, targetType.params.length);
|
|
51
|
+
for (let i = 0; i < len; i++) {
|
|
52
|
+
let myParam = this.params[i];
|
|
53
|
+
let targetParam = targetType.params[i];
|
|
54
|
+
if (!myParam || !targetParam || !myParam.type.isAssignableTo(targetParam.type)) {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
//compare return type
|
|
59
|
+
if (!this.returnType || !targetType.returnType || !this.returnType.isAssignableTo(targetType.returnType)) {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
//made it here, all params and return type are equivalent
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
exports.TypedFunctionType = TypedFunctionType;
|
|
69
|
+
//# sourceMappingURL=TypedFunctionType.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TypedFunctionType.js","sourceRoot":"","sources":["../../src/types/TypedFunctionType.ts"],"names":[],"mappings":";;;AAAA,uDAA0F;AAC1F,yDAAsD;AAEtD,+CAA4C;AAE5C,MAAa,iBAAkB,SAAQ,mCAAgB;IACnD,YACW,UAAmB;QAE1B,KAAK,EAAE,CAAC;QAFD,eAAU,GAAV,UAAU,CAAS;QAKd,SAAI,GAAG,yBAAW,CAAC,iBAAiB,CAAC;QAOrD;;WAEG;QACI,UAAK,GAAG,KAAK,CAAC;QAEd,WAAM,GAAG,EAAiE,CAAC;IAdlF,CAAC;IAgBM,OAAO,CAAC,IAAY;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,YAAY,CAAC,IAAY,EAAE,IAAa,EAAE,UAAmB;QAChE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YACb,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,IAAI;YACV,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;SACjD,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,gBAAgB,CAAC,UAAmB;QACvC,IACI,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,yBAAY,EAAC,UAAU,CAAC,EAC1B;YACE,OAAO,IAAI,CAAC;SACf;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC;IAEM,QAAQ;QACX,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;YAC3B,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;SAC9F;QACD,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC;IAExH,CAAC;IAEM,YAAY;QACf,OAAO,UAAU,CAAC;IACtB,CAAC;IAED,OAAO,CAAC,UAAmB;QACvB,IAAI,IAAA,gCAAmB,EAAC,UAAU,CAAC,EAAE;YACjC,wBAAwB;YACxB,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACjE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;gBAC1B,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC7B,IAAI,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACvC,IAAI,CAAC,OAAO,IAAI,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;oBAC5E,OAAO,KAAK,CAAC;iBAChB;aACJ;YAED,qBAAqB;YACrB,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;gBACtG,OAAO,KAAK,CAAC;aAChB;YAED,yDAAyD;YACzD,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;CACJ;AAhFD,8CAgFC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const chai_config_spec_1 = require("../chai-config.spec");
|
|
4
|
+
const DynamicType_1 = require("./DynamicType");
|
|
5
|
+
const TypedFunctionType_1 = require("./TypedFunctionType");
|
|
6
|
+
const IntegerType_1 = require("./IntegerType");
|
|
7
|
+
const StringType_1 = require("./StringType");
|
|
8
|
+
const VoidType_1 = require("./VoidType");
|
|
9
|
+
describe('TypedFunctionType', () => {
|
|
10
|
+
it('is equivalent to dynamic type', () => {
|
|
11
|
+
(0, chai_config_spec_1.expect)(new TypedFunctionType_1.TypedFunctionType(new VoidType_1.VoidType()).isTypeCompatible(new DynamicType_1.DynamicType())).to.be.true;
|
|
12
|
+
});
|
|
13
|
+
it('validates using param and return types', () => {
|
|
14
|
+
(0, chai_config_spec_1.expect)(new TypedFunctionType_1.TypedFunctionType(new VoidType_1.VoidType()).isTypeCompatible(new TypedFunctionType_1.TypedFunctionType(new VoidType_1.VoidType()))).to.be.true;
|
|
15
|
+
//different parameter count
|
|
16
|
+
(0, chai_config_spec_1.expect)(new TypedFunctionType_1.TypedFunctionType(new VoidType_1.VoidType()).addParameter('a', new IntegerType_1.IntegerType(), false).isTypeCompatible(new TypedFunctionType_1.TypedFunctionType(new VoidType_1.VoidType()))).to.be.false;
|
|
17
|
+
//different parameter types
|
|
18
|
+
(0, chai_config_spec_1.expect)(new TypedFunctionType_1.TypedFunctionType(new VoidType_1.VoidType()).addParameter('a', new IntegerType_1.IntegerType(), false).isTypeCompatible(new TypedFunctionType_1.TypedFunctionType(new VoidType_1.VoidType()).addParameter('a', new StringType_1.StringType(), false))).to.be.false;
|
|
19
|
+
//different return type
|
|
20
|
+
(0, chai_config_spec_1.expect)(new TypedFunctionType_1.TypedFunctionType(new VoidType_1.VoidType()).isTypeCompatible(new TypedFunctionType_1.TypedFunctionType(new IntegerType_1.IntegerType()))).to.be.false;
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
//# sourceMappingURL=TypedFunctionType.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TypedFunctionType.spec.js","sourceRoot":"","sources":["../../src/types/TypedFunctionType.spec.ts"],"names":[],"mappings":";;AAAA,0DAA6C;AAE7C,+CAA4C;AAC5C,2DAAwD;AACxD,+CAA4C;AAC5C,6CAA0C;AAC1C,yCAAsC;AAEtC,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACrC,IAAA,yBAAM,EAAC,IAAI,qCAAiB,CAAC,IAAI,mBAAQ,EAAE,CAAC,CAAC,gBAAgB,CAAC,IAAI,yBAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IACjG,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAC9C,IAAA,yBAAM,EAAC,IAAI,qCAAiB,CAAC,IAAI,mBAAQ,EAAE,CAAC,CAAC,gBAAgB,CAAC,IAAI,qCAAiB,CAAC,IAAI,mBAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAEjH,2BAA2B;QAC3B,IAAA,yBAAM,EACF,IAAI,qCAAiB,CAAC,IAAI,mBAAQ,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,yBAAW,EAAE,EAAE,KAAK,CAAC,CAAC,gBAAgB,CAC9F,IAAI,qCAAiB,CAAC,IAAI,mBAAQ,EAAE,CAAC,CACxC,CACJ,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QAEd,2BAA2B;QAC3B,IAAA,yBAAM,EACF,IAAI,qCAAiB,CAAC,IAAI,mBAAQ,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,yBAAW,EAAE,EAAE,KAAK,CAAC,CAAC,gBAAgB,CAC9F,IAAI,qCAAiB,CAAC,IAAI,mBAAQ,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,uBAAU,EAAE,EAAE,KAAK,CAAC,CACnF,CACJ,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QAEd,uBAAuB;QACvB,IAAA,yBAAM,EACF,IAAI,qCAAiB,CAAC,IAAI,mBAAQ,EAAE,CAAC,CAAC,gBAAgB,CAClD,IAAI,qCAAiB,CAAC,IAAI,yBAAW,EAAE,CAAC,CAC3C,CACJ,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IAClB,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
package/dist/types/UnionType.js
CHANGED
|
@@ -39,6 +39,9 @@ class UnionType extends BscType_1.BscType {
|
|
|
39
39
|
return {
|
|
40
40
|
getSymbolType: (innerName, innerOptions) => {
|
|
41
41
|
return (0, helpers_1.getUniqueType)((0, helpers_1.findTypeUnion)(this.getMemberTypeFromInnerTypes(name, options)), unionTypeFactory);
|
|
42
|
+
},
|
|
43
|
+
setCachedType: (innerName, innerType, innerOptions) => {
|
|
44
|
+
// TODO: is this even cachable? This is a NO-OP for now, and it shouldn't hurt anything
|
|
42
45
|
}
|
|
43
46
|
};
|
|
44
47
|
});
|
|
@@ -46,7 +49,7 @@ class UnionType extends BscType_1.BscType {
|
|
|
46
49
|
return (0, helpers_1.getUniqueType)((0, helpers_1.findTypeUnion)(innerTypesMemberTypes), unionTypeFactory);
|
|
47
50
|
}
|
|
48
51
|
isTypeCompatible(targetType) {
|
|
49
|
-
if ((0, reflection_1.isDynamicType)(targetType)) {
|
|
52
|
+
if ((0, reflection_1.isDynamicType)(targetType) || (0, reflection_1.isObjectType)(targetType)) {
|
|
50
53
|
return true;
|
|
51
54
|
}
|
|
52
55
|
if ((0, reflection_1.isUnionType)(targetType)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UnionType.js","sourceRoot":"","sources":["../../src/types/UnionType.ts"],"names":[],"mappings":";;;AACA,
|
|
1
|
+
{"version":3,"file":"UnionType.js","sourceRoot":"","sources":["../../src/types/UnionType.ts"],"names":[],"mappings":"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"}
|
package/dist/types/VoidType.js
CHANGED
|
@@ -12,7 +12,8 @@ class VoidType extends BscType_1.BscType {
|
|
|
12
12
|
}
|
|
13
13
|
isTypeCompatible(targetType) {
|
|
14
14
|
return ((0, reflection_1.isVoidType)(targetType) ||
|
|
15
|
-
(0, reflection_1.isDynamicType)(targetType)
|
|
15
|
+
(0, reflection_1.isDynamicType)(targetType) ||
|
|
16
|
+
(0, reflection_1.isObjectType)(targetType));
|
|
16
17
|
}
|
|
17
18
|
toString() {
|
|
18
19
|
var _a;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VoidType.js","sourceRoot":"","sources":["../../src/types/VoidType.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"VoidType.js","sourceRoot":"","sources":["../../src/types/VoidType.ts"],"names":[],"mappings":";;;AAAA,uDAAiF;AACjF,uCAAoC;AACpC,+CAA4C;AAE5C,MAAa,QAAS,SAAQ,iBAAO;IACjC,YACW,QAAiB;QAExB,KAAK,EAAE,CAAC;QAFD,aAAQ,GAAR,QAAQ,CAAS;QAKZ,SAAI,GAAG,yBAAW,CAAC,QAAQ,CAAC;IAF5C,CAAC;IAMM,gBAAgB,CAAC,UAAmB;QACvC,OAAO,CACH,IAAA,uBAAU,EAAC,UAAU,CAAC;YACtB,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,yBAAY,EAAC,UAAU,CAAC,CAC3B,CAAC;IACN,CAAC;IAEM,QAAQ;;QACX,OAAO,MAAA,IAAI,CAAC,QAAQ,mCAAI,MAAM,CAAC;IACnC,CAAC;IAEM,YAAY;QACf,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAEM,OAAO,CAAC,UAAmB;QAC9B,OAAO,IAAA,uBAAU,EAAC,UAAU,CAAC,CAAC;IAClC,CAAC;;AA7BL,4BA8BC;AArBiB,iBAAQ,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ export * from './DoubleType';
|
|
|
6
6
|
export * from './DynamicType';
|
|
7
7
|
export * from './EnumType';
|
|
8
8
|
export * from './FloatType';
|
|
9
|
-
export * from './
|
|
9
|
+
export * from './TypedFunctionType';
|
|
10
10
|
export * from './helpers';
|
|
11
11
|
export * from './InheritableType';
|
|
12
12
|
export * from './IntegerType';
|
package/dist/types/index.js
CHANGED
|
@@ -22,7 +22,7 @@ __exportStar(require("./DoubleType"), exports);
|
|
|
22
22
|
__exportStar(require("./DynamicType"), exports);
|
|
23
23
|
__exportStar(require("./EnumType"), exports);
|
|
24
24
|
__exportStar(require("./FloatType"), exports);
|
|
25
|
-
__exportStar(require("./
|
|
25
|
+
__exportStar(require("./TypedFunctionType"), exports);
|
|
26
26
|
__exportStar(require("./helpers"), exports);
|
|
27
27
|
__exportStar(require("./InheritableType"), exports);
|
|
28
28
|
__exportStar(require("./IntegerType"), exports);
|
package/dist/types/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,gDAA8B;AAC9B,4CAA0B;AAC1B,8CAA4B;AAC5B,+CAA6B;AAC7B,gDAA8B;AAC9B,6CAA2B;AAC3B,8CAA4B;AAC5B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,gDAA8B;AAC9B,4CAA0B;AAC1B,8CAA4B;AAC5B,+CAA6B;AAC7B,gDAA8B;AAC9B,6CAA2B;AAC3B,8CAA4B;AAC5B,sDAAoC;AACpC,4CAA0B;AAC1B,oDAAkC;AAClC,gDAA8B;AAC9B,kDAAgC;AAChC,gDAA8B;AAC9B,oDAAkC;AAClC,kDAAgC;AAChC,+CAA6B;AAC7B,kDAAgC;AAChC,+CAA6B;AAC7B,sDAAoC;AACpC,8CAA4B;AAC5B,6CAA2B"}
|
package/dist/util.d.ts
CHANGED
|
@@ -5,7 +5,6 @@ import { BooleanType } from './types/BooleanType';
|
|
|
5
5
|
import { DoubleType } from './types/DoubleType';
|
|
6
6
|
import { DynamicType } from './types/DynamicType';
|
|
7
7
|
import { FloatType } from './types/FloatType';
|
|
8
|
-
import { FunctionType } from './types/FunctionType';
|
|
9
8
|
import { IntegerType } from './types/IntegerType';
|
|
10
9
|
import { InvalidType } from './types/InvalidType';
|
|
11
10
|
import { LongIntegerType } from './types/LongIntegerType';
|
|
@@ -18,7 +17,10 @@ import type { Identifier, Locatable, Token } from './lexer/Token';
|
|
|
18
17
|
import { SourceNode } from 'source-map';
|
|
19
18
|
import type { BrsFile } from './files/BrsFile';
|
|
20
19
|
import type { XmlFile } from './files/XmlFile';
|
|
21
|
-
import type {
|
|
20
|
+
import type { AstNode } from './parser/AstNode';
|
|
21
|
+
import { type Expression, type Statement } from './parser/AstNode';
|
|
22
|
+
import type { BscType } from './types/BscType';
|
|
23
|
+
import { FunctionType } from './types/FunctionType';
|
|
22
24
|
export declare class Util {
|
|
23
25
|
clearConsole(): void;
|
|
24
26
|
/**
|
|
@@ -288,7 +290,17 @@ export declare class Util {
|
|
|
288
290
|
/**
|
|
289
291
|
* Convert a token into a BscType
|
|
290
292
|
*/
|
|
291
|
-
tokenToBscType(token: Token): DynamicType | FloatType | IntegerType | DoubleType | LongIntegerType | StringType | BooleanType | InvalidType | VoidType | FunctionType
|
|
293
|
+
tokenToBscType(token: Token): DynamicType | ObjectType | FloatType | IntegerType | DoubleType | LongIntegerType | StringType | BooleanType | InvalidType | VoidType | FunctionType;
|
|
294
|
+
isNumberType(targetType: BscType): boolean;
|
|
295
|
+
/**
|
|
296
|
+
* Return the type of the result of a binary operator
|
|
297
|
+
* Note: compound assignments (eg. +=) internally use a binary expression, so that's why TokenKind.PlusEqual, etc. are here too
|
|
298
|
+
*/
|
|
299
|
+
binaryOperatorResultType(leftType: BscType, operator: Token, rightType: BscType): BscType;
|
|
300
|
+
/**
|
|
301
|
+
* Return the type of the result of a binary operator
|
|
302
|
+
*/
|
|
303
|
+
unaryOperatorResultType(operator: Token, exprType: BscType): BscType;
|
|
292
304
|
/**
|
|
293
305
|
* Get the extension for the given file path. Basically the part after the final dot, except for
|
|
294
306
|
* `d.bs` which is treated as single extension
|
|
@@ -322,7 +334,7 @@ export declare class Util {
|
|
|
322
334
|
* @param relatedInformationFallbackLocation a default location to use for all `relatedInformation` entries that are missing a location
|
|
323
335
|
*/
|
|
324
336
|
toDiagnostic(diagnostic: Diagnostic | BsDiagnostic, relatedInformationFallbackLocation: string): {
|
|
325
|
-
severity: import("vscode-languageserver
|
|
337
|
+
severity: import("vscode-languageserver").DiagnosticSeverity;
|
|
326
338
|
range: Range;
|
|
327
339
|
message: string;
|
|
328
340
|
relatedInformation: {
|
|
@@ -359,8 +371,13 @@ export declare class Util {
|
|
|
359
371
|
* @param node any ast expression
|
|
360
372
|
* @returns an array of the parts of the dotted get. If not fully a dotted get, then returns undefined
|
|
361
373
|
*/
|
|
362
|
-
getAllDottedGetParts(node:
|
|
374
|
+
getAllDottedGetParts(node: AstNode): Identifier[] | undefined;
|
|
375
|
+
/**
|
|
376
|
+
* Given an expression, return all the DottedGet name parts as a string.
|
|
377
|
+
* Mostly used to convert namespaced item full names to a strings
|
|
378
|
+
*/
|
|
363
379
|
getAllDottedGetPartsAsString(node: Expression | Statement, parseMode?: ParseMode): string;
|
|
380
|
+
stringJoin(strings: string[], separator: string): string;
|
|
364
381
|
/**
|
|
365
382
|
* Break an expression into each part.
|
|
366
383
|
*/
|