brighterscript 0.65.1 → 0.66.0-alpha.0

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.
Files changed (249) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +8 -0
  3. package/dist/BsConfig.d.ts +5 -11
  4. package/dist/CacheVerifier.d.ts +8 -0
  5. package/dist/CacheVerifier.js +20 -0
  6. package/dist/CacheVerifier.js.map +1 -0
  7. package/dist/DiagnosticMessages.d.ts +9 -4
  8. package/dist/DiagnosticMessages.js +8 -3
  9. package/dist/DiagnosticMessages.js.map +1 -1
  10. package/dist/FunctionScope.d.ts +1 -0
  11. package/dist/FunctionScope.js +3 -0
  12. package/dist/FunctionScope.js.map +1 -1
  13. package/dist/PluginInterface.d.ts +0 -4
  14. package/dist/PluginInterface.js.map +1 -1
  15. package/dist/Program.d.ts +6 -39
  16. package/dist/Program.js +42 -44
  17. package/dist/Program.js.map +1 -1
  18. package/dist/ProgramBuilder.d.ts +4 -0
  19. package/dist/ProgramBuilder.js +12 -7
  20. package/dist/ProgramBuilder.js.map +1 -1
  21. package/dist/Scope.d.ts +1 -5
  22. package/dist/Scope.js +3 -28
  23. package/dist/Scope.js.map +1 -1
  24. package/dist/SymbolTable.d.ts +44 -6
  25. package/dist/SymbolTable.js +151 -25
  26. package/dist/SymbolTable.js.map +1 -1
  27. package/dist/XmlScope.js +11 -12
  28. package/dist/XmlScope.js.map +1 -1
  29. package/dist/astUtils/creators.d.ts +16 -6
  30. package/dist/astUtils/creators.js +39 -16
  31. package/dist/astUtils/creators.js.map +1 -1
  32. package/dist/astUtils/reflection.d.ts +46 -37
  33. package/dist/astUtils/reflection.js +145 -147
  34. package/dist/astUtils/reflection.js.map +1 -1
  35. package/dist/astUtils/reflection.spec.js +1 -6
  36. package/dist/astUtils/reflection.spec.js.map +1 -1
  37. package/dist/astUtils/visitors.d.ts +4 -11
  38. package/dist/astUtils/visitors.js +0 -7
  39. package/dist/astUtils/visitors.js.map +1 -1
  40. package/dist/astUtils/visitors.spec.js +4 -2
  41. package/dist/astUtils/visitors.spec.js.map +1 -1
  42. package/dist/astUtils/xml.d.ts +9 -9
  43. package/dist/astUtils/xml.js +6 -6
  44. package/dist/astUtils/xml.js.map +1 -1
  45. package/dist/bscPlugin/BscPlugin.js +4 -0
  46. package/dist/bscPlugin/BscPlugin.js.map +1 -1
  47. package/dist/bscPlugin/CallExpressionInfo.js.map +1 -1
  48. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js +2 -2
  49. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js.map +1 -1
  50. package/dist/bscPlugin/hover/HoverProcessor.js +71 -59
  51. package/dist/bscPlugin/hover/HoverProcessor.js.map +1 -1
  52. package/dist/bscPlugin/hover/HoverProcessor.spec.js +110 -10
  53. package/dist/bscPlugin/hover/HoverProcessor.spec.js.map +1 -1
  54. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js +6 -5
  55. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js.map +1 -1
  56. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js +1 -1
  57. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js.map +1 -1
  58. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.d.ts +11 -0
  59. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.js +53 -0
  60. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.js.map +1 -0
  61. package/dist/bscPlugin/validation/BrsFileValidator.d.ts +4 -0
  62. package/dist/bscPlugin/validation/BrsFileValidator.js +72 -16
  63. package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -1
  64. package/dist/bscPlugin/validation/BrsFileValidator.spec.js +1 -1
  65. package/dist/bscPlugin/validation/BrsFileValidator.spec.js.map +1 -1
  66. package/dist/bscPlugin/validation/ScopeValidator.d.ts +1 -0
  67. package/dist/bscPlugin/validation/ScopeValidator.js +72 -18
  68. package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -1
  69. package/dist/bscPlugin/validation/XmlFileValidator.js +9 -9
  70. package/dist/bscPlugin/validation/XmlFileValidator.js.map +1 -1
  71. package/dist/files/BrsFile.Class.spec.js +9 -10
  72. package/dist/files/BrsFile.Class.spec.js.map +1 -1
  73. package/dist/files/BrsFile.d.ts +8 -10
  74. package/dist/files/BrsFile.js +72 -52
  75. package/dist/files/BrsFile.js.map +1 -1
  76. package/dist/files/BrsFile.spec.js +56 -14
  77. package/dist/files/BrsFile.spec.js.map +1 -1
  78. package/dist/files/XmlFile.d.ts +19 -19
  79. package/dist/files/XmlFile.js +24 -42
  80. package/dist/files/XmlFile.js.map +1 -1
  81. package/dist/files/XmlFile.spec.js +61 -9
  82. package/dist/files/XmlFile.spec.js.map +1 -1
  83. package/dist/files/tests/imports.spec.js +8 -11
  84. package/dist/files/tests/imports.spec.js.map +1 -1
  85. package/dist/globalCallables.js +2 -1
  86. package/dist/globalCallables.js.map +1 -1
  87. package/dist/index.d.ts +2 -0
  88. package/dist/index.js +2 -0
  89. package/dist/index.js.map +1 -1
  90. package/dist/interfaces.d.ts +20 -1
  91. package/dist/interfaces.js +13 -0
  92. package/dist/interfaces.js.map +1 -1
  93. package/dist/lexer/TokenKind.d.ts +2 -0
  94. package/dist/lexer/TokenKind.js +5 -1
  95. package/dist/lexer/TokenKind.js.map +1 -1
  96. package/dist/parser/AstNode.d.ts +78 -1
  97. package/dist/parser/AstNode.js +80 -1
  98. package/dist/parser/AstNode.js.map +1 -1
  99. package/dist/parser/Expression.d.ts +87 -53
  100. package/dist/parser/Expression.js +243 -139
  101. package/dist/parser/Expression.js.map +1 -1
  102. package/dist/parser/Parser.Class.spec.js +10 -7
  103. package/dist/parser/Parser.Class.spec.js.map +1 -1
  104. package/dist/parser/Parser.d.ts +9 -5
  105. package/dist/parser/Parser.js +125 -78
  106. package/dist/parser/Parser.js.map +1 -1
  107. package/dist/parser/Parser.spec.d.ts +2 -0
  108. package/dist/parser/Parser.spec.js +117 -5
  109. package/dist/parser/Parser.spec.js.map +1 -1
  110. package/dist/parser/SGParser.d.ts +42 -4
  111. package/dist/parser/SGParser.js +191 -195
  112. package/dist/parser/SGParser.js.map +1 -1
  113. package/dist/parser/SGParser.spec.js +13 -10
  114. package/dist/parser/SGParser.spec.js.map +1 -1
  115. package/dist/parser/SGTypes.d.ts +279 -51
  116. package/dist/parser/SGTypes.js +562 -185
  117. package/dist/parser/SGTypes.js.map +1 -1
  118. package/dist/parser/Statement.d.ts +88 -70
  119. package/dist/parser/Statement.js +212 -136
  120. package/dist/parser/Statement.js.map +1 -1
  121. package/dist/parser/TranspileState.d.ts +1 -1
  122. package/dist/parser/TranspileState.js +5 -2
  123. package/dist/parser/TranspileState.js.map +1 -1
  124. package/dist/parser/tests/expression/TypeExpression.spec.d.ts +1 -0
  125. package/dist/parser/tests/expression/TypeExpression.spec.js +127 -0
  126. package/dist/parser/tests/expression/TypeExpression.spec.js.map +1 -0
  127. package/dist/types/ArrayType.d.ts +6 -4
  128. package/dist/types/ArrayType.js +30 -22
  129. package/dist/types/ArrayType.js.map +1 -1
  130. package/dist/types/ArrayType.spec.js +8 -8
  131. package/dist/types/ArrayType.spec.js.map +1 -1
  132. package/dist/types/BooleanType.d.ts +7 -4
  133. package/dist/types/BooleanType.js +13 -8
  134. package/dist/types/BooleanType.js.map +1 -1
  135. package/dist/types/BooleanType.spec.js +9 -3
  136. package/dist/types/BooleanType.spec.js.map +1 -1
  137. package/dist/types/BscType.d.ts +25 -2
  138. package/dist/types/BscType.js +64 -0
  139. package/dist/types/BscType.js.map +1 -1
  140. package/dist/types/BscTypeKind.d.ts +22 -0
  141. package/dist/types/BscTypeKind.js +27 -0
  142. package/dist/types/BscTypeKind.js.map +1 -0
  143. package/dist/types/ClassType.d.ts +11 -0
  144. package/dist/types/ClassType.js +31 -0
  145. package/dist/types/ClassType.js.map +1 -0
  146. package/dist/types/ClassType.spec.d.ts +1 -0
  147. package/dist/types/ClassType.spec.js +75 -0
  148. package/dist/types/ClassType.spec.js.map +1 -0
  149. package/dist/types/DoubleType.d.ts +7 -4
  150. package/dist/types/DoubleType.js +16 -20
  151. package/dist/types/DoubleType.js.map +1 -1
  152. package/dist/types/DoubleType.spec.js +11 -3
  153. package/dist/types/DoubleType.spec.js.map +1 -1
  154. package/dist/types/DynamicType.d.ts +9 -3
  155. package/dist/types/DynamicType.js +16 -2
  156. package/dist/types/DynamicType.js.map +1 -1
  157. package/dist/types/DynamicType.spec.js +15 -4
  158. package/dist/types/DynamicType.spec.js.map +1 -1
  159. package/dist/types/EnumType.d.ts +22 -0
  160. package/dist/types/EnumType.js +59 -0
  161. package/dist/types/EnumType.js.map +1 -0
  162. package/dist/types/EnumType.spec.d.ts +1 -0
  163. package/dist/types/EnumType.spec.js +33 -0
  164. package/dist/types/EnumType.spec.js.map +1 -0
  165. package/dist/types/FloatType.d.ts +7 -4
  166. package/dist/types/FloatType.js +16 -20
  167. package/dist/types/FloatType.js.map +1 -1
  168. package/dist/types/FloatType.spec.js +3 -3
  169. package/dist/types/FloatType.spec.js.map +1 -1
  170. package/dist/types/FunctionType.d.ts +6 -4
  171. package/dist/types/FunctionType.js +22 -19
  172. package/dist/types/FunctionType.js.map +1 -1
  173. package/dist/types/FunctionType.spec.js +5 -5
  174. package/dist/types/FunctionType.spec.js.map +1 -1
  175. package/dist/types/InheritableType.d.ts +25 -0
  176. package/dist/types/InheritableType.js +88 -0
  177. package/dist/types/InheritableType.js.map +1 -0
  178. package/dist/types/IntegerType.d.ts +7 -4
  179. package/dist/types/IntegerType.js +16 -20
  180. package/dist/types/IntegerType.js.map +1 -1
  181. package/dist/types/IntegerType.spec.js +7 -3
  182. package/dist/types/IntegerType.spec.js.map +1 -1
  183. package/dist/types/InterfaceType.d.ts +10 -10
  184. package/dist/types/InterfaceType.js +24 -45
  185. package/dist/types/InterfaceType.js.map +1 -1
  186. package/dist/types/InterfaceType.spec.js +59 -45
  187. package/dist/types/InterfaceType.spec.js.map +1 -1
  188. package/dist/types/InvalidType.d.ts +6 -4
  189. package/dist/types/InvalidType.js +12 -8
  190. package/dist/types/InvalidType.js.map +1 -1
  191. package/dist/types/InvalidType.spec.js +7 -3
  192. package/dist/types/InvalidType.spec.js.map +1 -1
  193. package/dist/types/LongIntegerType.d.ts +7 -4
  194. package/dist/types/LongIntegerType.js +16 -20
  195. package/dist/types/LongIntegerType.js.map +1 -1
  196. package/dist/types/LongIntegerType.spec.js +9 -3
  197. package/dist/types/LongIntegerType.spec.js.map +1 -1
  198. package/dist/types/NamespaceType.d.ts +11 -0
  199. package/dist/types/NamespaceType.js +25 -0
  200. package/dist/types/NamespaceType.js.map +1 -0
  201. package/dist/types/ObjectType.d.ts +8 -4
  202. package/dist/types/ObjectType.js +26 -7
  203. package/dist/types/ObjectType.js.map +1 -1
  204. package/dist/types/ObjectType.spec.js +2 -2
  205. package/dist/types/ObjectType.spec.js.map +1 -1
  206. package/dist/types/ReferenceType.d.ts +51 -0
  207. package/dist/types/ReferenceType.js +274 -0
  208. package/dist/types/ReferenceType.js.map +1 -0
  209. package/dist/types/ReferenceType.spec.d.ts +1 -0
  210. package/dist/types/ReferenceType.spec.js +122 -0
  211. package/dist/types/ReferenceType.spec.js.map +1 -0
  212. package/dist/types/StringType.d.ts +10 -4
  213. package/dist/types/StringType.js +16 -8
  214. package/dist/types/StringType.js.map +1 -1
  215. package/dist/types/StringType.spec.js +2 -2
  216. package/dist/types/StringType.spec.js.map +1 -1
  217. package/dist/types/UninitializedType.d.ts +6 -3
  218. package/dist/types/UninitializedType.js +14 -3
  219. package/dist/types/UninitializedType.js.map +1 -1
  220. package/dist/types/UnionType.d.ts +18 -0
  221. package/dist/types/UnionType.js +91 -0
  222. package/dist/types/UnionType.js.map +1 -0
  223. package/dist/types/UnionType.spec.d.ts +1 -0
  224. package/dist/types/UnionType.spec.js +103 -0
  225. package/dist/types/UnionType.spec.js.map +1 -0
  226. package/dist/types/VoidType.d.ts +7 -4
  227. package/dist/types/VoidType.js +13 -8
  228. package/dist/types/VoidType.js.map +1 -1
  229. package/dist/types/VoidType.spec.js +2 -2
  230. package/dist/types/VoidType.spec.js.map +1 -1
  231. package/dist/types/helper.spec.d.ts +1 -0
  232. package/dist/types/helper.spec.js +130 -0
  233. package/dist/types/helper.spec.js.map +1 -0
  234. package/dist/types/helpers.d.ts +19 -0
  235. package/dist/types/helpers.js +131 -0
  236. package/dist/types/helpers.js.map +1 -0
  237. package/dist/types/index.d.ts +22 -0
  238. package/dist/types/index.js +39 -0
  239. package/dist/types/index.js.map +1 -0
  240. package/dist/util.d.ts +9 -8
  241. package/dist/util.js +78 -32
  242. package/dist/util.js.map +1 -1
  243. package/dist/validators/ClassValidator.d.ts +0 -4
  244. package/dist/validators/ClassValidator.js +6 -30
  245. package/dist/validators/ClassValidator.js.map +1 -1
  246. package/package.json +2 -1
  247. package/dist/types/CustomType.d.ts +0 -9
  248. package/dist/types/CustomType.js +0 -32
  249. package/dist/types/CustomType.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"DynamicType.spec.js","sourceRoot":"","sources":["../../src/types/DynamicType.spec.ts"],"names":[],"mappings":";;AAAA,0DAA6C;AAE7C,+CAA4C;AAC5C,6CAA0C;AAE1C,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IACzB,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACtC,IAAA,yBAAM,EAAC,IAAI,yBAAW,EAAE,CAAC,cAAc,CAAC,IAAI,uBAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACtE,IAAA,yBAAM,EAAC,IAAI,yBAAW,EAAE,CAAC,cAAc,CAAC,IAAI,yBAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC3E,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"DynamicType.spec.js","sourceRoot":"","sources":["../../src/types/DynamicType.spec.ts"],"names":[],"mappings":";;AAAA,0DAA6C;AAC7C,+CAA4C;AAC5C,2CAAwC;AACxC,6CAA0C;AAE1C,+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,uBAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QAChE,IAAA,yBAAM,EAAC,IAAI,yBAAW,EAAE,CAAC,OAAO,CAAC,IAAI,qBAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QACzC,IAAA,yBAAM,EAAC,IAAI,yBAAW,EAAE,CAAC,gBAAgB,CAAC,IAAI,uBAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACxE,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,IAAI,CAAC;QAC5E,IAAA,yBAAM,EAAC,IAAI,yBAAW,EAAE,CAAC,gBAAgB,CAAC,yBAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAC5E,IAAA,yBAAM,EAAC,IAAI,yBAAW,EAAE,CAAC,gBAAgB,CAAC,IAAI,qBAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IACjF,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { BscType } from './BscType';
2
+ import { BscTypeKind } from './BscTypeKind';
3
+ export declare class EnumType extends BscType {
4
+ name: string;
5
+ constructor(name: string);
6
+ readonly kind = BscTypeKind.EnumType;
7
+ isTypeCompatible(targetType: BscType): any;
8
+ toString(): string;
9
+ toTypeString(): string;
10
+ isEqual(targetType: BscType): boolean;
11
+ }
12
+ export declare class EnumMemberType extends BscType {
13
+ enumName: string;
14
+ memberName: string;
15
+ constructor(enumName: string, memberName: string);
16
+ readonly kind = BscTypeKind.EnumMemberType;
17
+ isAssignableTo(targetType: BscType): any;
18
+ isTypeCompatible(targetType: BscType): boolean;
19
+ toString(): string;
20
+ toTypeString(): string;
21
+ isEqual(targetType: BscType): boolean;
22
+ }
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EnumMemberType = exports.EnumType = void 0;
4
+ const reflection_1 = require("../astUtils/reflection");
5
+ const BscType_1 = require("./BscType");
6
+ const BscTypeKind_1 = require("./BscTypeKind");
7
+ class EnumType extends BscType_1.BscType {
8
+ constructor(name) {
9
+ super(name);
10
+ this.name = name;
11
+ this.kind = BscTypeKind_1.BscTypeKind.EnumType;
12
+ }
13
+ isTypeCompatible(targetType) {
14
+ return ((0, reflection_1.isDynamicType)(targetType) ||
15
+ this.isEqual(targetType) ||
16
+ ((0, reflection_1.isEnumMemberType)(targetType) && (targetType === null || targetType === void 0 ? void 0 : targetType.enumName.toLowerCase()) === this.name.toLowerCase()));
17
+ }
18
+ toString() {
19
+ return this.name;
20
+ }
21
+ toTypeString() {
22
+ return 'dynamic';
23
+ }
24
+ isEqual(targetType) {
25
+ return (0, reflection_1.isEnumType)(targetType) && (targetType === null || targetType === void 0 ? void 0 : targetType.name.toLowerCase()) === this.name.toLowerCase();
26
+ }
27
+ }
28
+ exports.EnumType = EnumType;
29
+ class EnumMemberType extends BscType_1.BscType {
30
+ constructor(enumName, memberName) {
31
+ super(`${enumName}.${memberName}`);
32
+ this.enumName = enumName;
33
+ this.memberName = memberName;
34
+ this.kind = BscTypeKind_1.BscTypeKind.EnumMemberType;
35
+ }
36
+ isAssignableTo(targetType) {
37
+ return (this.isEqual(targetType) ||
38
+ ((0, reflection_1.isEnumType)(targetType) &&
39
+ (targetType === null || targetType === void 0 ? void 0 : targetType.name.toLowerCase()) === this.enumName.toLowerCase()) ||
40
+ (0, reflection_1.isDynamicType)(targetType));
41
+ }
42
+ isTypeCompatible(targetType) {
43
+ return (this.isEqual(targetType) ||
44
+ (0, reflection_1.isDynamicType)(targetType));
45
+ }
46
+ toString() {
47
+ return this.enumName;
48
+ }
49
+ toTypeString() {
50
+ return 'dynamic';
51
+ }
52
+ isEqual(targetType) {
53
+ return (0, reflection_1.isEnumMemberType)(targetType) &&
54
+ (targetType === null || targetType === void 0 ? void 0 : targetType.enumName.toLowerCase()) === this.enumName.toLowerCase() &&
55
+ (targetType === null || targetType === void 0 ? void 0 : targetType.memberName.toLowerCase()) === this.memberName.toLowerCase();
56
+ }
57
+ }
58
+ exports.EnumMemberType = EnumMemberType;
59
+ //# sourceMappingURL=EnumType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnumType.js","sourceRoot":"","sources":["../../src/types/EnumType.ts"],"names":[],"mappings":";;;AAAA,uDAAqF;AACrF,uCAAoC;AACpC,+CAA4C;AAE5C,MAAa,QAAS,SAAQ,iBAAO;IACjC,YACW,IAAY;QAEnB,KAAK,CAAC,IAAI,CAAC,CAAC;QAFL,SAAI,GAAJ,IAAI,CAAQ;QAKP,SAAI,GAAG,yBAAW,CAAC,QAAQ,CAAC;IAF5C,CAAC;IAIM,gBAAgB,CAAC,UAAmB;QACvC,OAAO,CACH,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,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,CACnG,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;CACJ;AA5BD,4BA4BC;AAGD,MAAa,cAAe,SAAQ,iBAAO;IACvC,YACW,QAAgB,EAChB,UAAkB;QAEzB,KAAK,CAAC,GAAG,QAAQ,IAAI,UAAU,EAAE,CAAC,CAAC;QAH5B,aAAQ,GAAR,QAAQ,CAAQ;QAChB,eAAU,GAAV,UAAU,CAAQ;QAKb,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;AAvCD,wCAuCC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const chai_config_spec_1 = require("../chai-config.spec");
4
+ const ClassType_1 = require("./ClassType");
5
+ const EnumType_1 = require("./EnumType");
6
+ describe('EnumType', () => {
7
+ it('is equal to appropriate enum type', () => {
8
+ (0, chai_config_spec_1.expect)(new EnumType_1.EnumType('hello').isEqual(new ClassType_1.ClassType('hello'))).to.be.false;
9
+ (0, chai_config_spec_1.expect)(new EnumType_1.EnumType('hello').isEqual(new EnumType_1.EnumType('hello'))).to.be.true;
10
+ (0, chai_config_spec_1.expect)(new EnumType_1.EnumType('hello').isEqual(new EnumType_1.EnumType('notHello'))).to.be.false;
11
+ });
12
+ it('is compatible with enum type that is the same', () => {
13
+ (0, chai_config_spec_1.expect)(new EnumType_1.EnumType('hello').isTypeCompatible(new ClassType_1.ClassType('hello'))).to.be.false;
14
+ (0, chai_config_spec_1.expect)(new EnumType_1.EnumType('hello').isTypeCompatible(new EnumType_1.EnumType('hello'))).to.be.true;
15
+ (0, chai_config_spec_1.expect)(new EnumType_1.EnumType('hello').isTypeCompatible(new EnumType_1.EnumType('notHello'))).to.be.false;
16
+ });
17
+ it('is compatible with appropriate enum member type', () => {
18
+ const myEnum = new EnumType_1.EnumType('hello');
19
+ (0, chai_config_spec_1.expect)(myEnum.isTypeCompatible(new EnumType_1.EnumType('hello'))).to.be.true;
20
+ const enumMember = new EnumType_1.EnumMemberType(myEnum.name, 'someMember');
21
+ const enumMember2 = new EnumType_1.EnumMemberType('other', 'someMember');
22
+ (0, chai_config_spec_1.expect)(myEnum.isTypeCompatible(enumMember)).to.be.true;
23
+ (0, chai_config_spec_1.expect)(myEnum.isTypeCompatible(enumMember2)).to.be.false;
24
+ });
25
+ });
26
+ describe('EnumMemberType', () => {
27
+ it('is equal to appropriate enum member type', () => {
28
+ (0, chai_config_spec_1.expect)(new EnumType_1.EnumMemberType('a', 'b').isEqual(new EnumType_1.EnumMemberType('a', 'b'))).to.be.true;
29
+ (0, chai_config_spec_1.expect)(new EnumType_1.EnumMemberType('a', 'b').isEqual(new EnumType_1.EnumMemberType('a', 'c'))).to.be.false;
30
+ (0, chai_config_spec_1.expect)(new EnumType_1.EnumMemberType('a', 'b').isEqual(new EnumType_1.EnumMemberType('d', 'b'))).to.be.false;
31
+ });
32
+ });
33
+ //# sourceMappingURL=EnumType.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnumType.spec.js","sourceRoot":"","sources":["../../src/types/EnumType.spec.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,12 @@
1
- import type { BscType } from './BscType';
2
- export declare class FloatType implements BscType {
1
+ import { BscType } from './BscType';
2
+ import { BscTypeKind } from './BscTypeKind';
3
+ export declare class FloatType extends BscType {
3
4
  typeText?: string;
4
5
  constructor(typeText?: string);
5
- isAssignableTo(targetType: BscType): boolean;
6
- isConvertibleTo(targetType: BscType): boolean;
6
+ readonly kind = BscTypeKind.FloatType;
7
+ static instance: FloatType;
8
+ isTypeCompatible(targetType: BscType): boolean;
7
9
  toString(): string;
8
10
  toTypeString(): string;
11
+ isEqual(targetType: BscType): boolean;
9
12
  }
@@ -1,29 +1,21 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.FloatType = void 0;
4
- const DoubleType_1 = require("./DoubleType");
5
- const DynamicType_1 = require("./DynamicType");
6
- const IntegerType_1 = require("./IntegerType");
7
- const LongIntegerType_1 = require("./LongIntegerType");
8
- class FloatType {
4
+ const reflection_1 = require("../astUtils/reflection");
5
+ const BscType_1 = require("./BscType");
6
+ const BscTypeKind_1 = require("./BscTypeKind");
7
+ class FloatType extends BscType_1.BscType {
9
8
  constructor(typeText) {
9
+ super();
10
10
  this.typeText = typeText;
11
+ this.kind = BscTypeKind_1.BscTypeKind.FloatType;
11
12
  }
12
- isAssignableTo(targetType) {
13
- return (targetType instanceof FloatType ||
14
- targetType instanceof DynamicType_1.DynamicType);
15
- }
16
- isConvertibleTo(targetType) {
17
- if (targetType instanceof DynamicType_1.DynamicType ||
18
- targetType instanceof IntegerType_1.IntegerType ||
19
- targetType instanceof FloatType ||
20
- targetType instanceof DoubleType_1.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 FloatType {
32
24
  toTypeString() {
33
25
  return this.toString();
34
26
  }
27
+ isEqual(targetType) {
28
+ return (0, reflection_1.isFloatType)(targetType);
29
+ }
35
30
  }
36
31
  exports.FloatType = FloatType;
32
+ FloatType.instance = new FloatType('float');
37
33
  //# sourceMappingURL=FloatType.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FloatType.js","sourceRoot":"","sources":["../../src/types/FloatType.ts"],"names":[],"mappings":";;;AACA,6CAA0C;AAC1C,+CAA4C;AAC5C,+CAA4C;AAC5C,uDAAoD;AAEpD,MAAa,SAAS;IAClB,YACW,QAAiB;QAAjB,aAAQ,GAAR,QAAQ,CAAS;IACxB,CAAC;IAEE,cAAc,CAAC,UAAmB;QACrC,OAAO,CACH,UAAU,YAAY,SAAS;YAC/B,UAAU,YAAY,yBAAW,CACpC,CAAC;IACN,CAAC;IAEM,eAAe,CAAC,UAAmB;QACtC,IACI,UAAU,YAAY,yBAAW;YACjC,UAAU,YAAY,yBAAW;YACjC,UAAU,YAAY,SAAS;YAC/B,UAAU,YAAY,uBAAU;YAChC,UAAU,YAAY,iCAAe,EACvC;YACE,OAAO,IAAI,CAAC;SACf;aAAM;YACH,OAAO,KAAK,CAAC;SAChB;IACL,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;CACJ;AAjCD,8BAiCC"}
1
+ {"version":3,"file":"FloatType.js","sourceRoot":"","sources":["../../src/types/FloatType.ts"],"names":[],"mappings":";;;AAAA,uDAAoH;AACpH,uCAAoC;AACpC,+CAA4C;AAE5C,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,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,wBAAW,EAAC,UAAU,CAAC;YACvB,IAAA,yBAAY,EAAC,UAAU,CAAC;YACxB,IAAA,8BAAiB,EAAC,UAAU,CAAC,CAChC,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;;AAhCL,8BAiCC;AAxBiB,kBAAQ,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC"}
@@ -4,9 +4,9 @@ const chai_config_spec_1 = require("../chai-config.spec");
4
4
  const DynamicType_1 = require("./DynamicType");
5
5
  const FloatType_1 = require("./FloatType");
6
6
  describe('FloatType', () => {
7
- it('is equivalent to double types', () => {
8
- (0, chai_config_spec_1.expect)(new FloatType_1.FloatType().isAssignableTo(new FloatType_1.FloatType())).to.be.true;
9
- (0, chai_config_spec_1.expect)(new FloatType_1.FloatType().isAssignableTo(new DynamicType_1.DynamicType())).to.be.true;
7
+ it('is compatible to double types', () => {
8
+ (0, chai_config_spec_1.expect)(new FloatType_1.FloatType().isTypeCompatible(new FloatType_1.FloatType())).to.be.true;
9
+ (0, chai_config_spec_1.expect)(new FloatType_1.FloatType().isTypeCompatible(new DynamicType_1.DynamicType())).to.be.true;
10
10
  });
11
11
  });
12
12
  //# sourceMappingURL=FloatType.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FloatType.spec.js","sourceRoot":"","sources":["../../src/types/FloatType.spec.ts"],"names":[],"mappings":";;AAAA,0DAA6C;AAE7C,+CAA4C;AAC5C,2CAAwC;AAExC,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACvB,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACrC,IAAA,yBAAM,EAAC,IAAI,qBAAS,EAAE,CAAC,cAAc,CAAC,IAAI,qBAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACnE,IAAA,yBAAM,EAAC,IAAI,qBAAS,EAAE,CAAC,cAAc,CAAC,IAAI,yBAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IACzE,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"FloatType.spec.js","sourceRoot":"","sources":["../../src/types/FloatType.spec.ts"],"names":[],"mappings":";;AAAA,0DAA6C;AAE7C,+CAA4C;AAC5C,2CAAwC;AAExC,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACvB,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACrC,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;AACP,CAAC,CAAC,CAAC"}
@@ -1,7 +1,9 @@
1
- import type { BscType } from './BscType';
2
- export declare class FunctionType implements BscType {
1
+ import { BscType } from './BscType';
2
+ import { BscTypeKind } from './BscTypeKind';
3
+ export declare class FunctionType extends BscType {
3
4
  returnType: BscType;
4
5
  constructor(returnType: BscType);
6
+ readonly kind = BscTypeKind.FunctionType;
5
7
  /**
6
8
  * The name of the function for this type. Can be null
7
9
  */
@@ -17,8 +19,8 @@ export declare class FunctionType implements BscType {
17
19
  }[];
18
20
  setName(name: string): this;
19
21
  addParameter(name: string, type: BscType, isOptional: boolean): this;
20
- isAssignableTo(targetType: BscType): boolean;
21
- isConvertibleTo(targetType: BscType): boolean;
22
+ isTypeCompatible(targetType: BscType): boolean;
22
23
  toString(): string;
23
24
  toTypeString(): string;
25
+ isEqual(targetType: BscType): boolean;
24
26
  }
@@ -1,10 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.FunctionType = void 0;
4
+ const reflection_1 = require("../astUtils/reflection");
5
+ const BscType_1 = require("./BscType");
6
+ const BscTypeKind_1 = require("./BscTypeKind");
4
7
  const DynamicType_1 = require("./DynamicType");
5
- class FunctionType {
8
+ class FunctionType extends BscType_1.BscType {
6
9
  constructor(returnType) {
10
+ super();
7
11
  this.returnType = returnType;
12
+ this.kind = BscTypeKind_1.BscTypeKind.FunctionType;
8
13
  /**
9
14
  * Determines if this is a sub or not
10
15
  */
@@ -23,11 +28,24 @@ class FunctionType {
23
28
  });
24
29
  return this;
25
30
  }
26
- isAssignableTo(targetType) {
31
+ isTypeCompatible(targetType) {
27
32
  if (targetType instanceof DynamicType_1.DynamicType) {
28
33
  return true;
29
34
  }
30
- else if (targetType instanceof FunctionType) {
35
+ return this.isEqual(targetType);
36
+ }
37
+ toString() {
38
+ let paramTexts = [];
39
+ for (let param of this.params) {
40
+ paramTexts.push(`${param.name}${param.isOptional ? '?' : ''} as ${param.type.toString()}`);
41
+ }
42
+ return `${this.isSub ? 'sub' : 'function'} ${this.name}(${paramTexts.join(', ')}) as ${this.returnType.toString()}`;
43
+ }
44
+ toTypeString() {
45
+ return 'Function';
46
+ }
47
+ isEqual(targetType) {
48
+ if ((0, reflection_1.isFunctionType)(targetType)) {
31
49
  //compare all parameters
32
50
  let len = Math.max(this.params.length, targetType.params.length);
33
51
  for (let i = 0; i < len; i++) {
@@ -44,22 +62,7 @@ class FunctionType {
44
62
  //made it here, all params and return type are equivalent
45
63
  return true;
46
64
  }
47
- else {
48
- return false;
49
- }
50
- }
51
- isConvertibleTo(targetType) {
52
- return this.isAssignableTo(targetType);
53
- }
54
- toString() {
55
- let paramTexts = [];
56
- for (let param of this.params) {
57
- paramTexts.push(`${param.name}${param.isOptional ? '?' : ''} as ${param.type.toString()}`);
58
- }
59
- return `${this.isSub ? 'sub' : 'function'} ${this.name}(${paramTexts.join(', ')}) as ${this.returnType.toString()}`;
60
- }
61
- toTypeString() {
62
- return 'Function';
65
+ return false;
63
66
  }
64
67
  }
65
68
  exports.FunctionType = FunctionType;
@@ -1 +1 @@
1
- {"version":3,"file":"FunctionType.js","sourceRoot":"","sources":["../../src/types/FunctionType.ts"],"names":[],"mappings":";;;AACA,+CAA4C;AAE5C,MAAa,YAAY;IACrB,YACW,UAAmB;QAAnB,eAAU,GAAV,UAAU,CAAS;QAU9B;;WAEG;QACI,UAAK,GAAG,KAAK,CAAC;QAEd,WAAM,GAAG,EAAiE,CAAC;IAZlF,CAAC;IAcM,OAAO,CAAC,IAAY;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,YAAY,CAAC,IAAY,EAAE,IAAa,EAAE,UAAmB;QAChE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YACb,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,IAAI;YACV,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;SACjD,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,cAAc,CAAC,UAAmB;QACrC,IAAI,UAAU,YAAY,yBAAW,EAAE;YACnC,OAAO,IAAI,CAAC;SACf;aAAM,IAAI,UAAU,YAAY,YAAY,EAAE;YAC3C,wBAAwB;YACxB,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACjE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;gBAC1B,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC7B,IAAI,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACvC,IAAI,CAAC,OAAO,IAAI,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;oBAC5E,OAAO,KAAK,CAAC;iBAChB;aACJ;YAED,qBAAqB;YACrB,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;gBACtG,OAAO,KAAK,CAAC;aAChB;YAED,yDAAyD;YACzD,OAAO,IAAI,CAAC;SACf;aAAM;YACH,OAAO,KAAK,CAAC;SAChB;IACL,CAAC;IAEM,eAAe,CAAC,UAAmB;QACtC,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;IAEM,QAAQ;QACX,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;YAC3B,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;SAC9F;QACD,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC;IAExH,CAAC;IAEM,YAAY;QACf,OAAO,UAAU,CAAC;IACtB,CAAC;CACJ;AA3ED,oCA2EC"}
1
+ {"version":3,"file":"FunctionType.js","sourceRoot":"","sources":["../../src/types/FunctionType.ts"],"names":[],"mappings":";;;AAAA,uDAAwD;AACxD,uCAAoC;AACpC,+CAA4C;AAC5C,+CAA4C;AAE5C,MAAa,YAAa,SAAQ,iBAAO;IACrC,YACW,UAAmB;QAE1B,KAAK,EAAE,CAAC;QAFD,eAAU,GAAV,UAAU,CAAS;QAKd,SAAI,GAAG,yBAAW,CAAC,YAAY,CAAC;QAOhD;;WAEG;QACI,UAAK,GAAG,KAAK,CAAC;QAEd,WAAM,GAAG,EAAiE,CAAC;IAdlF,CAAC;IAgBM,OAAO,CAAC,IAAY;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,YAAY,CAAC,IAAY,EAAE,IAAa,EAAE,UAAmB;QAChE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YACb,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,IAAI;YACV,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;SACjD,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,gBAAgB,CAAC,UAAmB;QACvC,IAAI,UAAU,YAAY,yBAAW,EAAE;YACnC,OAAO,IAAI,CAAC;SACf;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC;IAEM,QAAQ;QACX,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;YAC3B,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;SAC9F;QACD,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC;IAExH,CAAC;IAEM,YAAY;QACf,OAAO,UAAU,CAAC;IACtB,CAAC;IAED,OAAO,CAAC,UAAmB;QACvB,IAAI,IAAA,2BAAc,EAAC,UAAU,CAAC,EAAE;YAC5B,wBAAwB;YACxB,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACjE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;gBAC1B,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC7B,IAAI,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACvC,IAAI,CAAC,OAAO,IAAI,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;oBAC5E,OAAO,KAAK,CAAC;iBAChB;aACJ;YAED,qBAAqB;YACrB,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;gBACtG,OAAO,KAAK,CAAC;aAChB;YAED,yDAAyD;YACzD,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;CACJ;AA7ED,oCA6EC"}
@@ -8,16 +8,16 @@ const StringType_1 = require("./StringType");
8
8
  const VoidType_1 = require("./VoidType");
9
9
  describe('FunctionType', () => {
10
10
  it('is equivalent to dynamic type', () => {
11
- (0, chai_config_spec_1.expect)(new FunctionType_1.FunctionType(new VoidType_1.VoidType()).isAssignableTo(new DynamicType_1.DynamicType())).to.be.true;
11
+ (0, chai_config_spec_1.expect)(new FunctionType_1.FunctionType(new VoidType_1.VoidType()).isTypeCompatible(new DynamicType_1.DynamicType())).to.be.true;
12
12
  });
13
13
  it('validates using param and return types', () => {
14
- (0, chai_config_spec_1.expect)(new FunctionType_1.FunctionType(new VoidType_1.VoidType()).isAssignableTo(new FunctionType_1.FunctionType(new VoidType_1.VoidType()))).to.be.true;
14
+ (0, chai_config_spec_1.expect)(new FunctionType_1.FunctionType(new VoidType_1.VoidType()).isTypeCompatible(new FunctionType_1.FunctionType(new VoidType_1.VoidType()))).to.be.true;
15
15
  //different parameter count
16
- (0, chai_config_spec_1.expect)(new FunctionType_1.FunctionType(new VoidType_1.VoidType()).addParameter('a', new IntegerType_1.IntegerType(), false).isAssignableTo(new FunctionType_1.FunctionType(new VoidType_1.VoidType()))).to.be.false;
16
+ (0, chai_config_spec_1.expect)(new FunctionType_1.FunctionType(new VoidType_1.VoidType()).addParameter('a', new IntegerType_1.IntegerType(), false).isTypeCompatible(new FunctionType_1.FunctionType(new VoidType_1.VoidType()))).to.be.false;
17
17
  //different parameter types
18
- (0, chai_config_spec_1.expect)(new FunctionType_1.FunctionType(new VoidType_1.VoidType()).addParameter('a', new IntegerType_1.IntegerType(), false).isAssignableTo(new FunctionType_1.FunctionType(new VoidType_1.VoidType()).addParameter('a', new StringType_1.StringType(), false))).to.be.false;
18
+ (0, chai_config_spec_1.expect)(new FunctionType_1.FunctionType(new VoidType_1.VoidType()).addParameter('a', new IntegerType_1.IntegerType(), false).isTypeCompatible(new FunctionType_1.FunctionType(new VoidType_1.VoidType()).addParameter('a', new StringType_1.StringType(), false))).to.be.false;
19
19
  //different return type
20
- (0, chai_config_spec_1.expect)(new FunctionType_1.FunctionType(new VoidType_1.VoidType()).isAssignableTo(new FunctionType_1.FunctionType(new IntegerType_1.IntegerType()))).to.be.false;
20
+ (0, chai_config_spec_1.expect)(new FunctionType_1.FunctionType(new VoidType_1.VoidType()).isTypeCompatible(new FunctionType_1.FunctionType(new IntegerType_1.IntegerType()))).to.be.false;
21
21
  });
22
22
  });
23
23
  //# sourceMappingURL=FunctionType.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FunctionType.spec.js","sourceRoot":"","sources":["../../src/types/FunctionType.spec.ts"],"names":[],"mappings":";;AAAA,0DAA6C;AAE7C,+CAA4C;AAC5C,iDAA8C;AAC9C,+CAA4C;AAC5C,6CAA0C;AAC1C,yCAAsC;AAEtC,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACrC,IAAA,yBAAM,EAAC,IAAI,2BAAY,CAAC,IAAI,mBAAQ,EAAE,CAAC,CAAC,cAAc,CAAC,IAAI,yBAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC1F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAC9C,IAAA,yBAAM,EAAC,IAAI,2BAAY,CAAC,IAAI,mBAAQ,EAAE,CAAC,CAAC,cAAc,CAAC,IAAI,2BAAY,CAAC,IAAI,mBAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAErG,2BAA2B;QAC3B,IAAA,yBAAM,EACF,IAAI,2BAAY,CAAC,IAAI,mBAAQ,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,yBAAW,EAAE,EAAE,KAAK,CAAC,CAAC,cAAc,CACvF,IAAI,2BAAY,CAAC,IAAI,mBAAQ,EAAE,CAAC,CACnC,CACJ,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QAEd,2BAA2B;QAC3B,IAAA,yBAAM,EACF,IAAI,2BAAY,CAAC,IAAI,mBAAQ,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,yBAAW,EAAE,EAAE,KAAK,CAAC,CAAC,cAAc,CACvF,IAAI,2BAAY,CAAC,IAAI,mBAAQ,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,uBAAU,EAAE,EAAE,KAAK,CAAC,CAC9E,CACJ,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QAEd,uBAAuB;QACvB,IAAA,yBAAM,EACF,IAAI,2BAAY,CAAC,IAAI,mBAAQ,EAAE,CAAC,CAAC,cAAc,CAC3C,IAAI,2BAAY,CAAC,IAAI,yBAAW,EAAE,CAAC,CACtC,CACJ,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IAClB,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"FunctionType.spec.js","sourceRoot":"","sources":["../../src/types/FunctionType.spec.ts"],"names":[],"mappings":";;AAAA,0DAA6C;AAE7C,+CAA4C;AAC5C,iDAA8C;AAC9C,+CAA4C;AAC5C,6CAA0C;AAC1C,yCAAsC;AAEtC,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACrC,IAAA,yBAAM,EAAC,IAAI,2BAAY,CAAC,IAAI,mBAAQ,EAAE,CAAC,CAAC,gBAAgB,CAAC,IAAI,yBAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC5F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAC9C,IAAA,yBAAM,EAAC,IAAI,2BAAY,CAAC,IAAI,mBAAQ,EAAE,CAAC,CAAC,gBAAgB,CAAC,IAAI,2BAAY,CAAC,IAAI,mBAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAEvG,2BAA2B;QAC3B,IAAA,yBAAM,EACF,IAAI,2BAAY,CAAC,IAAI,mBAAQ,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,yBAAW,EAAE,EAAE,KAAK,CAAC,CAAC,gBAAgB,CACzF,IAAI,2BAAY,CAAC,IAAI,mBAAQ,EAAE,CAAC,CACnC,CACJ,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QAEd,2BAA2B;QAC3B,IAAA,yBAAM,EACF,IAAI,2BAAY,CAAC,IAAI,mBAAQ,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,yBAAW,EAAE,EAAE,KAAK,CAAC,CAAC,gBAAgB,CACzF,IAAI,2BAAY,CAAC,IAAI,mBAAQ,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,uBAAU,EAAE,EAAE,KAAK,CAAC,CAC9E,CACJ,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QAEd,uBAAuB;QACvB,IAAA,yBAAM,EACF,IAAI,2BAAY,CAAC,IAAI,mBAAQ,EAAE,CAAC,CAAC,gBAAgB,CAC7C,IAAI,2BAAY,CAAC,IAAI,yBAAW,EAAE,CAAC,CACtC,CACJ,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IAClB,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -0,0 +1,25 @@
1
+ import type { GetTypeOptions } from '../interfaces';
2
+ import { BscType } from './BscType';
3
+ export declare abstract class InheritableType extends BscType {
4
+ name: string;
5
+ readonly parentType?: BscType;
6
+ constructor(name: string, parentType?: BscType);
7
+ getMemberType(memberName: string, options: GetTypeOptions): BscType;
8
+ toString(): string;
9
+ toTypeString(): string;
10
+ isResolvable(): boolean;
11
+ protected getAncestorTypeList(): InheritableType[];
12
+ /**
13
+ * Checks if other type is an ancestor of this
14
+ */
15
+ isTypeAncestor(otherType: BscType): boolean;
16
+ /**
17
+ * Checks if other type is an descendent of this
18
+ */
19
+ isTypeDescendent(otherType: BscType): boolean;
20
+ /**
21
+ * Gets a string representation of the Interface that looks like javascript
22
+ * Useful for debugging
23
+ */
24
+ private toJSString;
25
+ }
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InheritableType = void 0;
4
+ const reflection_1 = require("../astUtils/reflection");
5
+ const BscType_1 = require("./BscType");
6
+ class InheritableType extends BscType_1.BscType {
7
+ constructor(name, parentType) {
8
+ super(name);
9
+ this.name = name;
10
+ this.parentType = parentType;
11
+ if (parentType) {
12
+ this.memberTable.pushParentProvider(() => this.parentType.memberTable);
13
+ }
14
+ }
15
+ getMemberType(memberName, options) {
16
+ return super.getMemberType(memberName, Object.assign(Object.assign({}, options), { fullName: memberName, tableProvider: () => this.memberTable }));
17
+ }
18
+ toString() {
19
+ return this.name;
20
+ }
21
+ toTypeString() {
22
+ return 'dynamic';
23
+ }
24
+ isResolvable() {
25
+ return this.parentType ? this.parentType.isResolvable() : true;
26
+ }
27
+ getAncestorTypeList() {
28
+ const ancestors = [];
29
+ let currentParentType = this.parentType;
30
+ while (currentParentType) {
31
+ if ((0, reflection_1.isInheritableType)(currentParentType)) {
32
+ ancestors.push(currentParentType);
33
+ currentParentType = currentParentType.parentType;
34
+ }
35
+ else {
36
+ break;
37
+ }
38
+ }
39
+ return ancestors;
40
+ }
41
+ /**
42
+ * Checks if other type is an ancestor of this
43
+ */
44
+ isTypeAncestor(otherType) {
45
+ if (!(0, reflection_1.isInheritableType)(otherType)) {
46
+ return false;
47
+ }
48
+ // Check if targetType is an ancestor of this
49
+ const ancestors = this.getAncestorTypeList();
50
+ if (ancestors === null || ancestors === void 0 ? void 0 : ancestors.find(ancestorType => ancestorType.isEqual(otherType))) {
51
+ return true;
52
+ }
53
+ return false;
54
+ }
55
+ /**
56
+ * Checks if other type is an descendent of this
57
+ */
58
+ isTypeDescendent(otherType) {
59
+ if (!(0, reflection_1.isInheritableType)(otherType)) {
60
+ return false;
61
+ }
62
+ return otherType.isTypeAncestor(this);
63
+ }
64
+ /**
65
+ * Gets a string representation of the Interface that looks like javascript
66
+ * Useful for debugging
67
+ */
68
+ toJSString() {
69
+ var _a;
70
+ // eslint-disable-next-line no-bitwise
71
+ const flags = 3; //SymbolTypeFlags.runtime | SymbolTypeFlags.typetime;
72
+ let result = '{';
73
+ const memberSymbols = (((_a = this.memberTable) === null || _a === void 0 ? void 0 : _a.getAllSymbols(flags)) || []).sort((a, b) => a.name.localeCompare(b.name));
74
+ for (const symbol of memberSymbols) {
75
+ let symbolTypeString = symbol.type.toString();
76
+ if ((0, reflection_1.isInheritableType)(symbol.type)) {
77
+ symbolTypeString = symbol.type.toJSString();
78
+ }
79
+ result += ' ' + symbol.name + ': ' + symbolTypeString + ';';
80
+ }
81
+ if (memberSymbols.length > 0) {
82
+ result += ' ';
83
+ }
84
+ return result + '}';
85
+ }
86
+ }
87
+ exports.InheritableType = InheritableType;
88
+ //# sourceMappingURL=InheritableType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InheritableType.js","sourceRoot":"","sources":["../../src/types/InheritableType.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,12 @@
1
- import type { BscType } from './BscType';
2
- export declare class IntegerType implements BscType {
1
+ import { BscType } from './BscType';
2
+ import { BscTypeKind } from './BscTypeKind';
3
+ export declare class IntegerType extends BscType {
3
4
  typeText?: string;
4
5
  constructor(typeText?: string);
5
- isAssignableTo(targetType: BscType): boolean;
6
- isConvertibleTo(targetType: BscType): boolean;
6
+ readonly kind = BscTypeKind.IntegerType;
7
+ static instance: IntegerType;
8
+ isTypeCompatible(targetType: BscType): boolean;
7
9
  toString(): string;
8
10
  toTypeString(): string;
11
+ isEqual(otherType: BscType): boolean;
9
12
  }
@@ -1,29 +1,21 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.IntegerType = void 0;
4
- const DoubleType_1 = require("./DoubleType");
5
- const DynamicType_1 = require("./DynamicType");
6
- const FloatType_1 = require("./FloatType");
7
- const LongIntegerType_1 = require("./LongIntegerType");
8
- class IntegerType {
4
+ const reflection_1 = require("../astUtils/reflection");
5
+ const BscType_1 = require("./BscType");
6
+ const BscTypeKind_1 = require("./BscTypeKind");
7
+ class IntegerType extends BscType_1.BscType {
9
8
  constructor(typeText) {
9
+ super();
10
10
  this.typeText = typeText;
11
+ this.kind = BscTypeKind_1.BscTypeKind.IntegerType;
11
12
  }
12
- isAssignableTo(targetType) {
13
- return (targetType instanceof IntegerType ||
14
- targetType instanceof DynamicType_1.DynamicType);
15
- }
16
- isConvertibleTo(targetType) {
17
- if (targetType instanceof DynamicType_1.DynamicType ||
18
- targetType instanceof IntegerType ||
19
- targetType instanceof FloatType_1.FloatType ||
20
- targetType instanceof DoubleType_1.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 IntegerType {
32
24
  toTypeString() {
33
25
  return this.toString();
34
26
  }
27
+ isEqual(otherType) {
28
+ return (0, reflection_1.isIntegerType)(otherType);
29
+ }
35
30
  }
36
31
  exports.IntegerType = IntegerType;
32
+ IntegerType.instance = new IntegerType('integer');
37
33
  //# sourceMappingURL=IntegerType.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"IntegerType.js","sourceRoot":"","sources":["../../src/types/IntegerType.ts"],"names":[],"mappings":";;;AACA,6CAA0C;AAC1C,+CAA4C;AAC5C,2CAAwC;AACxC,uDAAoD;AAEpD,MAAa,WAAW;IACpB,YACW,QAAiB;QAAjB,aAAQ,GAAR,QAAQ,CAAS;IACxB,CAAC;IAEE,cAAc,CAAC,UAAmB;QACrC,OAAO,CACH,UAAU,YAAY,WAAW;YACjC,UAAU,YAAY,yBAAW,CACpC,CAAC;IACN,CAAC;IAEM,eAAe,CAAC,UAAmB;QACtC,IACI,UAAU,YAAY,yBAAW;YACjC,UAAU,YAAY,WAAW;YACjC,UAAU,YAAY,qBAAS;YAC/B,UAAU,YAAY,uBAAU;YAChC,UAAU,YAAY,iCAAe,EACvC;YACE,OAAO,IAAI,CAAC;SACf;aAAM;YACH,OAAO,KAAK,CAAC;SAChB;IACL,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;CACJ;AAjCD,kCAiCC"}
1
+ {"version":3,"file":"IntegerType.js","sourceRoot":"","sources":["../../src/types/IntegerType.ts"],"names":[],"mappings":";;;AAAA,uDAAoH;AACpH,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;YACzB,IAAA,wBAAW,EAAC,UAAU,CAAC;YACvB,IAAA,yBAAY,EAAC,UAAU,CAAC;YACxB,IAAA,8BAAiB,EAAC,UAAU,CAAC,CAChC,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;;AA/BL,kCAgCC;AAvBiB,oBAAQ,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC"}
@@ -4,9 +4,13 @@ const chai_config_spec_1 = require("../chai-config.spec");
4
4
  const DynamicType_1 = require("./DynamicType");
5
5
  const IntegerType_1 = require("./IntegerType");
6
6
  describe('IntegerType', () => {
7
- it('is equivalent to other integer types', () => {
8
- (0, chai_config_spec_1.expect)(new IntegerType_1.IntegerType().isAssignableTo(new IntegerType_1.IntegerType())).to.be.true;
9
- (0, chai_config_spec_1.expect)(new IntegerType_1.IntegerType().isAssignableTo(new DynamicType_1.DynamicType())).to.be.true;
7
+ it('is equal to other integer types', () => {
8
+ (0, chai_config_spec_1.expect)(new IntegerType_1.IntegerType().isEqual(new IntegerType_1.IntegerType())).to.be.true;
9
+ (0, chai_config_spec_1.expect)(new IntegerType_1.IntegerType().isEqual(new DynamicType_1.DynamicType())).to.be.false;
10
+ });
11
+ it('is compatible with to other integer types', () => {
12
+ (0, chai_config_spec_1.expect)(new IntegerType_1.IntegerType().isTypeCompatible(new IntegerType_1.IntegerType())).to.be.true;
13
+ (0, chai_config_spec_1.expect)(new IntegerType_1.IntegerType().isTypeCompatible(new DynamicType_1.DynamicType())).to.be.true;
10
14
  });
11
15
  });
12
16
  //# sourceMappingURL=IntegerType.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"IntegerType.spec.js","sourceRoot":"","sources":["../../src/types/IntegerType.spec.ts"],"names":[],"mappings":";;AAAA,0DAA6C;AAE7C,+CAA4C;AAC5C,+CAA4C;AAE5C,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IACzB,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC5C,IAAA,yBAAM,EAAC,IAAI,yBAAW,EAAE,CAAC,cAAc,CAAC,IAAI,yBAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACvE,IAAA,yBAAM,EAAC,IAAI,yBAAW,EAAE,CAAC,cAAc,CAAC,IAAI,yBAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC3E,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"IntegerType.spec.js","sourceRoot":"","sources":["../../src/types/IntegerType.spec.ts"],"names":[],"mappings":";;AAAA,0DAA6C;AAC7C,+CAA4C;AAC5C,+CAA4C;AAE5C,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IACzB,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACvC,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,2CAA2C,EAAE,GAAG,EAAE;QACjD,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;IAC7E,CAAC,CAAC,CAAC;AAGP,CAAC,CAAC,CAAC"}