brighterscript 0.66.0-alpha.3 → 0.66.0-alpha.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (198) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/dist/BusyStatusTracker.d.ts +31 -0
  3. package/dist/BusyStatusTracker.js +83 -0
  4. package/dist/BusyStatusTracker.js.map +1 -0
  5. package/dist/DiagnosticMessages.d.ts +6 -1
  6. package/dist/DiagnosticMessages.js +5 -0
  7. package/dist/DiagnosticMessages.js.map +1 -1
  8. package/dist/LanguageServer.d.ts +18 -0
  9. package/dist/LanguageServer.js +126 -57
  10. package/dist/LanguageServer.js.map +1 -1
  11. package/dist/Logger.d.ts +1 -1
  12. package/dist/Logger.js.map +1 -1
  13. package/dist/Program.d.ts +3 -8
  14. package/dist/Program.js +13 -55
  15. package/dist/Program.js.map +1 -1
  16. package/dist/ProgramBuilder.js +14 -2
  17. package/dist/ProgramBuilder.js.map +1 -1
  18. package/dist/Scope.d.ts +1 -13
  19. package/dist/Scope.js +10 -65
  20. package/dist/Scope.js.map +1 -1
  21. package/dist/SymbolTable.d.ts +12 -10
  22. package/dist/SymbolTable.js +33 -24
  23. package/dist/SymbolTable.js.map +1 -1
  24. package/dist/Throttler.d.ts +12 -0
  25. package/dist/Throttler.js +39 -0
  26. package/dist/Throttler.js.map +1 -1
  27. package/dist/astUtils/creators.js +5 -3
  28. package/dist/astUtils/creators.js.map +1 -1
  29. package/dist/astUtils/reflection.d.ts +3 -1
  30. package/dist/astUtils/reflection.js +12 -1
  31. package/dist/astUtils/reflection.js.map +1 -1
  32. package/dist/astUtils/reflection.spec.js +2 -1
  33. package/dist/astUtils/reflection.spec.js.map +1 -1
  34. package/dist/bscPlugin/CallExpressionInfo.d.ts +3 -3
  35. package/dist/bscPlugin/CallExpressionInfo.js.map +1 -1
  36. package/dist/bscPlugin/completions/CompletionsProcessor.d.ts +39 -1
  37. package/dist/bscPlugin/completions/CompletionsProcessor.js +305 -3
  38. package/dist/bscPlugin/completions/CompletionsProcessor.js.map +1 -1
  39. package/dist/bscPlugin/completions/CompletionsProcessor.spec.d.ts +1 -0
  40. package/dist/bscPlugin/completions/CompletionsProcessor.spec.js +1369 -0
  41. package/dist/bscPlugin/completions/CompletionsProcessor.spec.js.map +1 -0
  42. package/dist/bscPlugin/hover/HoverProcessor.d.ts +9 -4
  43. package/dist/bscPlugin/hover/HoverProcessor.js +64 -67
  44. package/dist/bscPlugin/hover/HoverProcessor.js.map +1 -1
  45. package/dist/bscPlugin/hover/HoverProcessor.spec.js +107 -4
  46. package/dist/bscPlugin/hover/HoverProcessor.spec.js.map +1 -1
  47. package/dist/bscPlugin/validation/BrsFileValidator.js +18 -15
  48. package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -1
  49. package/dist/bscPlugin/validation/ScopeValidator.d.ts +10 -1
  50. package/dist/bscPlugin/validation/ScopeValidator.js +85 -42
  51. package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -1
  52. package/dist/bscPlugin/validation/ScopeValidator.spec.js +307 -0
  53. package/dist/bscPlugin/validation/ScopeValidator.spec.js.map +1 -1
  54. package/dist/cli.js +9 -1
  55. package/dist/cli.js.map +1 -1
  56. package/dist/deferred.d.ts +1 -1
  57. package/dist/deferred.js.map +1 -1
  58. package/dist/diagnosticUtils.d.ts +7 -2
  59. package/dist/diagnosticUtils.js +43 -15
  60. package/dist/diagnosticUtils.js.map +1 -1
  61. package/dist/files/BrsFile.Class.spec.js +10 -8
  62. package/dist/files/BrsFile.Class.spec.js.map +1 -1
  63. package/dist/files/BrsFile.d.ts +3 -20
  64. package/dist/files/BrsFile.js +7 -355
  65. package/dist/files/BrsFile.js.map +1 -1
  66. package/dist/files/BrsFile.spec.js +2 -248
  67. package/dist/files/BrsFile.spec.js.map +1 -1
  68. package/dist/files/XmlFile.d.ts +1 -6
  69. package/dist/files/XmlFile.js +0 -13
  70. package/dist/files/XmlFile.js.map +1 -1
  71. package/dist/files/XmlFile.spec.js +0 -36
  72. package/dist/files/XmlFile.spec.js.map +1 -1
  73. package/dist/globalCallables.js +9 -1
  74. package/dist/globalCallables.js.map +1 -1
  75. package/dist/index.d.ts +2 -0
  76. package/dist/index.js +2 -0
  77. package/dist/index.js.map +1 -1
  78. package/dist/interfaces.d.ts +12 -1
  79. package/dist/interfaces.js.map +1 -1
  80. package/dist/lexer/Lexer.d.ts +12 -0
  81. package/dist/lexer/Lexer.js +27 -2
  82. package/dist/lexer/Lexer.js.map +1 -1
  83. package/dist/lexer/Lexer.spec.js +40 -0
  84. package/dist/lexer/Lexer.spec.js.map +1 -1
  85. package/dist/lexer/Token.d.ts +4 -0
  86. package/dist/lexer/Token.js.map +1 -1
  87. package/dist/lexer/TokenKind.d.ts +4 -0
  88. package/dist/lexer/TokenKind.js +10 -1
  89. package/dist/lexer/TokenKind.js.map +1 -1
  90. package/dist/parser/AstNode.d.ts +8 -1
  91. package/dist/parser/AstNode.js +16 -0
  92. package/dist/parser/AstNode.js.map +1 -1
  93. package/dist/parser/Expression.d.ts +16 -1
  94. package/dist/parser/Expression.js +43 -1
  95. package/dist/parser/Expression.js.map +1 -1
  96. package/dist/parser/Parser.d.ts +7 -0
  97. package/dist/parser/Parser.js +46 -6
  98. package/dist/parser/Parser.js.map +1 -1
  99. package/dist/parser/Parser.spec.js +327 -3
  100. package/dist/parser/Parser.spec.js.map +1 -1
  101. package/dist/parser/SGTypes.d.ts +1 -1
  102. package/dist/parser/Statement.d.ts +16 -3
  103. package/dist/parser/Statement.js +53 -15
  104. package/dist/parser/Statement.js.map +1 -1
  105. package/dist/parser/tests/Parser.spec.js +2 -1
  106. package/dist/parser/tests/Parser.spec.js.map +1 -1
  107. package/dist/parser/tests/controlFlow/For.spec.js +16 -8
  108. package/dist/parser/tests/controlFlow/For.spec.js.map +1 -1
  109. package/dist/parser/tests/controlFlow/ForEach.spec.js +12 -6
  110. package/dist/parser/tests/controlFlow/ForEach.spec.js.map +1 -1
  111. package/dist/parser/tests/controlFlow/While.spec.js +8 -4
  112. package/dist/parser/tests/controlFlow/While.spec.js.map +1 -1
  113. package/dist/parser/tests/expression/Call.spec.js +4 -4
  114. package/dist/parser/tests/expression/Call.spec.js.map +1 -1
  115. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js +13 -13
  116. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js.map +1 -1
  117. package/dist/parser/tests/statement/ConstStatement.spec.js +0 -33
  118. package/dist/parser/tests/statement/ConstStatement.spec.js.map +1 -1
  119. package/dist/parser/tests/statement/Enum.spec.js +1 -257
  120. package/dist/parser/tests/statement/Enum.spec.js.map +1 -1
  121. package/dist/parser/tests/statement/PrintStatement.spec.js +6 -3
  122. package/dist/parser/tests/statement/PrintStatement.spec.js.map +1 -1
  123. package/dist/parser/tests/statement/ReturnStatement.spec.js +5 -3
  124. package/dist/parser/tests/statement/ReturnStatement.spec.js.map +1 -1
  125. package/dist/parser/tests/statement/Set.spec.js +26 -13
  126. package/dist/parser/tests/statement/Set.spec.js.map +1 -1
  127. package/dist/roku-types/data.json +158 -137
  128. package/dist/roku-types/index.d.ts +3 -38
  129. package/dist/types/ArrayType.d.ts +3 -1
  130. package/dist/types/ArrayType.js +42 -6
  131. package/dist/types/ArrayType.js.map +1 -1
  132. package/dist/types/ArrayType.spec.js +21 -2
  133. package/dist/types/ArrayType.spec.js.map +1 -1
  134. package/dist/types/BooleanType.js +5 -1
  135. package/dist/types/BooleanType.js.map +1 -1
  136. package/dist/types/BscType.d.ts +6 -2
  137. package/dist/types/BscType.js +20 -4
  138. package/dist/types/BscType.js.map +1 -1
  139. package/dist/types/BuiltInInterfaceAdder.d.ts +15 -0
  140. package/dist/types/BuiltInInterfaceAdder.js +93 -0
  141. package/dist/types/BuiltInInterfaceAdder.js.map +1 -0
  142. package/dist/types/BuiltInInterfaceAdder.spec.d.ts +1 -0
  143. package/dist/types/BuiltInInterfaceAdder.spec.js +109 -0
  144. package/dist/types/BuiltInInterfaceAdder.spec.js.map +1 -0
  145. package/dist/types/ClassType.d.ts +4 -0
  146. package/dist/types/ClassType.js +25 -1
  147. package/dist/types/ClassType.js.map +1 -1
  148. package/dist/types/DoubleType.d.ts +1 -1
  149. package/dist/types/DoubleType.js +5 -1
  150. package/dist/types/DoubleType.js.map +1 -1
  151. package/dist/types/DynamicType.js +2 -0
  152. package/dist/types/DynamicType.js.map +1 -1
  153. package/dist/types/EnumType.d.ts +1 -0
  154. package/dist/types/EnumType.js +6 -1
  155. package/dist/types/EnumType.js.map +1 -1
  156. package/dist/types/FloatType.d.ts +1 -1
  157. package/dist/types/FloatType.js +5 -1
  158. package/dist/types/FloatType.js.map +1 -1
  159. package/dist/types/FunctionType.js +5 -1
  160. package/dist/types/FunctionType.js.map +1 -1
  161. package/dist/types/IntegerType.d.ts +1 -1
  162. package/dist/types/IntegerType.js +5 -1
  163. package/dist/types/IntegerType.js.map +1 -1
  164. package/dist/types/InterfaceType.js +2 -1
  165. package/dist/types/InterfaceType.js.map +1 -1
  166. package/dist/types/InvalidType.d.ts +1 -1
  167. package/dist/types/InvalidType.js +5 -1
  168. package/dist/types/InvalidType.js.map +1 -1
  169. package/dist/types/LongIntegerType.d.ts +1 -1
  170. package/dist/types/LongIntegerType.js +5 -1
  171. package/dist/types/LongIntegerType.js.map +1 -1
  172. package/dist/types/ObjectType.js +2 -0
  173. package/dist/types/ObjectType.js.map +1 -1
  174. package/dist/types/ReferenceType.d.ts +12 -0
  175. package/dist/types/ReferenceType.js +69 -12
  176. package/dist/types/ReferenceType.js.map +1 -1
  177. package/dist/types/ReferenceType.spec.js +15 -0
  178. package/dist/types/ReferenceType.spec.js.map +1 -1
  179. package/dist/types/StringType.d.ts +1 -1
  180. package/dist/types/StringType.js +4 -0
  181. package/dist/types/StringType.js.map +1 -1
  182. package/dist/types/TypedFunctionType.js +9 -2
  183. package/dist/types/TypedFunctionType.js.map +1 -1
  184. package/dist/types/UnionType.d.ts +2 -0
  185. package/dist/types/UnionType.js +22 -1
  186. package/dist/types/UnionType.js.map +1 -1
  187. package/dist/types/UnionType.spec.js +43 -17
  188. package/dist/types/UnionType.spec.js.map +1 -1
  189. package/dist/types/VoidType.d.ts +1 -1
  190. package/dist/types/VoidType.js +5 -1
  191. package/dist/types/VoidType.js.map +1 -1
  192. package/dist/types/helpers.d.ts +1 -0
  193. package/dist/types/helpers.js +18 -3
  194. package/dist/types/helpers.js.map +1 -1
  195. package/dist/util.d.ts +10 -2
  196. package/dist/util.js +82 -6
  197. package/dist/util.js.map +1 -1
  198. package/package.json +2 -2
@@ -1,3 +1,4 @@
1
+ import { SymbolTable } from '../SymbolTable';
1
2
  import type { BscType } from './BscType';
2
3
  import { BscTypeKind } from './BscTypeKind';
3
4
  import { InheritableType } from './InheritableType';
@@ -8,4 +9,7 @@ export declare class ClassType extends InheritableType {
8
9
  readonly kind = BscTypeKind.ClassType;
9
10
  isTypeCompatible(targetType: BscType): any;
10
11
  isEqual(targetType: BscType): boolean;
12
+ private builtInMemberTable;
13
+ getBuiltInMemberTable(): SymbolTable;
14
+ addBuiltInInterfaces(): void;
11
15
  }
@@ -1,9 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ClassType = void 0;
4
+ const SymbolTable_1 = require("../SymbolTable");
4
5
  const reflection_1 = require("../astUtils/reflection");
5
6
  const BscTypeKind_1 = require("./BscTypeKind");
7
+ const BuiltInInterfaceAdder_1 = require("./BuiltInInterfaceAdder");
6
8
  const InheritableType_1 = require("./InheritableType");
9
+ const helpers_1 = require("./helpers");
7
10
  class ClassType extends InheritableType_1.InheritableType {
8
11
  constructor(name, superClass) {
9
12
  super(name, superClass);
@@ -15,7 +18,9 @@ class ClassType extends InheritableType_1.InheritableType {
15
18
  if (this.isEqual(targetType)) {
16
19
  return true;
17
20
  }
18
- else if ((0, reflection_1.isDynamicType)(targetType) || (0, reflection_1.isObjectType)(targetType)) {
21
+ else if ((0, reflection_1.isDynamicType)(targetType) ||
22
+ (0, reflection_1.isObjectType)(targetType) ||
23
+ (0, helpers_1.isUnionTypeCompatible)(this, targetType)) {
19
24
  return true;
20
25
  }
21
26
  else if ((0, reflection_1.isClassType)(targetType)) {
@@ -26,6 +31,25 @@ class ClassType extends InheritableType_1.InheritableType {
26
31
  isEqual(targetType) {
27
32
  return (0, reflection_1.isClassType)(targetType) && this.name.toLowerCase() === targetType.name.toLowerCase();
28
33
  }
34
+ getBuiltInMemberTable() {
35
+ if (!this.parentType) {
36
+ if (this.builtInMemberTable) {
37
+ return this.builtInMemberTable;
38
+ }
39
+ this.builtInMemberTable = new SymbolTable_1.SymbolTable(`${this.__identifier} Built-in Members`);
40
+ this.pushMemberProvider(() => this.builtInMemberTable);
41
+ return this.builtInMemberTable;
42
+ }
43
+ }
44
+ addBuiltInInterfaces() {
45
+ if (!this.hasAddedBuiltInInterfaces) {
46
+ if (this.parentType) {
47
+ this.parentType.addBuiltInInterfaces();
48
+ }
49
+ BuiltInInterfaceAdder_1.BuiltInInterfaceAdder.addBuiltInInterfacesToType(this);
50
+ }
51
+ this.hasAddedBuiltInInterfaces = true;
52
+ }
29
53
  }
30
54
  exports.ClassType = ClassType;
31
55
  //# sourceMappingURL=ClassType.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ClassType.js","sourceRoot":"","sources":["../../src/types/ClassType.ts"],"names":[],"mappings":";;;AAAA,uDAAkF;AAElF,+CAA4C;AAC5C,uDAAoD;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,IAAI,IAAA,yBAAY,EAAC,UAAU,CAAC,EAAE;YAC9D,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"}
1
+ {"version":3,"file":"ClassType.js","sourceRoot":"","sources":["../../src/types/ClassType.ts"],"names":[],"mappings":";;;AAAA,gDAA6C;AAC7C,uDAAkF;AAElF,+CAA4C;AAC5C,mEAAgE;AAChE,uDAAoD;AACpD,uCAAkD;AAElD,MAAa,SAAU,SAAQ,iCAAe;IAE1C,YAAmB,IAAY,EAAkB,UAAoB;QACjE,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QADT,SAAI,GAAJ,IAAI,CAAQ;QAAkB,eAAU,GAAV,UAAU,CAAU;QAIrD,SAAI,GAAG,yBAAW,CAAC,SAAS,CAAC;IAF7C,CAAC;IAIM,gBAAgB,CAAC,UAAmB;QACvC,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YAC1B,OAAO,IAAI,CAAC;SACf;aAAM,IAAI,IAAA,0BAAa,EAAC,UAAU,CAAC;YAChC,IAAA,yBAAY,EAAC,UAAU,CAAC;YACxB,IAAA,+BAAqB,EAAC,IAAI,EAAE,UAAU,CAAC,EAAE;YACzC,OAAO,IAAI,CAAC;SACf;aAAM,IAAI,IAAA,wBAAW,EAAC,UAAU,CAAC,EAAE;YAChC,OAAO,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;SAC5C;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO,CAAC,UAAmB;QACvB,OAAO,IAAA,wBAAW,EAAC,UAAU,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IAChG,CAAC;IAID,qBAAqB;QACjB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAClB,IAAI,IAAI,CAAC,kBAAkB,EAAE;gBACzB,OAAO,IAAI,CAAC,kBAAkB,CAAC;aAClC;YACD,IAAI,CAAC,kBAAkB,GAAG,IAAI,yBAAW,CAAC,GAAG,IAAI,CAAC,YAAY,mBAAmB,CAAC,CAAC;YACnF,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACvD,OAAO,IAAI,CAAC,kBAAkB,CAAC;SAClC;IACL,CAAC;IAED,oBAAoB;QAChB,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE;YACjC,IAAI,IAAI,CAAC,UAAU,EAAE;gBACjB,IAAI,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC;aAC1C;YACD,6CAAqB,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC;SAC1D;QACD,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;IAC1C,CAAC;CACJ;AA/CD,8BA+CC"}
@@ -5,7 +5,7 @@ export declare class DoubleType extends BscType {
5
5
  constructor(typeText?: string);
6
6
  readonly kind = BscTypeKind.DoubleType;
7
7
  static instance: DoubleType;
8
- isTypeCompatible(targetType: BscType): boolean;
8
+ isTypeCompatible(targetType: BscType): any;
9
9
  toString(): string;
10
10
  toTypeString(): string;
11
11
  isEqual(targetType: BscType): boolean;
@@ -4,6 +4,8 @@ exports.DoubleType = void 0;
4
4
  const reflection_1 = require("../astUtils/reflection");
5
5
  const BscType_1 = require("./BscType");
6
6
  const BscTypeKind_1 = require("./BscTypeKind");
7
+ const helpers_1 = require("./helpers");
8
+ const BuiltInInterfaceAdder_1 = require("./BuiltInInterfaceAdder");
7
9
  class DoubleType extends BscType_1.BscType {
8
10
  constructor(typeText) {
9
11
  super();
@@ -16,7 +18,8 @@ class DoubleType extends BscType_1.BscType {
16
18
  (0, reflection_1.isIntegerType)(targetType) ||
17
19
  (0, reflection_1.isFloatType)(targetType) ||
18
20
  (0, reflection_1.isDoubleType)(targetType) ||
19
- (0, reflection_1.isLongIntegerType)(targetType));
21
+ (0, reflection_1.isLongIntegerType)(targetType) ||
22
+ (0, helpers_1.isUnionTypeCompatible)(this, targetType));
20
23
  }
21
24
  toString() {
22
25
  var _a;
@@ -31,4 +34,5 @@ class DoubleType extends BscType_1.BscType {
31
34
  }
32
35
  exports.DoubleType = DoubleType;
33
36
  DoubleType.instance = new DoubleType('double');
37
+ BuiltInInterfaceAdder_1.BuiltInInterfaceAdder.primitiveTypeInstanceCache.set('double', DoubleType.instance);
34
38
  //# sourceMappingURL=DoubleType.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DoubleType.js","sourceRoot":"","sources":["../../src/types/DoubleType.ts"],"names":[],"mappings":";;;AAAA,uDAAkI;AAClI,uCAAoC;AACpC,+CAA4C;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,yBAAY,EAAC,UAAU,CAAC;YACxB,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,wBAAW,EAAC,UAAU,CAAC;YACvB,IAAA,yBAAY,EAAC,UAAU,CAAC;YACxB,IAAA,8BAAiB,EAAC,UAAU,CAAC,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;;AA/BL,gCAgCC;AAvBiB,mBAAQ,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC"}
1
+ {"version":3,"file":"DoubleType.js","sourceRoot":"","sources":["../../src/types/DoubleType.ts"],"names":[],"mappings":";;;AAAA,uDAAkI;AAClI,uCAAoC;AACpC,+CAA4C;AAC5C,uCAAkD;AAElD,mEAAgE;AAEhE,MAAa,UAAW,SAAQ,iBAAO;IACnC,YACW,QAAiB;QAExB,KAAK,EAAE,CAAC;QAFD,aAAQ,GAAR,QAAQ,CAAS;QAKZ,SAAI,GAAG,yBAAW,CAAC,UAAU,CAAC;IAF9C,CAAC;IAMM,gBAAgB,CAAC,UAAmB;QACvC,OAAO,CACH,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,yBAAY,EAAC,UAAU,CAAC;YACxB,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,wBAAW,EAAC,UAAU,CAAC;YACvB,IAAA,yBAAY,EAAC,UAAU,CAAC;YACxB,IAAA,8BAAiB,EAAC,UAAU,CAAC;YAC7B,IAAA,+BAAqB,EAAC,IAAI,EAAE,UAAU,CAAC,CAC1C,CAAC;IACN,CAAC;IACM,QAAQ;;QACX,OAAO,MAAA,IAAI,CAAC,QAAQ,mCAAI,QAAQ,CAAC;IACrC,CAAC;IAEM,YAAY;QACf,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAEM,OAAO,CAAC,UAAmB;QAC9B,OAAO,IAAA,yBAAY,EAAC,UAAU,CAAC,CAAC;IACpC,CAAC;;AAhCL,gCAkCC;AAzBiB,mBAAQ,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC;AA2BtD,6CAAqB,CAAC,0BAA0B,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC"}
@@ -4,6 +4,7 @@ exports.DynamicType = void 0;
4
4
  const reflection_1 = require("../astUtils/reflection");
5
5
  const BscType_1 = require("./BscType");
6
6
  const BscTypeKind_1 = require("./BscTypeKind");
7
+ const BuiltInInterfaceAdder_1 = require("./BuiltInInterfaceAdder");
7
8
  class DynamicType extends BscType_1.BscType {
8
9
  constructor(typeText) {
9
10
  super();
@@ -40,4 +41,5 @@ class DynamicType extends BscType_1.BscType {
40
41
  }
41
42
  exports.DynamicType = DynamicType;
42
43
  DynamicType.instance = new DynamicType();
44
+ BuiltInInterfaceAdder_1.BuiltInInterfaceAdder.primitiveTypeInstanceCache.set('dynamic', DynamicType.instance);
43
45
  //# sourceMappingURL=DynamicType.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DynamicType.js","sourceRoot":"","sources":["../../src/types/DynamicType.ts"],"names":[],"mappings":";;;AACA,uDAAuD;AACvD,uCAAoC;AACpC,+CAA4C;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
+ {"version":3,"file":"DynamicType.js","sourceRoot":"","sources":["../../src/types/DynamicType.ts"],"names":[],"mappings":";;;AACA,uDAAuD;AACvD,uCAAoC;AACpC,+CAA4C;AAC5C,mEAAgE;AAEhE,MAAa,WAAY,SAAQ,iBAAO;IACpC,YACW,QAAiB;QAExB,KAAK,EAAE,CAAC;QAFD,aAAQ,GAAR,QAAQ,CAAS;QAKZ,SAAI,GAAG,yBAAW,CAAC,WAAW,CAAC;IAF/C,CAAC;IAMD,IAAI,UAAU;QACV,OAAO,WAAW,CAAC,QAAQ,CAAC;IAChC,CAAC;IAEM,cAAc,CAAC,UAAmB;QACrC,2EAA2E;QAC3E,OAAO,CAAC,CAAC,UAAU,CAAC;IACxB,CAAC;IAED;;OAEG;IACI,gBAAgB,CAAC,UAAmB;QACvC,2EAA2E;QAC3E,OAAO,CAAC,CAAC,UAAU,CAAC;IACxB,CAAC;IAEM,QAAQ;;QACX,OAAO,MAAA,IAAI,CAAC,QAAQ,mCAAI,SAAS,CAAC;IACtC,CAAC;IAEM,YAAY;QACf,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAEM,OAAO,CAAC,UAAmB;QAC9B,OAAO,IAAA,0BAAa,EAAC,UAAU,CAAC,CAAC;IACrC,CAAC;IAED,aAAa,CAAC,UAAkB,EAAE,OAAuB;QACrD,OAAO,WAAW,CAAC,QAAQ,CAAC;IAChC,CAAC;;AA1CL,kCA2CC;AAlC0B,oBAAQ,GAAG,IAAI,WAAW,EAAE,CAAC;AAoCxD,6CAAqB,CAAC,0BAA0B,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC"}
@@ -16,6 +16,7 @@ export declare class EnumType extends BscType {
16
16
  toString(): string;
17
17
  toTypeString(): string;
18
18
  isEqual(targetType: BscType): boolean;
19
+ get defaultMemberType(): EnumMemberType;
19
20
  }
20
21
  export declare class EnumMemberType extends BscType {
21
22
  enumName: string;
@@ -5,6 +5,7 @@ const reflection_1 = require("../astUtils/reflection");
5
5
  const BscType_1 = require("./BscType");
6
6
  const BscTypeKind_1 = require("./BscTypeKind");
7
7
  const DynamicType_1 = require("./DynamicType");
8
+ const helpers_1 = require("./helpers");
8
9
  class EnumType extends BscType_1.BscType {
9
10
  constructor(name,
10
11
  /**
@@ -20,7 +21,8 @@ class EnumType extends BscType_1.BscType {
20
21
  return ((0, reflection_1.isDynamicType)(targetType) ||
21
22
  (0, reflection_1.isObjectType)(targetType) ||
22
23
  this.isEqual(targetType) ||
23
- ((0, reflection_1.isEnumMemberType)(targetType) && (targetType === null || targetType === void 0 ? void 0 : targetType.enumName.toLowerCase()) === this.name.toLowerCase()));
24
+ ((0, reflection_1.isEnumMemberType)(targetType) && (targetType === null || targetType === void 0 ? void 0 : targetType.enumName.toLowerCase()) === this.name.toLowerCase()) ||
25
+ (0, helpers_1.isUnionTypeCompatible)(this, targetType));
24
26
  }
25
27
  toString() {
26
28
  return this.name;
@@ -31,6 +33,9 @@ class EnumType extends BscType_1.BscType {
31
33
  isEqual(targetType) {
32
34
  return (0, reflection_1.isEnumType)(targetType) && (targetType === null || targetType === void 0 ? void 0 : targetType.name.toLowerCase()) === this.name.toLowerCase();
33
35
  }
36
+ get defaultMemberType() {
37
+ return new EnumMemberType(this.name, 'default', this.underlyingType);
38
+ }
34
39
  }
35
40
  exports.EnumType = EnumType;
36
41
  class EnumMemberType extends BscType_1.BscType {
@@ -1 +1 @@
1
- {"version":3,"file":"EnumType.js","sourceRoot":"","sources":["../../src/types/EnumType.ts"],"names":[],"mappings":";;;AAAA,uDAAmG;AACnG,uCAAoC;AACpC,+CAA4C;AAC5C,+CAA4C;AAE5C,MAAa,QAAS,SAAQ,iBAAO;IACjC,YACW,IAAY;IACnB;;OAEG;IACI,iBAA0B,yBAAW,CAAC,QAAQ;QAErD,KAAK,CAAC,IAAI,CAAC,CAAC;QANL,SAAI,GAAJ,IAAI,CAAQ;QAIZ,mBAAc,GAAd,cAAc,CAAgC;QAKzC,SAAI,GAAG,yBAAW,CAAC,QAAQ,CAAC;IAF5C,CAAC;IAIM,gBAAgB,CAAC,UAAmB;QACvC,OAAO,CACH,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,yBAAY,EAAC,UAAU,CAAC;YACxB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;YACxB,CAAC,IAAA,6BAAgB,EAAC,UAAU,CAAC,IAAI,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,QAAQ,CAAC,WAAW,EAAE,MAAK,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,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;AAjCD,4BAiCC;AAGD,MAAa,cAAe,SAAQ,iBAAO;IACvC,YACW,QAAgB,EAChB,UAAkB;IACzB;;OAEG;IACI,iBAA0B,yBAAW,CAAC,QAAQ;QAErD,KAAK,CAAC,GAAG,QAAQ,IAAI,UAAU,EAAE,CAAC,CAAC;QAP5B,aAAQ,GAAR,QAAQ,CAAQ;QAChB,eAAU,GAAV,UAAU,CAAQ;QAIlB,mBAAc,GAAd,cAAc,CAAgC;QAKzC,SAAI,GAAG,yBAAW,CAAC,cAAc,CAAC;IAFlD,CAAC;IAIM,cAAc,CAAC,UAAmB;QACrC,OAAO,CACH,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;YACxB,CAAC,IAAA,uBAAU,EAAC,UAAU,CAAC;gBACnB,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,IAAI,CAAC,WAAW,EAAE,MAAK,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;YACnE,IAAA,0BAAa,EAAC,UAAU,CAAC,CAC5B,CAAC;IACN,CAAC;IAEM,gBAAgB,CAAC,UAAmB;QACvC,OAAO,CACH,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;YACxB,IAAA,0BAAa,EAAC,UAAU,CAAC,CAC5B,CAAC;IACN,CAAC;IAEM,QAAQ;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAEM,YAAY;QACf,OAAO,SAAS,CAAC;IACrB,CAAC;IAEM,OAAO,CAAC,UAAmB;QAC9B,OAAO,IAAA,6BAAgB,EAAC,UAAU,CAAC;YAC/B,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,QAAQ,CAAC,WAAW,EAAE,MAAK,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;YAClE,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,UAAU,CAAC,WAAW,EAAE,MAAK,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;IAC/E,CAAC;CACJ;AA3CD,wCA2CC"}
1
+ {"version":3,"file":"EnumType.js","sourceRoot":"","sources":["../../src/types/EnumType.ts"],"names":[],"mappings":";;;AAAA,uDAAmG;AACnG,uCAAoC;AACpC,+CAA4C;AAC5C,+CAA4C;AAC5C,uCAAkD;AAElD,MAAa,QAAS,SAAQ,iBAAO;IACjC,YACW,IAAY;IACnB;;OAEG;IACI,iBAA0B,yBAAW,CAAC,QAAQ;QAErD,KAAK,CAAC,IAAI,CAAC,CAAC;QANL,SAAI,GAAJ,IAAI,CAAQ;QAIZ,mBAAc,GAAd,cAAc,CAAgC;QAKzC,SAAI,GAAG,yBAAW,CAAC,QAAQ,CAAC;IAF5C,CAAC;IAIM,gBAAgB,CAAC,UAAmB;QACvC,OAAO,CACH,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,yBAAY,EAAC,UAAU,CAAC;YACxB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;YACxB,CAAC,IAAA,6BAAgB,EAAC,UAAU,CAAC,IAAI,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,QAAQ,CAAC,WAAW,EAAE,MAAK,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAChG,IAAA,+BAAqB,EAAC,IAAI,EAAE,UAAU,CAAC,CAC1C,CAAC;IACN,CAAC;IAEM,QAAQ;QACX,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAEM,YAAY;QACf,OAAO,SAAS,CAAC;IACrB,CAAC;IAEM,OAAO,CAAC,UAAmB;QAC9B,OAAO,IAAA,uBAAU,EAAC,UAAU,CAAC,IAAI,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,IAAI,CAAC,WAAW,EAAE,MAAK,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IAChG,CAAC;IAED,IAAW,iBAAiB;QACxB,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IACzE,CAAC;CACJ;AAtCD,4BAsCC;AAGD,MAAa,cAAe,SAAQ,iBAAO;IACvC,YACW,QAAgB,EAChB,UAAkB;IACzB;;OAEG;IACI,iBAA0B,yBAAW,CAAC,QAAQ;QAErD,KAAK,CAAC,GAAG,QAAQ,IAAI,UAAU,EAAE,CAAC,CAAC;QAP5B,aAAQ,GAAR,QAAQ,CAAQ;QAChB,eAAU,GAAV,UAAU,CAAQ;QAIlB,mBAAc,GAAd,cAAc,CAAgC;QAKzC,SAAI,GAAG,yBAAW,CAAC,cAAc,CAAC;IAFlD,CAAC;IAIM,cAAc,CAAC,UAAmB;QACrC,OAAO,CACH,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;YACxB,CAAC,IAAA,uBAAU,EAAC,UAAU,CAAC;gBACnB,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,IAAI,CAAC,WAAW,EAAE,MAAK,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;YACnE,IAAA,0BAAa,EAAC,UAAU,CAAC,CAC5B,CAAC;IACN,CAAC;IAEM,gBAAgB,CAAC,UAAmB;QACvC,OAAO,CACH,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;YACxB,IAAA,0BAAa,EAAC,UAAU,CAAC,CAC5B,CAAC;IACN,CAAC;IAEM,QAAQ;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAEM,YAAY;QACf,OAAO,SAAS,CAAC;IACrB,CAAC;IAEM,OAAO,CAAC,UAAmB;QAC9B,OAAO,IAAA,6BAAgB,EAAC,UAAU,CAAC;YAC/B,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,QAAQ,CAAC,WAAW,EAAE,MAAK,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;YAClE,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,UAAU,CAAC,WAAW,EAAE,MAAK,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;IAC/E,CAAC;CACJ;AA3CD,wCA2CC"}
@@ -5,7 +5,7 @@ export declare class FloatType extends BscType {
5
5
  constructor(typeText?: string);
6
6
  readonly kind = BscTypeKind.FloatType;
7
7
  static instance: FloatType;
8
- isTypeCompatible(targetType: BscType): boolean;
8
+ isTypeCompatible(targetType: BscType): any;
9
9
  toString(): string;
10
10
  toTypeString(): string;
11
11
  isEqual(targetType: BscType): boolean;
@@ -4,6 +4,8 @@ exports.FloatType = void 0;
4
4
  const reflection_1 = require("../astUtils/reflection");
5
5
  const BscType_1 = require("./BscType");
6
6
  const BscTypeKind_1 = require("./BscTypeKind");
7
+ const helpers_1 = require("./helpers");
8
+ const BuiltInInterfaceAdder_1 = require("./BuiltInInterfaceAdder");
7
9
  class FloatType extends BscType_1.BscType {
8
10
  constructor(typeText) {
9
11
  super();
@@ -16,7 +18,8 @@ class FloatType extends BscType_1.BscType {
16
18
  (0, reflection_1.isIntegerType)(targetType) ||
17
19
  (0, reflection_1.isFloatType)(targetType) ||
18
20
  (0, reflection_1.isDoubleType)(targetType) ||
19
- (0, reflection_1.isLongIntegerType)(targetType));
21
+ (0, reflection_1.isLongIntegerType)(targetType) ||
22
+ (0, helpers_1.isUnionTypeCompatible)(this, targetType));
20
23
  }
21
24
  toString() {
22
25
  var _a;
@@ -31,4 +34,5 @@ class FloatType extends BscType_1.BscType {
31
34
  }
32
35
  exports.FloatType = FloatType;
33
36
  FloatType.instance = new FloatType('float');
37
+ BuiltInInterfaceAdder_1.BuiltInInterfaceAdder.primitiveTypeInstanceCache.set('float', FloatType.instance);
34
38
  //# sourceMappingURL=FloatType.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FloatType.js","sourceRoot":"","sources":["../../src/types/FloatType.ts"],"names":[],"mappings":";;;AAAA,uDAAkI;AAClI,uCAAoC;AACpC,+CAA4C;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,yBAAY,EAAC,UAAU,CAAC;YACxB,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,wBAAW,EAAC,UAAU,CAAC;YACvB,IAAA,yBAAY,EAAC,UAAU,CAAC;YACxB,IAAA,8BAAiB,EAAC,UAAU,CAAC,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;;AAjCL,8BAkCC;AAzBiB,kBAAQ,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC"}
1
+ {"version":3,"file":"FloatType.js","sourceRoot":"","sources":["../../src/types/FloatType.ts"],"names":[],"mappings":";;;AAAA,uDAAkI;AAClI,uCAAoC;AACpC,+CAA4C;AAC5C,uCAAkD;AAClD,mEAAgE;AAEhE,MAAa,SAAU,SAAQ,iBAAO;IAClC,YACW,QAAiB;QAExB,KAAK,EAAE,CAAC;QAFD,aAAQ,GAAR,QAAQ,CAAS;QAKZ,SAAI,GAAG,yBAAW,CAAC,SAAS,CAAC;IAF7C,CAAC;IAMM,gBAAgB,CAAC,UAAmB;QACvC,OAAO,CACH,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,yBAAY,EAAC,UAAU,CAAC;YACxB,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,wBAAW,EAAC,UAAU,CAAC;YACvB,IAAA,yBAAY,EAAC,UAAU,CAAC;YACxB,IAAA,8BAAiB,EAAC,UAAU,CAAC;YAC7B,IAAA,+BAAqB,EAAC,IAAI,EAAE,UAAU,CAAC,CAC1C,CAAC;IAEN,CAAC;IAEM,QAAQ;;QACX,OAAO,MAAA,IAAI,CAAC,QAAQ,mCAAI,OAAO,CAAC;IACpC,CAAC;IAEM,YAAY;QACf,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAEM,OAAO,CAAC,UAAmB;QAC9B,OAAO,IAAA,wBAAW,EAAC,UAAU,CAAC,CAAC;IACnC,CAAC;;AAlCL,8BAmCC;AA1BiB,kBAAQ,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;AA4BpD,6CAAqB,CAAC,0BAA0B,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC"}
@@ -4,6 +4,8 @@ exports.FunctionType = void 0;
4
4
  const reflection_1 = require("../astUtils/reflection");
5
5
  const BaseFunctionType_1 = require("./BaseFunctionType");
6
6
  const BscTypeKind_1 = require("./BscTypeKind");
7
+ const helpers_1 = require("./helpers");
8
+ const BuiltInInterfaceAdder_1 = require("./BuiltInInterfaceAdder");
7
9
  class FunctionType extends BaseFunctionType_1.BaseFunctionType {
8
10
  constructor(typeText) {
9
11
  super();
@@ -13,7 +15,8 @@ class FunctionType extends BaseFunctionType_1.BaseFunctionType {
13
15
  isTypeCompatible(targetType) {
14
16
  if ((0, reflection_1.isDynamicType)(targetType) ||
15
17
  (0, reflection_1.isCallableType)(targetType) ||
16
- (0, reflection_1.isObjectType)(targetType)) {
18
+ (0, reflection_1.isObjectType)(targetType) ||
19
+ (0, helpers_1.isUnionTypeCompatible)(this, targetType)) {
17
20
  return true;
18
21
  }
19
22
  return false;
@@ -34,4 +37,5 @@ class FunctionType extends BaseFunctionType_1.BaseFunctionType {
34
37
  }
35
38
  exports.FunctionType = FunctionType;
36
39
  FunctionType.instance = new FunctionType('function');
40
+ BuiltInInterfaceAdder_1.BuiltInInterfaceAdder.primitiveTypeInstanceCache.set('function', new FunctionType());
37
41
  //# sourceMappingURL=FunctionType.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FunctionType.js","sourceRoot":"","sources":["../../src/types/FunctionType.ts"],"names":[],"mappings":";;;AAAA,uDAAqG;AACrG,yDAAsD;AAEtD,+CAA4C;AAE5C,MAAa,YAAa,SAAQ,mCAAgB;IAC9C,YAAmB,QAAiB;QAChC,KAAK,EAAE,CAAC;QADO,aAAQ,GAAR,QAAQ,CAAS;QAIpB,SAAI,GAAG,yBAAW,CAAC,YAAY,CAAC;IAFhD,CAAC;IAQM,gBAAgB,CAAC,UAAmB;QACvC,IACI,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,2BAAc,EAAC,UAAU,CAAC;YAC1B,IAAA,yBAAY,EAAC,UAAU,CAAC,EAC1B;YACE,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAEM,QAAQ;QACX,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;IAE/B,CAAC;IAEM,YAAY;;QACf,OAAO,MAAA,IAAI,CAAC,QAAQ,mCAAI,UAAU,CAAC;IACvC,CAAC;IAED,OAAO,CAAC,UAAmB;QACvB,IAAI,IAAA,2BAAc,EAAC,UAAU,CAAC,EAAE;YAC5B,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;;AApCL,oCAqCC;AA7BiB,qBAAQ,GAAG,IAAI,YAAY,CAAC,UAAU,CAAC,CAAC"}
1
+ {"version":3,"file":"FunctionType.js","sourceRoot":"","sources":["../../src/types/FunctionType.ts"],"names":[],"mappings":";;;AAAA,uDAAqG;AACrG,yDAAsD;AAEtD,+CAA4C;AAC5C,uCAAkD;AAClD,mEAAgE;AAEhE,MAAa,YAAa,SAAQ,mCAAgB;IAC9C,YAAmB,QAAiB;QAChC,KAAK,EAAE,CAAC;QADO,aAAQ,GAAR,QAAQ,CAAS;QAIpB,SAAI,GAAG,yBAAW,CAAC,YAAY,CAAC;IAFhD,CAAC;IAMM,gBAAgB,CAAC,UAAmB;QACvC,IACI,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,2BAAc,EAAC,UAAU,CAAC;YAC1B,IAAA,yBAAY,EAAC,UAAU,CAAC;YACxB,IAAA,+BAAqB,EAAC,IAAI,EAAE,UAAU,CAAC,EACzC;YACE,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAEM,QAAQ;QACX,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;IAE/B,CAAC;IAEM,YAAY;;QACf,OAAO,MAAA,IAAI,CAAC,QAAQ,mCAAI,UAAU,CAAC;IACvC,CAAC;IAED,OAAO,CAAC,UAAmB;QACvB,IAAI,IAAA,2BAAc,EAAC,UAAU,CAAC,EAAE;YAC5B,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;;AAnCL,oCAoCC;AA7BiB,qBAAQ,GAAG,IAAI,YAAY,CAAC,UAAU,CAAC,CAAC;AA+B1D,6CAAqB,CAAC,0BAA0B,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,YAAY,EAAE,CAAC,CAAC"}
@@ -5,7 +5,7 @@ export declare class IntegerType extends BscType {
5
5
  constructor(typeText?: string);
6
6
  readonly kind = BscTypeKind.IntegerType;
7
7
  static instance: IntegerType;
8
- isTypeCompatible(targetType: BscType): boolean;
8
+ isTypeCompatible(targetType: BscType): any;
9
9
  toString(): string;
10
10
  toTypeString(): string;
11
11
  isEqual(otherType: BscType): boolean;
@@ -4,6 +4,8 @@ exports.IntegerType = void 0;
4
4
  const reflection_1 = require("../astUtils/reflection");
5
5
  const BscType_1 = require("./BscType");
6
6
  const BscTypeKind_1 = require("./BscTypeKind");
7
+ const helpers_1 = require("./helpers");
8
+ const BuiltInInterfaceAdder_1 = require("./BuiltInInterfaceAdder");
7
9
  class IntegerType extends BscType_1.BscType {
8
10
  constructor(typeText) {
9
11
  super();
@@ -16,7 +18,8 @@ class IntegerType extends BscType_1.BscType {
16
18
  (0, reflection_1.isIntegerType)(targetType) ||
17
19
  (0, reflection_1.isFloatType)(targetType) ||
18
20
  (0, reflection_1.isDoubleType)(targetType) ||
19
- (0, reflection_1.isLongIntegerType)(targetType));
21
+ (0, reflection_1.isLongIntegerType)(targetType) ||
22
+ (0, helpers_1.isUnionTypeCompatible)(this, targetType));
20
23
  }
21
24
  toString() {
22
25
  var _a;
@@ -31,4 +34,5 @@ class IntegerType extends BscType_1.BscType {
31
34
  }
32
35
  exports.IntegerType = IntegerType;
33
36
  IntegerType.instance = new IntegerType('integer');
37
+ BuiltInInterfaceAdder_1.BuiltInInterfaceAdder.primitiveTypeInstanceCache.set('integer', IntegerType.instance);
34
38
  //# sourceMappingURL=IntegerType.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"IntegerType.js","sourceRoot":"","sources":["../../src/types/IntegerType.ts"],"names":[],"mappings":";;;AAAA,uDAAkI;AAClI,uCAAoC;AACpC,+CAA4C;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,yBAAY,EAAC,UAAU,CAAC;YACxB,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,wBAAW,EAAC,UAAU,CAAC;YACvB,IAAA,yBAAY,EAAC,UAAU,CAAC;YACxB,IAAA,8BAAiB,EAAC,UAAU,CAAC,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;;AAhCL,kCAiCC;AAxBiB,oBAAQ,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC"}
1
+ {"version":3,"file":"IntegerType.js","sourceRoot":"","sources":["../../src/types/IntegerType.ts"],"names":[],"mappings":";;;AAAA,uDAAkI;AAClI,uCAAoC;AACpC,+CAA4C;AAC5C,uCAAkD;AAClD,mEAAgE;AAEhE,MAAa,WAAY,SAAQ,iBAAO;IACpC,YACW,QAAiB;QAExB,KAAK,EAAE,CAAC;QAFD,aAAQ,GAAR,QAAQ,CAAS;QAKZ,SAAI,GAAG,yBAAW,CAAC,WAAW,CAAC;IAF/C,CAAC;IAMM,gBAAgB,CAAC,UAAmB;QACvC,OAAO,CACH,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,yBAAY,EAAC,UAAU,CAAC;YACxB,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,wBAAW,EAAC,UAAU,CAAC;YACvB,IAAA,yBAAY,EAAC,UAAU,CAAC;YACxB,IAAA,8BAAiB,EAAC,UAAU,CAAC;YAC7B,IAAA,+BAAqB,EAAC,IAAI,EAAE,UAAU,CAAC,CAC1C,CAAC;IACN,CAAC;IAEM,QAAQ;;QACX,OAAO,MAAA,IAAI,CAAC,QAAQ,mCAAI,SAAS,CAAC;IACtC,CAAC;IAEM,YAAY;QACf,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAED,OAAO,CAAC,SAAkB;QACtB,OAAO,IAAA,0BAAa,EAAC,SAAS,CAAC,CAAC;IACpC,CAAC;;AAjCL,kCAkCC;AAzBiB,oBAAQ,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC;AA2BxD,6CAAqB,CAAC,0BAA0B,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC"}
@@ -5,6 +5,7 @@ const SymbolTable_1 = require("../SymbolTable");
5
5
  const reflection_1 = require("../astUtils/reflection");
6
6
  const BscTypeKind_1 = require("./BscTypeKind");
7
7
  const InheritableType_1 = require("./InheritableType");
8
+ const helpers_1 = require("./helpers");
8
9
  class InterfaceType extends InheritableType_1.InheritableType {
9
10
  constructor(name, superInterface) {
10
11
  super(name, superInterface);
@@ -13,7 +14,7 @@ class InterfaceType extends InheritableType_1.InheritableType {
13
14
  this.kind = BscTypeKind_1.BscTypeKind.InterfaceType;
14
15
  }
15
16
  isTypeCompatible(targetType) {
16
- if ((0, reflection_1.isDynamicType)(targetType) || (0, reflection_1.isObjectType)(targetType)) {
17
+ if ((0, reflection_1.isDynamicType)(targetType) || (0, reflection_1.isObjectType)(targetType) || (0, helpers_1.isUnionTypeCompatible)(this, targetType)) {
17
18
  return true;
18
19
  }
19
20
  //TODO: We need to make sure that things don't get assigned to built-in types
@@ -1 +1 @@
1
- {"version":3,"file":"InterfaceType.js","sourceRoot":"","sources":["../../src/types/InterfaceType.ts"],"names":[],"mappings":";;;AAAA,gDAAgD;AAChD,uDAAsH;AAEtH,+CAA4C;AAC5C,uDAAoD;AAEpD,MAAa,aAAc,SAAQ,iCAAe;IAC9C,YACW,IAAY,EACH,cAAwB;QAExC,KAAK,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QAHrB,SAAI,GAAJ,IAAI,CAAQ;QACH,mBAAc,GAAd,cAAc,CAAU;QAK5B,SAAI,GAAG,yBAAW,CAAC,aAAa,CAAC;IAFjD,CAAC;IAIM,gBAAgB,CAAC,UAAmB;QACvC,IAAI,IAAA,0BAAa,EAAC,UAAU,CAAC,IAAI,IAAA,yBAAY,EAAC,UAAU,CAAC,EAAE;YACvD,OAAO,IAAI,CAAC;SACf;QACD,6EAA6E;QAC7E,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YAC1B,OAAO,IAAI,CAAC;SACf;QACD,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACjD,IAAI,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE;YACvE,OAAO,IAAI,CAAC;SACf;QACD,IAAI,IAAA,8BAAiB,EAAC,UAAU,CAAC,IAAI,IAAA,wBAAW,EAAC,UAAU,CAAC,EAAE;YAC1D,OAAO,IAAI,CAAC,gCAAgC,CAAC,UAAU,EAAE,4BAAc,CAAC,OAAO,CAAC,CAAC;SACpF;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,UAAmB;QACvB,OAAO,IAAA,4BAAe,EAAC,UAAU,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IACpG,CAAC;CACJ;AAlCD,sCAkCC"}
1
+ {"version":3,"file":"InterfaceType.js","sourceRoot":"","sources":["../../src/types/InterfaceType.ts"],"names":[],"mappings":";;;AAAA,gDAAgD;AAChD,uDAAsH;AAEtH,+CAA4C;AAC5C,uDAAoD;AACpD,uCAAkD;AAElD,MAAa,aAAc,SAAQ,iCAAe;IAC9C,YACW,IAAY,EACH,cAAwB;QAExC,KAAK,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QAHrB,SAAI,GAAJ,IAAI,CAAQ;QACH,mBAAc,GAAd,cAAc,CAAU;QAK5B,SAAI,GAAG,yBAAW,CAAC,aAAa,CAAC;IAFjD,CAAC;IAIM,gBAAgB,CAAC,UAAmB;QACvC,IAAI,IAAA,0BAAa,EAAC,UAAU,CAAC,IAAI,IAAA,yBAAY,EAAC,UAAU,CAAC,IAAI,IAAA,+BAAqB,EAAC,IAAI,EAAE,UAAU,CAAC,EAAE;YAClG,OAAO,IAAI,CAAC;SACf;QACD,6EAA6E;QAC7E,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YAC1B,OAAO,IAAI,CAAC;SACf;QACD,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACjD,IAAI,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE;YACvE,OAAO,IAAI,CAAC;SACf;QACD,IAAI,IAAA,8BAAiB,EAAC,UAAU,CAAC,IAAI,IAAA,wBAAW,EAAC,UAAU,CAAC,EAAE;YAC1D,OAAO,IAAI,CAAC,gCAAgC,CAAC,UAAU,EAAE,4BAAc,CAAC,OAAO,CAAC,CAAC;SACpF;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,UAAmB;QACvB,OAAO,IAAA,4BAAe,EAAC,UAAU,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IACpG,CAAC;CACJ;AAlCD,sCAkCC"}
@@ -5,7 +5,7 @@ export declare class InvalidType extends BscType {
5
5
  constructor(typeText?: string);
6
6
  readonly kind = BscTypeKind.InvalidType;
7
7
  static instance: InvalidType;
8
- isTypeCompatible(targetType: BscType): boolean;
8
+ isTypeCompatible(targetType: BscType): any;
9
9
  toString(): string;
10
10
  toTypeString(): string;
11
11
  isEqual(targetType: BscType): boolean;
@@ -4,6 +4,8 @@ exports.InvalidType = void 0;
4
4
  const reflection_1 = require("../astUtils/reflection");
5
5
  const BscType_1 = require("./BscType");
6
6
  const BscTypeKind_1 = require("./BscTypeKind");
7
+ const helpers_1 = require("./helpers");
8
+ const BuiltInInterfaceAdder_1 = require("./BuiltInInterfaceAdder");
7
9
  class InvalidType extends BscType_1.BscType {
8
10
  constructor(typeText) {
9
11
  super();
@@ -13,7 +15,8 @@ class InvalidType extends BscType_1.BscType {
13
15
  isTypeCompatible(targetType) {
14
16
  return ((0, reflection_1.isInvalidType)(targetType) ||
15
17
  (0, reflection_1.isDynamicType)(targetType) ||
16
- (0, reflection_1.isObjectType)(targetType));
18
+ (0, reflection_1.isObjectType)(targetType) ||
19
+ (0, helpers_1.isUnionTypeCompatible)(this, targetType));
17
20
  }
18
21
  toString() {
19
22
  var _a;
@@ -28,4 +31,5 @@ class InvalidType extends BscType_1.BscType {
28
31
  }
29
32
  exports.InvalidType = InvalidType;
30
33
  InvalidType.instance = new InvalidType('invalid');
34
+ BuiltInInterfaceAdder_1.BuiltInInterfaceAdder.primitiveTypeInstanceCache.set('invalid', InvalidType.instance);
31
35
  //# sourceMappingURL=InvalidType.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"InvalidType.js","sourceRoot":"","sources":["../../src/types/InvalidType.ts"],"names":[],"mappings":";;;AAAA,uDAAoF;AACpF,uCAAoC;AACpC,+CAA4C;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,yBAAY,EAAC,UAAU,CAAC,CAC3B,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;;AA7BL,kCA8BC;AArBiB,oBAAQ,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC"}
1
+ {"version":3,"file":"InvalidType.js","sourceRoot":"","sources":["../../src/types/InvalidType.ts"],"names":[],"mappings":";;;AAAA,uDAAoF;AACpF,uCAAoC;AACpC,+CAA4C;AAC5C,uCAAkD;AAClD,mEAAgE;AAEhE,MAAa,WAAY,SAAQ,iBAAO;IACpC,YACW,QAAiB;QAExB,KAAK,EAAE,CAAC;QAFD,aAAQ,GAAR,QAAQ,CAAS;QAKZ,SAAI,GAAG,yBAAW,CAAC,WAAW,CAAC;IAF/C,CAAC;IAMM,gBAAgB,CAAC,UAAmB;QACvC,OAAO,CACH,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,yBAAY,EAAC,UAAU,CAAC;YACxB,IAAA,+BAAqB,EAAC,IAAI,EAAE,UAAU,CAAC,CAC1C,CAAC;IACN,CAAC;IAEM,QAAQ;;QACX,OAAO,MAAA,IAAI,CAAC,QAAQ,mCAAI,SAAS,CAAC;IACtC,CAAC;IAEM,YAAY;QACf,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAED,OAAO,CAAC,UAAmB;QACvB,OAAO,IAAA,0BAAa,EAAC,UAAU,CAAC,CAAC;IACrC,CAAC;;AA9BL,kCA+BC;AAtBiB,oBAAQ,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC;AAwBxD,6CAAqB,CAAC,0BAA0B,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC"}
@@ -5,7 +5,7 @@ export declare class LongIntegerType extends BscType {
5
5
  constructor(typeText?: string);
6
6
  readonly kind = BscTypeKind.LongIntegerType;
7
7
  static instance: LongIntegerType;
8
- isTypeCompatible(targetType: BscType): boolean;
8
+ isTypeCompatible(targetType: BscType): any;
9
9
  toString(): string;
10
10
  toTypeString(): string;
11
11
  isEqual(targetType: BscType): boolean;
@@ -4,6 +4,8 @@ exports.LongIntegerType = void 0;
4
4
  const reflection_1 = require("../astUtils/reflection");
5
5
  const BscType_1 = require("./BscType");
6
6
  const BscTypeKind_1 = require("./BscTypeKind");
7
+ const helpers_1 = require("./helpers");
8
+ const BuiltInInterfaceAdder_1 = require("./BuiltInInterfaceAdder");
7
9
  class LongIntegerType extends BscType_1.BscType {
8
10
  constructor(typeText) {
9
11
  super();
@@ -16,7 +18,8 @@ class LongIntegerType extends BscType_1.BscType {
16
18
  (0, reflection_1.isIntegerType)(targetType) ||
17
19
  (0, reflection_1.isFloatType)(targetType) ||
18
20
  (0, reflection_1.isDoubleType)(targetType) ||
19
- (0, reflection_1.isLongIntegerType)(targetType));
21
+ (0, reflection_1.isLongIntegerType)(targetType) ||
22
+ (0, helpers_1.isUnionTypeCompatible)(this, targetType));
20
23
  }
21
24
  toString() {
22
25
  var _a;
@@ -31,4 +34,5 @@ class LongIntegerType extends BscType_1.BscType {
31
34
  }
32
35
  exports.LongIntegerType = LongIntegerType;
33
36
  LongIntegerType.instance = new LongIntegerType('longinteger');
37
+ BuiltInInterfaceAdder_1.BuiltInInterfaceAdder.primitiveTypeInstanceCache.set('longinteger', LongIntegerType.instance);
34
38
  //# sourceMappingURL=LongIntegerType.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LongIntegerType.js","sourceRoot":"","sources":["../../src/types/LongIntegerType.ts"],"names":[],"mappings":";;;AAAA,uDAAkI;AAClI,uCAAoC;AACpC,+CAA4C;AAE5C,MAAa,eAAgB,SAAQ,iBAAO;IACxC,YACW,QAAiB;QAExB,KAAK,EAAE,CAAC;QAFD,aAAQ,GAAR,QAAQ,CAAS;QAKZ,SAAI,GAAG,yBAAW,CAAC,eAAe,CAAC;IAFnD,CAAC;IAMM,gBAAgB,CAAC,UAAmB;QACvC,OAAO,CACH,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,yBAAY,EAAC,UAAU,CAAC;YACxB,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,wBAAW,EAAC,UAAU,CAAC;YACvB,IAAA,yBAAY,EAAC,UAAU,CAAC;YACxB,IAAA,8BAAiB,EAAC,UAAU,CAAC,CAChC,CAAC;IACN,CAAC;IAEM,QAAQ;;QACX,OAAO,MAAA,IAAI,CAAC,QAAQ,mCAAI,aAAa,CAAC;IAC1C,CAAC;IAEM,YAAY;QACf,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAED,OAAO,CAAC,UAAmB;QACvB,OAAO,IAAA,8BAAiB,EAAC,UAAU,CAAC,CAAC;IACzC,CAAC;;AAhCL,0CAiCC;AAxBiB,wBAAQ,GAAG,IAAI,eAAe,CAAC,aAAa,CAAC,CAAC"}
1
+ {"version":3,"file":"LongIntegerType.js","sourceRoot":"","sources":["../../src/types/LongIntegerType.ts"],"names":[],"mappings":";;;AAAA,uDAAkI;AAClI,uCAAoC;AACpC,+CAA4C;AAC5C,uCAAkD;AAClD,mEAAgE;AAEhE,MAAa,eAAgB,SAAQ,iBAAO;IACxC,YACW,QAAiB;QAExB,KAAK,EAAE,CAAC;QAFD,aAAQ,GAAR,QAAQ,CAAS;QAKZ,SAAI,GAAG,yBAAW,CAAC,eAAe,CAAC;IAFnD,CAAC;IAMM,gBAAgB,CAAC,UAAmB;QACvC,OAAO,CACH,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,yBAAY,EAAC,UAAU,CAAC;YACxB,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,wBAAW,EAAC,UAAU,CAAC;YACvB,IAAA,yBAAY,EAAC,UAAU,CAAC;YACxB,IAAA,8BAAiB,EAAC,UAAU,CAAC;YAC7B,IAAA,+BAAqB,EAAC,IAAI,EAAE,UAAU,CAAC,CAC1C,CAAC;IACN,CAAC;IAEM,QAAQ;;QACX,OAAO,MAAA,IAAI,CAAC,QAAQ,mCAAI,aAAa,CAAC;IAC1C,CAAC;IAEM,YAAY;QACf,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAED,OAAO,CAAC,UAAmB;QACvB,OAAO,IAAA,8BAAiB,EAAC,UAAU,CAAC,CAAC;IACzC,CAAC;;AAjCL,0CAkCC;AAzBiB,wBAAQ,GAAG,IAAI,eAAe,CAAC,aAAa,CAAC,CAAC;AA2BhE,6CAAqB,CAAC,0BAA0B,CAAC,GAAG,CAAC,aAAa,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC"}
@@ -5,6 +5,7 @@ const SymbolTable_1 = require("../SymbolTable");
5
5
  const reflection_1 = require("../astUtils/reflection");
6
6
  const BscType_1 = require("./BscType");
7
7
  const BscTypeKind_1 = require("./BscTypeKind");
8
+ const BuiltInInterfaceAdder_1 = require("./BuiltInInterfaceAdder");
8
9
  const DynamicType_1 = require("./DynamicType");
9
10
  class ObjectType extends BscType_1.BscType {
10
11
  constructor(typeText) {
@@ -34,4 +35,5 @@ class ObjectType extends BscType_1.BscType {
34
35
  }
35
36
  }
36
37
  exports.ObjectType = ObjectType;
38
+ BuiltInInterfaceAdder_1.BuiltInInterfaceAdder.primitiveTypeInstanceCache.set('object', new ObjectType('object'));
37
39
  //# sourceMappingURL=ObjectType.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ObjectType.js","sourceRoot":"","sources":["../../src/types/ObjectType.ts"],"names":[],"mappings":";;;AAAA,gDAAgD;AAChD,uDAAsD;AAEtD,uCAAoC;AACpC,+CAA4C;AAC5C,+CAA4C;AAE5C,MAAa,UAAW,SAAQ,iBAAO;IACnC,YACW,QAAiB;QAExB,KAAK,EAAE,CAAC;QAFD,aAAQ,GAAR,QAAQ,CAAS;QAKZ,SAAI,GAAG,yBAAW,CAAC,UAAU,CAAC;IAF9C,CAAC;IAIM,gBAAgB,CAAC,UAAmB;QACvC,iGAAiG;QACjG,OAAO,CAAC,CAAC,UAAU,CAAC;IACxB,CAAC;IAEM,QAAQ;;QACX,OAAO,MAAA,IAAI,CAAC,QAAQ,mCAAI,QAAQ,CAAC;IACrC,CAAC;IAEM,YAAY;QACf,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAED,aAAa,CAAC,IAAY,EAAE,OAAuB;;QAC/C,gEAAgE;QAChE,mHAAmH;QACnH,OAAO,MAAA,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,mCAAI,yBAAW,CAAC,QAAQ,CAAC;IACtE,CAAC;IAED,OAAO,CAAC,SAAkB;QACtB,OAAO,IAAA,yBAAY,EAAC,SAAS,CAAC,IAAI,IAAI,CAAC,gCAAgC,CAAC,SAAS,EAAE,4BAAc,CAAC,OAAO,CAAC,CAAC;IAC/G,CAAC;CACJ;AA/BD,gCA+BC"}
1
+ {"version":3,"file":"ObjectType.js","sourceRoot":"","sources":["../../src/types/ObjectType.ts"],"names":[],"mappings":";;;AAAA,gDAAgD;AAChD,uDAAsD;AAEtD,uCAAoC;AACpC,+CAA4C;AAC5C,mEAAgE;AAChE,+CAA4C;AAE5C,MAAa,UAAW,SAAQ,iBAAO;IACnC,YACW,QAAiB;QAExB,KAAK,EAAE,CAAC;QAFD,aAAQ,GAAR,QAAQ,CAAS;QAKZ,SAAI,GAAG,yBAAW,CAAC,UAAU,CAAC;IAF9C,CAAC;IAIM,gBAAgB,CAAC,UAAmB;QACvC,iGAAiG;QACjG,OAAO,CAAC,CAAC,UAAU,CAAC;IACxB,CAAC;IAEM,QAAQ;;QACX,OAAO,MAAA,IAAI,CAAC,QAAQ,mCAAI,QAAQ,CAAC;IACrC,CAAC;IAEM,YAAY;QACf,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAED,aAAa,CAAC,IAAY,EAAE,OAAuB;;QAC/C,gEAAgE;QAChE,mHAAmH;QACnH,OAAO,MAAA,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,mCAAI,yBAAW,CAAC,QAAQ,CAAC;IACtE,CAAC;IAED,OAAO,CAAC,SAAkB;QACtB,OAAO,IAAA,yBAAY,EAAC,SAAS,CAAC,IAAI,IAAI,CAAC,gCAAgC,CAAC,SAAS,EAAE,4BAAc,CAAC,OAAO,CAAC,CAAC;IAC/G,CAAC;CACJ;AA/BD,gCA+BC;AAGD,6CAAqB,CAAC,0BAA0B,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC"}
@@ -2,6 +2,7 @@ import type { SymbolTypeGetterProvider } from '../SymbolTable';
2
2
  import type { SymbolTypeFlag } from '../SymbolTable';
3
3
  import { BscType } from './BscType';
4
4
  import { BscTypeKind } from './BscTypeKind';
5
+ import type { Token } from '../lexer/Token';
5
6
  export declare function referenceTypeFactory(memberKey: string, fullName: any, flags: SymbolTypeFlag, tableProvider: SymbolTypeGetterProvider): ReferenceType;
6
7
  export declare class ReferenceType extends BscType {
7
8
  memberKey: string;
@@ -47,3 +48,14 @@ export declare class TypePropertyReferenceType extends BscType {
47
48
  propertyName: string;
48
49
  constructor(outerType: BscType, propertyName: string);
49
50
  }
51
+ /**
52
+ * Use this class for when there is a binary operator and either the left hand side and/or the right hand side
53
+ * are ReferenceTypes
54
+ */
55
+ export declare class BinaryOperatorReferenceType extends BscType {
56
+ leftType: BscType;
57
+ operator: Token;
58
+ rightType: BscType;
59
+ cachedType: BscType;
60
+ constructor(leftType: BscType, operator: Token, rightType: BscType, binaryOpResolver: (lType: BscType, operator: Token, rType: BscType) => BscType);
61
+ }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TypePropertyReferenceType = exports.ReferenceType = exports.referenceTypeFactory = void 0;
3
+ exports.BinaryOperatorReferenceType = exports.TypePropertyReferenceType = exports.ReferenceType = exports.referenceTypeFactory = void 0;
4
4
  const reflection_1 = require("../astUtils/reflection");
5
5
  const BscType_1 = require("./BscType");
6
6
  const DynamicType_1 = require("./DynamicType");
@@ -36,10 +36,10 @@ class ReferenceType extends BscType_1.BscType {
36
36
  return resolvedType.getMemberType(innerName, innerOptions);
37
37
  }
38
38
  },
39
- setCachedType: (innerName, innerResolvedType, options) => {
39
+ setCachedType: (innerName, innerResolvedTypeCacheEntry, options) => {
40
40
  const resolvedType = this.resolve();
41
41
  if (resolvedType) {
42
- resolvedType.memberTable.setCachedType(innerName, innerResolvedType, options);
42
+ resolvedType.memberTable.setCachedType(innerName, innerResolvedTypeCacheEntry, options);
43
43
  }
44
44
  }
45
45
  };
@@ -61,7 +61,7 @@ class ReferenceType extends BscType_1.BscType {
61
61
  if (propName === 'isResolvable') {
62
62
  return () => {
63
63
  let resultSoFar = this.resolve();
64
- while ((0, reflection_1.isReferenceType)(resultSoFar)) {
64
+ while (resultSoFar && (0, reflection_1.isReferenceType)(resultSoFar)) {
65
65
  resultSoFar = resultSoFar.getTarget();
66
66
  }
67
67
  return !!resultSoFar;
@@ -134,6 +134,11 @@ class ReferenceType extends BscType_1.BscType {
134
134
  else if (propName === 'memberTable') {
135
135
  return this.memberTable;
136
136
  }
137
+ else if (propName === 'getMemberTable') {
138
+ return () => {
139
+ return this.memberTable;
140
+ };
141
+ }
137
142
  else if (propName === 'isTypeCompatible') {
138
143
  return (targetType) => {
139
144
  return (0, reflection_1.isDynamicType)(targetType);
@@ -148,6 +153,15 @@ class ReferenceType extends BscType_1.BscType {
148
153
  return false;
149
154
  };
150
155
  }
156
+ else if (propName === 'addBuiltInInterfaces') {
157
+ // this is an unknown type. There is no use in adding built in interfaces
158
+ // return no-op function
159
+ return () => { };
160
+ }
161
+ else if (propName === 'hasAddedBuiltInInterfaces') {
162
+ // this is an unknown type. There is no use in adding built in interfaces
163
+ return true;
164
+ }
151
165
  }
152
166
  if (!innerType) {
153
167
  innerType = DynamicType_1.DynamicType.instance;
@@ -162,7 +176,7 @@ class ReferenceType extends BscType_1.BscType {
162
176
  let innerType = this.resolve();
163
177
  // Look for circular references
164
178
  if (!innerType || this.referenceChain.has(innerType)) {
165
- innerType = DynamicType_1.DynamicType.instance;
179
+ return false;
166
180
  }
167
181
  const result = Reflect.set(innerType, name, value, innerType);
168
182
  this.referenceChain.clear();
@@ -184,9 +198,9 @@ class ReferenceType extends BscType_1.BscType {
184
198
  // could not find this member
185
199
  return;
186
200
  }
187
- if ((0, reflection_1.isReferenceType)(resolvedType)) {
201
+ if ((0, reflection_1.isAnyReferenceType)(resolvedType)) {
188
202
  // If this is a referenceType, keep digging down until we have a non reference Type.
189
- while ((0, reflection_1.isReferenceType)(resolvedType)) {
203
+ while (resolvedType && (0, reflection_1.isAnyReferenceType)(resolvedType)) {
190
204
  if (this.referenceChain.has(resolvedType)) {
191
205
  // this is a circular reference
192
206
  this.circRefCount++;
@@ -199,9 +213,9 @@ class ReferenceType extends BscType_1.BscType {
199
213
  this.referenceChain.add(resolvedType);
200
214
  resolvedType = resolvedType.getTarget();
201
215
  }
202
- this.tableProvider().setCachedType(this.memberKey, resolvedType, { flags: this.flags });
216
+ this.tableProvider().setCachedType(this.memberKey, { type: resolvedType }, { flags: this.flags });
203
217
  }
204
- if (!(0, reflection_1.isReferenceType)(resolvedType)) {
218
+ if (resolvedType && !(0, reflection_1.isAnyReferenceType)(resolvedType)) {
205
219
  this.circRefCount = 0;
206
220
  this.referenceChain.clear();
207
221
  }
@@ -238,7 +252,7 @@ class TypePropertyReferenceType extends BscType_1.BscType {
238
252
  // Cheeky way to get `isTypePropertyReferenceType` reflection to work
239
253
  return { name: 'TypePropertyReferenceType' };
240
254
  }
241
- if ((0, reflection_1.isReferenceType)(this.outerType) && !this.outerType.isResolvable()) {
255
+ if ((0, reflection_1.isAnyReferenceType)(this.outerType) && !this.outerType.isResolvable()) {
242
256
  if (propName === 'getMemberType') {
243
257
  //If we're calling `getMemberType()`, we need it to proxy to using the actual symbol table
244
258
  //So if that symbol is ever populated, the correct type is passed through
@@ -250,9 +264,9 @@ class TypePropertyReferenceType extends BscType_1.BscType {
250
264
  var _a, _b;
251
265
  return (_b = (_a = this.outerType) === null || _a === void 0 ? void 0 : _a[this.propertyName]) === null || _b === void 0 ? void 0 : _b.getMemberType(innerName, innerOptions);
252
266
  },
253
- setCachedType: (innerName, innerType, innerOptions) => {
267
+ setCachedType: (innerName, innerTypeCacheEntry, innerOptions) => {
254
268
  var _a, _b;
255
- return (_b = (_a = this.outerType) === null || _a === void 0 ? void 0 : _a[this.propertyName]) === null || _b === void 0 ? void 0 : _b.memberTable.setCachedType(innerName, innerType, innerOptions);
269
+ return (_b = (_a = this.outerType) === null || _a === void 0 ? void 0 : _a[this.propertyName]) === null || _b === void 0 ? void 0 : _b.memberTable.setCachedType(innerName, innerTypeCacheEntry, innerOptions);
256
270
  }
257
271
  };
258
272
  });
@@ -285,4 +299,47 @@ class TypePropertyReferenceType extends BscType_1.BscType {
285
299
  }
286
300
  }
287
301
  exports.TypePropertyReferenceType = TypePropertyReferenceType;
302
+ /**
303
+ * Use this class for when there is a binary operator and either the left hand side and/or the right hand side
304
+ * are ReferenceTypes
305
+ */
306
+ class BinaryOperatorReferenceType extends BscType_1.BscType {
307
+ constructor(leftType, operator, rightType, binaryOpResolver) {
308
+ super(operator.text);
309
+ this.leftType = leftType;
310
+ this.operator = operator;
311
+ this.rightType = rightType;
312
+ // eslint-disable-next-line no-constructor-return
313
+ return new Proxy(this, {
314
+ get: (target, propName, receiver) => {
315
+ var _a;
316
+ if (propName === '__reflection') {
317
+ // Cheeky way to get `BinaryOperatorReferenceType` reflection to work
318
+ return { name: 'BinaryOperatorReferenceType' };
319
+ }
320
+ let resultType = (_a = this.cachedType) !== null && _a !== void 0 ? _a : DynamicType_1.DynamicType.instance;
321
+ if (!this.cachedType) {
322
+ if (((0, reflection_1.isAnyReferenceType)(this.leftType) && !this.leftType.isResolvable()) ||
323
+ ((0, reflection_1.isAnyReferenceType)(this.rightType) && !this.rightType.isResolvable())) {
324
+ if (propName === 'isResolvable') {
325
+ return () => false;
326
+ }
327
+ if (propName === 'getTarget') {
328
+ return () => undefined;
329
+ }
330
+ }
331
+ else {
332
+ resultType = binaryOpResolver(this.leftType, this.operator, this.rightType);
333
+ this.cachedType = resultType;
334
+ }
335
+ }
336
+ if (resultType) {
337
+ const result = Reflect.get(resultType, propName, resultType);
338
+ return result;
339
+ }
340
+ }
341
+ });
342
+ }
343
+ }
344
+ exports.BinaryOperatorReferenceType = BinaryOperatorReferenceType;
288
345
  //# sourceMappingURL=ReferenceType.js.map