brighterscript 0.66.0-alpha.4 → 0.66.0-alpha.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +29 -0
- package/dist/DiagnosticMessages.d.ts +21 -3
- package/dist/DiagnosticMessages.js +35 -2
- package/dist/DiagnosticMessages.js.map +1 -1
- package/dist/LanguageServer.d.ts +1 -0
- package/dist/LanguageServer.js +8 -5
- package/dist/LanguageServer.js.map +1 -1
- package/dist/Program.d.ts +20 -8
- package/dist/Program.js +107 -60
- package/dist/Program.js.map +1 -1
- package/dist/ProgramBuilder.js +14 -2
- package/dist/ProgramBuilder.js.map +1 -1
- package/dist/Scope.d.ts +15 -13
- package/dist/Scope.js +26 -65
- package/dist/Scope.js.map +1 -1
- package/dist/SymbolTable.d.ts +17 -10
- package/dist/SymbolTable.js +48 -26
- package/dist/SymbolTable.js.map +1 -1
- package/dist/XmlScope.d.ts +2 -0
- package/dist/XmlScope.js +38 -0
- package/dist/XmlScope.js.map +1 -1
- package/dist/astUtils/creators.d.ts +3 -1
- package/dist/astUtils/creators.js +14 -4
- package/dist/astUtils/creators.js.map +1 -1
- package/dist/astUtils/reflection.d.ts +24 -5
- package/dist/astUtils/reflection.js +58 -13
- package/dist/astUtils/reflection.js.map +1 -1
- package/dist/astUtils/reflection.spec.js +85 -3
- package/dist/astUtils/reflection.spec.js.map +1 -1
- package/dist/bscPlugin/CallExpressionInfo.d.ts +3 -3
- package/dist/bscPlugin/CallExpressionInfo.js.map +1 -1
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js +4 -4
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js.map +1 -1
- package/dist/bscPlugin/completions/CompletionsProcessor.d.ts +44 -1
- package/dist/bscPlugin/completions/CompletionsProcessor.js +353 -20
- package/dist/bscPlugin/completions/CompletionsProcessor.js.map +1 -1
- package/dist/bscPlugin/completions/CompletionsProcessor.spec.d.ts +1 -0
- package/dist/bscPlugin/completions/CompletionsProcessor.spec.js +1452 -0
- package/dist/bscPlugin/completions/CompletionsProcessor.spec.js.map +1 -0
- package/dist/bscPlugin/hover/HoverProcessor.d.ts +9 -4
- package/dist/bscPlugin/hover/HoverProcessor.js +64 -67
- package/dist/bscPlugin/hover/HoverProcessor.js.map +1 -1
- package/dist/bscPlugin/hover/HoverProcessor.spec.js +162 -4
- package/dist/bscPlugin/hover/HoverProcessor.spec.js.map +1 -1
- package/dist/bscPlugin/validation/BrsFileValidator.js +20 -16
- package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -1
- package/dist/bscPlugin/validation/ScopeValidator.d.ts +22 -1
- package/dist/bscPlugin/validation/ScopeValidator.js +194 -42
- package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -1
- package/dist/bscPlugin/validation/ScopeValidator.spec.js +621 -1
- package/dist/bscPlugin/validation/ScopeValidator.spec.js.map +1 -1
- package/dist/diagnosticUtils.d.ts +7 -2
- package/dist/diagnosticUtils.js +43 -15
- package/dist/diagnosticUtils.js.map +1 -1
- package/dist/files/BrsFile.Class.spec.js +10 -8
- package/dist/files/BrsFile.Class.spec.js.map +1 -1
- package/dist/files/BrsFile.d.ts +3 -20
- package/dist/files/BrsFile.js +7 -355
- package/dist/files/BrsFile.js.map +1 -1
- package/dist/files/BrsFile.spec.js +2 -248
- package/dist/files/BrsFile.spec.js.map +1 -1
- package/dist/files/XmlFile.d.ts +1 -6
- package/dist/files/XmlFile.js +0 -13
- package/dist/files/XmlFile.js.map +1 -1
- package/dist/files/XmlFile.spec.js +0 -36
- package/dist/files/XmlFile.spec.js.map +1 -1
- package/dist/globalCallables.js +1 -5
- package/dist/globalCallables.js.map +1 -1
- package/dist/interfaces.d.ts +22 -2
- package/dist/interfaces.js +4 -1
- package/dist/interfaces.js.map +1 -1
- package/dist/lexer/Lexer.d.ts +12 -0
- package/dist/lexer/Lexer.js +27 -2
- package/dist/lexer/Lexer.js.map +1 -1
- package/dist/lexer/Lexer.spec.js +40 -0
- package/dist/lexer/Lexer.spec.js.map +1 -1
- package/dist/lexer/Token.d.ts +4 -0
- package/dist/lexer/Token.js.map +1 -1
- package/dist/lexer/TokenKind.d.ts +4 -0
- package/dist/lexer/TokenKind.js +10 -1
- package/dist/lexer/TokenKind.js.map +1 -1
- package/dist/parser/AstNode.d.ts +8 -1
- package/dist/parser/AstNode.js +16 -0
- package/dist/parser/AstNode.js.map +1 -1
- package/dist/parser/Expression.d.ts +16 -1
- package/dist/parser/Expression.js +75 -11
- package/dist/parser/Expression.js.map +1 -1
- package/dist/parser/Parser.d.ts +7 -0
- package/dist/parser/Parser.js +55 -7
- package/dist/parser/Parser.js.map +1 -1
- package/dist/parser/Parser.spec.js +330 -4
- package/dist/parser/Parser.spec.js.map +1 -1
- package/dist/parser/SGTypes.d.ts +1 -1
- package/dist/parser/Statement.d.ts +18 -6
- package/dist/parser/Statement.js +54 -16
- package/dist/parser/Statement.js.map +1 -1
- package/dist/parser/tests/Parser.spec.js +2 -1
- package/dist/parser/tests/Parser.spec.js.map +1 -1
- package/dist/parser/tests/controlFlow/For.spec.js +16 -8
- package/dist/parser/tests/controlFlow/For.spec.js.map +1 -1
- package/dist/parser/tests/controlFlow/ForEach.spec.js +12 -6
- package/dist/parser/tests/controlFlow/ForEach.spec.js.map +1 -1
- package/dist/parser/tests/controlFlow/While.spec.js +8 -4
- package/dist/parser/tests/controlFlow/While.spec.js.map +1 -1
- package/dist/parser/tests/expression/Call.spec.js +4 -4
- package/dist/parser/tests/expression/Call.spec.js.map +1 -1
- package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js +13 -13
- package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js.map +1 -1
- package/dist/parser/tests/statement/ConstStatement.spec.js +1 -34
- package/dist/parser/tests/statement/ConstStatement.spec.js.map +1 -1
- package/dist/parser/tests/statement/Enum.spec.js +1 -257
- package/dist/parser/tests/statement/Enum.spec.js.map +1 -1
- package/dist/parser/tests/statement/InterfaceStatement.spec.js +8 -0
- package/dist/parser/tests/statement/InterfaceStatement.spec.js.map +1 -1
- package/dist/parser/tests/statement/PrintStatement.spec.js +6 -3
- package/dist/parser/tests/statement/PrintStatement.spec.js.map +1 -1
- package/dist/parser/tests/statement/ReturnStatement.spec.js +5 -3
- package/dist/parser/tests/statement/ReturnStatement.spec.js.map +1 -1
- package/dist/parser/tests/statement/Set.spec.js +26 -13
- package/dist/parser/tests/statement/Set.spec.js.map +1 -1
- package/dist/roku-types/data.json +156 -111
- package/dist/roku-types/index.d.ts +2 -27
- package/dist/types/ArrayType.d.ts +4 -1
- package/dist/types/ArrayType.js +43 -7
- package/dist/types/ArrayType.js.map +1 -1
- package/dist/types/ArrayType.spec.js +31 -2
- package/dist/types/ArrayType.spec.js.map +1 -1
- package/dist/types/AssociativeArrayType.d.ts +11 -0
- package/dist/types/AssociativeArrayType.js +52 -0
- package/dist/types/AssociativeArrayType.js.map +1 -0
- package/dist/types/BaseFunctionType.d.ts +2 -1
- package/dist/types/BaseFunctionType.js +1 -1
- package/dist/types/BaseFunctionType.js.map +1 -1
- package/dist/types/BooleanType.d.ts +2 -4
- package/dist/types/BooleanType.js +6 -7
- package/dist/types/BooleanType.js.map +1 -1
- package/dist/types/BscType.d.ts +8 -4
- package/dist/types/BscType.js +42 -14
- package/dist/types/BscType.js.map +1 -1
- package/dist/types/BscTypeKind.d.ts +2 -0
- package/dist/types/BscTypeKind.js +2 -0
- package/dist/types/BscTypeKind.js.map +1 -1
- package/dist/types/BuiltInInterfaceAdder.d.ts +20 -0
- package/dist/types/BuiltInInterfaceAdder.js +139 -0
- package/dist/types/BuiltInInterfaceAdder.js.map +1 -0
- package/dist/types/BuiltInInterfaceAdder.spec.d.ts +1 -0
- package/dist/types/BuiltInInterfaceAdder.spec.js +109 -0
- package/dist/types/BuiltInInterfaceAdder.spec.js.map +1 -0
- package/dist/types/ClassType.d.ts +6 -1
- package/dist/types/ClassType.js +26 -2
- package/dist/types/ClassType.js.map +1 -1
- package/dist/types/ComponentType.d.ts +26 -0
- package/dist/types/ComponentType.js +80 -0
- package/dist/types/ComponentType.js.map +1 -0
- package/dist/types/DoubleType.d.ts +2 -4
- package/dist/types/DoubleType.js +6 -7
- package/dist/types/DoubleType.js.map +1 -1
- package/dist/types/DynamicType.d.ts +2 -2
- package/dist/types/DynamicType.js +3 -1
- package/dist/types/DynamicType.js.map +1 -1
- package/dist/types/EnumType.d.ts +4 -5
- package/dist/types/EnumType.js +8 -7
- package/dist/types/EnumType.js.map +1 -1
- package/dist/types/FloatType.d.ts +2 -4
- package/dist/types/FloatType.js +6 -7
- package/dist/types/FloatType.js.map +1 -1
- package/dist/types/FunctionType.d.ts +2 -1
- package/dist/types/FunctionType.js +6 -2
- package/dist/types/FunctionType.js.map +1 -1
- package/dist/types/IntegerType.d.ts +2 -4
- package/dist/types/IntegerType.js +6 -7
- package/dist/types/IntegerType.js.map +1 -1
- package/dist/types/InterfaceType.d.ts +2 -1
- package/dist/types/InterfaceType.js +8 -4
- package/dist/types/InterfaceType.js.map +1 -1
- package/dist/types/InterfaceType.spec.js +2 -2
- package/dist/types/InvalidType.d.ts +1 -1
- package/dist/types/InvalidType.js +5 -1
- package/dist/types/InvalidType.js.map +1 -1
- package/dist/types/LongIntegerType.d.ts +2 -4
- package/dist/types/LongIntegerType.js +6 -7
- package/dist/types/LongIntegerType.js.map +1 -1
- package/dist/types/ObjectType.d.ts +3 -3
- package/dist/types/ObjectType.js +3 -1
- package/dist/types/ObjectType.js.map +1 -1
- package/dist/types/ReferenceType.d.ts +14 -0
- package/dist/types/ReferenceType.js +114 -13
- package/dist/types/ReferenceType.js.map +1 -1
- package/dist/types/ReferenceType.spec.js +15 -0
- package/dist/types/ReferenceType.spec.js.map +1 -1
- package/dist/types/StringType.d.ts +2 -4
- package/dist/types/StringType.js +5 -6
- package/dist/types/StringType.js.map +1 -1
- package/dist/types/TypedFunctionType.d.ts +2 -1
- package/dist/types/TypedFunctionType.js +10 -3
- package/dist/types/TypedFunctionType.js.map +1 -1
- package/dist/types/UninitializedType.d.ts +2 -1
- package/dist/types/UninitializedType.js +1 -1
- package/dist/types/UninitializedType.js.map +1 -1
- package/dist/types/UnionType.d.ts +4 -2
- package/dist/types/UnionType.js +25 -4
- package/dist/types/UnionType.js.map +1 -1
- package/dist/types/UnionType.spec.js +46 -19
- package/dist/types/UnionType.spec.js.map +1 -1
- package/dist/types/VoidType.d.ts +2 -1
- package/dist/types/VoidType.js +6 -2
- package/dist/types/VoidType.js.map +1 -1
- package/dist/types/helpers.d.ts +2 -0
- package/dist/types/helpers.js +18 -3
- package/dist/types/helpers.js.map +1 -1
- package/dist/util.d.ts +25 -2
- package/dist/util.js +179 -13
- package/dist/util.js.map +1 -1
- package/package.json +1 -1
package/dist/types/EnumType.js
CHANGED
|
@@ -5,6 +5,7 @@ const reflection_1 = require("../astUtils/reflection");
|
|
|
5
5
|
const BscType_1 = require("./BscType");
|
|
6
6
|
const BscTypeKind_1 = require("./BscTypeKind");
|
|
7
7
|
const DynamicType_1 = require("./DynamicType");
|
|
8
|
+
const helpers_1 = require("./helpers");
|
|
8
9
|
class EnumType extends BscType_1.BscType {
|
|
9
10
|
constructor(name,
|
|
10
11
|
/**
|
|
@@ -16,11 +17,12 @@ class EnumType extends BscType_1.BscType {
|
|
|
16
17
|
this.underlyingType = underlyingType;
|
|
17
18
|
this.kind = BscTypeKind_1.BscTypeKind.EnumType;
|
|
18
19
|
}
|
|
19
|
-
isTypeCompatible(targetType) {
|
|
20
|
+
isTypeCompatible(targetType, data) {
|
|
20
21
|
return ((0, reflection_1.isDynamicType)(targetType) ||
|
|
21
22
|
(0, reflection_1.isObjectType)(targetType) ||
|
|
22
23
|
this.isEqual(targetType) ||
|
|
23
|
-
((0, reflection_1.isEnumMemberType)(targetType) && (targetType === null || targetType === void 0 ? void 0 : targetType.enumName.toLowerCase()) === this.name.toLowerCase())
|
|
24
|
+
((0, reflection_1.isEnumMemberType)(targetType) && (targetType === null || targetType === void 0 ? void 0 : targetType.enumName.toLowerCase()) === this.name.toLowerCase()) ||
|
|
25
|
+
(0, helpers_1.isUnionTypeCompatible)(this, targetType, data));
|
|
24
26
|
}
|
|
25
27
|
toString() {
|
|
26
28
|
return this.name;
|
|
@@ -31,6 +33,9 @@ class EnumType extends BscType_1.BscType {
|
|
|
31
33
|
isEqual(targetType) {
|
|
32
34
|
return (0, reflection_1.isEnumType)(targetType) && (targetType === null || targetType === void 0 ? void 0 : targetType.name.toLowerCase()) === this.name.toLowerCase();
|
|
33
35
|
}
|
|
36
|
+
get defaultMemberType() {
|
|
37
|
+
return new EnumMemberType(this.name, 'default', this.underlyingType);
|
|
38
|
+
}
|
|
34
39
|
}
|
|
35
40
|
exports.EnumType = EnumType;
|
|
36
41
|
class EnumMemberType extends BscType_1.BscType {
|
|
@@ -51,7 +56,7 @@ class EnumMemberType extends BscType_1.BscType {
|
|
|
51
56
|
(targetType === null || targetType === void 0 ? void 0 : targetType.name.toLowerCase()) === this.enumName.toLowerCase()) ||
|
|
52
57
|
(0, reflection_1.isDynamicType)(targetType));
|
|
53
58
|
}
|
|
54
|
-
isTypeCompatible(targetType) {
|
|
59
|
+
isTypeCompatible(targetType, data) {
|
|
55
60
|
return (this.isEqual(targetType) ||
|
|
56
61
|
(0, reflection_1.isDynamicType)(targetType));
|
|
57
62
|
}
|
|
@@ -66,10 +71,6 @@ class EnumMemberType extends BscType_1.BscType {
|
|
|
66
71
|
(targetType === null || targetType === void 0 ? void 0 : targetType.enumName.toLowerCase()) === this.enumName.toLowerCase() &&
|
|
67
72
|
(targetType === null || targetType === void 0 ? void 0 : targetType.memberName.toLowerCase()) === this.memberName.toLowerCase();
|
|
68
73
|
}
|
|
69
|
-
getMemberType(memberName, options) {
|
|
70
|
-
//TODO: this should really add the appropriate interface methods from roku-types
|
|
71
|
-
return DynamicType_1.DynamicType.instance;
|
|
72
|
-
}
|
|
73
74
|
}
|
|
74
75
|
exports.EnumMemberType = EnumMemberType;
|
|
75
76
|
//# sourceMappingURL=EnumType.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EnumType.js","sourceRoot":"","sources":["../../src/types/EnumType.ts"],"names":[],"mappings":";;;AAAA,uDAAmG;AAEnG,uCAAoC;AACpC,+CAA4C;AAC5C,+CAA4C;
|
|
1
|
+
{"version":3,"file":"EnumType.js","sourceRoot":"","sources":["../../src/types/EnumType.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,13 @@
|
|
|
1
|
-
import type { GetTypeOptions } from '../interfaces';
|
|
2
1
|
import { BscType } from './BscType';
|
|
3
2
|
import { BscTypeKind } from './BscTypeKind';
|
|
4
|
-
import {
|
|
3
|
+
import type { TypeCompatibilityData } from '../interfaces';
|
|
5
4
|
export declare class FloatType extends BscType {
|
|
6
5
|
typeText?: string;
|
|
7
6
|
constructor(typeText?: string);
|
|
8
7
|
readonly kind = BscTypeKind.FloatType;
|
|
9
8
|
static instance: FloatType;
|
|
10
|
-
isTypeCompatible(targetType: BscType):
|
|
9
|
+
isTypeCompatible(targetType: BscType, data?: TypeCompatibilityData): any;
|
|
11
10
|
toString(): string;
|
|
12
11
|
toTypeString(): string;
|
|
13
12
|
isEqual(targetType: BscType): boolean;
|
|
14
|
-
getMemberType(memberName: string, options: GetTypeOptions): DynamicType;
|
|
15
13
|
}
|
package/dist/types/FloatType.js
CHANGED
|
@@ -4,20 +4,22 @@ exports.FloatType = void 0;
|
|
|
4
4
|
const reflection_1 = require("../astUtils/reflection");
|
|
5
5
|
const BscType_1 = require("./BscType");
|
|
6
6
|
const BscTypeKind_1 = require("./BscTypeKind");
|
|
7
|
-
const
|
|
7
|
+
const helpers_1 = require("./helpers");
|
|
8
|
+
const BuiltInInterfaceAdder_1 = require("./BuiltInInterfaceAdder");
|
|
8
9
|
class FloatType extends BscType_1.BscType {
|
|
9
10
|
constructor(typeText) {
|
|
10
11
|
super();
|
|
11
12
|
this.typeText = typeText;
|
|
12
13
|
this.kind = BscTypeKind_1.BscTypeKind.FloatType;
|
|
13
14
|
}
|
|
14
|
-
isTypeCompatible(targetType) {
|
|
15
|
+
isTypeCompatible(targetType, data) {
|
|
15
16
|
return ((0, reflection_1.isDynamicType)(targetType) ||
|
|
16
17
|
(0, reflection_1.isObjectType)(targetType) ||
|
|
17
18
|
(0, reflection_1.isIntegerType)(targetType) ||
|
|
18
19
|
(0, reflection_1.isFloatType)(targetType) ||
|
|
19
20
|
(0, reflection_1.isDoubleType)(targetType) ||
|
|
20
|
-
(0, reflection_1.isLongIntegerType)(targetType)
|
|
21
|
+
(0, reflection_1.isLongIntegerType)(targetType) ||
|
|
22
|
+
(0, helpers_1.isUnionTypeCompatible)(this, targetType, data));
|
|
21
23
|
}
|
|
22
24
|
toString() {
|
|
23
25
|
var _a;
|
|
@@ -29,11 +31,8 @@ class FloatType extends BscType_1.BscType {
|
|
|
29
31
|
isEqual(targetType) {
|
|
30
32
|
return (0, reflection_1.isFloatType)(targetType);
|
|
31
33
|
}
|
|
32
|
-
getMemberType(memberName, options) {
|
|
33
|
-
//TODO: this should really add the appropriate interface methods from roku-types
|
|
34
|
-
return DynamicType_1.DynamicType.instance;
|
|
35
|
-
}
|
|
36
34
|
}
|
|
37
35
|
exports.FloatType = FloatType;
|
|
38
36
|
FloatType.instance = new FloatType('float');
|
|
37
|
+
BuiltInInterfaceAdder_1.BuiltInInterfaceAdder.primitiveTypeInstanceCache.set('float', FloatType.instance);
|
|
39
38
|
//# sourceMappingURL=FloatType.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FloatType.js","sourceRoot":"","sources":["../../src/types/FloatType.ts"],"names":[],"mappings":";;;AAAA,uDAAkI;
|
|
1
|
+
{"version":3,"file":"FloatType.js","sourceRoot":"","sources":["../../src/types/FloatType.ts"],"names":[],"mappings":";;;AAAA,uDAAkI;AAClI,uCAAoC;AACpC,+CAA4C;AAC5C,uCAAkD;AAClD,mEAAgE;AAGhE,MAAa,SAAU,SAAQ,iBAAO;IAClC,YACW,QAAiB;QAExB,KAAK,EAAE,CAAC;QAFD,aAAQ,GAAR,QAAQ,CAAS;QAKZ,SAAI,GAAG,yBAAW,CAAC,SAAS,CAAC;IAF7C,CAAC;IAMM,gBAAgB,CAAC,UAAmB,EAAE,IAA4B;QACrE,OAAO,CACH,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,yBAAY,EAAC,UAAU,CAAC;YACxB,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,wBAAW,EAAC,UAAU,CAAC;YACvB,IAAA,yBAAY,EAAC,UAAU,CAAC;YACxB,IAAA,8BAAiB,EAAC,UAAU,CAAC;YAC7B,IAAA,+BAAqB,EAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,CAChD,CAAC;IAEN,CAAC;IAEM,QAAQ;;QACX,OAAO,MAAA,IAAI,CAAC,QAAQ,mCAAI,OAAO,CAAC;IACpC,CAAC;IAEM,YAAY;QACf,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAEM,OAAO,CAAC,UAAmB;QAC9B,OAAO,IAAA,wBAAW,EAAC,UAAU,CAAC,CAAC;IACnC,CAAC;;AAlCL,8BAmCC;AA1BiB,kBAAQ,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;AA4BpD,6CAAqB,CAAC,0BAA0B,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { BaseFunctionType } from './BaseFunctionType';
|
|
2
2
|
import type { BscType } from './BscType';
|
|
3
3
|
import { BscTypeKind } from './BscTypeKind';
|
|
4
|
+
import type { TypeCompatibilityData } from '../interfaces';
|
|
4
5
|
export declare class FunctionType extends BaseFunctionType {
|
|
5
6
|
typeText?: string;
|
|
6
7
|
constructor(typeText?: string);
|
|
7
8
|
readonly kind = BscTypeKind.FunctionType;
|
|
8
9
|
static instance: FunctionType;
|
|
9
|
-
isTypeCompatible(targetType: BscType): boolean;
|
|
10
|
+
isTypeCompatible(targetType: BscType, data?: TypeCompatibilityData): boolean;
|
|
10
11
|
toString(): string;
|
|
11
12
|
toTypeString(): string;
|
|
12
13
|
isEqual(targetType: BscType): boolean;
|
|
@@ -4,16 +4,19 @@ exports.FunctionType = void 0;
|
|
|
4
4
|
const reflection_1 = require("../astUtils/reflection");
|
|
5
5
|
const BaseFunctionType_1 = require("./BaseFunctionType");
|
|
6
6
|
const BscTypeKind_1 = require("./BscTypeKind");
|
|
7
|
+
const helpers_1 = require("./helpers");
|
|
8
|
+
const BuiltInInterfaceAdder_1 = require("./BuiltInInterfaceAdder");
|
|
7
9
|
class FunctionType extends BaseFunctionType_1.BaseFunctionType {
|
|
8
10
|
constructor(typeText) {
|
|
9
11
|
super();
|
|
10
12
|
this.typeText = typeText;
|
|
11
13
|
this.kind = BscTypeKind_1.BscTypeKind.FunctionType;
|
|
12
14
|
}
|
|
13
|
-
isTypeCompatible(targetType) {
|
|
15
|
+
isTypeCompatible(targetType, data) {
|
|
14
16
|
if ((0, reflection_1.isDynamicType)(targetType) ||
|
|
15
17
|
(0, reflection_1.isCallableType)(targetType) ||
|
|
16
|
-
(0, reflection_1.isObjectType)(targetType)
|
|
18
|
+
(0, reflection_1.isObjectType)(targetType) ||
|
|
19
|
+
(0, helpers_1.isUnionTypeCompatible)(this, targetType, data)) {
|
|
17
20
|
return true;
|
|
18
21
|
}
|
|
19
22
|
return false;
|
|
@@ -34,4 +37,5 @@ class FunctionType extends BaseFunctionType_1.BaseFunctionType {
|
|
|
34
37
|
}
|
|
35
38
|
exports.FunctionType = FunctionType;
|
|
36
39
|
FunctionType.instance = new FunctionType('function');
|
|
40
|
+
BuiltInInterfaceAdder_1.BuiltInInterfaceAdder.primitiveTypeInstanceCache.set('function', new FunctionType());
|
|
37
41
|
//# sourceMappingURL=FunctionType.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FunctionType.js","sourceRoot":"","sources":["../../src/types/FunctionType.ts"],"names":[],"mappings":";;;AAAA,uDAAqG;AACrG,yDAAsD;AAEtD,+CAA4C;
|
|
1
|
+
{"version":3,"file":"FunctionType.js","sourceRoot":"","sources":["../../src/types/FunctionType.ts"],"names":[],"mappings":";;;AAAA,uDAAqG;AACrG,yDAAsD;AAEtD,+CAA4C;AAC5C,uCAAkD;AAClD,mEAAgE;AAGhE,MAAa,YAAa,SAAQ,mCAAgB;IAC9C,YAAmB,QAAiB;QAChC,KAAK,EAAE,CAAC;QADO,aAAQ,GAAR,QAAQ,CAAS;QAIpB,SAAI,GAAG,yBAAW,CAAC,YAAY,CAAC;IAFhD,CAAC;IAMM,gBAAgB,CAAC,UAAmB,EAAE,IAA4B;QACrE,IACI,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,2BAAc,EAAC,UAAU,CAAC;YAC1B,IAAA,yBAAY,EAAC,UAAU,CAAC;YACxB,IAAA,+BAAqB,EAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,EAC/C;YACE,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAEM,QAAQ;QACX,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;IAE/B,CAAC;IAEM,YAAY;;QACf,OAAO,MAAA,IAAI,CAAC,QAAQ,mCAAI,UAAU,CAAC;IACvC,CAAC;IAED,OAAO,CAAC,UAAmB;QACvB,IAAI,IAAA,2BAAc,EAAC,UAAU,CAAC,EAAE;YAC5B,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;;AAnCL,oCAoCC;AA7BiB,qBAAQ,GAAG,IAAI,YAAY,CAAC,UAAU,CAAC,CAAC;AA+B1D,6CAAqB,CAAC,0BAA0B,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,YAAY,EAAE,CAAC,CAAC"}
|
|
@@ -1,15 +1,13 @@
|
|
|
1
|
-
import type { GetTypeOptions } from '../interfaces';
|
|
2
1
|
import { BscType } from './BscType';
|
|
3
2
|
import { BscTypeKind } from './BscTypeKind';
|
|
4
|
-
import {
|
|
3
|
+
import type { TypeCompatibilityData } from '../interfaces';
|
|
5
4
|
export declare class IntegerType extends BscType {
|
|
6
5
|
typeText?: string;
|
|
7
6
|
constructor(typeText?: string);
|
|
8
7
|
readonly kind = BscTypeKind.IntegerType;
|
|
9
8
|
static instance: IntegerType;
|
|
10
|
-
isTypeCompatible(targetType: BscType):
|
|
9
|
+
isTypeCompatible(targetType: BscType, data?: TypeCompatibilityData): any;
|
|
11
10
|
toString(): string;
|
|
12
11
|
toTypeString(): string;
|
|
13
12
|
isEqual(otherType: BscType): boolean;
|
|
14
|
-
getMemberType(memberName: string, options: GetTypeOptions): DynamicType;
|
|
15
13
|
}
|
|
@@ -4,20 +4,22 @@ exports.IntegerType = void 0;
|
|
|
4
4
|
const reflection_1 = require("../astUtils/reflection");
|
|
5
5
|
const BscType_1 = require("./BscType");
|
|
6
6
|
const BscTypeKind_1 = require("./BscTypeKind");
|
|
7
|
-
const
|
|
7
|
+
const helpers_1 = require("./helpers");
|
|
8
|
+
const BuiltInInterfaceAdder_1 = require("./BuiltInInterfaceAdder");
|
|
8
9
|
class IntegerType extends BscType_1.BscType {
|
|
9
10
|
constructor(typeText) {
|
|
10
11
|
super();
|
|
11
12
|
this.typeText = typeText;
|
|
12
13
|
this.kind = BscTypeKind_1.BscTypeKind.IntegerType;
|
|
13
14
|
}
|
|
14
|
-
isTypeCompatible(targetType) {
|
|
15
|
+
isTypeCompatible(targetType, data) {
|
|
15
16
|
return ((0, reflection_1.isDynamicType)(targetType) ||
|
|
16
17
|
(0, reflection_1.isObjectType)(targetType) ||
|
|
17
18
|
(0, reflection_1.isIntegerType)(targetType) ||
|
|
18
19
|
(0, reflection_1.isFloatType)(targetType) ||
|
|
19
20
|
(0, reflection_1.isDoubleType)(targetType) ||
|
|
20
|
-
(0, reflection_1.isLongIntegerType)(targetType)
|
|
21
|
+
(0, reflection_1.isLongIntegerType)(targetType) ||
|
|
22
|
+
(0, helpers_1.isUnionTypeCompatible)(this, targetType, data));
|
|
21
23
|
}
|
|
22
24
|
toString() {
|
|
23
25
|
var _a;
|
|
@@ -29,11 +31,8 @@ class IntegerType extends BscType_1.BscType {
|
|
|
29
31
|
isEqual(otherType) {
|
|
30
32
|
return (0, reflection_1.isIntegerType)(otherType);
|
|
31
33
|
}
|
|
32
|
-
getMemberType(memberName, options) {
|
|
33
|
-
//TODO: this should really add the appropriate interface methods from roku-types
|
|
34
|
-
return DynamicType_1.DynamicType.instance;
|
|
35
|
-
}
|
|
36
34
|
}
|
|
37
35
|
exports.IntegerType = IntegerType;
|
|
38
36
|
IntegerType.instance = new IntegerType('integer');
|
|
37
|
+
BuiltInInterfaceAdder_1.BuiltInInterfaceAdder.primitiveTypeInstanceCache.set('integer', IntegerType.instance);
|
|
39
38
|
//# sourceMappingURL=IntegerType.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IntegerType.js","sourceRoot":"","sources":["../../src/types/IntegerType.ts"],"names":[],"mappings":";;;AAAA,uDAAkI;
|
|
1
|
+
{"version":3,"file":"IntegerType.js","sourceRoot":"","sources":["../../src/types/IntegerType.ts"],"names":[],"mappings":";;;AAAA,uDAAkI;AAClI,uCAAoC;AACpC,+CAA4C;AAC5C,uCAAkD;AAClD,mEAAgE;AAGhE,MAAa,WAAY,SAAQ,iBAAO;IACpC,YACW,QAAiB;QAExB,KAAK,EAAE,CAAC;QAFD,aAAQ,GAAR,QAAQ,CAAS;QAKZ,SAAI,GAAG,yBAAW,CAAC,WAAW,CAAC;IAF/C,CAAC;IAMM,gBAAgB,CAAC,UAAmB,EAAE,IAA4B;QACrE,OAAO,CACH,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,yBAAY,EAAC,UAAU,CAAC;YACxB,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,wBAAW,EAAC,UAAU,CAAC;YACvB,IAAA,yBAAY,EAAC,UAAU,CAAC;YACxB,IAAA,8BAAiB,EAAC,UAAU,CAAC;YAC7B,IAAA,+BAAqB,EAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,CAChD,CAAC;IACN,CAAC;IAEM,QAAQ;;QACX,OAAO,MAAA,IAAI,CAAC,QAAQ,mCAAI,SAAS,CAAC;IACtC,CAAC;IAEM,YAAY;QACf,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAED,OAAO,CAAC,SAAkB;QACtB,OAAO,IAAA,0BAAa,EAAC,SAAS,CAAC,CAAC;IACpC,CAAC;;AAjCL,kCAkCC;AAzBiB,oBAAQ,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC;AA2BxD,6CAAqB,CAAC,0BAA0B,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { TypeCompatibilityData } from '..';
|
|
1
2
|
import type { BscType } from './BscType';
|
|
2
3
|
import { BscTypeKind } from './BscTypeKind';
|
|
3
4
|
import { InheritableType } from './InheritableType';
|
|
@@ -6,7 +7,7 @@ export declare class InterfaceType extends InheritableType {
|
|
|
6
7
|
readonly superInterface?: BscType;
|
|
7
8
|
constructor(name: string, superInterface?: BscType);
|
|
8
9
|
readonly kind = BscTypeKind.InterfaceType;
|
|
9
|
-
isTypeCompatible(targetType: BscType): boolean;
|
|
10
|
+
isTypeCompatible(targetType: BscType, data?: TypeCompatibilityData): boolean;
|
|
10
11
|
/**
|
|
11
12
|
* Is this the exact same interface as the target?
|
|
12
13
|
*/
|
|
@@ -5,6 +5,7 @@ const SymbolTable_1 = require("../SymbolTable");
|
|
|
5
5
|
const reflection_1 = require("../astUtils/reflection");
|
|
6
6
|
const BscTypeKind_1 = require("./BscTypeKind");
|
|
7
7
|
const InheritableType_1 = require("./InheritableType");
|
|
8
|
+
const helpers_1 = require("./helpers");
|
|
8
9
|
class InterfaceType extends InheritableType_1.InheritableType {
|
|
9
10
|
constructor(name, superInterface) {
|
|
10
11
|
super(name, superInterface);
|
|
@@ -12,8 +13,11 @@ class InterfaceType extends InheritableType_1.InheritableType {
|
|
|
12
13
|
this.superInterface = superInterface;
|
|
13
14
|
this.kind = BscTypeKind_1.BscTypeKind.InterfaceType;
|
|
14
15
|
}
|
|
15
|
-
isTypeCompatible(targetType) {
|
|
16
|
-
if ((0, reflection_1.isDynamicType)(targetType) || (0, reflection_1.isObjectType)(targetType)) {
|
|
16
|
+
isTypeCompatible(targetType, data) {
|
|
17
|
+
if ((0, reflection_1.isDynamicType)(targetType) || (0, reflection_1.isObjectType)(targetType) || (0, helpers_1.isUnionTypeCompatible)(this, targetType, data)) {
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
if ((0, reflection_1.isAssociativeArrayType)(targetType) && this.name.toLowerCase() === 'roassociativearray') {
|
|
17
21
|
return true;
|
|
18
22
|
}
|
|
19
23
|
//TODO: We need to make sure that things don't get assigned to built-in types
|
|
@@ -24,8 +28,8 @@ class InterfaceType extends InheritableType_1.InheritableType {
|
|
|
24
28
|
if (ancestorTypes === null || ancestorTypes === void 0 ? void 0 : ancestorTypes.find(ancestorType => ancestorType.isEqual(targetType))) {
|
|
25
29
|
return true;
|
|
26
30
|
}
|
|
27
|
-
if ((0, reflection_1.isInheritableType)(targetType) || (0, reflection_1.isUnionType)(targetType)) {
|
|
28
|
-
return this.checkCompatibilityBasedOnMembers(targetType, SymbolTable_1.SymbolTypeFlag.runtime);
|
|
31
|
+
if ((0, reflection_1.isInheritableType)(targetType) || (0, reflection_1.isUnionType)(targetType) || (0, reflection_1.isAssociativeArrayType)(targetType)) {
|
|
32
|
+
return this.checkCompatibilityBasedOnMembers(targetType, SymbolTable_1.SymbolTypeFlag.runtime, data);
|
|
29
33
|
}
|
|
30
34
|
return false;
|
|
31
35
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InterfaceType.js","sourceRoot":"","sources":["../../src/types/InterfaceType.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"InterfaceType.js","sourceRoot":"","sources":["../../src/types/InterfaceType.ts"],"names":[],"mappings":";;;AACA,gDAAgD;AAChD,uDAA8I;AAE9I,+CAA4C;AAC5C,uDAAoD;AACpD,uCAAkD;AAElD,MAAa,aAAc,SAAQ,iCAAe;IAC9C,YACW,IAAY,EACH,cAAwB;QAExC,KAAK,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QAHrB,SAAI,GAAJ,IAAI,CAAQ;QACH,mBAAc,GAAd,cAAc,CAAU;QAK5B,SAAI,GAAG,yBAAW,CAAC,aAAa,CAAC;IAFjD,CAAC;IAIM,gBAAgB,CAAC,UAAmB,EAAE,IAA4B;QACrE,IAAI,IAAA,0BAAa,EAAC,UAAU,CAAC,IAAI,IAAA,yBAAY,EAAC,UAAU,CAAC,IAAI,IAAA,+BAAqB,EAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE;YACxG,OAAO,IAAI,CAAC;SACf;QACD,IAAI,IAAA,mCAAsB,EAAC,UAAU,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,oBAAoB,EAAE;YACxF,OAAO,IAAI,CAAC;SACf;QACD,6EAA6E;QAC7E,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YAC1B,OAAO,IAAI,CAAC;SACf;QACD,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACjD,IAAI,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE;YACvE,OAAO,IAAI,CAAC;SACf;QACD,IAAI,IAAA,8BAAiB,EAAC,UAAU,CAAC,IAAI,IAAA,wBAAW,EAAC,UAAU,CAAC,IAAI,IAAA,mCAAsB,EAAC,UAAU,CAAC,EAAE;YAChG,OAAO,IAAI,CAAC,gCAAgC,CAAC,UAAU,EAAE,4BAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;SAC1F;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,UAAmB;QACvB,OAAO,IAAA,4BAAe,EAAC,UAAU,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IACpG,CAAC;CACJ;AArCD,sCAqCC"}
|
|
@@ -172,14 +172,14 @@ function iface(members, name, parentType) {
|
|
|
172
172
|
}
|
|
173
173
|
return ifaceType;
|
|
174
174
|
}
|
|
175
|
-
function expectCompatible(
|
|
175
|
+
function expectCompatible(sourceMembers, targetMembers) {
|
|
176
176
|
const targetIface = iface(targetMembers);
|
|
177
177
|
const sourceIface = iface(sourceMembers);
|
|
178
178
|
if (!sourceIface.isTypeCompatible(targetIface)) {
|
|
179
179
|
sinon_1.assert.fail(`expected type ${targetIface.toJSString()} to be assignable to type ${sourceIface.toJSString()}`);
|
|
180
180
|
}
|
|
181
181
|
}
|
|
182
|
-
function expectNotCompatible(
|
|
182
|
+
function expectNotCompatible(sourceMembers, targetMembers) {
|
|
183
183
|
const targetIface = iface(targetMembers);
|
|
184
184
|
const sourceIface = iface(sourceMembers);
|
|
185
185
|
if (sourceIface.isTypeCompatible(targetIface)) {
|
|
@@ -5,7 +5,7 @@ export declare class InvalidType extends BscType {
|
|
|
5
5
|
constructor(typeText?: string);
|
|
6
6
|
readonly kind = BscTypeKind.InvalidType;
|
|
7
7
|
static instance: InvalidType;
|
|
8
|
-
isTypeCompatible(targetType: BscType):
|
|
8
|
+
isTypeCompatible(targetType: BscType): any;
|
|
9
9
|
toString(): string;
|
|
10
10
|
toTypeString(): string;
|
|
11
11
|
isEqual(targetType: BscType): boolean;
|
|
@@ -4,6 +4,8 @@ exports.InvalidType = void 0;
|
|
|
4
4
|
const reflection_1 = require("../astUtils/reflection");
|
|
5
5
|
const BscType_1 = require("./BscType");
|
|
6
6
|
const BscTypeKind_1 = require("./BscTypeKind");
|
|
7
|
+
const helpers_1 = require("./helpers");
|
|
8
|
+
const BuiltInInterfaceAdder_1 = require("./BuiltInInterfaceAdder");
|
|
7
9
|
class InvalidType extends BscType_1.BscType {
|
|
8
10
|
constructor(typeText) {
|
|
9
11
|
super();
|
|
@@ -13,7 +15,8 @@ class InvalidType extends BscType_1.BscType {
|
|
|
13
15
|
isTypeCompatible(targetType) {
|
|
14
16
|
return ((0, reflection_1.isInvalidType)(targetType) ||
|
|
15
17
|
(0, reflection_1.isDynamicType)(targetType) ||
|
|
16
|
-
(0, reflection_1.isObjectType)(targetType)
|
|
18
|
+
(0, reflection_1.isObjectType)(targetType) ||
|
|
19
|
+
(0, helpers_1.isUnionTypeCompatible)(this, targetType));
|
|
17
20
|
}
|
|
18
21
|
toString() {
|
|
19
22
|
var _a;
|
|
@@ -28,4 +31,5 @@ class InvalidType extends BscType_1.BscType {
|
|
|
28
31
|
}
|
|
29
32
|
exports.InvalidType = InvalidType;
|
|
30
33
|
InvalidType.instance = new InvalidType('invalid');
|
|
34
|
+
BuiltInInterfaceAdder_1.BuiltInInterfaceAdder.primitiveTypeInstanceCache.set('invalid', InvalidType.instance);
|
|
31
35
|
//# sourceMappingURL=InvalidType.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InvalidType.js","sourceRoot":"","sources":["../../src/types/InvalidType.ts"],"names":[],"mappings":";;;AAAA,uDAAoF;AACpF,uCAAoC;AACpC,+CAA4C;
|
|
1
|
+
{"version":3,"file":"InvalidType.js","sourceRoot":"","sources":["../../src/types/InvalidType.ts"],"names":[],"mappings":";;;AAAA,uDAAoF;AACpF,uCAAoC;AACpC,+CAA4C;AAC5C,uCAAkD;AAClD,mEAAgE;AAEhE,MAAa,WAAY,SAAQ,iBAAO;IACpC,YACW,QAAiB;QAExB,KAAK,EAAE,CAAC;QAFD,aAAQ,GAAR,QAAQ,CAAS;QAKZ,SAAI,GAAG,yBAAW,CAAC,WAAW,CAAC;IAF/C,CAAC;IAMM,gBAAgB,CAAC,UAAmB;QACvC,OAAO,CACH,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,yBAAY,EAAC,UAAU,CAAC;YACxB,IAAA,+BAAqB,EAAC,IAAI,EAAE,UAAU,CAAC,CAC1C,CAAC;IACN,CAAC;IAEM,QAAQ;;QACX,OAAO,MAAA,IAAI,CAAC,QAAQ,mCAAI,SAAS,CAAC;IACtC,CAAC;IAEM,YAAY;QACf,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAED,OAAO,CAAC,UAAmB;QACvB,OAAO,IAAA,0BAAa,EAAC,UAAU,CAAC,CAAC;IACrC,CAAC;;AA9BL,kCA+BC;AAtBiB,oBAAQ,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC;AAwBxD,6CAAqB,CAAC,0BAA0B,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC"}
|
|
@@ -1,15 +1,13 @@
|
|
|
1
|
-
import type { GetTypeOptions } from '../interfaces';
|
|
2
1
|
import { BscType } from './BscType';
|
|
3
2
|
import { BscTypeKind } from './BscTypeKind';
|
|
4
|
-
import {
|
|
3
|
+
import type { TypeCompatibilityData } from '../interfaces';
|
|
5
4
|
export declare class LongIntegerType extends BscType {
|
|
6
5
|
typeText?: string;
|
|
7
6
|
constructor(typeText?: string);
|
|
8
7
|
readonly kind = BscTypeKind.LongIntegerType;
|
|
9
8
|
static instance: LongIntegerType;
|
|
10
|
-
isTypeCompatible(targetType: BscType):
|
|
9
|
+
isTypeCompatible(targetType: BscType, data?: TypeCompatibilityData): any;
|
|
11
10
|
toString(): string;
|
|
12
11
|
toTypeString(): string;
|
|
13
12
|
isEqual(targetType: BscType): boolean;
|
|
14
|
-
getMemberType(memberName: string, options: GetTypeOptions): DynamicType;
|
|
15
13
|
}
|
|
@@ -4,20 +4,22 @@ exports.LongIntegerType = void 0;
|
|
|
4
4
|
const reflection_1 = require("../astUtils/reflection");
|
|
5
5
|
const BscType_1 = require("./BscType");
|
|
6
6
|
const BscTypeKind_1 = require("./BscTypeKind");
|
|
7
|
-
const
|
|
7
|
+
const helpers_1 = require("./helpers");
|
|
8
|
+
const BuiltInInterfaceAdder_1 = require("./BuiltInInterfaceAdder");
|
|
8
9
|
class LongIntegerType extends BscType_1.BscType {
|
|
9
10
|
constructor(typeText) {
|
|
10
11
|
super();
|
|
11
12
|
this.typeText = typeText;
|
|
12
13
|
this.kind = BscTypeKind_1.BscTypeKind.LongIntegerType;
|
|
13
14
|
}
|
|
14
|
-
isTypeCompatible(targetType) {
|
|
15
|
+
isTypeCompatible(targetType, data) {
|
|
15
16
|
return ((0, reflection_1.isDynamicType)(targetType) ||
|
|
16
17
|
(0, reflection_1.isObjectType)(targetType) ||
|
|
17
18
|
(0, reflection_1.isIntegerType)(targetType) ||
|
|
18
19
|
(0, reflection_1.isFloatType)(targetType) ||
|
|
19
20
|
(0, reflection_1.isDoubleType)(targetType) ||
|
|
20
|
-
(0, reflection_1.isLongIntegerType)(targetType)
|
|
21
|
+
(0, reflection_1.isLongIntegerType)(targetType) ||
|
|
22
|
+
(0, helpers_1.isUnionTypeCompatible)(this, targetType, data));
|
|
21
23
|
}
|
|
22
24
|
toString() {
|
|
23
25
|
var _a;
|
|
@@ -29,11 +31,8 @@ class LongIntegerType extends BscType_1.BscType {
|
|
|
29
31
|
isEqual(targetType) {
|
|
30
32
|
return (0, reflection_1.isLongIntegerType)(targetType);
|
|
31
33
|
}
|
|
32
|
-
getMemberType(memberName, options) {
|
|
33
|
-
//TODO: this should really add the appropriate interface methods from roku-types
|
|
34
|
-
return DynamicType_1.DynamicType.instance;
|
|
35
|
-
}
|
|
36
34
|
}
|
|
37
35
|
exports.LongIntegerType = LongIntegerType;
|
|
38
36
|
LongIntegerType.instance = new LongIntegerType('longinteger');
|
|
37
|
+
BuiltInInterfaceAdder_1.BuiltInInterfaceAdder.primitiveTypeInstanceCache.set('longinteger', LongIntegerType.instance);
|
|
39
38
|
//# sourceMappingURL=LongIntegerType.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LongIntegerType.js","sourceRoot":"","sources":["../../src/types/LongIntegerType.ts"],"names":[],"mappings":";;;AAAA,uDAAkI;
|
|
1
|
+
{"version":3,"file":"LongIntegerType.js","sourceRoot":"","sources":["../../src/types/LongIntegerType.ts"],"names":[],"mappings":";;;AAAA,uDAAkI;AAClI,uCAAoC;AACpC,+CAA4C;AAC5C,uCAAkD;AAClD,mEAAgE;AAGhE,MAAa,eAAgB,SAAQ,iBAAO;IACxC,YACW,QAAiB;QAExB,KAAK,EAAE,CAAC;QAFD,aAAQ,GAAR,QAAQ,CAAS;QAKZ,SAAI,GAAG,yBAAW,CAAC,eAAe,CAAC;IAFnD,CAAC;IAMM,gBAAgB,CAAC,UAAmB,EAAE,IAA4B;QACrE,OAAO,CACH,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,yBAAY,EAAC,UAAU,CAAC;YACxB,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,wBAAW,EAAC,UAAU,CAAC;YACvB,IAAA,yBAAY,EAAC,UAAU,CAAC;YACxB,IAAA,8BAAiB,EAAC,UAAU,CAAC;YAC7B,IAAA,+BAAqB,EAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,CAChD,CAAC;IACN,CAAC;IAEM,QAAQ;;QACX,OAAO,MAAA,IAAI,CAAC,QAAQ,mCAAI,aAAa,CAAC;IAC1C,CAAC;IAEM,YAAY;QACf,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAED,OAAO,CAAC,UAAmB;QACvB,OAAO,IAAA,8BAAiB,EAAC,UAAU,CAAC,CAAC;IACzC,CAAC;;AAjCL,0CAkCC;AAzBiB,wBAAQ,GAAG,IAAI,eAAe,CAAC,aAAa,CAAC,CAAC;AA2BhE,6CAAqB,CAAC,0BAA0B,CAAC,GAAG,CAAC,aAAa,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import type { GetTypeOptions } from '../interfaces';
|
|
1
|
+
import type { GetTypeOptions, TypeCompatibilityData } from '../interfaces';
|
|
2
2
|
import { BscType } from './BscType';
|
|
3
3
|
import { BscTypeKind } from './BscTypeKind';
|
|
4
4
|
export declare class ObjectType extends BscType {
|
|
5
5
|
typeText?: string;
|
|
6
6
|
constructor(typeText?: string);
|
|
7
7
|
readonly kind = BscTypeKind.ObjectType;
|
|
8
|
-
isTypeCompatible(targetType: BscType): boolean;
|
|
8
|
+
isTypeCompatible(targetType: BscType, data?: TypeCompatibilityData): boolean;
|
|
9
9
|
toString(): string;
|
|
10
10
|
toTypeString(): string;
|
|
11
11
|
getMemberType(name: string, options: GetTypeOptions): BscType;
|
|
12
|
-
isEqual(otherType: BscType):
|
|
12
|
+
isEqual(otherType: BscType): boolean;
|
|
13
13
|
}
|
package/dist/types/ObjectType.js
CHANGED
|
@@ -5,6 +5,7 @@ const SymbolTable_1 = require("../SymbolTable");
|
|
|
5
5
|
const reflection_1 = require("../astUtils/reflection");
|
|
6
6
|
const BscType_1 = require("./BscType");
|
|
7
7
|
const BscTypeKind_1 = require("./BscTypeKind");
|
|
8
|
+
const BuiltInInterfaceAdder_1 = require("./BuiltInInterfaceAdder");
|
|
8
9
|
const DynamicType_1 = require("./DynamicType");
|
|
9
10
|
class ObjectType extends BscType_1.BscType {
|
|
10
11
|
constructor(typeText) {
|
|
@@ -12,7 +13,7 @@ class ObjectType extends BscType_1.BscType {
|
|
|
12
13
|
this.typeText = typeText;
|
|
13
14
|
this.kind = BscTypeKind_1.BscTypeKind.ObjectType;
|
|
14
15
|
}
|
|
15
|
-
isTypeCompatible(targetType) {
|
|
16
|
+
isTypeCompatible(targetType, data) {
|
|
16
17
|
//Brightscript allows anything passed "as object", so as long as a type is provided, this is true
|
|
17
18
|
return !!targetType;
|
|
18
19
|
}
|
|
@@ -34,4 +35,5 @@ class ObjectType extends BscType_1.BscType {
|
|
|
34
35
|
}
|
|
35
36
|
}
|
|
36
37
|
exports.ObjectType = ObjectType;
|
|
38
|
+
BuiltInInterfaceAdder_1.BuiltInInterfaceAdder.primitiveTypeInstanceCache.set('object', new ObjectType('object'));
|
|
37
39
|
//# sourceMappingURL=ObjectType.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObjectType.js","sourceRoot":"","sources":["../../src/types/ObjectType.ts"],"names":[],"mappings":";;;AAAA,gDAAgD;AAChD,uDAAsD;AAEtD,uCAAoC;AACpC,+CAA4C;AAC5C,+CAA4C;AAE5C,MAAa,UAAW,SAAQ,iBAAO;IACnC,YACW,QAAiB;QAExB,KAAK,EAAE,CAAC;QAFD,aAAQ,GAAR,QAAQ,CAAS;QAKZ,SAAI,GAAG,yBAAW,CAAC,UAAU,CAAC;IAF9C,CAAC;IAIM,gBAAgB,CAAC,UAAmB;
|
|
1
|
+
{"version":3,"file":"ObjectType.js","sourceRoot":"","sources":["../../src/types/ObjectType.ts"],"names":[],"mappings":";;;AAAA,gDAAgD;AAChD,uDAAsD;AAEtD,uCAAoC;AACpC,+CAA4C;AAC5C,mEAAgE;AAChE,+CAA4C;AAE5C,MAAa,UAAW,SAAQ,iBAAO;IACnC,YACW,QAAiB;QAExB,KAAK,EAAE,CAAC;QAFD,aAAQ,GAAR,QAAQ,CAAS;QAKZ,SAAI,GAAG,yBAAW,CAAC,UAAU,CAAC;IAF9C,CAAC;IAIM,gBAAgB,CAAC,UAAmB,EAAE,IAA4B;QACrE,iGAAiG;QACjG,OAAO,CAAC,CAAC,UAAU,CAAC;IACxB,CAAC;IAEM,QAAQ;;QACX,OAAO,MAAA,IAAI,CAAC,QAAQ,mCAAI,QAAQ,CAAC;IACrC,CAAC;IAEM,YAAY;QACf,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAED,aAAa,CAAC,IAAY,EAAE,OAAuB;;QAC/C,gEAAgE;QAChE,mHAAmH;QACnH,OAAO,MAAA,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,mCAAI,yBAAW,CAAC,QAAQ,CAAC;IACtE,CAAC;IAED,OAAO,CAAC,SAAkB;QACtB,OAAO,IAAA,yBAAY,EAAC,SAAS,CAAC,IAAI,IAAI,CAAC,gCAAgC,CAAC,SAAS,EAAE,4BAAc,CAAC,OAAO,CAAC,CAAC;IAC/G,CAAC;CACJ;AA/BD,gCA+BC;AAGD,6CAAqB,CAAC,0BAA0B,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC"}
|
|
@@ -2,6 +2,7 @@ import type { SymbolTypeGetterProvider } from '../SymbolTable';
|
|
|
2
2
|
import type { SymbolTypeFlag } from '../SymbolTable';
|
|
3
3
|
import { BscType } from './BscType';
|
|
4
4
|
import { BscTypeKind } from './BscTypeKind';
|
|
5
|
+
import type { Token } from '../lexer/Token';
|
|
5
6
|
export declare function referenceTypeFactory(memberKey: string, fullName: any, flags: SymbolTypeFlag, tableProvider: SymbolTypeGetterProvider): ReferenceType;
|
|
6
7
|
export declare class ReferenceType extends BscType {
|
|
7
8
|
memberKey: string;
|
|
@@ -29,7 +30,9 @@ export declare class ReferenceType extends BscType {
|
|
|
29
30
|
private referenceChain;
|
|
30
31
|
private propertyTypeReference;
|
|
31
32
|
private memberTypeReferences;
|
|
33
|
+
private callFuncMemberTypeReferences;
|
|
32
34
|
private futureMemberTableProvider;
|
|
35
|
+
private futureCallFuncMemberTableProvider;
|
|
33
36
|
}
|
|
34
37
|
/**
|
|
35
38
|
* Use this class for when you need to reference a property of a BscType, and that property is also a BscType,
|
|
@@ -47,3 +50,14 @@ export declare class TypePropertyReferenceType extends BscType {
|
|
|
47
50
|
propertyName: string;
|
|
48
51
|
constructor(outerType: BscType, propertyName: string);
|
|
49
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* Use this class for when there is a binary operator and either the left hand side and/or the right hand side
|
|
55
|
+
* are ReferenceTypes
|
|
56
|
+
*/
|
|
57
|
+
export declare class BinaryOperatorReferenceType extends BscType {
|
|
58
|
+
leftType: BscType;
|
|
59
|
+
operator: Token;
|
|
60
|
+
rightType: BscType;
|
|
61
|
+
cachedType: BscType;
|
|
62
|
+
constructor(leftType: BscType, operator: Token, rightType: BscType, binaryOpResolver: (lType: BscType, operator: Token, rType: BscType) => BscType);
|
|
63
|
+
}
|