brighterscript 0.65.1 → 0.66.0-alpha.1
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 +14 -0
- package/README.md +8 -0
- package/dist/BsConfig.d.ts +5 -11
- package/dist/CacheVerifier.d.ts +8 -0
- package/dist/CacheVerifier.js +20 -0
- package/dist/CacheVerifier.js.map +1 -0
- package/dist/DiagnosticMessages.d.ts +9 -4
- package/dist/DiagnosticMessages.js +8 -3
- package/dist/DiagnosticMessages.js.map +1 -1
- package/dist/FunctionScope.d.ts +1 -0
- package/dist/FunctionScope.js +3 -0
- package/dist/FunctionScope.js.map +1 -1
- package/dist/PluginInterface.d.ts +0 -4
- package/dist/PluginInterface.js.map +1 -1
- package/dist/Program.d.ts +6 -39
- package/dist/Program.js +94 -68
- package/dist/Program.js.map +1 -1
- package/dist/ProgramBuilder.d.ts +4 -0
- package/dist/ProgramBuilder.js +33 -13
- package/dist/ProgramBuilder.js.map +1 -1
- package/dist/Scope.d.ts +1 -5
- package/dist/Scope.js +53 -37
- package/dist/Scope.js.map +1 -1
- package/dist/SymbolTable.d.ts +44 -6
- package/dist/SymbolTable.js +154 -26
- package/dist/SymbolTable.js.map +1 -1
- package/dist/XmlScope.js +11 -12
- package/dist/XmlScope.js.map +1 -1
- package/dist/astUtils/creators.d.ts +16 -6
- package/dist/astUtils/creators.js +39 -16
- package/dist/astUtils/creators.js.map +1 -1
- package/dist/astUtils/reflection.d.ts +46 -37
- package/dist/astUtils/reflection.js +145 -147
- package/dist/astUtils/reflection.js.map +1 -1
- package/dist/astUtils/reflection.spec.js +1 -6
- package/dist/astUtils/reflection.spec.js.map +1 -1
- package/dist/astUtils/visitors.d.ts +4 -11
- package/dist/astUtils/visitors.js +0 -7
- package/dist/astUtils/visitors.js.map +1 -1
- package/dist/astUtils/visitors.spec.js +8 -6
- package/dist/astUtils/visitors.spec.js.map +1 -1
- package/dist/astUtils/xml.d.ts +9 -9
- package/dist/astUtils/xml.js +6 -6
- package/dist/astUtils/xml.js.map +1 -1
- package/dist/bscPlugin/BscPlugin.d.ts +2 -3
- package/dist/bscPlugin/BscPlugin.js +6 -2
- package/dist/bscPlugin/BscPlugin.js.map +1 -1
- package/dist/bscPlugin/CallExpressionInfo.js.map +1 -1
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.js +2 -2
- package/dist/bscPlugin/codeActions/CodeActionsProcessor.js.map +1 -1
- package/dist/bscPlugin/hover/HoverProcessor.js +71 -59
- package/dist/bscPlugin/hover/HoverProcessor.js.map +1 -1
- package/dist/bscPlugin/hover/HoverProcessor.spec.js +110 -10
- package/dist/bscPlugin/hover/HoverProcessor.spec.js.map +1 -1
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js +6 -5
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js.map +1 -1
- package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js.map +1 -1
- package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js +1 -1
- package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js.map +1 -1
- package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.d.ts +11 -0
- package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.js +53 -0
- package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.js.map +1 -0
- package/dist/bscPlugin/validation/BrsFileValidator.d.ts +4 -0
- package/dist/bscPlugin/validation/BrsFileValidator.js +37 -16
- package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -1
- package/dist/bscPlugin/validation/BrsFileValidator.spec.js +1 -1
- package/dist/bscPlugin/validation/BrsFileValidator.spec.js.map +1 -1
- package/dist/bscPlugin/validation/ProgramValidator.d.ts +3 -3
- package/dist/bscPlugin/validation/ProgramValidator.js +6 -6
- package/dist/bscPlugin/validation/ProgramValidator.js.map +1 -1
- package/dist/bscPlugin/validation/ScopeValidator.d.ts +1 -0
- package/dist/bscPlugin/validation/ScopeValidator.js +72 -18
- package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -1
- package/dist/bscPlugin/validation/XmlFileValidator.js +9 -9
- package/dist/bscPlugin/validation/XmlFileValidator.js.map +1 -1
- package/dist/files/BrsFile.Class.spec.js +9 -10
- package/dist/files/BrsFile.Class.spec.js.map +1 -1
- package/dist/files/BrsFile.d.ts +8 -10
- package/dist/files/BrsFile.js +72 -52
- package/dist/files/BrsFile.js.map +1 -1
- package/dist/files/BrsFile.spec.js +57 -15
- package/dist/files/BrsFile.spec.js.map +1 -1
- package/dist/files/XmlFile.d.ts +19 -19
- package/dist/files/XmlFile.js +24 -42
- package/dist/files/XmlFile.js.map +1 -1
- package/dist/files/XmlFile.spec.js +70 -17
- package/dist/files/XmlFile.spec.js.map +1 -1
- package/dist/files/tests/imports.spec.js +8 -11
- package/dist/files/tests/imports.spec.js.map +1 -1
- package/dist/globalCallables.js +2 -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 +107 -28
- package/dist/interfaces.js +13 -0
- package/dist/interfaces.js.map +1 -1
- package/dist/lexer/TokenKind.d.ts +2 -0
- package/dist/lexer/TokenKind.js +5 -1
- package/dist/lexer/TokenKind.js.map +1 -1
- package/dist/parser/AstNode.d.ts +78 -1
- package/dist/parser/AstNode.js +80 -1
- package/dist/parser/AstNode.js.map +1 -1
- package/dist/parser/Expression.d.ts +87 -53
- package/dist/parser/Expression.js +243 -139
- package/dist/parser/Expression.js.map +1 -1
- package/dist/parser/Parser.Class.spec.js +10 -7
- package/dist/parser/Parser.Class.spec.js.map +1 -1
- package/dist/parser/Parser.d.ts +9 -5
- package/dist/parser/Parser.js +125 -78
- package/dist/parser/Parser.js.map +1 -1
- package/dist/parser/Parser.spec.d.ts +2 -0
- package/dist/parser/Parser.spec.js +117 -5
- package/dist/parser/Parser.spec.js.map +1 -1
- package/dist/parser/SGParser.d.ts +42 -4
- package/dist/parser/SGParser.js +191 -195
- package/dist/parser/SGParser.js.map +1 -1
- package/dist/parser/SGParser.spec.js +13 -10
- package/dist/parser/SGParser.spec.js.map +1 -1
- package/dist/parser/SGTypes.d.ts +279 -51
- package/dist/parser/SGTypes.js +562 -185
- package/dist/parser/SGTypes.js.map +1 -1
- package/dist/parser/Statement.d.ts +88 -70
- package/dist/parser/Statement.js +212 -136
- package/dist/parser/Statement.js.map +1 -1
- package/dist/parser/TranspileState.d.ts +1 -1
- package/dist/parser/TranspileState.js +5 -2
- package/dist/parser/TranspileState.js.map +1 -1
- package/dist/parser/tests/expression/TypeExpression.spec.d.ts +1 -0
- package/dist/parser/tests/expression/TypeExpression.spec.js +127 -0
- package/dist/parser/tests/expression/TypeExpression.spec.js.map +1 -0
- package/dist/types/ArrayType.d.ts +6 -4
- package/dist/types/ArrayType.js +30 -22
- package/dist/types/ArrayType.js.map +1 -1
- package/dist/types/ArrayType.spec.js +8 -8
- package/dist/types/ArrayType.spec.js.map +1 -1
- package/dist/types/BooleanType.d.ts +7 -4
- package/dist/types/BooleanType.js +13 -8
- package/dist/types/BooleanType.js.map +1 -1
- package/dist/types/BooleanType.spec.js +9 -3
- package/dist/types/BooleanType.spec.js.map +1 -1
- package/dist/types/BscType.d.ts +25 -2
- package/dist/types/BscType.js +64 -0
- package/dist/types/BscType.js.map +1 -1
- package/dist/types/BscTypeKind.d.ts +22 -0
- package/dist/types/BscTypeKind.js +27 -0
- package/dist/types/BscTypeKind.js.map +1 -0
- package/dist/types/ClassType.d.ts +11 -0
- package/dist/types/ClassType.js +31 -0
- package/dist/types/ClassType.js.map +1 -0
- package/dist/types/ClassType.spec.d.ts +1 -0
- package/dist/types/ClassType.spec.js +75 -0
- package/dist/types/ClassType.spec.js.map +1 -0
- package/dist/types/DoubleType.d.ts +7 -4
- package/dist/types/DoubleType.js +16 -20
- package/dist/types/DoubleType.js.map +1 -1
- package/dist/types/DoubleType.spec.js +11 -3
- package/dist/types/DoubleType.spec.js.map +1 -1
- package/dist/types/DynamicType.d.ts +9 -3
- package/dist/types/DynamicType.js +16 -2
- package/dist/types/DynamicType.js.map +1 -1
- package/dist/types/DynamicType.spec.js +15 -4
- package/dist/types/DynamicType.spec.js.map +1 -1
- package/dist/types/EnumType.d.ts +22 -0
- package/dist/types/EnumType.js +59 -0
- package/dist/types/EnumType.js.map +1 -0
- package/dist/types/EnumType.spec.d.ts +1 -0
- package/dist/types/EnumType.spec.js +33 -0
- package/dist/types/EnumType.spec.js.map +1 -0
- package/dist/types/FloatType.d.ts +7 -4
- package/dist/types/FloatType.js +16 -20
- package/dist/types/FloatType.js.map +1 -1
- package/dist/types/FloatType.spec.js +3 -3
- package/dist/types/FloatType.spec.js.map +1 -1
- package/dist/types/FunctionType.d.ts +6 -4
- package/dist/types/FunctionType.js +22 -19
- package/dist/types/FunctionType.js.map +1 -1
- package/dist/types/FunctionType.spec.js +5 -5
- package/dist/types/FunctionType.spec.js.map +1 -1
- package/dist/types/InheritableType.d.ts +25 -0
- package/dist/types/InheritableType.js +88 -0
- package/dist/types/InheritableType.js.map +1 -0
- package/dist/types/IntegerType.d.ts +7 -4
- package/dist/types/IntegerType.js +16 -20
- package/dist/types/IntegerType.js.map +1 -1
- package/dist/types/IntegerType.spec.js +7 -3
- package/dist/types/IntegerType.spec.js.map +1 -1
- package/dist/types/InterfaceType.d.ts +10 -10
- package/dist/types/InterfaceType.js +24 -45
- package/dist/types/InterfaceType.js.map +1 -1
- package/dist/types/InterfaceType.spec.js +59 -45
- package/dist/types/InterfaceType.spec.js.map +1 -1
- package/dist/types/InvalidType.d.ts +6 -4
- package/dist/types/InvalidType.js +12 -8
- package/dist/types/InvalidType.js.map +1 -1
- package/dist/types/InvalidType.spec.js +7 -3
- package/dist/types/InvalidType.spec.js.map +1 -1
- package/dist/types/LongIntegerType.d.ts +7 -4
- package/dist/types/LongIntegerType.js +16 -20
- package/dist/types/LongIntegerType.js.map +1 -1
- package/dist/types/LongIntegerType.spec.js +9 -3
- package/dist/types/LongIntegerType.spec.js.map +1 -1
- package/dist/types/NamespaceType.d.ts +11 -0
- package/dist/types/NamespaceType.js +25 -0
- package/dist/types/NamespaceType.js.map +1 -0
- package/dist/types/ObjectType.d.ts +8 -4
- package/dist/types/ObjectType.js +26 -7
- package/dist/types/ObjectType.js.map +1 -1
- package/dist/types/ObjectType.spec.js +2 -2
- package/dist/types/ObjectType.spec.js.map +1 -1
- package/dist/types/ReferenceType.d.ts +51 -0
- package/dist/types/ReferenceType.js +274 -0
- package/dist/types/ReferenceType.js.map +1 -0
- package/dist/types/ReferenceType.spec.d.ts +1 -0
- package/dist/types/ReferenceType.spec.js +122 -0
- package/dist/types/ReferenceType.spec.js.map +1 -0
- package/dist/types/StringType.d.ts +10 -4
- package/dist/types/StringType.js +16 -8
- package/dist/types/StringType.js.map +1 -1
- package/dist/types/StringType.spec.js +2 -2
- package/dist/types/StringType.spec.js.map +1 -1
- package/dist/types/UninitializedType.d.ts +6 -3
- package/dist/types/UninitializedType.js +14 -3
- package/dist/types/UninitializedType.js.map +1 -1
- package/dist/types/UnionType.d.ts +18 -0
- package/dist/types/UnionType.js +91 -0
- package/dist/types/UnionType.js.map +1 -0
- package/dist/types/UnionType.spec.d.ts +1 -0
- package/dist/types/UnionType.spec.js +103 -0
- package/dist/types/UnionType.spec.js.map +1 -0
- package/dist/types/VoidType.d.ts +7 -4
- package/dist/types/VoidType.js +13 -8
- package/dist/types/VoidType.js.map +1 -1
- package/dist/types/VoidType.spec.js +2 -2
- package/dist/types/VoidType.spec.js.map +1 -1
- package/dist/types/helper.spec.d.ts +1 -0
- package/dist/types/helper.spec.js +130 -0
- package/dist/types/helper.spec.js.map +1 -0
- package/dist/types/helpers.d.ts +19 -0
- package/dist/types/helpers.js +131 -0
- package/dist/types/helpers.js.map +1 -0
- package/dist/types/index.d.ts +22 -0
- package/dist/types/index.js +39 -0
- package/dist/types/index.js.map +1 -0
- package/dist/util.d.ts +9 -8
- package/dist/util.js +78 -32
- package/dist/util.js.map +1 -1
- package/dist/validators/ClassValidator.d.ts +0 -4
- package/dist/validators/ClassValidator.js +6 -30
- package/dist/validators/ClassValidator.js.map +1 -1
- package/package.json +2 -1
- package/dist/types/CustomType.d.ts +0 -9
- package/dist/types/CustomType.js +0 -32
- package/dist/types/CustomType.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArrayType.spec.js","sourceRoot":"","sources":["../../src/types/ArrayType.spec.ts"],"names":[],"mappings":";;AAAA,0DAA6C;AAE7C,2CAAwC;AACxC,+CAA4C;AAC5C,+CAA4C;AAC5C,6CAA0C;AAE1C,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACvB,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACpC,IAAA,yBAAM,EAAC,IAAI,qBAAS,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"ArrayType.spec.js","sourceRoot":"","sources":["../../src/types/ArrayType.spec.ts"],"names":[],"mappings":";;AAAA,0DAA6C;AAE7C,2CAAwC;AACxC,+CAA4C;AAC5C,+CAA4C;AAC5C,6CAA0C;AAE1C,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACvB,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACpC,IAAA,yBAAM,EAAC,IAAI,qBAAS,EAAE,CAAC,gBAAgB,CAAC,IAAI,qBAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACrE,IAAA,yBAAM,EAAC,IAAI,qBAAS,EAAE,CAAC,gBAAgB,CAAC,IAAI,yBAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC3E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACvD,IAAA,yBAAM,EAAC,IAAI,qBAAS,CAAC,IAAI,yBAAW,EAAE,CAAC,CAAC,gBAAgB,CAAC,IAAI,qBAAS,CAAC,IAAI,yBAAW,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACvG,IAAA,yBAAM,EAAC,IAAI,qBAAS,CAAC,IAAI,yBAAW,EAAE,CAAC,CAAC,gBAAgB,CAAC,IAAI,qBAAS,CAAC,IAAI,uBAAU,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IAC3G,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QACxC,IAAA,yBAAM,EAAC,IAAI,qBAAS,EAAE,CAAC,OAAO,CAAC,IAAI,yBAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC9B,IAAA,yBAAM,EAAC,IAAI,qBAAS,EAAE,CAAC,gBAAgB,CAAC,IAAI,yBAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QACxE,IAAA,yBAAM,EAAC,IAAI,qBAAS,EAAE,CAAC,gBAAgB,CAAC,IAAI,qBAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACtB,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;YAC1B,IAAA,yBAAM,EAAC,IAAI,qBAAS,CAAC,IAAI,yBAAW,EAAE,EAAE,IAAI,uBAAU,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QAC5G,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import { BscType } from './BscType';
|
|
2
|
+
import { BscTypeKind } from './BscTypeKind';
|
|
3
|
+
export declare class BooleanType extends BscType {
|
|
3
4
|
typeText?: string;
|
|
4
5
|
constructor(typeText?: string);
|
|
5
|
-
|
|
6
|
-
|
|
6
|
+
readonly kind = BscTypeKind.BooleanType;
|
|
7
|
+
static instance: BooleanType;
|
|
8
|
+
isTypeCompatible(targetType: BscType): boolean;
|
|
7
9
|
toString(): string;
|
|
8
10
|
toTypeString(): string;
|
|
11
|
+
isEqual(targetType: BscType): boolean;
|
|
9
12
|
}
|
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.BooleanType = void 0;
|
|
4
|
-
const
|
|
5
|
-
|
|
4
|
+
const reflection_1 = require("../astUtils/reflection");
|
|
5
|
+
const BscType_1 = require("./BscType");
|
|
6
|
+
const BscTypeKind_1 = require("./BscTypeKind");
|
|
7
|
+
class BooleanType extends BscType_1.BscType {
|
|
6
8
|
constructor(typeText) {
|
|
9
|
+
super();
|
|
7
10
|
this.typeText = typeText;
|
|
11
|
+
this.kind = BscTypeKind_1.BscTypeKind.BooleanType;
|
|
8
12
|
}
|
|
9
|
-
|
|
10
|
-
return (targetType
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
isConvertibleTo(targetType) {
|
|
14
|
-
return this.isAssignableTo(targetType);
|
|
13
|
+
isTypeCompatible(targetType) {
|
|
14
|
+
return ((0, reflection_1.isBooleanType)(targetType) ||
|
|
15
|
+
(0, reflection_1.isDynamicType)(targetType));
|
|
15
16
|
}
|
|
16
17
|
toString() {
|
|
17
18
|
var _a;
|
|
@@ -20,6 +21,10 @@ class BooleanType {
|
|
|
20
21
|
toTypeString() {
|
|
21
22
|
return this.toString();
|
|
22
23
|
}
|
|
24
|
+
isEqual(targetType) {
|
|
25
|
+
return (0, reflection_1.isBooleanType)(targetType);
|
|
26
|
+
}
|
|
23
27
|
}
|
|
24
28
|
exports.BooleanType = BooleanType;
|
|
29
|
+
BooleanType.instance = new BooleanType('boolean');
|
|
25
30
|
//# sourceMappingURL=BooleanType.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BooleanType.js","sourceRoot":"","sources":["../../src/types/BooleanType.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"BooleanType.js","sourceRoot":"","sources":["../../src/types/BooleanType.ts"],"names":[],"mappings":";;;AAAA,uDAAsE;AACtE,uCAAoC;AACpC,+CAA4C;AAE5C,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,CAC5B,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;;AA5BL,kCA6BC;AApBiB,oBAAQ,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC"}
|
|
@@ -3,10 +3,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const chai_config_spec_1 = require("../chai-config.spec");
|
|
4
4
|
const BooleanType_1 = require("./BooleanType");
|
|
5
5
|
const DynamicType_1 = require("./DynamicType");
|
|
6
|
+
const IntegerType_1 = require("./IntegerType");
|
|
6
7
|
describe('BooleanType', () => {
|
|
7
|
-
it('is
|
|
8
|
-
(0, chai_config_spec_1.expect)(new BooleanType_1.BooleanType().
|
|
9
|
-
(0, chai_config_spec_1.expect)(new BooleanType_1.BooleanType().
|
|
8
|
+
it('is equal to boolean type', () => {
|
|
9
|
+
(0, chai_config_spec_1.expect)(new BooleanType_1.BooleanType().isEqual(new BooleanType_1.BooleanType())).to.be.true;
|
|
10
|
+
(0, chai_config_spec_1.expect)(new BooleanType_1.BooleanType().isEqual(new DynamicType_1.DynamicType())).to.be.false;
|
|
11
|
+
});
|
|
12
|
+
it('is compatible with only correct types', () => {
|
|
13
|
+
(0, chai_config_spec_1.expect)(new BooleanType_1.BooleanType().isTypeCompatible(new BooleanType_1.BooleanType())).to.be.true;
|
|
14
|
+
(0, chai_config_spec_1.expect)(new BooleanType_1.BooleanType().isTypeCompatible(new DynamicType_1.DynamicType())).to.be.true;
|
|
15
|
+
(0, chai_config_spec_1.expect)(new BooleanType_1.BooleanType().isTypeCompatible(IntegerType_1.IntegerType.instance)).to.be.false;
|
|
10
16
|
});
|
|
11
17
|
});
|
|
12
18
|
//# sourceMappingURL=BooleanType.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BooleanType.spec.js","sourceRoot":"","sources":["../../src/types/BooleanType.spec.ts"],"names":[],"mappings":";;AAAA,0DAA6C;AAE7C,+CAA4C;AAC5C,+CAA4C;AAE5C,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IACzB,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"BooleanType.spec.js","sourceRoot":"","sources":["../../src/types/BooleanType.spec.ts"],"names":[],"mappings":";;AAAA,0DAA6C;AAE7C,+CAA4C;AAC5C,+CAA4C;AAC5C,+CAA4C;AAE5C,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IACzB,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAChC,IAAA,yBAAM,EAAC,IAAI,yBAAW,EAAE,CAAC,OAAO,CAAC,IAAI,yBAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAChE,IAAA,yBAAM,EAAC,IAAI,yBAAW,EAAE,CAAC,OAAO,CAAC,IAAI,yBAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC7C,IAAA,yBAAM,EAAC,IAAI,yBAAW,EAAE,CAAC,gBAAgB,CAAC,IAAI,yBAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACzE,IAAA,yBAAM,EAAC,IAAI,yBAAW,EAAE,CAAC,gBAAgB,CAAC,IAAI,yBAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACzE,IAAA,yBAAM,EAAC,IAAI,yBAAW,EAAE,CAAC,gBAAgB,CAAC,yBAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IACjF,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
package/dist/types/BscType.d.ts
CHANGED
|
@@ -1,6 +1,29 @@
|
|
|
1
|
-
|
|
1
|
+
import type { GetSymbolTypeOptions, SymbolTableProvider } from '../SymbolTable';
|
|
2
|
+
import type { Range } from 'vscode-languageserver';
|
|
3
|
+
import type { SymbolTypeFlag } from '../SymbolTable';
|
|
4
|
+
import { SymbolTable } from '../SymbolTable';
|
|
5
|
+
export declare abstract class BscType {
|
|
6
|
+
readonly memberTable: SymbolTable;
|
|
7
|
+
protected __identifier: string;
|
|
8
|
+
constructor(name?: string);
|
|
9
|
+
pushMemberProvider(provider: SymbolTableProvider): void;
|
|
10
|
+
popMemberProvider(): void;
|
|
11
|
+
addMember(name: string, range: Range, type: BscType, flags: SymbolTypeFlag): void;
|
|
12
|
+
getMemberType(name: string, options: GetSymbolTypeOptions): BscType;
|
|
13
|
+
isResolvable(): boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Check if this type can be assigned to the target type
|
|
16
|
+
* @param targetType the type that we're trying to assign this type to
|
|
17
|
+
* @deprecated
|
|
18
|
+
*/
|
|
2
19
|
isAssignableTo(targetType: BscType): boolean;
|
|
3
|
-
|
|
20
|
+
/**
|
|
21
|
+
* Check if a different type can be assigned to this type - eg. does the other type convert into this type?
|
|
22
|
+
* @param _otherType the type to check if it can be used as this type, or can automatically be converted into this type
|
|
23
|
+
*/
|
|
24
|
+
isTypeCompatible(_otherType: BscType): boolean;
|
|
4
25
|
toString(): string;
|
|
5
26
|
toTypeString(): string;
|
|
27
|
+
isEqual(targetType: BscType): boolean;
|
|
28
|
+
checkCompatibilityBasedOnMembers(targetType: BscType, flags: SymbolTypeFlag): boolean;
|
|
6
29
|
}
|
package/dist/types/BscType.js
CHANGED
|
@@ -1,3 +1,67 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BscType = void 0;
|
|
4
|
+
const SymbolTable_1 = require("../SymbolTable");
|
|
5
|
+
class BscType {
|
|
6
|
+
constructor(name = '') {
|
|
7
|
+
this.__identifier = `${this.constructor.name}${name ? ': ' + name : ''}`;
|
|
8
|
+
this.memberTable = new SymbolTable_1.SymbolTable(this.__identifier);
|
|
9
|
+
}
|
|
10
|
+
pushMemberProvider(provider) {
|
|
11
|
+
this.memberTable.pushParentProvider(provider);
|
|
12
|
+
}
|
|
13
|
+
popMemberProvider() {
|
|
14
|
+
this.memberTable.popParentProvider();
|
|
15
|
+
}
|
|
16
|
+
addMember(name, range, type, flags) {
|
|
17
|
+
this.memberTable.addSymbol(name, range, type, flags);
|
|
18
|
+
}
|
|
19
|
+
getMemberType(name, options) {
|
|
20
|
+
return this.memberTable.getSymbolType(name, options);
|
|
21
|
+
}
|
|
22
|
+
isResolvable() {
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Check if this type can be assigned to the target type
|
|
27
|
+
* @param targetType the type that we're trying to assign this type to
|
|
28
|
+
* @deprecated
|
|
29
|
+
*/
|
|
30
|
+
isAssignableTo(targetType) {
|
|
31
|
+
return targetType.isTypeCompatible(this);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Check if a different type can be assigned to this type - eg. does the other type convert into this type?
|
|
35
|
+
* @param _otherType the type to check if it can be used as this type, or can automatically be converted into this type
|
|
36
|
+
*/
|
|
37
|
+
isTypeCompatible(_otherType) {
|
|
38
|
+
throw new Error('Method not implemented.');
|
|
39
|
+
}
|
|
40
|
+
toString() {
|
|
41
|
+
throw new Error('Method not implemented.');
|
|
42
|
+
}
|
|
43
|
+
toTypeString() {
|
|
44
|
+
throw new Error('Method not implemented.');
|
|
45
|
+
}
|
|
46
|
+
isEqual(targetType) {
|
|
47
|
+
throw new Error('Method not implemented.');
|
|
48
|
+
}
|
|
49
|
+
checkCompatibilityBasedOnMembers(targetType, flags) {
|
|
50
|
+
var _a;
|
|
51
|
+
let isSuperSet = true;
|
|
52
|
+
const targetSymbols = (_a = targetType.memberTable) === null || _a === void 0 ? void 0 : _a.getAllSymbols(flags);
|
|
53
|
+
for (const targetSymbol of targetSymbols) {
|
|
54
|
+
const myTypesOfTargetSymbol = this.memberTable.getSymbolTypes(targetSymbol.name, flags);
|
|
55
|
+
isSuperSet = isSuperSet && myTypesOfTargetSymbol && myTypesOfTargetSymbol.length > 0 &&
|
|
56
|
+
myTypesOfTargetSymbol.reduce((acc, myTypeOfTarget) => {
|
|
57
|
+
return acc && myTypeOfTarget.isTypeCompatible(targetSymbol.type);
|
|
58
|
+
}, true);
|
|
59
|
+
if (!isSuperSet) {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return isSuperSet;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
exports.BscType = BscType;
|
|
3
67
|
//# sourceMappingURL=BscType.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BscType.js","sourceRoot":"","sources":["../../src/types/BscType.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"BscType.js","sourceRoot":"","sources":["../../src/types/BscType.ts"],"names":[],"mappings":";;;AAGA,gDAA6C;AAE7C,MAAsB,OAAO;IAKzB,YAAY,IAAI,GAAG,EAAE;QACjB,IAAI,CAAC,YAAY,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACzE,IAAI,CAAC,WAAW,GAAG,IAAI,yBAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC1D,CAAC;IAED,kBAAkB,CAAC,QAA6B;QAC5C,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAClD,CAAC;IAED,iBAAiB;QACb,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC;IACzC,CAAC;IAED,SAAS,CAAC,IAAY,EAAE,KAAY,EAAE,IAAa,EAAE,KAAqB;QACtE,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACzD,CAAC;IAED,aAAa,CAAC,IAAY,EAAE,OAA6B;QACrD,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;IAED,YAAY;QACR,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACH,cAAc,CAAC,UAAmB;QAC9B,OAAO,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED;;;OAGG;IACH,gBAAgB,CAAC,UAAmB;QAChC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IACD,QAAQ;QACJ,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IACD,YAAY;QACR,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO,CAAC,UAAmB;QACvB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IAGD,gCAAgC,CAAC,UAAmB,EAAE,KAAqB;;QACvE,IAAI,UAAU,GAAG,IAAI,CAAC;QACtB,MAAM,aAAa,GAAG,MAAA,UAAU,CAAC,WAAW,0CAAE,aAAa,CAAC,KAAK,CAAC,CAAC;QACnE,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE;YACtC,MAAM,qBAAqB,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACxF,UAAU,GAAG,UAAU,IAAI,qBAAqB,IAAI,qBAAqB,CAAC,MAAM,GAAG,CAAC;gBAChF,qBAAqB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,cAAc,EAAE,EAAE;oBACjD,OAAO,GAAG,IAAI,cAAc,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;gBACrE,CAAC,EAAE,IAAI,CAAC,CAAC;YACb,IAAI,CAAC,UAAU,EAAE;gBACb,OAAO,KAAK,CAAC;aAChB;SACJ;QACD,OAAO,UAAU,CAAC;IACtB,CAAC;CACJ;AAzED,0BAyEC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export declare enum BscTypeKind {
|
|
2
|
+
ArrayType = "ArrayType",
|
|
3
|
+
BooleanType = "BooleanType",
|
|
4
|
+
ClassType = "ClassType",
|
|
5
|
+
DoubleType = "DoubleType",
|
|
6
|
+
DynamicType = "DynamicType",
|
|
7
|
+
EnumType = "EnumType",
|
|
8
|
+
EnumMemberType = "EnumMemberType",
|
|
9
|
+
FloatType = "FloatType",
|
|
10
|
+
FunctionType = "FunctionType",
|
|
11
|
+
IntegerType = "IntegerType",
|
|
12
|
+
InterfaceType = "InterfaceType",
|
|
13
|
+
InvalidType = "InvalidType",
|
|
14
|
+
LongIntegerType = "LongIntegerType",
|
|
15
|
+
NamespaceType = "NamespaceType",
|
|
16
|
+
ObjectType = "ObjectType",
|
|
17
|
+
ReferenceType = "ReferenceType",
|
|
18
|
+
StringType = "StringType",
|
|
19
|
+
UninitializedType = "UninitializedType",
|
|
20
|
+
UnionType = "UnionType",
|
|
21
|
+
VoidType = "VoidType"
|
|
22
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BscTypeKind = void 0;
|
|
4
|
+
var BscTypeKind;
|
|
5
|
+
(function (BscTypeKind) {
|
|
6
|
+
BscTypeKind["ArrayType"] = "ArrayType";
|
|
7
|
+
BscTypeKind["BooleanType"] = "BooleanType";
|
|
8
|
+
BscTypeKind["ClassType"] = "ClassType";
|
|
9
|
+
BscTypeKind["DoubleType"] = "DoubleType";
|
|
10
|
+
BscTypeKind["DynamicType"] = "DynamicType";
|
|
11
|
+
BscTypeKind["EnumType"] = "EnumType";
|
|
12
|
+
BscTypeKind["EnumMemberType"] = "EnumMemberType";
|
|
13
|
+
BscTypeKind["FloatType"] = "FloatType";
|
|
14
|
+
BscTypeKind["FunctionType"] = "FunctionType";
|
|
15
|
+
BscTypeKind["IntegerType"] = "IntegerType";
|
|
16
|
+
BscTypeKind["InterfaceType"] = "InterfaceType";
|
|
17
|
+
BscTypeKind["InvalidType"] = "InvalidType";
|
|
18
|
+
BscTypeKind["LongIntegerType"] = "LongIntegerType";
|
|
19
|
+
BscTypeKind["NamespaceType"] = "NamespaceType";
|
|
20
|
+
BscTypeKind["ObjectType"] = "ObjectType";
|
|
21
|
+
BscTypeKind["ReferenceType"] = "ReferenceType";
|
|
22
|
+
BscTypeKind["StringType"] = "StringType";
|
|
23
|
+
BscTypeKind["UninitializedType"] = "UninitializedType";
|
|
24
|
+
BscTypeKind["UnionType"] = "UnionType";
|
|
25
|
+
BscTypeKind["VoidType"] = "VoidType";
|
|
26
|
+
})(BscTypeKind = exports.BscTypeKind || (exports.BscTypeKind = {}));
|
|
27
|
+
//# sourceMappingURL=BscTypeKind.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BscTypeKind.js","sourceRoot":"","sources":["../../src/types/BscTypeKind.ts"],"names":[],"mappings":";;;AAAA,IAAY,WAqBX;AArBD,WAAY,WAAW;IACnB,sCAAuB,CAAA;IACvB,0CAA2B,CAAA;IAC3B,sCAAuB,CAAA;IACvB,wCAAyB,CAAA;IACzB,0CAA2B,CAAA;IAC3B,oCAAqB,CAAA;IACrB,gDAAiC,CAAA;IACjC,sCAAuB,CAAA;IACvB,4CAA6B,CAAA;IAC7B,0CAA2B,CAAA;IAC3B,8CAA+B,CAAA;IAC/B,0CAA2B,CAAA;IAC3B,kDAAmC,CAAA;IACnC,8CAA+B,CAAA;IAC/B,wCAAyB,CAAA;IACzB,8CAA+B,CAAA;IAC/B,wCAAyB,CAAA;IACzB,sDAAuC,CAAA;IACvC,sCAAuB,CAAA;IACvB,oCAAqB,CAAA;AACzB,CAAC,EArBW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAqBtB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { BscType } from './BscType';
|
|
2
|
+
import { BscTypeKind } from './BscTypeKind';
|
|
3
|
+
import { InheritableType } from './InheritableType';
|
|
4
|
+
export declare class ClassType extends InheritableType {
|
|
5
|
+
name: string;
|
|
6
|
+
readonly superClass?: BscType;
|
|
7
|
+
constructor(name: string, superClass?: BscType);
|
|
8
|
+
readonly kind = BscTypeKind.ClassType;
|
|
9
|
+
isTypeCompatible(targetType: BscType): any;
|
|
10
|
+
isEqual(targetType: BscType): boolean;
|
|
11
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ClassType = void 0;
|
|
4
|
+
const reflection_1 = require("../astUtils/reflection");
|
|
5
|
+
const BscTypeKind_1 = require("./BscTypeKind");
|
|
6
|
+
const InheritableType_1 = require("./InheritableType");
|
|
7
|
+
class ClassType extends InheritableType_1.InheritableType {
|
|
8
|
+
constructor(name, superClass) {
|
|
9
|
+
super(name, superClass);
|
|
10
|
+
this.name = name;
|
|
11
|
+
this.superClass = superClass;
|
|
12
|
+
this.kind = BscTypeKind_1.BscTypeKind.ClassType;
|
|
13
|
+
}
|
|
14
|
+
isTypeCompatible(targetType) {
|
|
15
|
+
if (this.isEqual(targetType)) {
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
else if ((0, reflection_1.isDynamicType)(targetType)) {
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
else if ((0, reflection_1.isClassType)(targetType)) {
|
|
22
|
+
return this.isTypeDescendent(targetType);
|
|
23
|
+
}
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
isEqual(targetType) {
|
|
27
|
+
return (0, reflection_1.isClassType)(targetType) && this.name.toLowerCase() === targetType.name.toLowerCase();
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.ClassType = ClassType;
|
|
31
|
+
//# sourceMappingURL=ClassType.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClassType.js","sourceRoot":"","sources":["../../src/types/ClassType.ts"],"names":[],"mappings":";;;AAAA,uDAAoE;AAEpE,+CAA4C;AAC5C,uDAAoD;AAEpD,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,EAAE;YAClC,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;CACJ;AAtBD,8BAsBC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const chai_1 = require("chai");
|
|
4
|
+
const ClassType_1 = require("./ClassType");
|
|
5
|
+
const StringType_1 = require("./StringType");
|
|
6
|
+
const SymbolTable_1 = require("../SymbolTable");
|
|
7
|
+
const testHelpers_spec_1 = require("../testHelpers.spec");
|
|
8
|
+
const ReferenceType_1 = require("./ReferenceType");
|
|
9
|
+
const reflection_1 = require("../astUtils/reflection");
|
|
10
|
+
const IntegerType_1 = require("./IntegerType");
|
|
11
|
+
const SymbolTable_2 = require("../SymbolTable");
|
|
12
|
+
describe('ClassType', () => {
|
|
13
|
+
it('can have a super class', () => {
|
|
14
|
+
const superKlass = new ClassType_1.ClassType('SuperKlass');
|
|
15
|
+
const subKlass = new ClassType_1.ClassType('SubKlass', superKlass);
|
|
16
|
+
(0, chai_1.expect)(subKlass.superClass).to.exist;
|
|
17
|
+
(0, chai_1.expect)(subKlass.superClass.toString()).to.equal('SuperKlass');
|
|
18
|
+
});
|
|
19
|
+
it('should be assignable to a super klass, or higher ancestor', () => {
|
|
20
|
+
const grandSuperKlass = new ClassType_1.ClassType('GrandSuperKlass');
|
|
21
|
+
const superKlass = new ClassType_1.ClassType('SuperKlass', grandSuperKlass);
|
|
22
|
+
const subKlass = new ClassType_1.ClassType('SubKlass', superKlass);
|
|
23
|
+
(0, chai_1.expect)(subKlass.isTypeCompatible(subKlass)).to.be.true;
|
|
24
|
+
(0, chai_1.expect)(superKlass.isTypeCompatible(subKlass)).to.be.true;
|
|
25
|
+
(0, chai_1.expect)(grandSuperKlass.isTypeCompatible(superKlass)).to.be.true;
|
|
26
|
+
});
|
|
27
|
+
it('should not be assignable to a class that is not an ancestor', () => {
|
|
28
|
+
const otherKlass = new ClassType_1.ClassType('OtherKlass');
|
|
29
|
+
const superKlass = new ClassType_1.ClassType('SuperKlass');
|
|
30
|
+
const subKlass = new ClassType_1.ClassType('SubKlass', superKlass);
|
|
31
|
+
(0, chai_1.expect)(superKlass.isTypeCompatible(subKlass)).to.be.true;
|
|
32
|
+
(0, chai_1.expect)(otherKlass.isTypeCompatible(subKlass)).to.be.false;
|
|
33
|
+
});
|
|
34
|
+
it('will look in super classes for members', () => {
|
|
35
|
+
const superKlass = new ClassType_1.ClassType('SuperKlass');
|
|
36
|
+
superKlass.addMember('title', null, StringType_1.StringType.instance, SymbolTable_2.SymbolTypeFlag.runtime);
|
|
37
|
+
const subKlass = new ClassType_1.ClassType('SubKlass', superKlass);
|
|
38
|
+
(0, testHelpers_spec_1.expectTypeToBe)(subKlass.getMemberType('title', { flags: SymbolTable_2.SymbolTypeFlag.runtime }), StringType_1.StringType);
|
|
39
|
+
});
|
|
40
|
+
it('allow ReferenceTypes as super classes', () => {
|
|
41
|
+
const myTable = new SymbolTable_1.SymbolTable('test');
|
|
42
|
+
const futureSuperKlass = new ReferenceType_1.ReferenceType('SuperKlass', 'SuperKlass', SymbolTable_2.SymbolTypeFlag.typetime, () => myTable);
|
|
43
|
+
const subKlass = new ClassType_1.ClassType('SubKlass', futureSuperKlass);
|
|
44
|
+
(0, chai_1.expect)(subKlass.isResolvable()).to.be.false;
|
|
45
|
+
const superKlass = new ClassType_1.ClassType('SuperKlass');
|
|
46
|
+
myTable.addSymbol('SuperKlass', null, superKlass, SymbolTable_2.SymbolTypeFlag.typetime);
|
|
47
|
+
(0, chai_1.expect)(subKlass.isResolvable()).to.be.true;
|
|
48
|
+
});
|
|
49
|
+
it('allows members of future super classes to be resolved', () => {
|
|
50
|
+
const myTable = new SymbolTable_1.SymbolTable('test');
|
|
51
|
+
const futureSuperKlass = new ReferenceType_1.ReferenceType('SuperKlass', 'SuperKlass', SymbolTable_2.SymbolTypeFlag.typetime, () => myTable);
|
|
52
|
+
const subKlass = new ClassType_1.ClassType('SubKlass', futureSuperKlass);
|
|
53
|
+
(0, chai_1.expect)(subKlass.isResolvable()).to.be.false;
|
|
54
|
+
const futureTitleType = subKlass.getMemberType('title', { flags: SymbolTable_2.SymbolTypeFlag.runtime });
|
|
55
|
+
(0, chai_1.expect)((0, reflection_1.isReferenceType)(futureTitleType)).to.be.true;
|
|
56
|
+
(0, chai_1.expect)(futureTitleType.isResolvable()).to.be.false;
|
|
57
|
+
const superKlass = new ClassType_1.ClassType('SuperKlass');
|
|
58
|
+
superKlass.addMember('title', null, StringType_1.StringType.instance, SymbolTable_2.SymbolTypeFlag.runtime);
|
|
59
|
+
// eslint-disable-next-line no-bitwise
|
|
60
|
+
myTable.addSymbol('SuperKlass', null, superKlass, SymbolTable_2.SymbolTypeFlag.typetime | SymbolTable_2.SymbolTypeFlag.runtime);
|
|
61
|
+
(0, chai_1.expect)(futureTitleType.isResolvable()).to.be.true;
|
|
62
|
+
(0, testHelpers_spec_1.expectTypeToBe)(futureTitleType, StringType_1.StringType);
|
|
63
|
+
});
|
|
64
|
+
describe('toJSString', () => {
|
|
65
|
+
it('includes superclass members', () => {
|
|
66
|
+
const superKlass = new ClassType_1.ClassType('SuperKlass');
|
|
67
|
+
const subKlass = new ClassType_1.ClassType('SubKlass', superKlass);
|
|
68
|
+
superKlass.addMember('name', null, StringType_1.StringType.instance, SymbolTable_2.SymbolTypeFlag.runtime);
|
|
69
|
+
superKlass.addMember('age', null, IntegerType_1.IntegerType.instance, SymbolTable_2.SymbolTypeFlag.runtime);
|
|
70
|
+
(0, chai_1.expect)(subKlass.toJSString).to.exist;
|
|
71
|
+
(0, chai_1.expect)(subKlass.toJSString()).to.equal('{ age: integer; name: string; }');
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
//# sourceMappingURL=ClassType.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClassType.spec.js","sourceRoot":"","sources":["../../src/types/ClassType.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import { BscType } from './BscType';
|
|
2
|
+
import { BscTypeKind } from './BscTypeKind';
|
|
3
|
+
export declare class DoubleType extends BscType {
|
|
3
4
|
typeText?: string;
|
|
4
5
|
constructor(typeText?: string);
|
|
5
|
-
|
|
6
|
-
|
|
6
|
+
readonly kind = BscTypeKind.DoubleType;
|
|
7
|
+
static instance: DoubleType;
|
|
8
|
+
isTypeCompatible(targetType: BscType): boolean;
|
|
7
9
|
toString(): string;
|
|
8
10
|
toTypeString(): string;
|
|
11
|
+
isEqual(targetType: BscType): boolean;
|
|
9
12
|
}
|
package/dist/types/DoubleType.js
CHANGED
|
@@ -1,29 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DoubleType = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
class DoubleType {
|
|
4
|
+
const reflection_1 = require("../astUtils/reflection");
|
|
5
|
+
const BscType_1 = require("./BscType");
|
|
6
|
+
const BscTypeKind_1 = require("./BscTypeKind");
|
|
7
|
+
class DoubleType extends BscType_1.BscType {
|
|
9
8
|
constructor(typeText) {
|
|
9
|
+
super();
|
|
10
10
|
this.typeText = typeText;
|
|
11
|
+
this.kind = BscTypeKind_1.BscTypeKind.DoubleType;
|
|
11
12
|
}
|
|
12
|
-
|
|
13
|
-
return (targetType
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
targetType instanceof IntegerType_1.IntegerType ||
|
|
19
|
-
targetType instanceof FloatType_1.FloatType ||
|
|
20
|
-
targetType instanceof DoubleType ||
|
|
21
|
-
targetType instanceof LongIntegerType_1.LongIntegerType) {
|
|
22
|
-
return true;
|
|
23
|
-
}
|
|
24
|
-
else {
|
|
25
|
-
return false;
|
|
26
|
-
}
|
|
13
|
+
isTypeCompatible(targetType) {
|
|
14
|
+
return ((0, reflection_1.isDynamicType)(targetType) ||
|
|
15
|
+
(0, reflection_1.isIntegerType)(targetType) ||
|
|
16
|
+
(0, reflection_1.isFloatType)(targetType) ||
|
|
17
|
+
(0, reflection_1.isDoubleType)(targetType) ||
|
|
18
|
+
(0, reflection_1.isLongIntegerType)(targetType));
|
|
27
19
|
}
|
|
28
20
|
toString() {
|
|
29
21
|
var _a;
|
|
@@ -32,6 +24,10 @@ class DoubleType {
|
|
|
32
24
|
toTypeString() {
|
|
33
25
|
return this.toString();
|
|
34
26
|
}
|
|
27
|
+
isEqual(targetType) {
|
|
28
|
+
return (0, reflection_1.isDoubleType)(targetType);
|
|
29
|
+
}
|
|
35
30
|
}
|
|
36
31
|
exports.DoubleType = DoubleType;
|
|
32
|
+
DoubleType.instance = new DoubleType('double');
|
|
37
33
|
//# sourceMappingURL=DoubleType.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DoubleType.js","sourceRoot":"","sources":["../../src/types/DoubleType.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"DoubleType.js","sourceRoot":"","sources":["../../src/types/DoubleType.ts"],"names":[],"mappings":";;;AAAA,uDAAoH;AACpH,uCAAoC;AACpC,+CAA4C;AAG5C,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,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,wBAAW,EAAC,UAAU,CAAC;YACvB,IAAA,yBAAY,EAAC,UAAU,CAAC;YACxB,IAAA,8BAAiB,EAAC,UAAU,CAAC,CAChC,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;;AA9BL,gCA+BC;AAtBiB,mBAAQ,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC"}
|
|
@@ -1,12 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const chai_config_spec_1 = require("../chai-config.spec");
|
|
4
|
+
const BooleanType_1 = require("./BooleanType");
|
|
4
5
|
const DoubleType_1 = require("./DoubleType");
|
|
5
6
|
const DynamicType_1 = require("./DynamicType");
|
|
7
|
+
const IntegerType_1 = require("./IntegerType");
|
|
6
8
|
describe('DoubleType', () => {
|
|
7
|
-
it('is
|
|
8
|
-
(0, chai_config_spec_1.expect)(new DoubleType_1.DoubleType().
|
|
9
|
-
(0, chai_config_spec_1.expect)(new DoubleType_1.DoubleType().
|
|
9
|
+
it('is equal to double type', () => {
|
|
10
|
+
(0, chai_config_spec_1.expect)(new DoubleType_1.DoubleType().isEqual(new DoubleType_1.DoubleType())).to.be.true;
|
|
11
|
+
(0, chai_config_spec_1.expect)(new DoubleType_1.DoubleType().isEqual(new DynamicType_1.DynamicType())).to.be.false;
|
|
12
|
+
});
|
|
13
|
+
it('is compatible with only correct types', () => {
|
|
14
|
+
(0, chai_config_spec_1.expect)(new DoubleType_1.DoubleType().isTypeCompatible(new DoubleType_1.DoubleType())).to.be.true;
|
|
15
|
+
(0, chai_config_spec_1.expect)(new DoubleType_1.DoubleType().isTypeCompatible(new DynamicType_1.DynamicType())).to.be.true;
|
|
16
|
+
(0, chai_config_spec_1.expect)(new DoubleType_1.DoubleType().isTypeCompatible(IntegerType_1.IntegerType.instance)).to.be.true;
|
|
17
|
+
(0, chai_config_spec_1.expect)(new DoubleType_1.DoubleType().isTypeCompatible(BooleanType_1.BooleanType.instance)).to.be.false;
|
|
10
18
|
});
|
|
11
19
|
});
|
|
12
20
|
//# sourceMappingURL=DoubleType.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DoubleType.spec.js","sourceRoot":"","sources":["../../src/types/DoubleType.spec.ts"],"names":[],"mappings":";;AAAA,0DAA6C;
|
|
1
|
+
{"version":3,"file":"DoubleType.spec.js","sourceRoot":"","sources":["../../src/types/DoubleType.spec.ts"],"names":[],"mappings":";;AAAA,0DAA6C;AAC7C,+CAA4C;AAE5C,6CAA0C;AAC1C,+CAA4C;AAC5C,+CAA4C;AAE5C,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAExB,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QAC/B,IAAA,yBAAM,EAAC,IAAI,uBAAU,EAAE,CAAC,OAAO,CAAC,IAAI,uBAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAC9D,IAAA,yBAAM,EAAC,IAAI,uBAAU,EAAE,CAAC,OAAO,CAAC,IAAI,yBAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC7C,IAAA,yBAAM,EAAC,IAAI,uBAAU,EAAE,CAAC,gBAAgB,CAAC,IAAI,uBAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACvE,IAAA,yBAAM,EAAC,IAAI,uBAAU,EAAE,CAAC,gBAAgB,CAAC,IAAI,yBAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACxE,IAAA,yBAAM,EAAC,IAAI,uBAAU,EAAE,CAAC,gBAAgB,CAAC,yBAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAC3E,IAAA,yBAAM,EAAC,IAAI,uBAAU,EAAE,CAAC,gBAAgB,CAAC,yBAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IAChF,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -1,13 +1,19 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
1
|
+
import type { GetTypeOptions } from '../interfaces';
|
|
2
|
+
import { BscType } from './BscType';
|
|
3
|
+
import { BscTypeKind } from './BscTypeKind';
|
|
4
|
+
export declare class DynamicType extends BscType {
|
|
3
5
|
typeText?: string;
|
|
4
6
|
constructor(typeText?: string);
|
|
7
|
+
readonly kind = BscTypeKind.DynamicType;
|
|
5
8
|
static readonly instance: DynamicType;
|
|
9
|
+
get returnType(): DynamicType;
|
|
6
10
|
isAssignableTo(targetType: BscType): boolean;
|
|
7
11
|
/**
|
|
8
12
|
* The dynamic type is convertible to everything.
|
|
9
13
|
*/
|
|
10
|
-
|
|
14
|
+
isTypeCompatible(targetType: BscType): boolean;
|
|
11
15
|
toString(): string;
|
|
12
16
|
toTypeString(): string;
|
|
17
|
+
isEqual(targetType: BscType): boolean;
|
|
18
|
+
getMemberType(memberName: string, options: GetTypeOptions): DynamicType;
|
|
13
19
|
}
|
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DynamicType = void 0;
|
|
4
|
-
|
|
4
|
+
const reflection_1 = require("../astUtils/reflection");
|
|
5
|
+
const BscType_1 = require("./BscType");
|
|
6
|
+
const BscTypeKind_1 = require("./BscTypeKind");
|
|
7
|
+
class DynamicType extends BscType_1.BscType {
|
|
5
8
|
constructor(typeText) {
|
|
9
|
+
super();
|
|
6
10
|
this.typeText = typeText;
|
|
11
|
+
this.kind = BscTypeKind_1.BscTypeKind.DynamicType;
|
|
12
|
+
}
|
|
13
|
+
get returnType() {
|
|
14
|
+
return DynamicType.instance;
|
|
7
15
|
}
|
|
8
16
|
isAssignableTo(targetType) {
|
|
9
17
|
//everything can be dynamic, so as long as a type is provided, this is true
|
|
@@ -12,7 +20,7 @@ class DynamicType {
|
|
|
12
20
|
/**
|
|
13
21
|
* The dynamic type is convertible to everything.
|
|
14
22
|
*/
|
|
15
|
-
|
|
23
|
+
isTypeCompatible(targetType) {
|
|
16
24
|
//everything can be dynamic, so as long as a type is provided, this is true
|
|
17
25
|
return !!targetType;
|
|
18
26
|
}
|
|
@@ -23,6 +31,12 @@ class DynamicType {
|
|
|
23
31
|
toTypeString() {
|
|
24
32
|
return this.toString();
|
|
25
33
|
}
|
|
34
|
+
isEqual(targetType) {
|
|
35
|
+
return (0, reflection_1.isDynamicType)(targetType);
|
|
36
|
+
}
|
|
37
|
+
getMemberType(memberName, options) {
|
|
38
|
+
return DynamicType.instance;
|
|
39
|
+
}
|
|
26
40
|
}
|
|
27
41
|
exports.DynamicType = DynamicType;
|
|
28
42
|
DynamicType.instance = new DynamicType();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DynamicType.js","sourceRoot":"","sources":["../../src/types/DynamicType.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"DynamicType.js","sourceRoot":"","sources":["../../src/types/DynamicType.ts"],"names":[],"mappings":";;;AACA,uDAAuD;AACvD,uCAAoC;AACpC,+CAA4C;AAE5C,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"}
|
|
@@ -1,12 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const chai_config_spec_1 = require("../chai-config.spec");
|
|
4
|
+
const BooleanType_1 = require("./BooleanType");
|
|
5
|
+
const ClassType_1 = require("./ClassType");
|
|
6
|
+
const DoubleType_1 = require("./DoubleType");
|
|
4
7
|
const DynamicType_1 = require("./DynamicType");
|
|
5
|
-
const
|
|
8
|
+
const IntegerType_1 = require("./IntegerType");
|
|
6
9
|
describe('DynamicType', () => {
|
|
7
|
-
it('is
|
|
8
|
-
(0, chai_config_spec_1.expect)(new DynamicType_1.DynamicType().
|
|
9
|
-
(0, chai_config_spec_1.expect)(new DynamicType_1.DynamicType().
|
|
10
|
+
it('is equal to dynamic type', () => {
|
|
11
|
+
(0, chai_config_spec_1.expect)(new DynamicType_1.DynamicType().isEqual(new DynamicType_1.DynamicType())).to.be.true;
|
|
12
|
+
(0, chai_config_spec_1.expect)(new DynamicType_1.DynamicType().isEqual(new DoubleType_1.DoubleType())).to.be.false;
|
|
13
|
+
(0, chai_config_spec_1.expect)(new DynamicType_1.DynamicType().isEqual(new ClassType_1.ClassType('test'))).to.be.false;
|
|
14
|
+
});
|
|
15
|
+
it('is compatible with only all types', () => {
|
|
16
|
+
(0, chai_config_spec_1.expect)(new DynamicType_1.DynamicType().isTypeCompatible(new DoubleType_1.DoubleType())).to.be.true;
|
|
17
|
+
(0, chai_config_spec_1.expect)(new DynamicType_1.DynamicType().isTypeCompatible(new DynamicType_1.DynamicType())).to.be.true;
|
|
18
|
+
(0, chai_config_spec_1.expect)(new DynamicType_1.DynamicType().isTypeCompatible(IntegerType_1.IntegerType.instance)).to.be.true;
|
|
19
|
+
(0, chai_config_spec_1.expect)(new DynamicType_1.DynamicType().isTypeCompatible(BooleanType_1.BooleanType.instance)).to.be.true;
|
|
20
|
+
(0, chai_config_spec_1.expect)(new DynamicType_1.DynamicType().isTypeCompatible(new ClassType_1.ClassType('test'))).to.be.true;
|
|
10
21
|
});
|
|
11
22
|
});
|
|
12
23
|
//# sourceMappingURL=DynamicType.spec.js.map
|