brighterscript 0.66.0-alpha.2 → 0.66.0-alpha.4

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 (138) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/README.md +0 -6
  3. package/dist/BsConfig.d.ts +0 -5
  4. package/dist/BusyStatusTracker.d.ts +31 -0
  5. package/dist/BusyStatusTracker.js +83 -0
  6. package/dist/BusyStatusTracker.js.map +1 -0
  7. package/dist/Cache.js +3 -3
  8. package/dist/Cache.js.map +1 -1
  9. package/dist/CodeActionUtil.d.ts +2 -2
  10. package/dist/DiagnosticCollection.js +8 -5
  11. package/dist/DiagnosticCollection.js.map +1 -1
  12. package/dist/DiagnosticMessages.d.ts +6 -1
  13. package/dist/DiagnosticMessages.js +5 -0
  14. package/dist/DiagnosticMessages.js.map +1 -1
  15. package/dist/FunctionScope.d.ts +1 -1
  16. package/dist/LanguageServer.d.ts +22 -1
  17. package/dist/LanguageServer.js +124 -51
  18. package/dist/LanguageServer.js.map +1 -1
  19. package/dist/Logger.d.ts +3 -2
  20. package/dist/Logger.js +10 -2
  21. package/dist/Logger.js.map +1 -1
  22. package/dist/Program.d.ts +1 -3
  23. package/dist/Program.js +14 -16
  24. package/dist/Program.js.map +1 -1
  25. package/dist/ProgramBuilder.js +1 -1
  26. package/dist/ProgramBuilder.js.map +1 -1
  27. package/dist/Scope.d.ts +11 -6
  28. package/dist/Scope.js +77 -93
  29. package/dist/Scope.js.map +1 -1
  30. package/dist/SymbolTable.d.ts +11 -5
  31. package/dist/SymbolTable.js +21 -8
  32. package/dist/SymbolTable.js.map +1 -1
  33. package/dist/Throttler.d.ts +12 -0
  34. package/dist/Throttler.js +39 -0
  35. package/dist/Throttler.js.map +1 -1
  36. package/dist/astUtils/reflection.d.ts +4 -0
  37. package/dist/astUtils/reflection.js +9 -1
  38. package/dist/astUtils/reflection.js.map +1 -1
  39. package/dist/bscPlugin/hover/HoverProcessor.d.ts +5 -0
  40. package/dist/bscPlugin/hover/HoverProcessor.js +108 -77
  41. package/dist/bscPlugin/hover/HoverProcessor.js.map +1 -1
  42. package/dist/bscPlugin/hover/HoverProcessor.spec.js +83 -29
  43. package/dist/bscPlugin/hover/HoverProcessor.spec.js.map +1 -1
  44. package/dist/bscPlugin/validation/BrsFileValidator.d.ts +0 -4
  45. package/dist/bscPlugin/validation/BrsFileValidator.js +10 -16
  46. package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -1
  47. package/dist/bscPlugin/validation/ScopeValidator.d.ts +4 -0
  48. package/dist/bscPlugin/validation/ScopeValidator.js +77 -42
  49. package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -1
  50. package/dist/bscPlugin/validation/ScopeValidator.spec.js +715 -0
  51. package/dist/bscPlugin/validation/ScopeValidator.spec.js.map +1 -0
  52. package/dist/cli.js +103 -13
  53. package/dist/cli.js.map +1 -1
  54. package/dist/deferred.d.ts +1 -1
  55. package/dist/deferred.js.map +1 -1
  56. package/dist/files/BrsFile.Class.spec.js +5 -0
  57. package/dist/files/BrsFile.Class.spec.js.map +1 -1
  58. package/dist/files/BrsFile.d.ts +1 -11
  59. package/dist/files/BrsFile.js +9 -101
  60. package/dist/files/BrsFile.js.map +1 -1
  61. package/dist/files/BrsFile.spec.js +3 -267
  62. package/dist/files/BrsFile.spec.js.map +1 -1
  63. package/dist/globalCallables.js +87 -79
  64. package/dist/globalCallables.js.map +1 -1
  65. package/dist/index.d.ts +3 -0
  66. package/dist/index.js +3 -0
  67. package/dist/index.js.map +1 -1
  68. package/dist/interfaces.d.ts +11 -5
  69. package/dist/interfaces.js.map +1 -1
  70. package/dist/parser/Expression.d.ts +4 -3
  71. package/dist/parser/Expression.js +32 -9
  72. package/dist/parser/Expression.js.map +1 -1
  73. package/dist/parser/SGParser.d.ts +2 -2
  74. package/dist/parser/Statement.d.ts +11 -6
  75. package/dist/parser/Statement.js +54 -21
  76. package/dist/parser/Statement.js.map +1 -1
  77. package/dist/parser/tests/expression/TernaryExpression.spec.js +2 -2
  78. package/dist/types/BaseFunctionType.d.ts +8 -0
  79. package/dist/types/BaseFunctionType.js +25 -0
  80. package/dist/types/BaseFunctionType.js.map +1 -0
  81. package/dist/types/BooleanType.d.ts +3 -0
  82. package/dist/types/BooleanType.js +7 -1
  83. package/dist/types/BooleanType.js.map +1 -1
  84. package/dist/types/BscTypeKind.d.ts +1 -0
  85. package/dist/types/BscTypeKind.js +1 -0
  86. package/dist/types/BscTypeKind.js.map +1 -1
  87. package/dist/types/ClassType.js +1 -1
  88. package/dist/types/ClassType.js.map +1 -1
  89. package/dist/types/DoubleType.d.ts +3 -0
  90. package/dist/types/DoubleType.js +6 -0
  91. package/dist/types/DoubleType.js.map +1 -1
  92. package/dist/types/EnumType.d.ts +23 -4
  93. package/dist/types/EnumType.js +18 -2
  94. package/dist/types/EnumType.js.map +1 -1
  95. package/dist/types/FloatType.d.ts +3 -0
  96. package/dist/types/FloatType.js +6 -0
  97. package/dist/types/FloatType.js.map +1 -1
  98. package/dist/types/FunctionType.d.ts +6 -19
  99. package/dist/types/FunctionType.js +12 -44
  100. package/dist/types/FunctionType.js.map +1 -1
  101. package/dist/types/IntegerType.d.ts +3 -0
  102. package/dist/types/IntegerType.js +6 -0
  103. package/dist/types/IntegerType.js.map +1 -1
  104. package/dist/types/InterfaceType.js +3 -3
  105. package/dist/types/InterfaceType.js.map +1 -1
  106. package/dist/types/InvalidType.d.ts +1 -0
  107. package/dist/types/InvalidType.js +3 -1
  108. package/dist/types/InvalidType.js.map +1 -1
  109. package/dist/types/LongIntegerType.d.ts +3 -0
  110. package/dist/types/LongIntegerType.js +6 -0
  111. package/dist/types/LongIntegerType.js.map +1 -1
  112. package/dist/types/ObjectType.js +2 -9
  113. package/dist/types/ObjectType.js.map +1 -1
  114. package/dist/types/ReferenceType.spec.js +6 -6
  115. package/dist/types/ReferenceType.spec.js.map +1 -1
  116. package/dist/types/StringType.d.ts +3 -0
  117. package/dist/types/StringType.js +9 -1
  118. package/dist/types/StringType.js.map +1 -1
  119. package/dist/types/TypedFunctionType.d.ts +27 -0
  120. package/dist/types/TypedFunctionType.js +69 -0
  121. package/dist/types/TypedFunctionType.js.map +1 -0
  122. package/dist/types/TypedFunctionType.spec.d.ts +1 -0
  123. package/dist/types/TypedFunctionType.spec.js +23 -0
  124. package/dist/types/TypedFunctionType.spec.js.map +1 -0
  125. package/dist/types/UnionType.js +1 -1
  126. package/dist/types/UnionType.js.map +1 -1
  127. package/dist/types/VoidType.js +2 -1
  128. package/dist/types/VoidType.js.map +1 -1
  129. package/dist/types/index.d.ts +1 -1
  130. package/dist/types/index.js +1 -1
  131. package/dist/types/index.js.map +1 -1
  132. package/dist/util.d.ts +22 -6
  133. package/dist/util.js +248 -82
  134. package/dist/util.js.map +1 -1
  135. package/package.json +4 -2
  136. package/dist/types/FunctionType.spec.js +0 -23
  137. package/dist/types/FunctionType.spec.js.map +0 -1
  138. /package/dist/{types/FunctionType.spec.d.ts → bscPlugin/validation/ScopeValidator.spec.d.ts} +0 -0
@@ -11,7 +11,7 @@ const StringType_1 = require("./StringType");
11
11
  const FloatType_1 = require("./FloatType");
12
12
  const ClassType_1 = require("./ClassType");
13
13
  const reflection_1 = require("../astUtils/reflection");
14
- const FunctionType_1 = require("./FunctionType");
14
+ const TypedFunctionType_1 = require("./TypedFunctionType");
15
15
  const NamespaceType_1 = require("./NamespaceType");
16
16
  const runtimeFlag = SymbolTable_2.SymbolTypeFlag.runtime;
17
17
  describe('ReferenceType', () => {
@@ -67,12 +67,12 @@ describe('ReferenceType', () => {
67
67
  });
68
68
  describe('PropertyReferenceType', () => {
69
69
  it('can be checked with reflection', () => {
70
- const func = new FunctionType_1.FunctionType(StringType_1.StringType.instance);
70
+ const func = new TypedFunctionType_1.TypedFunctionType(StringType_1.StringType.instance);
71
71
  const propRef = new ReferenceType_1.TypePropertyReferenceType(func, 'returnType');
72
72
  (0, chai_1.expect)((0, reflection_1.isTypePropertyReferenceType)(propRef)).to.be.true;
73
73
  });
74
74
  it('can resolve a FunctionType.returnType', () => {
75
- const func = new FunctionType_1.FunctionType(StringType_1.StringType.instance);
75
+ const func = new TypedFunctionType_1.TypedFunctionType(StringType_1.StringType.instance);
76
76
  const propRef = new ReferenceType_1.TypePropertyReferenceType(func, 'returnType');
77
77
  (0, testHelpers_spec_1.expectTypeToBe)(propRef, StringType_1.StringType);
78
78
  });
@@ -83,7 +83,7 @@ describe('PropertyReferenceType', () => {
83
83
  // `ref` will resolve to DynamicType, and its returnType is DynamicType.Instance
84
84
  (0, testHelpers_spec_1.expectTypeToBe)(propRef, DynamicType_1.DynamicType);
85
85
  // Set ref to resolve to a function
86
- table.addSymbol('someFunc', null, new FunctionType_1.FunctionType(IntegerType_1.IntegerType.instance), SymbolTable_2.SymbolTypeFlag.runtime);
86
+ table.addSymbol('someFunc', null, new TypedFunctionType_1.TypedFunctionType(IntegerType_1.IntegerType.instance), SymbolTable_2.SymbolTypeFlag.runtime);
87
87
  (0, testHelpers_spec_1.expectTypeToBe)(propRef, IntegerType_1.IntegerType);
88
88
  });
89
89
  it('resolves members of a property on a ReferenceType', () => {
@@ -96,9 +96,9 @@ describe('PropertyReferenceType', () => {
96
96
  // Set fnRef to resolve to a function that returns a complex type
97
97
  const klassType = new ClassType_1.ClassType('Klass');
98
98
  klassType.addMember('myNum', null, IntegerType_1.IntegerType.instance, SymbolTable_2.SymbolTypeFlag.runtime);
99
- table.addSymbol('someFunc', null, new FunctionType_1.FunctionType(klassType), SymbolTable_2.SymbolTypeFlag.runtime);
99
+ table.addSymbol('someFunc', null, new TypedFunctionType_1.TypedFunctionType(klassType), SymbolTable_2.SymbolTypeFlag.runtime);
100
100
  // returnPropRef = someFunc().myNum
101
- (0, testHelpers_spec_1.expectTypeToBe)(fnRef, FunctionType_1.FunctionType);
101
+ (0, testHelpers_spec_1.expectTypeToBe)(fnRef, TypedFunctionType_1.TypedFunctionType);
102
102
  (0, testHelpers_spec_1.expectTypeToBe)(returnRef, ClassType_1.ClassType);
103
103
  (0, testHelpers_spec_1.expectTypeToBe)(returnPropRef, IntegerType_1.IntegerType);
104
104
  });
@@ -1 +1 @@
1
- {"version":3,"file":"ReferenceType.spec.js","sourceRoot":"","sources":["../../src/types/ReferenceType.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ReferenceType.spec.js","sourceRoot":"","sources":["../../src/types/ReferenceType.spec.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
+ import type { GetTypeOptions } from '../interfaces';
1
2
  import { BscType } from './BscType';
2
3
  import { BscTypeKind } from './BscTypeKind';
4
+ import { DynamicType } from './DynamicType';
3
5
  export declare class StringType extends BscType {
4
6
  typeText?: string;
5
7
  constructor(typeText?: string);
@@ -12,4 +14,5 @@ export declare class StringType extends BscType {
12
14
  toString(): string;
13
15
  toTypeString(): string;
14
16
  isEqual(targetType: BscType): boolean;
17
+ getMemberType(memberName: string, options: GetTypeOptions): DynamicType;
15
18
  }
@@ -4,6 +4,7 @@ exports.StringType = 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 DynamicType_1 = require("./DynamicType");
7
8
  class StringType extends BscType_1.BscType {
8
9
  constructor(typeText) {
9
10
  super();
@@ -12,7 +13,10 @@ class StringType extends BscType_1.BscType {
12
13
  }
13
14
  isTypeCompatible(targetType) {
14
15
  return ((0, reflection_1.isStringType)(targetType) ||
15
- (0, reflection_1.isDynamicType)(targetType));
16
+ (0, reflection_1.isDynamicType)(targetType) ||
17
+ (0, reflection_1.isObjectType)(targetType) ||
18
+ //string enums are compatible with strings
19
+ (((0, reflection_1.isEnumType)(targetType) || (0, reflection_1.isEnumMemberType)(targetType)) && (0, reflection_1.isStringType)(targetType.underlyingType)));
16
20
  }
17
21
  toString() {
18
22
  var _a;
@@ -24,6 +28,10 @@ class StringType extends BscType_1.BscType {
24
28
  isEqual(targetType) {
25
29
  return (0, reflection_1.isStringType)(targetType);
26
30
  }
31
+ getMemberType(memberName, options) {
32
+ //TODO: this should really add the appropriate interface methods from roku-types
33
+ return DynamicType_1.DynamicType.instance;
34
+ }
27
35
  }
28
36
  exports.StringType = StringType;
29
37
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"StringType.js","sourceRoot":"","sources":["../../src/types/StringType.ts"],"names":[],"mappings":";;;AAAA,uDAAqE;AACrE,uCAAoC;AACpC,+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;IASM,gBAAgB,CAAC,UAAmB;QACvC,OAAO,CACH,IAAA,yBAAY,EAAC,UAAU,CAAC;YACxB,IAAA,0BAAa,EAAC,UAAU,CAAC,CAC5B,CAAC;IACN,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;IAEM,OAAO,CAAC,UAAmB;QAC9B,OAAO,IAAA,yBAAY,EAAC,UAAU,CAAC,CAAC;IACpC,CAAC;;AA/BL,gCAgCC;AAvBG;;GAEG;AACW,mBAAQ,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC"}
1
+ {"version":3,"file":"StringType.js","sourceRoot":"","sources":["../../src/types/StringType.ts"],"names":[],"mappings":";;;AAAA,uDAAiH;AAEjH,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;IASM,gBAAgB,CAAC,UAAmB;QACvC,OAAO,CACH,IAAA,yBAAY,EAAC,UAAU,CAAC;YACxB,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,yBAAY,EAAC,UAAU,CAAC;YACxB,0CAA0C;YAC1C,CACI,CAAC,IAAA,uBAAU,EAAC,UAAU,CAAC,IAAI,IAAA,6BAAgB,EAAC,UAAU,CAAC,CAAC,IAAI,IAAA,yBAAY,EAAC,UAAU,CAAC,cAAc,CAAC,CACtG,CACJ,CAAC;IACN,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;IAEM,OAAO,CAAC,UAAmB;QAC9B,OAAO,IAAA,yBAAY,EAAC,UAAU,CAAC,CAAC;IACpC,CAAC;IAED,aAAa,CAAC,UAAkB,EAAE,OAAuB;QACrD,gFAAgF;QAChF,OAAO,yBAAW,CAAC,QAAQ,CAAC;IAChC,CAAC;;AAzCL,gCA0CC;AAjCG;;GAEG;AACW,mBAAQ,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { BaseFunctionType } from './BaseFunctionType';
2
+ import type { BscType } from './BscType';
3
+ import { BscTypeKind } from './BscTypeKind';
4
+ export declare class TypedFunctionType extends BaseFunctionType {
5
+ returnType: BscType;
6
+ constructor(returnType: BscType);
7
+ readonly kind = BscTypeKind.TypedFunctionType;
8
+ /**
9
+ * The name of the function for this type. Can be null
10
+ */
11
+ name: string;
12
+ /**
13
+ * Determines if this is a sub or not
14
+ */
15
+ isSub: boolean;
16
+ params: {
17
+ name: string;
18
+ type: BscType;
19
+ isOptional: boolean;
20
+ }[];
21
+ setName(name: string): this;
22
+ addParameter(name: string, type: BscType, isOptional: boolean): this;
23
+ isTypeCompatible(targetType: BscType): boolean;
24
+ toString(): string;
25
+ toTypeString(): string;
26
+ isEqual(targetType: BscType): boolean;
27
+ }
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TypedFunctionType = void 0;
4
+ const reflection_1 = require("../astUtils/reflection");
5
+ const BaseFunctionType_1 = require("./BaseFunctionType");
6
+ const BscTypeKind_1 = require("./BscTypeKind");
7
+ class TypedFunctionType extends BaseFunctionType_1.BaseFunctionType {
8
+ constructor(returnType) {
9
+ super();
10
+ this.returnType = returnType;
11
+ this.kind = BscTypeKind_1.BscTypeKind.TypedFunctionType;
12
+ /**
13
+ * Determines if this is a sub or not
14
+ */
15
+ this.isSub = false;
16
+ this.params = [];
17
+ }
18
+ setName(name) {
19
+ this.name = name;
20
+ return this;
21
+ }
22
+ addParameter(name, type, isOptional) {
23
+ this.params.push({
24
+ name: name,
25
+ type: type,
26
+ isOptional: isOptional === true ? true : false
27
+ });
28
+ return this;
29
+ }
30
+ isTypeCompatible(targetType) {
31
+ if ((0, reflection_1.isDynamicType)(targetType) ||
32
+ (0, reflection_1.isObjectType)(targetType)) {
33
+ return true;
34
+ }
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.isTypedFunctionType)(targetType)) {
49
+ //compare all parameters
50
+ let len = Math.max(this.params.length, targetType.params.length);
51
+ for (let i = 0; i < len; i++) {
52
+ let myParam = this.params[i];
53
+ let targetParam = targetType.params[i];
54
+ if (!myParam || !targetParam || !myParam.type.isAssignableTo(targetParam.type)) {
55
+ return false;
56
+ }
57
+ }
58
+ //compare return type
59
+ if (!this.returnType || !targetType.returnType || !this.returnType.isAssignableTo(targetType.returnType)) {
60
+ return false;
61
+ }
62
+ //made it here, all params and return type are equivalent
63
+ return true;
64
+ }
65
+ return false;
66
+ }
67
+ }
68
+ exports.TypedFunctionType = TypedFunctionType;
69
+ //# sourceMappingURL=TypedFunctionType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TypedFunctionType.js","sourceRoot":"","sources":["../../src/types/TypedFunctionType.ts"],"names":[],"mappings":";;;AAAA,uDAA0F;AAC1F,yDAAsD;AAEtD,+CAA4C;AAE5C,MAAa,iBAAkB,SAAQ,mCAAgB;IACnD,YACW,UAAmB;QAE1B,KAAK,EAAE,CAAC;QAFD,eAAU,GAAV,UAAU,CAAS;QAKd,SAAI,GAAG,yBAAW,CAAC,iBAAiB,CAAC;QAOrD;;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,IACI,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,yBAAY,EAAC,UAAU,CAAC,EAC1B;YACE,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,gCAAmB,EAAC,UAAU,CAAC,EAAE;YACjC,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;AAhFD,8CAgFC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const chai_config_spec_1 = require("../chai-config.spec");
4
+ const DynamicType_1 = require("./DynamicType");
5
+ const TypedFunctionType_1 = require("./TypedFunctionType");
6
+ const IntegerType_1 = require("./IntegerType");
7
+ const StringType_1 = require("./StringType");
8
+ const VoidType_1 = require("./VoidType");
9
+ describe('TypedFunctionType', () => {
10
+ it('is equivalent to dynamic type', () => {
11
+ (0, chai_config_spec_1.expect)(new TypedFunctionType_1.TypedFunctionType(new VoidType_1.VoidType()).isTypeCompatible(new DynamicType_1.DynamicType())).to.be.true;
12
+ });
13
+ it('validates using param and return types', () => {
14
+ (0, chai_config_spec_1.expect)(new TypedFunctionType_1.TypedFunctionType(new VoidType_1.VoidType()).isTypeCompatible(new TypedFunctionType_1.TypedFunctionType(new VoidType_1.VoidType()))).to.be.true;
15
+ //different parameter count
16
+ (0, chai_config_spec_1.expect)(new TypedFunctionType_1.TypedFunctionType(new VoidType_1.VoidType()).addParameter('a', new IntegerType_1.IntegerType(), false).isTypeCompatible(new TypedFunctionType_1.TypedFunctionType(new VoidType_1.VoidType()))).to.be.false;
17
+ //different parameter types
18
+ (0, chai_config_spec_1.expect)(new TypedFunctionType_1.TypedFunctionType(new VoidType_1.VoidType()).addParameter('a', new IntegerType_1.IntegerType(), false).isTypeCompatible(new TypedFunctionType_1.TypedFunctionType(new VoidType_1.VoidType()).addParameter('a', new StringType_1.StringType(), false))).to.be.false;
19
+ //different return type
20
+ (0, chai_config_spec_1.expect)(new TypedFunctionType_1.TypedFunctionType(new VoidType_1.VoidType()).isTypeCompatible(new TypedFunctionType_1.TypedFunctionType(new IntegerType_1.IntegerType()))).to.be.false;
21
+ });
22
+ });
23
+ //# sourceMappingURL=TypedFunctionType.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TypedFunctionType.spec.js","sourceRoot":"","sources":["../../src/types/TypedFunctionType.spec.ts"],"names":[],"mappings":";;AAAA,0DAA6C;AAE7C,+CAA4C;AAC5C,2DAAwD;AACxD,+CAA4C;AAC5C,6CAA0C;AAC1C,yCAAsC;AAEtC,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACrC,IAAA,yBAAM,EAAC,IAAI,qCAAiB,CAAC,IAAI,mBAAQ,EAAE,CAAC,CAAC,gBAAgB,CAAC,IAAI,yBAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IACjG,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAC9C,IAAA,yBAAM,EAAC,IAAI,qCAAiB,CAAC,IAAI,mBAAQ,EAAE,CAAC,CAAC,gBAAgB,CAAC,IAAI,qCAAiB,CAAC,IAAI,mBAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAEjH,2BAA2B;QAC3B,IAAA,yBAAM,EACF,IAAI,qCAAiB,CAAC,IAAI,mBAAQ,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,yBAAW,EAAE,EAAE,KAAK,CAAC,CAAC,gBAAgB,CAC9F,IAAI,qCAAiB,CAAC,IAAI,mBAAQ,EAAE,CAAC,CACxC,CACJ,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QAEd,2BAA2B;QAC3B,IAAA,yBAAM,EACF,IAAI,qCAAiB,CAAC,IAAI,mBAAQ,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,yBAAW,EAAE,EAAE,KAAK,CAAC,CAAC,gBAAgB,CAC9F,IAAI,qCAAiB,CAAC,IAAI,mBAAQ,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,uBAAU,EAAE,EAAE,KAAK,CAAC,CACnF,CACJ,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QAEd,uBAAuB;QACvB,IAAA,yBAAM,EACF,IAAI,qCAAiB,CAAC,IAAI,mBAAQ,EAAE,CAAC,CAAC,gBAAgB,CAClD,IAAI,qCAAiB,CAAC,IAAI,yBAAW,EAAE,CAAC,CAC3C,CACJ,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IAClB,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -49,7 +49,7 @@ class UnionType extends BscType_1.BscType {
49
49
  return (0, helpers_1.getUniqueType)((0, helpers_1.findTypeUnion)(innerTypesMemberTypes), unionTypeFactory);
50
50
  }
51
51
  isTypeCompatible(targetType) {
52
- if ((0, reflection_1.isDynamicType)(targetType)) {
52
+ if ((0, reflection_1.isDynamicType)(targetType) || (0, reflection_1.isObjectType)(targetType)) {
53
53
  return true;
54
54
  }
55
55
  if ((0, reflection_1.isUnionType)(targetType)) {
@@ -1 +1 @@
1
- {"version":3,"file":"UnionType.js","sourceRoot":"","sources":["../../src/types/UnionType.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"UnionType.js","sourceRoot":"","sources":["../../src/types/UnionType.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,8 @@ class VoidType extends BscType_1.BscType {
12
12
  }
13
13
  isTypeCompatible(targetType) {
14
14
  return ((0, reflection_1.isVoidType)(targetType) ||
15
- (0, reflection_1.isDynamicType)(targetType));
15
+ (0, reflection_1.isDynamicType)(targetType) ||
16
+ (0, reflection_1.isObjectType)(targetType));
16
17
  }
17
18
  toString() {
18
19
  var _a;
@@ -1 +1 @@
1
- {"version":3,"file":"VoidType.js","sourceRoot":"","sources":["../../src/types/VoidType.ts"],"names":[],"mappings":";;;AAAA,uDAAmE;AACnE,uCAAoC;AACpC,+CAA4C;AAE5C,MAAa,QAAS,SAAQ,iBAAO;IACjC,YACW,QAAiB;QAExB,KAAK,EAAE,CAAC;QAFD,aAAQ,GAAR,QAAQ,CAAS;QAKZ,SAAI,GAAG,yBAAW,CAAC,QAAQ,CAAC;IAF5C,CAAC;IAMM,gBAAgB,CAAC,UAAmB;QACvC,OAAO,CACH,IAAA,uBAAU,EAAC,UAAU,CAAC;YACtB,IAAA,0BAAa,EAAC,UAAU,CAAC,CAC5B,CAAC;IACN,CAAC;IAEM,QAAQ;;QACX,OAAO,MAAA,IAAI,CAAC,QAAQ,mCAAI,MAAM,CAAC;IACnC,CAAC;IAEM,YAAY;QACf,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAEM,OAAO,CAAC,UAAmB;QAC9B,OAAO,IAAA,uBAAU,EAAC,UAAU,CAAC,CAAC;IAClC,CAAC;;AA5BL,4BA6BC;AApBiB,iBAAQ,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC"}
1
+ {"version":3,"file":"VoidType.js","sourceRoot":"","sources":["../../src/types/VoidType.ts"],"names":[],"mappings":";;;AAAA,uDAAiF;AACjF,uCAAoC;AACpC,+CAA4C;AAE5C,MAAa,QAAS,SAAQ,iBAAO;IACjC,YACW,QAAiB;QAExB,KAAK,EAAE,CAAC;QAFD,aAAQ,GAAR,QAAQ,CAAS;QAKZ,SAAI,GAAG,yBAAW,CAAC,QAAQ,CAAC;IAF5C,CAAC;IAMM,gBAAgB,CAAC,UAAmB;QACvC,OAAO,CACH,IAAA,uBAAU,EAAC,UAAU,CAAC;YACtB,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,yBAAY,EAAC,UAAU,CAAC,CAC3B,CAAC;IACN,CAAC;IAEM,QAAQ;;QACX,OAAO,MAAA,IAAI,CAAC,QAAQ,mCAAI,MAAM,CAAC;IACnC,CAAC;IAEM,YAAY;QACf,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAEM,OAAO,CAAC,UAAmB;QAC9B,OAAO,IAAA,uBAAU,EAAC,UAAU,CAAC,CAAC;IAClC,CAAC;;AA7BL,4BA8BC;AArBiB,iBAAQ,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC"}
@@ -6,7 +6,7 @@ export * from './DoubleType';
6
6
  export * from './DynamicType';
7
7
  export * from './EnumType';
8
8
  export * from './FloatType';
9
- export * from './FunctionType';
9
+ export * from './TypedFunctionType';
10
10
  export * from './helpers';
11
11
  export * from './InheritableType';
12
12
  export * from './IntegerType';
@@ -22,7 +22,7 @@ __exportStar(require("./DoubleType"), exports);
22
22
  __exportStar(require("./DynamicType"), exports);
23
23
  __exportStar(require("./EnumType"), exports);
24
24
  __exportStar(require("./FloatType"), exports);
25
- __exportStar(require("./FunctionType"), exports);
25
+ __exportStar(require("./TypedFunctionType"), exports);
26
26
  __exportStar(require("./helpers"), exports);
27
27
  __exportStar(require("./InheritableType"), exports);
28
28
  __exportStar(require("./IntegerType"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,gDAA8B;AAC9B,4CAA0B;AAC1B,8CAA4B;AAC5B,+CAA6B;AAC7B,gDAA8B;AAC9B,6CAA2B;AAC3B,8CAA4B;AAC5B,iDAA+B;AAC/B,4CAA0B;AAC1B,oDAAkC;AAClC,gDAA8B;AAC9B,kDAAgC;AAChC,gDAA8B;AAC9B,oDAAkC;AAClC,kDAAgC;AAChC,+CAA6B;AAC7B,kDAAgC;AAChC,+CAA6B;AAC7B,sDAAoC;AACpC,8CAA4B;AAC5B,6CAA2B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,gDAA8B;AAC9B,4CAA0B;AAC1B,8CAA4B;AAC5B,+CAA6B;AAC7B,gDAA8B;AAC9B,6CAA2B;AAC3B,8CAA4B;AAC5B,sDAAoC;AACpC,4CAA0B;AAC1B,oDAAkC;AAClC,gDAA8B;AAC9B,kDAAgC;AAChC,gDAA8B;AAC9B,oDAAkC;AAClC,kDAAgC;AAChC,+CAA6B;AAC7B,kDAAgC;AAChC,+CAA6B;AAC7B,sDAAoC;AACpC,8CAA4B;AAC5B,6CAA2B"}
package/dist/util.d.ts CHANGED
@@ -5,9 +5,7 @@ import { BooleanType } from './types/BooleanType';
5
5
  import { DoubleType } from './types/DoubleType';
6
6
  import { DynamicType } from './types/DynamicType';
7
7
  import { FloatType } from './types/FloatType';
8
- import { FunctionType } from './types/FunctionType';
9
8
  import { IntegerType } from './types/IntegerType';
10
- import { InvalidType } from './types/InvalidType';
11
9
  import { LongIntegerType } from './types/LongIntegerType';
12
10
  import { ObjectType } from './types/ObjectType';
13
11
  import { StringType } from './types/StringType';
@@ -18,7 +16,10 @@ import type { Identifier, Locatable, Token } from './lexer/Token';
18
16
  import { SourceNode } from 'source-map';
19
17
  import type { BrsFile } from './files/BrsFile';
20
18
  import type { XmlFile } from './files/XmlFile';
21
- import type { Expression, Statement } from './parser/AstNode';
19
+ import type { AstNode } from './parser/AstNode';
20
+ import { type Expression, type Statement } from './parser/AstNode';
21
+ import type { BscType } from './types/BscType';
22
+ import { FunctionType } from './types/FunctionType';
22
23
  export declare class Util {
23
24
  clearConsole(): void;
24
25
  /**
@@ -288,7 +289,17 @@ export declare class Util {
288
289
  /**
289
290
  * Convert a token into a BscType
290
291
  */
291
- tokenToBscType(token: Token): DynamicType | FloatType | IntegerType | DoubleType | LongIntegerType | StringType | BooleanType | InvalidType | VoidType | FunctionType | ObjectType;
292
+ tokenToBscType(token: Token): DynamicType | ObjectType | FloatType | IntegerType | DoubleType | LongIntegerType | StringType | BooleanType | VoidType | FunctionType;
293
+ isNumberType(targetType: BscType): boolean;
294
+ /**
295
+ * Return the type of the result of a binary operator
296
+ * Note: compound assignments (eg. +=) internally use a binary expression, so that's why TokenKind.PlusEqual, etc. are here too
297
+ */
298
+ binaryOperatorResultType(leftType: BscType, operator: Token, rightType: BscType): BscType;
299
+ /**
300
+ * Return the type of the result of a binary operator
301
+ */
302
+ unaryOperatorResultType(operator: Token, exprType: BscType): BscType;
292
303
  /**
293
304
  * Get the extension for the given file path. Basically the part after the final dot, except for
294
305
  * `d.bs` which is treated as single extension
@@ -322,7 +333,7 @@ export declare class Util {
322
333
  * @param relatedInformationFallbackLocation a default location to use for all `relatedInformation` entries that are missing a location
323
334
  */
324
335
  toDiagnostic(diagnostic: Diagnostic | BsDiagnostic, relatedInformationFallbackLocation: string): {
325
- severity: import("vscode-languageserver-types").DiagnosticSeverity;
336
+ severity: import("vscode-languageserver").DiagnosticSeverity;
326
337
  range: Range;
327
338
  message: string;
328
339
  relatedInformation: {
@@ -359,8 +370,13 @@ export declare class Util {
359
370
  * @param node any ast expression
360
371
  * @returns an array of the parts of the dotted get. If not fully a dotted get, then returns undefined
361
372
  */
362
- getAllDottedGetParts(node: Expression | Statement): Identifier[] | undefined;
373
+ getAllDottedGetParts(node: AstNode): Identifier[] | undefined;
374
+ /**
375
+ * Given an expression, return all the DottedGet name parts as a string.
376
+ * Mostly used to convert namespaced item full names to a strings
377
+ */
363
378
  getAllDottedGetPartsAsString(node: Expression | Statement, parseMode?: ParseMode): string;
379
+ stringJoin(strings: string[], separator: string): string;
364
380
  /**
365
381
  * Break an expression into each part.
366
382
  */