brighterscript 0.66.0-alpha.3 → 0.66.0-alpha.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +56 -0
- package/dist/BusyStatusTracker.d.ts +31 -0
- package/dist/BusyStatusTracker.js +83 -0
- package/dist/BusyStatusTracker.js.map +1 -0
- package/dist/DiagnosticMessages.d.ts +6 -1
- package/dist/DiagnosticMessages.js +5 -0
- package/dist/DiagnosticMessages.js.map +1 -1
- package/dist/LanguageServer.d.ts +18 -0
- package/dist/LanguageServer.js +126 -57
- package/dist/LanguageServer.js.map +1 -1
- package/dist/Logger.d.ts +1 -1
- package/dist/Logger.js.map +1 -1
- package/dist/Program.d.ts +3 -8
- package/dist/Program.js +13 -55
- package/dist/Program.js.map +1 -1
- package/dist/ProgramBuilder.js +14 -2
- package/dist/ProgramBuilder.js.map +1 -1
- package/dist/Scope.d.ts +1 -13
- package/dist/Scope.js +10 -65
- package/dist/Scope.js.map +1 -1
- package/dist/SymbolTable.d.ts +12 -10
- package/dist/SymbolTable.js +33 -24
- package/dist/SymbolTable.js.map +1 -1
- package/dist/Throttler.d.ts +12 -0
- package/dist/Throttler.js +39 -0
- package/dist/Throttler.js.map +1 -1
- package/dist/astUtils/creators.js +5 -3
- package/dist/astUtils/creators.js.map +1 -1
- package/dist/astUtils/reflection.d.ts +3 -1
- package/dist/astUtils/reflection.js +12 -1
- package/dist/astUtils/reflection.js.map +1 -1
- package/dist/astUtils/reflection.spec.js +2 -1
- package/dist/astUtils/reflection.spec.js.map +1 -1
- package/dist/bscPlugin/CallExpressionInfo.d.ts +3 -3
- package/dist/bscPlugin/CallExpressionInfo.js.map +1 -1
- package/dist/bscPlugin/completions/CompletionsProcessor.d.ts +39 -1
- package/dist/bscPlugin/completions/CompletionsProcessor.js +305 -3
- package/dist/bscPlugin/completions/CompletionsProcessor.js.map +1 -1
- package/dist/bscPlugin/completions/CompletionsProcessor.spec.d.ts +1 -0
- package/dist/bscPlugin/completions/CompletionsProcessor.spec.js +1369 -0
- package/dist/bscPlugin/completions/CompletionsProcessor.spec.js.map +1 -0
- package/dist/bscPlugin/hover/HoverProcessor.d.ts +9 -4
- package/dist/bscPlugin/hover/HoverProcessor.js +64 -67
- package/dist/bscPlugin/hover/HoverProcessor.js.map +1 -1
- package/dist/bscPlugin/hover/HoverProcessor.spec.js +107 -4
- package/dist/bscPlugin/hover/HoverProcessor.spec.js.map +1 -1
- package/dist/bscPlugin/validation/BrsFileValidator.js +18 -15
- package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -1
- package/dist/bscPlugin/validation/ScopeValidator.d.ts +10 -1
- package/dist/bscPlugin/validation/ScopeValidator.js +85 -42
- package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -1
- package/dist/bscPlugin/validation/ScopeValidator.spec.js +307 -0
- package/dist/bscPlugin/validation/ScopeValidator.spec.js.map +1 -1
- package/dist/cli.js +9 -1
- package/dist/cli.js.map +1 -1
- package/dist/deferred.d.ts +1 -1
- package/dist/deferred.js.map +1 -1
- package/dist/diagnosticUtils.d.ts +7 -2
- package/dist/diagnosticUtils.js +43 -15
- package/dist/diagnosticUtils.js.map +1 -1
- package/dist/files/BrsFile.Class.spec.js +10 -8
- package/dist/files/BrsFile.Class.spec.js.map +1 -1
- package/dist/files/BrsFile.d.ts +3 -20
- package/dist/files/BrsFile.js +7 -355
- package/dist/files/BrsFile.js.map +1 -1
- package/dist/files/BrsFile.spec.js +2 -248
- package/dist/files/BrsFile.spec.js.map +1 -1
- package/dist/files/XmlFile.d.ts +1 -6
- package/dist/files/XmlFile.js +0 -13
- package/dist/files/XmlFile.js.map +1 -1
- package/dist/files/XmlFile.spec.js +0 -36
- package/dist/files/XmlFile.spec.js.map +1 -1
- package/dist/globalCallables.js +9 -1
- package/dist/globalCallables.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/interfaces.d.ts +12 -1
- package/dist/interfaces.js.map +1 -1
- package/dist/lexer/Lexer.d.ts +12 -0
- package/dist/lexer/Lexer.js +27 -2
- package/dist/lexer/Lexer.js.map +1 -1
- package/dist/lexer/Lexer.spec.js +40 -0
- package/dist/lexer/Lexer.spec.js.map +1 -1
- package/dist/lexer/Token.d.ts +4 -0
- package/dist/lexer/Token.js.map +1 -1
- package/dist/lexer/TokenKind.d.ts +4 -0
- package/dist/lexer/TokenKind.js +10 -1
- package/dist/lexer/TokenKind.js.map +1 -1
- package/dist/parser/AstNode.d.ts +8 -1
- package/dist/parser/AstNode.js +16 -0
- package/dist/parser/AstNode.js.map +1 -1
- package/dist/parser/Expression.d.ts +16 -1
- package/dist/parser/Expression.js +43 -1
- package/dist/parser/Expression.js.map +1 -1
- package/dist/parser/Parser.d.ts +7 -0
- package/dist/parser/Parser.js +46 -6
- package/dist/parser/Parser.js.map +1 -1
- package/dist/parser/Parser.spec.js +327 -3
- package/dist/parser/Parser.spec.js.map +1 -1
- package/dist/parser/SGTypes.d.ts +1 -1
- package/dist/parser/Statement.d.ts +16 -3
- package/dist/parser/Statement.js +53 -15
- package/dist/parser/Statement.js.map +1 -1
- package/dist/parser/tests/Parser.spec.js +2 -1
- package/dist/parser/tests/Parser.spec.js.map +1 -1
- package/dist/parser/tests/controlFlow/For.spec.js +16 -8
- package/dist/parser/tests/controlFlow/For.spec.js.map +1 -1
- package/dist/parser/tests/controlFlow/ForEach.spec.js +12 -6
- package/dist/parser/tests/controlFlow/ForEach.spec.js.map +1 -1
- package/dist/parser/tests/controlFlow/While.spec.js +8 -4
- package/dist/parser/tests/controlFlow/While.spec.js.map +1 -1
- package/dist/parser/tests/expression/Call.spec.js +4 -4
- package/dist/parser/tests/expression/Call.spec.js.map +1 -1
- package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js +13 -13
- package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js.map +1 -1
- package/dist/parser/tests/statement/ConstStatement.spec.js +0 -33
- package/dist/parser/tests/statement/ConstStatement.spec.js.map +1 -1
- package/dist/parser/tests/statement/Enum.spec.js +1 -257
- package/dist/parser/tests/statement/Enum.spec.js.map +1 -1
- package/dist/parser/tests/statement/PrintStatement.spec.js +6 -3
- package/dist/parser/tests/statement/PrintStatement.spec.js.map +1 -1
- package/dist/parser/tests/statement/ReturnStatement.spec.js +5 -3
- package/dist/parser/tests/statement/ReturnStatement.spec.js.map +1 -1
- package/dist/parser/tests/statement/Set.spec.js +26 -13
- package/dist/parser/tests/statement/Set.spec.js.map +1 -1
- package/dist/roku-types/data.json +158 -137
- package/dist/roku-types/index.d.ts +3 -38
- package/dist/types/ArrayType.d.ts +3 -1
- package/dist/types/ArrayType.js +42 -6
- package/dist/types/ArrayType.js.map +1 -1
- package/dist/types/ArrayType.spec.js +21 -2
- package/dist/types/ArrayType.spec.js.map +1 -1
- package/dist/types/BooleanType.js +5 -1
- package/dist/types/BooleanType.js.map +1 -1
- package/dist/types/BscType.d.ts +6 -2
- package/dist/types/BscType.js +20 -4
- package/dist/types/BscType.js.map +1 -1
- package/dist/types/BuiltInInterfaceAdder.d.ts +15 -0
- package/dist/types/BuiltInInterfaceAdder.js +93 -0
- package/dist/types/BuiltInInterfaceAdder.js.map +1 -0
- package/dist/types/BuiltInInterfaceAdder.spec.d.ts +1 -0
- package/dist/types/BuiltInInterfaceAdder.spec.js +109 -0
- package/dist/types/BuiltInInterfaceAdder.spec.js.map +1 -0
- package/dist/types/ClassType.d.ts +4 -0
- package/dist/types/ClassType.js +25 -1
- package/dist/types/ClassType.js.map +1 -1
- package/dist/types/DoubleType.d.ts +1 -1
- package/dist/types/DoubleType.js +5 -1
- package/dist/types/DoubleType.js.map +1 -1
- package/dist/types/DynamicType.js +2 -0
- package/dist/types/DynamicType.js.map +1 -1
- package/dist/types/EnumType.d.ts +1 -0
- package/dist/types/EnumType.js +6 -1
- package/dist/types/EnumType.js.map +1 -1
- package/dist/types/FloatType.d.ts +1 -1
- package/dist/types/FloatType.js +5 -1
- package/dist/types/FloatType.js.map +1 -1
- package/dist/types/FunctionType.js +5 -1
- package/dist/types/FunctionType.js.map +1 -1
- package/dist/types/IntegerType.d.ts +1 -1
- package/dist/types/IntegerType.js +5 -1
- package/dist/types/IntegerType.js.map +1 -1
- package/dist/types/InterfaceType.js +2 -1
- package/dist/types/InterfaceType.js.map +1 -1
- package/dist/types/InvalidType.d.ts +1 -1
- package/dist/types/InvalidType.js +5 -1
- package/dist/types/InvalidType.js.map +1 -1
- package/dist/types/LongIntegerType.d.ts +1 -1
- package/dist/types/LongIntegerType.js +5 -1
- package/dist/types/LongIntegerType.js.map +1 -1
- package/dist/types/ObjectType.js +2 -0
- package/dist/types/ObjectType.js.map +1 -1
- package/dist/types/ReferenceType.d.ts +12 -0
- package/dist/types/ReferenceType.js +69 -12
- package/dist/types/ReferenceType.js.map +1 -1
- package/dist/types/ReferenceType.spec.js +15 -0
- package/dist/types/ReferenceType.spec.js.map +1 -1
- package/dist/types/StringType.d.ts +1 -1
- package/dist/types/StringType.js +4 -0
- package/dist/types/StringType.js.map +1 -1
- package/dist/types/TypedFunctionType.js +9 -2
- package/dist/types/TypedFunctionType.js.map +1 -1
- package/dist/types/UnionType.d.ts +2 -0
- package/dist/types/UnionType.js +22 -1
- package/dist/types/UnionType.js.map +1 -1
- package/dist/types/UnionType.spec.js +43 -17
- package/dist/types/UnionType.spec.js.map +1 -1
- package/dist/types/VoidType.d.ts +1 -1
- package/dist/types/VoidType.js +5 -1
- package/dist/types/VoidType.js.map +1 -1
- package/dist/types/helpers.d.ts +1 -0
- package/dist/types/helpers.js +18 -3
- package/dist/types/helpers.js.map +1 -1
- package/dist/util.d.ts +10 -2
- package/dist/util.js +82 -6
- package/dist/util.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { SymbolTable } from '../SymbolTable';
|
|
1
2
|
import type { BscType } from './BscType';
|
|
2
3
|
import { BscTypeKind } from './BscTypeKind';
|
|
3
4
|
import { InheritableType } from './InheritableType';
|
|
@@ -8,4 +9,7 @@ export declare class ClassType extends InheritableType {
|
|
|
8
9
|
readonly kind = BscTypeKind.ClassType;
|
|
9
10
|
isTypeCompatible(targetType: BscType): any;
|
|
10
11
|
isEqual(targetType: BscType): boolean;
|
|
12
|
+
private builtInMemberTable;
|
|
13
|
+
getBuiltInMemberTable(): SymbolTable;
|
|
14
|
+
addBuiltInInterfaces(): void;
|
|
11
15
|
}
|
package/dist/types/ClassType.js
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ClassType = void 0;
|
|
4
|
+
const SymbolTable_1 = require("../SymbolTable");
|
|
4
5
|
const reflection_1 = require("../astUtils/reflection");
|
|
5
6
|
const BscTypeKind_1 = require("./BscTypeKind");
|
|
7
|
+
const BuiltInInterfaceAdder_1 = require("./BuiltInInterfaceAdder");
|
|
6
8
|
const InheritableType_1 = require("./InheritableType");
|
|
9
|
+
const helpers_1 = require("./helpers");
|
|
7
10
|
class ClassType extends InheritableType_1.InheritableType {
|
|
8
11
|
constructor(name, superClass) {
|
|
9
12
|
super(name, superClass);
|
|
@@ -15,7 +18,9 @@ class ClassType extends InheritableType_1.InheritableType {
|
|
|
15
18
|
if (this.isEqual(targetType)) {
|
|
16
19
|
return true;
|
|
17
20
|
}
|
|
18
|
-
else if ((0, reflection_1.isDynamicType)(targetType) ||
|
|
21
|
+
else if ((0, reflection_1.isDynamicType)(targetType) ||
|
|
22
|
+
(0, reflection_1.isObjectType)(targetType) ||
|
|
23
|
+
(0, helpers_1.isUnionTypeCompatible)(this, targetType)) {
|
|
19
24
|
return true;
|
|
20
25
|
}
|
|
21
26
|
else if ((0, reflection_1.isClassType)(targetType)) {
|
|
@@ -26,6 +31,25 @@ class ClassType extends InheritableType_1.InheritableType {
|
|
|
26
31
|
isEqual(targetType) {
|
|
27
32
|
return (0, reflection_1.isClassType)(targetType) && this.name.toLowerCase() === targetType.name.toLowerCase();
|
|
28
33
|
}
|
|
34
|
+
getBuiltInMemberTable() {
|
|
35
|
+
if (!this.parentType) {
|
|
36
|
+
if (this.builtInMemberTable) {
|
|
37
|
+
return this.builtInMemberTable;
|
|
38
|
+
}
|
|
39
|
+
this.builtInMemberTable = new SymbolTable_1.SymbolTable(`${this.__identifier} Built-in Members`);
|
|
40
|
+
this.pushMemberProvider(() => this.builtInMemberTable);
|
|
41
|
+
return this.builtInMemberTable;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
addBuiltInInterfaces() {
|
|
45
|
+
if (!this.hasAddedBuiltInInterfaces) {
|
|
46
|
+
if (this.parentType) {
|
|
47
|
+
this.parentType.addBuiltInInterfaces();
|
|
48
|
+
}
|
|
49
|
+
BuiltInInterfaceAdder_1.BuiltInInterfaceAdder.addBuiltInInterfacesToType(this);
|
|
50
|
+
}
|
|
51
|
+
this.hasAddedBuiltInInterfaces = true;
|
|
52
|
+
}
|
|
29
53
|
}
|
|
30
54
|
exports.ClassType = ClassType;
|
|
31
55
|
//# sourceMappingURL=ClassType.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClassType.js","sourceRoot":"","sources":["../../src/types/ClassType.ts"],"names":[],"mappings":";;;AAAA,uDAAkF;AAElF,+CAA4C;AAC5C,uDAAoD;
|
|
1
|
+
{"version":3,"file":"ClassType.js","sourceRoot":"","sources":["../../src/types/ClassType.ts"],"names":[],"mappings":";;;AAAA,gDAA6C;AAC7C,uDAAkF;AAElF,+CAA4C;AAC5C,mEAAgE;AAChE,uDAAoD;AACpD,uCAAkD;AAElD,MAAa,SAAU,SAAQ,iCAAe;IAE1C,YAAmB,IAAY,EAAkB,UAAoB;QACjE,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QADT,SAAI,GAAJ,IAAI,CAAQ;QAAkB,eAAU,GAAV,UAAU,CAAU;QAIrD,SAAI,GAAG,yBAAW,CAAC,SAAS,CAAC;IAF7C,CAAC;IAIM,gBAAgB,CAAC,UAAmB;QACvC,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YAC1B,OAAO,IAAI,CAAC;SACf;aAAM,IAAI,IAAA,0BAAa,EAAC,UAAU,CAAC;YAChC,IAAA,yBAAY,EAAC,UAAU,CAAC;YACxB,IAAA,+BAAqB,EAAC,IAAI,EAAE,UAAU,CAAC,EAAE;YACzC,OAAO,IAAI,CAAC;SACf;aAAM,IAAI,IAAA,wBAAW,EAAC,UAAU,CAAC,EAAE;YAChC,OAAO,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;SAC5C;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO,CAAC,UAAmB;QACvB,OAAO,IAAA,wBAAW,EAAC,UAAU,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IAChG,CAAC;IAID,qBAAqB;QACjB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAClB,IAAI,IAAI,CAAC,kBAAkB,EAAE;gBACzB,OAAO,IAAI,CAAC,kBAAkB,CAAC;aAClC;YACD,IAAI,CAAC,kBAAkB,GAAG,IAAI,yBAAW,CAAC,GAAG,IAAI,CAAC,YAAY,mBAAmB,CAAC,CAAC;YACnF,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACvD,OAAO,IAAI,CAAC,kBAAkB,CAAC;SAClC;IACL,CAAC;IAED,oBAAoB;QAChB,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE;YACjC,IAAI,IAAI,CAAC,UAAU,EAAE;gBACjB,IAAI,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC;aAC1C;YACD,6CAAqB,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC;SAC1D;QACD,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;IAC1C,CAAC;CACJ;AA/CD,8BA+CC"}
|
|
@@ -5,7 +5,7 @@ export declare class DoubleType extends BscType {
|
|
|
5
5
|
constructor(typeText?: string);
|
|
6
6
|
readonly kind = BscTypeKind.DoubleType;
|
|
7
7
|
static instance: DoubleType;
|
|
8
|
-
isTypeCompatible(targetType: BscType):
|
|
8
|
+
isTypeCompatible(targetType: BscType): any;
|
|
9
9
|
toString(): string;
|
|
10
10
|
toTypeString(): string;
|
|
11
11
|
isEqual(targetType: BscType): boolean;
|
package/dist/types/DoubleType.js
CHANGED
|
@@ -4,6 +4,8 @@ exports.DoubleType = 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 DoubleType extends BscType_1.BscType {
|
|
8
10
|
constructor(typeText) {
|
|
9
11
|
super();
|
|
@@ -16,7 +18,8 @@ class DoubleType extends BscType_1.BscType {
|
|
|
16
18
|
(0, reflection_1.isIntegerType)(targetType) ||
|
|
17
19
|
(0, reflection_1.isFloatType)(targetType) ||
|
|
18
20
|
(0, reflection_1.isDoubleType)(targetType) ||
|
|
19
|
-
(0, reflection_1.isLongIntegerType)(targetType)
|
|
21
|
+
(0, reflection_1.isLongIntegerType)(targetType) ||
|
|
22
|
+
(0, helpers_1.isUnionTypeCompatible)(this, targetType));
|
|
20
23
|
}
|
|
21
24
|
toString() {
|
|
22
25
|
var _a;
|
|
@@ -31,4 +34,5 @@ class DoubleType extends BscType_1.BscType {
|
|
|
31
34
|
}
|
|
32
35
|
exports.DoubleType = DoubleType;
|
|
33
36
|
DoubleType.instance = new DoubleType('double');
|
|
37
|
+
BuiltInInterfaceAdder_1.BuiltInInterfaceAdder.primitiveTypeInstanceCache.set('double', DoubleType.instance);
|
|
34
38
|
//# sourceMappingURL=DoubleType.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DoubleType.js","sourceRoot":"","sources":["../../src/types/DoubleType.ts"],"names":[],"mappings":";;;AAAA,uDAAkI;AAClI,uCAAoC;AACpC,+CAA4C;
|
|
1
|
+
{"version":3,"file":"DoubleType.js","sourceRoot":"","sources":["../../src/types/DoubleType.ts"],"names":[],"mappings":";;;AAAA,uDAAkI;AAClI,uCAAoC;AACpC,+CAA4C;AAC5C,uCAAkD;AAElD,mEAAgE;AAEhE,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;IAMM,gBAAgB,CAAC,UAAmB;QACvC,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,CAAC,CAC1C,CAAC;IACN,CAAC;IACM,QAAQ;;QACX,OAAO,MAAA,IAAI,CAAC,QAAQ,mCAAI,QAAQ,CAAC;IACrC,CAAC;IAEM,YAAY;QACf,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAEM,OAAO,CAAC,UAAmB;QAC9B,OAAO,IAAA,yBAAY,EAAC,UAAU,CAAC,CAAC;IACpC,CAAC;;AAhCL,gCAkCC;AAzBiB,mBAAQ,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC;AA2BtD,6CAAqB,CAAC,0BAA0B,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC"}
|
|
@@ -4,6 +4,7 @@ exports.DynamicType = 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 BuiltInInterfaceAdder_1 = require("./BuiltInInterfaceAdder");
|
|
7
8
|
class DynamicType extends BscType_1.BscType {
|
|
8
9
|
constructor(typeText) {
|
|
9
10
|
super();
|
|
@@ -40,4 +41,5 @@ class DynamicType extends BscType_1.BscType {
|
|
|
40
41
|
}
|
|
41
42
|
exports.DynamicType = DynamicType;
|
|
42
43
|
DynamicType.instance = new DynamicType();
|
|
44
|
+
BuiltInInterfaceAdder_1.BuiltInInterfaceAdder.primitiveTypeInstanceCache.set('dynamic', DynamicType.instance);
|
|
43
45
|
//# sourceMappingURL=DynamicType.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DynamicType.js","sourceRoot":"","sources":["../../src/types/DynamicType.ts"],"names":[],"mappings":";;;AACA,uDAAuD;AACvD,uCAAoC;AACpC,+CAA4C;
|
|
1
|
+
{"version":3,"file":"DynamicType.js","sourceRoot":"","sources":["../../src/types/DynamicType.ts"],"names":[],"mappings":";;;AACA,uDAAuD;AACvD,uCAAoC;AACpC,+CAA4C;AAC5C,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;IAMD,IAAI,UAAU;QACV,OAAO,WAAW,CAAC,QAAQ,CAAC;IAChC,CAAC;IAEM,cAAc,CAAC,UAAmB;QACrC,2EAA2E;QAC3E,OAAO,CAAC,CAAC,UAAU,CAAC;IACxB,CAAC;IAED;;OAEG;IACI,gBAAgB,CAAC,UAAmB;QACvC,2EAA2E;QAC3E,OAAO,CAAC,CAAC,UAAU,CAAC;IACxB,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;IAEM,OAAO,CAAC,UAAmB;QAC9B,OAAO,IAAA,0BAAa,EAAC,UAAU,CAAC,CAAC;IACrC,CAAC;IAED,aAAa,CAAC,UAAkB,EAAE,OAAuB;QACrD,OAAO,WAAW,CAAC,QAAQ,CAAC;IAChC,CAAC;;AA1CL,kCA2CC;AAlC0B,oBAAQ,GAAG,IAAI,WAAW,EAAE,CAAC;AAoCxD,6CAAqB,CAAC,0BAA0B,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC"}
|
package/dist/types/EnumType.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ export declare class EnumType extends BscType {
|
|
|
16
16
|
toString(): string;
|
|
17
17
|
toTypeString(): string;
|
|
18
18
|
isEqual(targetType: BscType): boolean;
|
|
19
|
+
get defaultMemberType(): EnumMemberType;
|
|
19
20
|
}
|
|
20
21
|
export declare class EnumMemberType extends BscType {
|
|
21
22
|
enumName: string;
|
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
|
/**
|
|
@@ -20,7 +21,8 @@ class EnumType extends BscType_1.BscType {
|
|
|
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));
|
|
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 {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EnumType.js","sourceRoot":"","sources":["../../src/types/EnumType.ts"],"names":[],"mappings":";;;AAAA,uDAAmG;AACnG,uCAAoC;AACpC,+CAA4C;AAC5C,+CAA4C;
|
|
1
|
+
{"version":3,"file":"EnumType.js","sourceRoot":"","sources":["../../src/types/EnumType.ts"],"names":[],"mappings":";;;AAAA,uDAAmG;AACnG,uCAAoC;AACpC,+CAA4C;AAC5C,+CAA4C;AAC5C,uCAAkD;AAElD,MAAa,QAAS,SAAQ,iBAAO;IACjC,YACW,IAAY;IACnB;;OAEG;IACI,iBAA0B,yBAAW,CAAC,QAAQ;QAErD,KAAK,CAAC,IAAI,CAAC,CAAC;QANL,SAAI,GAAJ,IAAI,CAAQ;QAIZ,mBAAc,GAAd,cAAc,CAAgC;QAKzC,SAAI,GAAG,yBAAW,CAAC,QAAQ,CAAC;IAF5C,CAAC;IAIM,gBAAgB,CAAC,UAAmB;QACvC,OAAO,CACH,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,yBAAY,EAAC,UAAU,CAAC;YACxB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;YACxB,CAAC,IAAA,6BAAgB,EAAC,UAAU,CAAC,IAAI,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,QAAQ,CAAC,WAAW,EAAE,MAAK,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAChG,IAAA,+BAAqB,EAAC,IAAI,EAAE,UAAU,CAAC,CAC1C,CAAC;IACN,CAAC;IAEM,QAAQ;QACX,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAEM,YAAY;QACf,OAAO,SAAS,CAAC;IACrB,CAAC;IAEM,OAAO,CAAC,UAAmB;QAC9B,OAAO,IAAA,uBAAU,EAAC,UAAU,CAAC,IAAI,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,IAAI,CAAC,WAAW,EAAE,MAAK,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IAChG,CAAC;IAED,IAAW,iBAAiB;QACxB,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IACzE,CAAC;CACJ;AAtCD,4BAsCC;AAGD,MAAa,cAAe,SAAQ,iBAAO;IACvC,YACW,QAAgB,EAChB,UAAkB;IACzB;;OAEG;IACI,iBAA0B,yBAAW,CAAC,QAAQ;QAErD,KAAK,CAAC,GAAG,QAAQ,IAAI,UAAU,EAAE,CAAC,CAAC;QAP5B,aAAQ,GAAR,QAAQ,CAAQ;QAChB,eAAU,GAAV,UAAU,CAAQ;QAIlB,mBAAc,GAAd,cAAc,CAAgC;QAKzC,SAAI,GAAG,yBAAW,CAAC,cAAc,CAAC;IAFlD,CAAC;IAIM,cAAc,CAAC,UAAmB;QACrC,OAAO,CACH,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;YACxB,CAAC,IAAA,uBAAU,EAAC,UAAU,CAAC;gBACnB,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,IAAI,CAAC,WAAW,EAAE,MAAK,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;YACnE,IAAA,0BAAa,EAAC,UAAU,CAAC,CAC5B,CAAC;IACN,CAAC;IAEM,gBAAgB,CAAC,UAAmB;QACvC,OAAO,CACH,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;YACxB,IAAA,0BAAa,EAAC,UAAU,CAAC,CAC5B,CAAC;IACN,CAAC;IAEM,QAAQ;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAEM,YAAY;QACf,OAAO,SAAS,CAAC;IACrB,CAAC;IAEM,OAAO,CAAC,UAAmB;QAC9B,OAAO,IAAA,6BAAgB,EAAC,UAAU,CAAC;YAC/B,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,QAAQ,CAAC,WAAW,EAAE,MAAK,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;YAClE,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,UAAU,CAAC,WAAW,EAAE,MAAK,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;IAC/E,CAAC;CACJ;AA3CD,wCA2CC"}
|
|
@@ -5,7 +5,7 @@ export declare class FloatType extends BscType {
|
|
|
5
5
|
constructor(typeText?: string);
|
|
6
6
|
readonly kind = BscTypeKind.FloatType;
|
|
7
7
|
static instance: FloatType;
|
|
8
|
-
isTypeCompatible(targetType: BscType):
|
|
8
|
+
isTypeCompatible(targetType: BscType): any;
|
|
9
9
|
toString(): string;
|
|
10
10
|
toTypeString(): string;
|
|
11
11
|
isEqual(targetType: BscType): boolean;
|
package/dist/types/FloatType.js
CHANGED
|
@@ -4,6 +4,8 @@ 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 helpers_1 = require("./helpers");
|
|
8
|
+
const BuiltInInterfaceAdder_1 = require("./BuiltInInterfaceAdder");
|
|
7
9
|
class FloatType extends BscType_1.BscType {
|
|
8
10
|
constructor(typeText) {
|
|
9
11
|
super();
|
|
@@ -16,7 +18,8 @@ class FloatType extends BscType_1.BscType {
|
|
|
16
18
|
(0, reflection_1.isIntegerType)(targetType) ||
|
|
17
19
|
(0, reflection_1.isFloatType)(targetType) ||
|
|
18
20
|
(0, reflection_1.isDoubleType)(targetType) ||
|
|
19
|
-
(0, reflection_1.isLongIntegerType)(targetType)
|
|
21
|
+
(0, reflection_1.isLongIntegerType)(targetType) ||
|
|
22
|
+
(0, helpers_1.isUnionTypeCompatible)(this, targetType));
|
|
20
23
|
}
|
|
21
24
|
toString() {
|
|
22
25
|
var _a;
|
|
@@ -31,4 +34,5 @@ class FloatType extends BscType_1.BscType {
|
|
|
31
34
|
}
|
|
32
35
|
exports.FloatType = FloatType;
|
|
33
36
|
FloatType.instance = new FloatType('float');
|
|
37
|
+
BuiltInInterfaceAdder_1.BuiltInInterfaceAdder.primitiveTypeInstanceCache.set('float', FloatType.instance);
|
|
34
38
|
//# sourceMappingURL=FloatType.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FloatType.js","sourceRoot":"","sources":["../../src/types/FloatType.ts"],"names":[],"mappings":";;;AAAA,uDAAkI;AAClI,uCAAoC;AACpC,+CAA4C;
|
|
1
|
+
{"version":3,"file":"FloatType.js","sourceRoot":"","sources":["../../src/types/FloatType.ts"],"names":[],"mappings":";;;AAAA,uDAAkI;AAClI,uCAAoC;AACpC,+CAA4C;AAC5C,uCAAkD;AAClD,mEAAgE;AAEhE,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;QACvC,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,CAAC,CAC1C,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"}
|
|
@@ -4,6 +4,8 @@ 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();
|
|
@@ -13,7 +15,8 @@ class FunctionType extends BaseFunctionType_1.BaseFunctionType {
|
|
|
13
15
|
isTypeCompatible(targetType) {
|
|
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)) {
|
|
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;AAEhE,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;QACvC,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,CAAC,EACzC;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"}
|
|
@@ -5,7 +5,7 @@ export declare class IntegerType extends BscType {
|
|
|
5
5
|
constructor(typeText?: string);
|
|
6
6
|
readonly kind = BscTypeKind.IntegerType;
|
|
7
7
|
static instance: IntegerType;
|
|
8
|
-
isTypeCompatible(targetType: BscType):
|
|
8
|
+
isTypeCompatible(targetType: BscType): any;
|
|
9
9
|
toString(): string;
|
|
10
10
|
toTypeString(): string;
|
|
11
11
|
isEqual(otherType: BscType): boolean;
|
|
@@ -4,6 +4,8 @@ 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 helpers_1 = require("./helpers");
|
|
8
|
+
const BuiltInInterfaceAdder_1 = require("./BuiltInInterfaceAdder");
|
|
7
9
|
class IntegerType extends BscType_1.BscType {
|
|
8
10
|
constructor(typeText) {
|
|
9
11
|
super();
|
|
@@ -16,7 +18,8 @@ class IntegerType extends BscType_1.BscType {
|
|
|
16
18
|
(0, reflection_1.isIntegerType)(targetType) ||
|
|
17
19
|
(0, reflection_1.isFloatType)(targetType) ||
|
|
18
20
|
(0, reflection_1.isDoubleType)(targetType) ||
|
|
19
|
-
(0, reflection_1.isLongIntegerType)(targetType)
|
|
21
|
+
(0, reflection_1.isLongIntegerType)(targetType) ||
|
|
22
|
+
(0, helpers_1.isUnionTypeCompatible)(this, targetType));
|
|
20
23
|
}
|
|
21
24
|
toString() {
|
|
22
25
|
var _a;
|
|
@@ -31,4 +34,5 @@ class IntegerType extends BscType_1.BscType {
|
|
|
31
34
|
}
|
|
32
35
|
exports.IntegerType = IntegerType;
|
|
33
36
|
IntegerType.instance = new IntegerType('integer');
|
|
37
|
+
BuiltInInterfaceAdder_1.BuiltInInterfaceAdder.primitiveTypeInstanceCache.set('integer', IntegerType.instance);
|
|
34
38
|
//# sourceMappingURL=IntegerType.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IntegerType.js","sourceRoot":"","sources":["../../src/types/IntegerType.ts"],"names":[],"mappings":";;;AAAA,uDAAkI;AAClI,uCAAoC;AACpC,+CAA4C;
|
|
1
|
+
{"version":3,"file":"IntegerType.js","sourceRoot":"","sources":["../../src/types/IntegerType.ts"],"names":[],"mappings":";;;AAAA,uDAAkI;AAClI,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,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,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,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"}
|
|
@@ -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);
|
|
@@ -13,7 +14,7 @@ class InterfaceType extends InheritableType_1.InheritableType {
|
|
|
13
14
|
this.kind = BscTypeKind_1.BscTypeKind.InterfaceType;
|
|
14
15
|
}
|
|
15
16
|
isTypeCompatible(targetType) {
|
|
16
|
-
if ((0, reflection_1.isDynamicType)(targetType) || (0, reflection_1.isObjectType)(targetType)) {
|
|
17
|
+
if ((0, reflection_1.isDynamicType)(targetType) || (0, reflection_1.isObjectType)(targetType) || (0, helpers_1.isUnionTypeCompatible)(this, targetType)) {
|
|
17
18
|
return true;
|
|
18
19
|
}
|
|
19
20
|
//TODO: We need to make sure that things don't get assigned to built-in types
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InterfaceType.js","sourceRoot":"","sources":["../../src/types/InterfaceType.ts"],"names":[],"mappings":";;;AAAA,gDAAgD;AAChD,uDAAsH;AAEtH,+CAA4C;AAC5C,uDAAoD;
|
|
1
|
+
{"version":3,"file":"InterfaceType.js","sourceRoot":"","sources":["../../src/types/InterfaceType.ts"],"names":[],"mappings":";;;AAAA,gDAAgD;AAChD,uDAAsH;AAEtH,+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;QACvC,IAAI,IAAA,0BAAa,EAAC,UAAU,CAAC,IAAI,IAAA,yBAAY,EAAC,UAAU,CAAC,IAAI,IAAA,+BAAqB,EAAC,IAAI,EAAE,UAAU,CAAC,EAAE;YAClG,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,EAAE;YAC1D,OAAO,IAAI,CAAC,gCAAgC,CAAC,UAAU,EAAE,4BAAc,CAAC,OAAO,CAAC,CAAC;SACpF;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;AAlCD,sCAkCC"}
|
|
@@ -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"}
|
|
@@ -5,7 +5,7 @@ export declare class LongIntegerType extends BscType {
|
|
|
5
5
|
constructor(typeText?: string);
|
|
6
6
|
readonly kind = BscTypeKind.LongIntegerType;
|
|
7
7
|
static instance: LongIntegerType;
|
|
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.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 helpers_1 = require("./helpers");
|
|
8
|
+
const BuiltInInterfaceAdder_1 = require("./BuiltInInterfaceAdder");
|
|
7
9
|
class LongIntegerType extends BscType_1.BscType {
|
|
8
10
|
constructor(typeText) {
|
|
9
11
|
super();
|
|
@@ -16,7 +18,8 @@ class LongIntegerType extends BscType_1.BscType {
|
|
|
16
18
|
(0, reflection_1.isIntegerType)(targetType) ||
|
|
17
19
|
(0, reflection_1.isFloatType)(targetType) ||
|
|
18
20
|
(0, reflection_1.isDoubleType)(targetType) ||
|
|
19
|
-
(0, reflection_1.isLongIntegerType)(targetType)
|
|
21
|
+
(0, reflection_1.isLongIntegerType)(targetType) ||
|
|
22
|
+
(0, helpers_1.isUnionTypeCompatible)(this, targetType));
|
|
20
23
|
}
|
|
21
24
|
toString() {
|
|
22
25
|
var _a;
|
|
@@ -31,4 +34,5 @@ class LongIntegerType extends BscType_1.BscType {
|
|
|
31
34
|
}
|
|
32
35
|
exports.LongIntegerType = LongIntegerType;
|
|
33
36
|
LongIntegerType.instance = new LongIntegerType('longinteger');
|
|
37
|
+
BuiltInInterfaceAdder_1.BuiltInInterfaceAdder.primitiveTypeInstanceCache.set('longinteger', LongIntegerType.instance);
|
|
34
38
|
//# sourceMappingURL=LongIntegerType.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LongIntegerType.js","sourceRoot":"","sources":["../../src/types/LongIntegerType.ts"],"names":[],"mappings":";;;AAAA,uDAAkI;AAClI,uCAAoC;AACpC,+CAA4C;
|
|
1
|
+
{"version":3,"file":"LongIntegerType.js","sourceRoot":"","sources":["../../src/types/LongIntegerType.ts"],"names":[],"mappings":";;;AAAA,uDAAkI;AAClI,uCAAoC;AACpC,+CAA4C;AAC5C,uCAAkD;AAClD,mEAAgE;AAEhE,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;QACvC,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,CAAC,CAC1C,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"}
|
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) {
|
|
@@ -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;QACvC,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"}
|
|
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;QACvC,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;
|
|
@@ -47,3 +48,14 @@ export declare class TypePropertyReferenceType extends BscType {
|
|
|
47
48
|
propertyName: string;
|
|
48
49
|
constructor(outerType: BscType, propertyName: string);
|
|
49
50
|
}
|
|
51
|
+
/**
|
|
52
|
+
* Use this class for when there is a binary operator and either the left hand side and/or the right hand side
|
|
53
|
+
* are ReferenceTypes
|
|
54
|
+
*/
|
|
55
|
+
export declare class BinaryOperatorReferenceType extends BscType {
|
|
56
|
+
leftType: BscType;
|
|
57
|
+
operator: Token;
|
|
58
|
+
rightType: BscType;
|
|
59
|
+
cachedType: BscType;
|
|
60
|
+
constructor(leftType: BscType, operator: Token, rightType: BscType, binaryOpResolver: (lType: BscType, operator: Token, rType: BscType) => BscType);
|
|
61
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TypePropertyReferenceType = exports.ReferenceType = exports.referenceTypeFactory = void 0;
|
|
3
|
+
exports.BinaryOperatorReferenceType = exports.TypePropertyReferenceType = exports.ReferenceType = exports.referenceTypeFactory = void 0;
|
|
4
4
|
const reflection_1 = require("../astUtils/reflection");
|
|
5
5
|
const BscType_1 = require("./BscType");
|
|
6
6
|
const DynamicType_1 = require("./DynamicType");
|
|
@@ -36,10 +36,10 @@ class ReferenceType extends BscType_1.BscType {
|
|
|
36
36
|
return resolvedType.getMemberType(innerName, innerOptions);
|
|
37
37
|
}
|
|
38
38
|
},
|
|
39
|
-
setCachedType: (innerName,
|
|
39
|
+
setCachedType: (innerName, innerResolvedTypeCacheEntry, options) => {
|
|
40
40
|
const resolvedType = this.resolve();
|
|
41
41
|
if (resolvedType) {
|
|
42
|
-
resolvedType.memberTable.setCachedType(innerName,
|
|
42
|
+
resolvedType.memberTable.setCachedType(innerName, innerResolvedTypeCacheEntry, options);
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
};
|
|
@@ -61,7 +61,7 @@ class ReferenceType extends BscType_1.BscType {
|
|
|
61
61
|
if (propName === 'isResolvable') {
|
|
62
62
|
return () => {
|
|
63
63
|
let resultSoFar = this.resolve();
|
|
64
|
-
while ((0, reflection_1.isReferenceType)(resultSoFar)) {
|
|
64
|
+
while (resultSoFar && (0, reflection_1.isReferenceType)(resultSoFar)) {
|
|
65
65
|
resultSoFar = resultSoFar.getTarget();
|
|
66
66
|
}
|
|
67
67
|
return !!resultSoFar;
|
|
@@ -134,6 +134,11 @@ class ReferenceType extends BscType_1.BscType {
|
|
|
134
134
|
else if (propName === 'memberTable') {
|
|
135
135
|
return this.memberTable;
|
|
136
136
|
}
|
|
137
|
+
else if (propName === 'getMemberTable') {
|
|
138
|
+
return () => {
|
|
139
|
+
return this.memberTable;
|
|
140
|
+
};
|
|
141
|
+
}
|
|
137
142
|
else if (propName === 'isTypeCompatible') {
|
|
138
143
|
return (targetType) => {
|
|
139
144
|
return (0, reflection_1.isDynamicType)(targetType);
|
|
@@ -148,6 +153,15 @@ class ReferenceType extends BscType_1.BscType {
|
|
|
148
153
|
return false;
|
|
149
154
|
};
|
|
150
155
|
}
|
|
156
|
+
else if (propName === 'addBuiltInInterfaces') {
|
|
157
|
+
// this is an unknown type. There is no use in adding built in interfaces
|
|
158
|
+
// return no-op function
|
|
159
|
+
return () => { };
|
|
160
|
+
}
|
|
161
|
+
else if (propName === 'hasAddedBuiltInInterfaces') {
|
|
162
|
+
// this is an unknown type. There is no use in adding built in interfaces
|
|
163
|
+
return true;
|
|
164
|
+
}
|
|
151
165
|
}
|
|
152
166
|
if (!innerType) {
|
|
153
167
|
innerType = DynamicType_1.DynamicType.instance;
|
|
@@ -162,7 +176,7 @@ class ReferenceType extends BscType_1.BscType {
|
|
|
162
176
|
let innerType = this.resolve();
|
|
163
177
|
// Look for circular references
|
|
164
178
|
if (!innerType || this.referenceChain.has(innerType)) {
|
|
165
|
-
|
|
179
|
+
return false;
|
|
166
180
|
}
|
|
167
181
|
const result = Reflect.set(innerType, name, value, innerType);
|
|
168
182
|
this.referenceChain.clear();
|
|
@@ -184,9 +198,9 @@ class ReferenceType extends BscType_1.BscType {
|
|
|
184
198
|
// could not find this member
|
|
185
199
|
return;
|
|
186
200
|
}
|
|
187
|
-
if ((0, reflection_1.
|
|
201
|
+
if ((0, reflection_1.isAnyReferenceType)(resolvedType)) {
|
|
188
202
|
// If this is a referenceType, keep digging down until we have a non reference Type.
|
|
189
|
-
while ((0, reflection_1.
|
|
203
|
+
while (resolvedType && (0, reflection_1.isAnyReferenceType)(resolvedType)) {
|
|
190
204
|
if (this.referenceChain.has(resolvedType)) {
|
|
191
205
|
// this is a circular reference
|
|
192
206
|
this.circRefCount++;
|
|
@@ -199,9 +213,9 @@ class ReferenceType extends BscType_1.BscType {
|
|
|
199
213
|
this.referenceChain.add(resolvedType);
|
|
200
214
|
resolvedType = resolvedType.getTarget();
|
|
201
215
|
}
|
|
202
|
-
this.tableProvider().setCachedType(this.memberKey, resolvedType, { flags: this.flags });
|
|
216
|
+
this.tableProvider().setCachedType(this.memberKey, { type: resolvedType }, { flags: this.flags });
|
|
203
217
|
}
|
|
204
|
-
if (!(0, reflection_1.
|
|
218
|
+
if (resolvedType && !(0, reflection_1.isAnyReferenceType)(resolvedType)) {
|
|
205
219
|
this.circRefCount = 0;
|
|
206
220
|
this.referenceChain.clear();
|
|
207
221
|
}
|
|
@@ -238,7 +252,7 @@ class TypePropertyReferenceType extends BscType_1.BscType {
|
|
|
238
252
|
// Cheeky way to get `isTypePropertyReferenceType` reflection to work
|
|
239
253
|
return { name: 'TypePropertyReferenceType' };
|
|
240
254
|
}
|
|
241
|
-
if ((0, reflection_1.
|
|
255
|
+
if ((0, reflection_1.isAnyReferenceType)(this.outerType) && !this.outerType.isResolvable()) {
|
|
242
256
|
if (propName === 'getMemberType') {
|
|
243
257
|
//If we're calling `getMemberType()`, we need it to proxy to using the actual symbol table
|
|
244
258
|
//So if that symbol is ever populated, the correct type is passed through
|
|
@@ -250,9 +264,9 @@ class TypePropertyReferenceType extends BscType_1.BscType {
|
|
|
250
264
|
var _a, _b;
|
|
251
265
|
return (_b = (_a = this.outerType) === null || _a === void 0 ? void 0 : _a[this.propertyName]) === null || _b === void 0 ? void 0 : _b.getMemberType(innerName, innerOptions);
|
|
252
266
|
},
|
|
253
|
-
setCachedType: (innerName,
|
|
267
|
+
setCachedType: (innerName, innerTypeCacheEntry, innerOptions) => {
|
|
254
268
|
var _a, _b;
|
|
255
|
-
return (_b = (_a = this.outerType) === null || _a === void 0 ? void 0 : _a[this.propertyName]) === null || _b === void 0 ? void 0 : _b.memberTable.setCachedType(innerName,
|
|
269
|
+
return (_b = (_a = this.outerType) === null || _a === void 0 ? void 0 : _a[this.propertyName]) === null || _b === void 0 ? void 0 : _b.memberTable.setCachedType(innerName, innerTypeCacheEntry, innerOptions);
|
|
256
270
|
}
|
|
257
271
|
};
|
|
258
272
|
});
|
|
@@ -285,4 +299,47 @@ class TypePropertyReferenceType extends BscType_1.BscType {
|
|
|
285
299
|
}
|
|
286
300
|
}
|
|
287
301
|
exports.TypePropertyReferenceType = TypePropertyReferenceType;
|
|
302
|
+
/**
|
|
303
|
+
* Use this class for when there is a binary operator and either the left hand side and/or the right hand side
|
|
304
|
+
* are ReferenceTypes
|
|
305
|
+
*/
|
|
306
|
+
class BinaryOperatorReferenceType extends BscType_1.BscType {
|
|
307
|
+
constructor(leftType, operator, rightType, binaryOpResolver) {
|
|
308
|
+
super(operator.text);
|
|
309
|
+
this.leftType = leftType;
|
|
310
|
+
this.operator = operator;
|
|
311
|
+
this.rightType = rightType;
|
|
312
|
+
// eslint-disable-next-line no-constructor-return
|
|
313
|
+
return new Proxy(this, {
|
|
314
|
+
get: (target, propName, receiver) => {
|
|
315
|
+
var _a;
|
|
316
|
+
if (propName === '__reflection') {
|
|
317
|
+
// Cheeky way to get `BinaryOperatorReferenceType` reflection to work
|
|
318
|
+
return { name: 'BinaryOperatorReferenceType' };
|
|
319
|
+
}
|
|
320
|
+
let resultType = (_a = this.cachedType) !== null && _a !== void 0 ? _a : DynamicType_1.DynamicType.instance;
|
|
321
|
+
if (!this.cachedType) {
|
|
322
|
+
if (((0, reflection_1.isAnyReferenceType)(this.leftType) && !this.leftType.isResolvable()) ||
|
|
323
|
+
((0, reflection_1.isAnyReferenceType)(this.rightType) && !this.rightType.isResolvable())) {
|
|
324
|
+
if (propName === 'isResolvable') {
|
|
325
|
+
return () => false;
|
|
326
|
+
}
|
|
327
|
+
if (propName === 'getTarget') {
|
|
328
|
+
return () => undefined;
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
else {
|
|
332
|
+
resultType = binaryOpResolver(this.leftType, this.operator, this.rightType);
|
|
333
|
+
this.cachedType = resultType;
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
if (resultType) {
|
|
337
|
+
const result = Reflect.get(resultType, propName, resultType);
|
|
338
|
+
return result;
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
});
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
exports.BinaryOperatorReferenceType = BinaryOperatorReferenceType;
|
|
288
345
|
//# sourceMappingURL=ReferenceType.js.map
|