brighterscript 0.66.0-alpha.4 → 0.66.0-alpha.6

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 (214) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/dist/DiagnosticMessages.d.ts +21 -3
  3. package/dist/DiagnosticMessages.js +35 -2
  4. package/dist/DiagnosticMessages.js.map +1 -1
  5. package/dist/LanguageServer.d.ts +1 -0
  6. package/dist/LanguageServer.js +8 -5
  7. package/dist/LanguageServer.js.map +1 -1
  8. package/dist/Program.d.ts +20 -8
  9. package/dist/Program.js +107 -60
  10. package/dist/Program.js.map +1 -1
  11. package/dist/ProgramBuilder.js +14 -2
  12. package/dist/ProgramBuilder.js.map +1 -1
  13. package/dist/Scope.d.ts +15 -13
  14. package/dist/Scope.js +26 -65
  15. package/dist/Scope.js.map +1 -1
  16. package/dist/SymbolTable.d.ts +17 -10
  17. package/dist/SymbolTable.js +48 -26
  18. package/dist/SymbolTable.js.map +1 -1
  19. package/dist/XmlScope.d.ts +2 -0
  20. package/dist/XmlScope.js +38 -0
  21. package/dist/XmlScope.js.map +1 -1
  22. package/dist/astUtils/creators.d.ts +3 -1
  23. package/dist/astUtils/creators.js +14 -4
  24. package/dist/astUtils/creators.js.map +1 -1
  25. package/dist/astUtils/reflection.d.ts +24 -5
  26. package/dist/astUtils/reflection.js +58 -13
  27. package/dist/astUtils/reflection.js.map +1 -1
  28. package/dist/astUtils/reflection.spec.js +85 -3
  29. package/dist/astUtils/reflection.spec.js.map +1 -1
  30. package/dist/bscPlugin/CallExpressionInfo.d.ts +3 -3
  31. package/dist/bscPlugin/CallExpressionInfo.js.map +1 -1
  32. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js +4 -4
  33. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js.map +1 -1
  34. package/dist/bscPlugin/completions/CompletionsProcessor.d.ts +44 -1
  35. package/dist/bscPlugin/completions/CompletionsProcessor.js +353 -20
  36. package/dist/bscPlugin/completions/CompletionsProcessor.js.map +1 -1
  37. package/dist/bscPlugin/completions/CompletionsProcessor.spec.d.ts +1 -0
  38. package/dist/bscPlugin/completions/CompletionsProcessor.spec.js +1452 -0
  39. package/dist/bscPlugin/completions/CompletionsProcessor.spec.js.map +1 -0
  40. package/dist/bscPlugin/hover/HoverProcessor.d.ts +9 -4
  41. package/dist/bscPlugin/hover/HoverProcessor.js +64 -67
  42. package/dist/bscPlugin/hover/HoverProcessor.js.map +1 -1
  43. package/dist/bscPlugin/hover/HoverProcessor.spec.js +162 -4
  44. package/dist/bscPlugin/hover/HoverProcessor.spec.js.map +1 -1
  45. package/dist/bscPlugin/validation/BrsFileValidator.js +20 -16
  46. package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -1
  47. package/dist/bscPlugin/validation/ScopeValidator.d.ts +22 -1
  48. package/dist/bscPlugin/validation/ScopeValidator.js +194 -42
  49. package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -1
  50. package/dist/bscPlugin/validation/ScopeValidator.spec.js +621 -1
  51. package/dist/bscPlugin/validation/ScopeValidator.spec.js.map +1 -1
  52. package/dist/diagnosticUtils.d.ts +7 -2
  53. package/dist/diagnosticUtils.js +43 -15
  54. package/dist/diagnosticUtils.js.map +1 -1
  55. package/dist/files/BrsFile.Class.spec.js +10 -8
  56. package/dist/files/BrsFile.Class.spec.js.map +1 -1
  57. package/dist/files/BrsFile.d.ts +3 -20
  58. package/dist/files/BrsFile.js +7 -355
  59. package/dist/files/BrsFile.js.map +1 -1
  60. package/dist/files/BrsFile.spec.js +2 -248
  61. package/dist/files/BrsFile.spec.js.map +1 -1
  62. package/dist/files/XmlFile.d.ts +1 -6
  63. package/dist/files/XmlFile.js +0 -13
  64. package/dist/files/XmlFile.js.map +1 -1
  65. package/dist/files/XmlFile.spec.js +0 -36
  66. package/dist/files/XmlFile.spec.js.map +1 -1
  67. package/dist/globalCallables.js +1 -5
  68. package/dist/globalCallables.js.map +1 -1
  69. package/dist/interfaces.d.ts +22 -2
  70. package/dist/interfaces.js +4 -1
  71. package/dist/interfaces.js.map +1 -1
  72. package/dist/lexer/Lexer.d.ts +12 -0
  73. package/dist/lexer/Lexer.js +27 -2
  74. package/dist/lexer/Lexer.js.map +1 -1
  75. package/dist/lexer/Lexer.spec.js +40 -0
  76. package/dist/lexer/Lexer.spec.js.map +1 -1
  77. package/dist/lexer/Token.d.ts +4 -0
  78. package/dist/lexer/Token.js.map +1 -1
  79. package/dist/lexer/TokenKind.d.ts +4 -0
  80. package/dist/lexer/TokenKind.js +10 -1
  81. package/dist/lexer/TokenKind.js.map +1 -1
  82. package/dist/parser/AstNode.d.ts +8 -1
  83. package/dist/parser/AstNode.js +16 -0
  84. package/dist/parser/AstNode.js.map +1 -1
  85. package/dist/parser/Expression.d.ts +16 -1
  86. package/dist/parser/Expression.js +75 -11
  87. package/dist/parser/Expression.js.map +1 -1
  88. package/dist/parser/Parser.d.ts +7 -0
  89. package/dist/parser/Parser.js +55 -7
  90. package/dist/parser/Parser.js.map +1 -1
  91. package/dist/parser/Parser.spec.js +330 -4
  92. package/dist/parser/Parser.spec.js.map +1 -1
  93. package/dist/parser/SGTypes.d.ts +1 -1
  94. package/dist/parser/Statement.d.ts +18 -6
  95. package/dist/parser/Statement.js +54 -16
  96. package/dist/parser/Statement.js.map +1 -1
  97. package/dist/parser/tests/Parser.spec.js +2 -1
  98. package/dist/parser/tests/Parser.spec.js.map +1 -1
  99. package/dist/parser/tests/controlFlow/For.spec.js +16 -8
  100. package/dist/parser/tests/controlFlow/For.spec.js.map +1 -1
  101. package/dist/parser/tests/controlFlow/ForEach.spec.js +12 -6
  102. package/dist/parser/tests/controlFlow/ForEach.spec.js.map +1 -1
  103. package/dist/parser/tests/controlFlow/While.spec.js +8 -4
  104. package/dist/parser/tests/controlFlow/While.spec.js.map +1 -1
  105. package/dist/parser/tests/expression/Call.spec.js +4 -4
  106. package/dist/parser/tests/expression/Call.spec.js.map +1 -1
  107. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js +13 -13
  108. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js.map +1 -1
  109. package/dist/parser/tests/statement/ConstStatement.spec.js +1 -34
  110. package/dist/parser/tests/statement/ConstStatement.spec.js.map +1 -1
  111. package/dist/parser/tests/statement/Enum.spec.js +1 -257
  112. package/dist/parser/tests/statement/Enum.spec.js.map +1 -1
  113. package/dist/parser/tests/statement/InterfaceStatement.spec.js +8 -0
  114. package/dist/parser/tests/statement/InterfaceStatement.spec.js.map +1 -1
  115. package/dist/parser/tests/statement/PrintStatement.spec.js +6 -3
  116. package/dist/parser/tests/statement/PrintStatement.spec.js.map +1 -1
  117. package/dist/parser/tests/statement/ReturnStatement.spec.js +5 -3
  118. package/dist/parser/tests/statement/ReturnStatement.spec.js.map +1 -1
  119. package/dist/parser/tests/statement/Set.spec.js +26 -13
  120. package/dist/parser/tests/statement/Set.spec.js.map +1 -1
  121. package/dist/roku-types/data.json +156 -111
  122. package/dist/roku-types/index.d.ts +2 -27
  123. package/dist/types/ArrayType.d.ts +4 -1
  124. package/dist/types/ArrayType.js +43 -7
  125. package/dist/types/ArrayType.js.map +1 -1
  126. package/dist/types/ArrayType.spec.js +31 -2
  127. package/dist/types/ArrayType.spec.js.map +1 -1
  128. package/dist/types/AssociativeArrayType.d.ts +11 -0
  129. package/dist/types/AssociativeArrayType.js +52 -0
  130. package/dist/types/AssociativeArrayType.js.map +1 -0
  131. package/dist/types/BaseFunctionType.d.ts +2 -1
  132. package/dist/types/BaseFunctionType.js +1 -1
  133. package/dist/types/BaseFunctionType.js.map +1 -1
  134. package/dist/types/BooleanType.d.ts +2 -4
  135. package/dist/types/BooleanType.js +6 -7
  136. package/dist/types/BooleanType.js.map +1 -1
  137. package/dist/types/BscType.d.ts +8 -4
  138. package/dist/types/BscType.js +42 -14
  139. package/dist/types/BscType.js.map +1 -1
  140. package/dist/types/BscTypeKind.d.ts +2 -0
  141. package/dist/types/BscTypeKind.js +2 -0
  142. package/dist/types/BscTypeKind.js.map +1 -1
  143. package/dist/types/BuiltInInterfaceAdder.d.ts +20 -0
  144. package/dist/types/BuiltInInterfaceAdder.js +139 -0
  145. package/dist/types/BuiltInInterfaceAdder.js.map +1 -0
  146. package/dist/types/BuiltInInterfaceAdder.spec.d.ts +1 -0
  147. package/dist/types/BuiltInInterfaceAdder.spec.js +109 -0
  148. package/dist/types/BuiltInInterfaceAdder.spec.js.map +1 -0
  149. package/dist/types/ClassType.d.ts +6 -1
  150. package/dist/types/ClassType.js +26 -2
  151. package/dist/types/ClassType.js.map +1 -1
  152. package/dist/types/ComponentType.d.ts +26 -0
  153. package/dist/types/ComponentType.js +80 -0
  154. package/dist/types/ComponentType.js.map +1 -0
  155. package/dist/types/DoubleType.d.ts +2 -4
  156. package/dist/types/DoubleType.js +6 -7
  157. package/dist/types/DoubleType.js.map +1 -1
  158. package/dist/types/DynamicType.d.ts +2 -2
  159. package/dist/types/DynamicType.js +3 -1
  160. package/dist/types/DynamicType.js.map +1 -1
  161. package/dist/types/EnumType.d.ts +4 -5
  162. package/dist/types/EnumType.js +8 -7
  163. package/dist/types/EnumType.js.map +1 -1
  164. package/dist/types/FloatType.d.ts +2 -4
  165. package/dist/types/FloatType.js +6 -7
  166. package/dist/types/FloatType.js.map +1 -1
  167. package/dist/types/FunctionType.d.ts +2 -1
  168. package/dist/types/FunctionType.js +6 -2
  169. package/dist/types/FunctionType.js.map +1 -1
  170. package/dist/types/IntegerType.d.ts +2 -4
  171. package/dist/types/IntegerType.js +6 -7
  172. package/dist/types/IntegerType.js.map +1 -1
  173. package/dist/types/InterfaceType.d.ts +2 -1
  174. package/dist/types/InterfaceType.js +8 -4
  175. package/dist/types/InterfaceType.js.map +1 -1
  176. package/dist/types/InterfaceType.spec.js +2 -2
  177. package/dist/types/InvalidType.d.ts +1 -1
  178. package/dist/types/InvalidType.js +5 -1
  179. package/dist/types/InvalidType.js.map +1 -1
  180. package/dist/types/LongIntegerType.d.ts +2 -4
  181. package/dist/types/LongIntegerType.js +6 -7
  182. package/dist/types/LongIntegerType.js.map +1 -1
  183. package/dist/types/ObjectType.d.ts +3 -3
  184. package/dist/types/ObjectType.js +3 -1
  185. package/dist/types/ObjectType.js.map +1 -1
  186. package/dist/types/ReferenceType.d.ts +14 -0
  187. package/dist/types/ReferenceType.js +114 -13
  188. package/dist/types/ReferenceType.js.map +1 -1
  189. package/dist/types/ReferenceType.spec.js +15 -0
  190. package/dist/types/ReferenceType.spec.js.map +1 -1
  191. package/dist/types/StringType.d.ts +2 -4
  192. package/dist/types/StringType.js +5 -6
  193. package/dist/types/StringType.js.map +1 -1
  194. package/dist/types/TypedFunctionType.d.ts +2 -1
  195. package/dist/types/TypedFunctionType.js +10 -3
  196. package/dist/types/TypedFunctionType.js.map +1 -1
  197. package/dist/types/UninitializedType.d.ts +2 -1
  198. package/dist/types/UninitializedType.js +1 -1
  199. package/dist/types/UninitializedType.js.map +1 -1
  200. package/dist/types/UnionType.d.ts +4 -2
  201. package/dist/types/UnionType.js +25 -4
  202. package/dist/types/UnionType.js.map +1 -1
  203. package/dist/types/UnionType.spec.js +46 -19
  204. package/dist/types/UnionType.spec.js.map +1 -1
  205. package/dist/types/VoidType.d.ts +2 -1
  206. package/dist/types/VoidType.js +6 -2
  207. package/dist/types/VoidType.js.map +1 -1
  208. package/dist/types/helpers.d.ts +2 -0
  209. package/dist/types/helpers.js +18 -3
  210. package/dist/types/helpers.js.map +1 -1
  211. package/dist/util.d.ts +25 -2
  212. package/dist/util.js +179 -13
  213. package/dist/util.js.map +1 -1
  214. package/package.json +1 -1
@@ -7,6 +7,7 @@ const DiagnosticMessages_1 = require("../../DiagnosticMessages");
7
7
  const TokenKind_1 = require("../../lexer/TokenKind");
8
8
  const Parser_1 = require("../../parser/Parser");
9
9
  const SymbolTable_1 = require("../../SymbolTable");
10
+ const AssociativeArrayType_1 = require("../../types/AssociativeArrayType");
10
11
  const DynamicType_1 = require("../../types/DynamicType");
11
12
  const util_1 = require("../../util");
12
13
  class BrsFileValidator {
@@ -30,9 +31,9 @@ class BrsFileValidator {
30
31
  MethodStatement: (node) => {
31
32
  //add the `super` symbol to class methods
32
33
  if ((0, reflection_1.isClassStatement)(node.parent) && node.parent.hasParentClass()) {
33
- //Todo: get the actual type of the parent class
34
- // Maybe? const parentClassType = node.parent.parentClassName.getType({ flags: SymbolTypeFlag.typetime });
35
- node.func.body.symbolTable.addSymbol('super', undefined, DynamicType_1.DynamicType.instance, SymbolTable_1.SymbolTypeFlag.runtime);
34
+ const data = {};
35
+ const parentClassType = node.parent.parentClassName.getType({ flags: SymbolTable_1.SymbolTypeFlag.typetime, data: data });
36
+ node.func.body.symbolTable.addSymbol('super', data, parentClassType, SymbolTable_1.SymbolTypeFlag.runtime);
36
37
  }
37
38
  },
38
39
  CallfuncExpression: (node) => {
@@ -47,21 +48,22 @@ class BrsFileValidator {
47
48
  //register this enum declaration
48
49
  const nodeType = node.getType({ flags: SymbolTable_1.SymbolTypeFlag.typetime });
49
50
  // eslint-disable-next-line no-bitwise
50
- (_a = node.parent.getSymbolTable()) === null || _a === void 0 ? void 0 : _a.addSymbol(node.tokens.name.text, node.tokens.name.range, nodeType, SymbolTable_1.SymbolTypeFlag.typetime | SymbolTable_1.SymbolTypeFlag.runtime);
51
+ (_a = node.parent.getSymbolTable()) === null || _a === void 0 ? void 0 : _a.addSymbol(node.tokens.name.text, { definingNode: node }, nodeType, SymbolTable_1.SymbolTypeFlag.typetime | SymbolTable_1.SymbolTypeFlag.runtime);
51
52
  },
52
53
  ClassStatement: (node) => {
53
54
  var _a;
54
55
  this.validateDeclarationLocations(node, 'class', () => util_1.default.createBoundingRange(node.classKeyword, node.name));
55
56
  //register this class
56
57
  const nodeType = node.getType({ flags: SymbolTable_1.SymbolTypeFlag.typetime });
58
+ node.getSymbolTable().addSymbol('m', undefined, nodeType, SymbolTable_1.SymbolTypeFlag.runtime);
57
59
  // eslint-disable-next-line no-bitwise
58
- (_a = node.parent.getSymbolTable()) === null || _a === void 0 ? void 0 : _a.addSymbol(node.name.text, node.name.range, nodeType, SymbolTable_1.SymbolTypeFlag.typetime | SymbolTable_1.SymbolTypeFlag.runtime);
60
+ (_a = node.parent.getSymbolTable()) === null || _a === void 0 ? void 0 : _a.addSymbol(node.name.text, { definingNode: node }, nodeType, SymbolTable_1.SymbolTypeFlag.typetime | SymbolTable_1.SymbolTypeFlag.runtime);
59
61
  },
60
62
  AssignmentStatement: (node) => {
61
63
  var _a;
62
64
  //register this variable
63
65
  const nodeType = node.getType({ flags: SymbolTable_1.SymbolTypeFlag.runtime });
64
- (_a = node.parent.getSymbolTable()) === null || _a === void 0 ? void 0 : _a.addSymbol(node.name.text, node.name.range, nodeType, SymbolTable_1.SymbolTypeFlag.runtime);
66
+ (_a = node.parent.getSymbolTable()) === null || _a === void 0 ? void 0 : _a.addSymbol(node.name.text, { definingNode: node }, nodeType, SymbolTable_1.SymbolTypeFlag.runtime);
65
67
  },
66
68
  DottedSetStatement: (node) => {
67
69
  this.validateNoOptionalChainingInVarSet(node, [node.obj]);
@@ -72,7 +74,9 @@ class BrsFileValidator {
72
74
  ForEachStatement: (node) => {
73
75
  var _a;
74
76
  //register the for loop variable
75
- (_a = node.parent.getSymbolTable()) === null || _a === void 0 ? void 0 : _a.addSymbol(node.item.text, node.item.range, DynamicType_1.DynamicType.instance, SymbolTable_1.SymbolTypeFlag.runtime);
77
+ const loopTargetType = node.target.getType({ flags: SymbolTable_1.SymbolTypeFlag.runtime });
78
+ const loopVarType = (0, reflection_1.isArrayType)(loopTargetType) ? loopTargetType.defaultType : DynamicType_1.DynamicType.instance;
79
+ (_a = node.parent.getSymbolTable()) === null || _a === void 0 ? void 0 : _a.addSymbol(node.item.text, { definingNode: node }, loopVarType, SymbolTable_1.SymbolTypeFlag.runtime);
76
80
  },
77
81
  NamespaceStatement: (node) => {
78
82
  this.validateDeclarationLocations(node, 'namespace', () => util_1.default.createBoundingRange(node.keyword, node.nameExpression));
@@ -83,20 +87,20 @@ class BrsFileValidator {
83
87
  this.validateDeclarationLocations(node, 'function', () => util_1.default.createBoundingRange(node.func.functionType, node.name));
84
88
  const funcType = node.getType({ flags: SymbolTable_1.SymbolTypeFlag.typetime });
85
89
  if ((_a = node.name) === null || _a === void 0 ? void 0 : _a.text) {
86
- node.parent.getSymbolTable().addSymbol(node.name.text, node.name.range, funcType, SymbolTable_1.SymbolTypeFlag.runtime);
90
+ node.parent.getSymbolTable().addSymbol(node.name.text, { definingNode: node }, funcType, SymbolTable_1.SymbolTypeFlag.runtime);
87
91
  }
88
92
  const namespace = node.findAncestor(reflection_1.isNamespaceStatement);
89
93
  //this function is declared inside a namespace
90
94
  if (namespace) {
91
- namespace.getSymbolTable().addSymbol(node.name.text, node.name.range, funcType, SymbolTable_1.SymbolTypeFlag.runtime);
95
+ namespace.getSymbolTable().addSymbol(node.name.text, { definingNode: node }, funcType, SymbolTable_1.SymbolTypeFlag.runtime);
92
96
  //add the transpiled name for namespaced functions to the root symbol table
93
97
  const transpiledNamespaceFunctionName = node.getName(Parser_1.ParseMode.BrightScript);
94
- this.event.file.parser.ast.symbolTable.addSymbol(transpiledNamespaceFunctionName, node.name.range, funcType, SymbolTable_1.SymbolTypeFlag.runtime);
98
+ this.event.file.parser.ast.symbolTable.addSymbol(transpiledNamespaceFunctionName, { definingNode: node }, funcType, SymbolTable_1.SymbolTypeFlag.runtime);
95
99
  }
96
100
  },
97
101
  FunctionExpression: (node) => {
98
102
  if (!node.symbolTable.hasSymbol('m', SymbolTable_1.SymbolTypeFlag.runtime)) {
99
- node.symbolTable.addSymbol('m', undefined, DynamicType_1.DynamicType.instance, SymbolTable_1.SymbolTypeFlag.runtime);
103
+ node.symbolTable.addSymbol('m', undefined, new AssociativeArrayType_1.AssociativeArrayType(), SymbolTable_1.SymbolTypeFlag.runtime);
100
104
  }
101
105
  },
102
106
  FunctionParameterExpression: (node) => {
@@ -104,25 +108,25 @@ class BrsFileValidator {
104
108
  const paramName = (_a = node.name) === null || _a === void 0 ? void 0 : _a.text;
105
109
  const symbolTable = node.getSymbolTable();
106
110
  const nodeType = node.getType({ flags: SymbolTable_1.SymbolTypeFlag.typetime });
107
- symbolTable === null || symbolTable === void 0 ? void 0 : symbolTable.addSymbol(paramName, node.name.range, nodeType, SymbolTable_1.SymbolTypeFlag.runtime);
111
+ symbolTable === null || symbolTable === void 0 ? void 0 : symbolTable.addSymbol(paramName, { definingNode: node }, nodeType, SymbolTable_1.SymbolTypeFlag.runtime);
108
112
  },
109
113
  InterfaceStatement: (node) => {
110
114
  this.validateDeclarationLocations(node, 'interface', () => util_1.default.createBoundingRange(node.tokens.interface, node.tokens.name));
111
115
  const nodeType = node.getType({ flags: SymbolTable_1.SymbolTypeFlag.typetime });
112
116
  // eslint-disable-next-line no-bitwise
113
- node.parent.getSymbolTable().addSymbol(node.tokens.name.text, node.tokens.name.range, nodeType, SymbolTable_1.SymbolTypeFlag.runtime | SymbolTable_1.SymbolTypeFlag.typetime);
117
+ node.parent.getSymbolTable().addSymbol(node.tokens.name.text, { definingNode: node }, nodeType, SymbolTable_1.SymbolTypeFlag.runtime | SymbolTable_1.SymbolTypeFlag.typetime);
114
118
  },
115
119
  ConstStatement: (node) => {
116
120
  this.validateDeclarationLocations(node, 'const', () => util_1.default.createBoundingRange(node.tokens.const, node.tokens.name));
117
121
  const nodeType = node.getType({ flags: SymbolTable_1.SymbolTypeFlag.runtime });
118
- node.parent.getSymbolTable().addSymbol(node.tokens.name.text, node.tokens.name.range, nodeType, SymbolTable_1.SymbolTypeFlag.runtime);
122
+ node.parent.getSymbolTable().addSymbol(node.tokens.name.text, { definingNode: node }, nodeType, SymbolTable_1.SymbolTypeFlag.runtime);
119
123
  },
120
124
  CatchStatement: (node) => {
121
- node.parent.getSymbolTable().addSymbol(node.exceptionVariable.text, node.exceptionVariable.range, DynamicType_1.DynamicType.instance, SymbolTable_1.SymbolTypeFlag.runtime);
125
+ node.parent.getSymbolTable().addSymbol(node.exceptionVariable.text, { definingNode: node }, DynamicType_1.DynamicType.instance, SymbolTable_1.SymbolTypeFlag.runtime);
122
126
  },
123
127
  DimStatement: (node) => {
124
128
  if (node.identifier) {
125
- node.parent.getSymbolTable().addSymbol(node.identifier.text, node.identifier.range, DynamicType_1.DynamicType.instance, SymbolTable_1.SymbolTypeFlag.runtime);
129
+ node.parent.getSymbolTable().addSymbol(node.identifier.text, { definingNode: node }, DynamicType_1.DynamicType.instance, SymbolTable_1.SymbolTypeFlag.runtime);
126
130
  }
127
131
  },
128
132
  ContinueStatement: (node) => {
@@ -1 +1 @@
1
- {"version":3,"file":"BrsFileValidator.js","sourceRoot":"","sources":["../../../src/bscPlugin/validation/BrsFileValidator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BrsFileValidator.js","sourceRoot":"","sources":["../../../src/bscPlugin/validation/BrsFileValidator.ts"],"names":[],"mappings":";;;AAAA,0DAA2a;AAC3a,sDAAkE;AAClE,iEAA8D;AAG9D,qDAAkD;AAGlD,gDAAgD;AAEhD,mDAAmD;AACnD,2EAAwE;AACxE,yDAAsD;AACtD,qCAA8B;AAG9B,MAAa,gBAAgB;IACzB,YACW,KAAmC;QAAnC,UAAK,GAAL,KAAK,CAA8B;IAE9C,CAAC;IAEM,OAAO;QACV,cAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,mFAAmF;QACnF,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE;YAC7B,IAAI,CAAC,wBAAwB,EAAE,CAAC;SACnC;IACL,CAAC;IAED;;OAEG;IACK,IAAI;QACR,MAAM,OAAO,GAAG,IAAA,wBAAa,EAAC;YAC1B,eAAe,EAAE,CAAC,IAAI,EAAE,EAAE;gBACtB,yCAAyC;gBACzC,IAAI,IAAA,6BAAgB,EAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE;oBAC/D,MAAM,IAAI,GAAoB,EAAE,CAAC;oBACjC,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,4BAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC5G,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,4BAAc,CAAC,OAAO,CAAC,CAAC;iBAChG;YACL,CAAC;YACD,kBAAkB,EAAE,CAAC,IAAI,EAAE,EAAE;gBACzB,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;oBACtB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,iCACtB,uCAAkB,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAC7D,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,IAC9B,CAAC;iBACN;YACL,CAAC;YACD,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE;;gBACpB,IAAI,CAAC,4BAA4B,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,cAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;gBAEpH,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;gBAEnC,gCAAgC;gBAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,4BAAc,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAClE,sCAAsC;gBACtC,MAAA,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,0CAAE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,4BAAc,CAAC,QAAQ,GAAG,4BAAc,CAAC,OAAO,CAAC,CAAC;YACvJ,CAAC;YACD,cAAc,EAAE,CAAC,IAAI,EAAE,EAAE;;gBACrB,IAAI,CAAC,4BAA4B,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,cAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBAE/G,qBAAqB;gBACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,4BAAc,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAClE,IAAI,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,4BAAc,CAAC,OAAO,CAAC,CAAC;gBAClF,sCAAsC;gBACtC,MAAA,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,0CAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,4BAAc,CAAC,QAAQ,GAAG,4BAAc,CAAC,OAAO,CAAC,CAAC;YAChJ,CAAC;YACD,mBAAmB,EAAE,CAAC,IAAI,EAAE,EAAE;;gBAC1B,wBAAwB;gBACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,4BAAc,CAAC,OAAO,EAAE,CAAC,CAAC;gBACjE,MAAA,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,0CAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,4BAAc,CAAC,OAAO,CAAC,CAAC;YACtH,CAAC;YACD,kBAAkB,EAAE,CAAC,IAAI,EAAE,EAAE;gBACzB,IAAI,CAAC,kCAAkC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9D,CAAC;YACD,mBAAmB,EAAE,CAAC,IAAI,EAAE,EAAE;gBAC1B,IAAI,CAAC,kCAAkC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9D,CAAC;YACD,gBAAgB,EAAE,CAAC,IAAI,EAAE,EAAE;;gBACvB,gCAAgC;gBAChC,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,4BAAc,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC9E,MAAM,WAAW,GAAG,IAAA,wBAAW,EAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,yBAAW,CAAC,QAAQ,CAAC;gBACpG,MAAA,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,0CAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,4BAAc,CAAC,OAAO,CAAC,CAAC;YACzH,CAAC;YACD,kBAAkB,EAAE,CAAC,IAAI,EAAE,EAAE;gBACzB,IAAI,CAAC,4BAA4B,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,cAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;gBACxH,iGAAiG;YACrG,CAAC;YACD,iBAAiB,EAAE,CAAC,IAAI,EAAE,EAAE;;gBACxB,IAAI,CAAC,4BAA4B,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,cAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBACvH,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,4BAAc,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAElE,IAAI,MAAA,IAAI,CAAC,IAAI,0CAAE,IAAI,EAAE;oBACjB,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,SAAS,CAClC,IAAI,CAAC,IAAI,CAAC,IAAI,EACd,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,QAAQ,EACR,4BAAc,CAAC,OAAO,CACzB,CAAC;iBACL;gBAED,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,iCAAoB,CAAC,CAAC;gBAC1D,8CAA8C;gBAC9C,IAAI,SAAS,EAAE;oBACX,SAAS,CAAC,cAAc,EAAE,CAAC,SAAS,CAChC,IAAI,CAAC,IAAI,CAAC,IAAI,EACd,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,QAAQ,EACR,4BAAc,CAAC,OAAO,CACzB,CAAC;oBACF,2EAA2E;oBAC3E,MAAM,+BAA+B,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAS,CAAC,YAAY,CAAC,CAAC;oBAE7E,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,SAAS,CAC5C,+BAA+B,EAC/B,EAAE,YAAY,EAAE,IAAI,EAAE,EACtB,QAAQ,EACR,4BAAc,CAAC,OAAO,CACzB,CAAC;iBACL;YACL,CAAC;YACD,kBAAkB,EAAE,CAAC,IAAI,EAAE,EAAE;gBACzB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,EAAE,4BAAc,CAAC,OAAO,CAAC,EAAE;oBAC1D,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,2CAAoB,EAAE,EAAE,4BAAc,CAAC,OAAO,CAAC,CAAC;iBAClG;YACL,CAAC;YACD,2BAA2B,EAAE,CAAC,IAAI,EAAE,EAAE;;gBAClC,MAAM,SAAS,GAAG,MAAA,IAAI,CAAC,IAAI,0CAAE,IAAI,CAAC;gBAClC,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,4BAAc,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAClE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,SAAS,CAAC,SAAS,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,4BAAc,CAAC,OAAO,CAAC,CAAC;YAChG,CAAC;YACD,kBAAkB,EAAE,CAAC,IAAI,EAAE,EAAE;gBACzB,IAAI,CAAC,4BAA4B,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,cAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;gBAE9H,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,4BAAc,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAClE,sCAAsC;gBACtC,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,4BAAc,CAAC,OAAO,GAAG,4BAAc,CAAC,QAAQ,CAAC,CAAC;YACtJ,CAAC;YACD,cAAc,EAAE,CAAC,IAAI,EAAE,EAAE;gBACrB,IAAI,CAAC,4BAA4B,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,cAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;gBACtH,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,4BAAc,CAAC,OAAO,EAAE,CAAC,CAAC;gBACjE,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,4BAAc,CAAC,OAAO,CAAC,CAAC;YAC5H,CAAC;YACD,cAAc,EAAE,CAAC,IAAI,EAAE,EAAE;gBACrB,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,yBAAW,CAAC,QAAQ,EAAE,4BAAc,CAAC,OAAO,CAAC,CAAC;YAC9I,CAAC;YACD,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE;gBACnB,IAAI,IAAI,CAAC,UAAU,EAAE;oBACjB,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,yBAAW,CAAC,QAAQ,EAAE,4BAAc,CAAC,OAAO,CAAC,CAAC;iBACtI;YACL,CAAC;YACD,iBAAiB,EAAE,CAAC,IAAI,EAAE,EAAE;gBACxB,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC;YACzC,CAAC;SACJ,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YACtC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC1B,CAAC,EAAE;YACC,QAAQ,EAAE,mBAAQ,CAAC,iBAAiB;SACvC,CAAC,CAAC;IACP,CAAC;IAED;;;;;OAKG;IACK,4BAA4B,CAAC,SAAoB,EAAE,OAAe,EAAE,YAA0B;;QAClG,qGAAqG;QACrG,IAAI,IAAA,iCAAoB,EAAC,MAAA,SAAS,CAAC,MAAM,0CAAE,MAAM,CAAC,IAAI,CAAC,IAAA,mBAAM,EAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA,MAAA,SAAS,CAAC,MAAM,0CAAE,MAAM,CAAA,CAAC,EAAE;YAC3G,OAAO;SACV;QACD,wDAAwD;QACxD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,iCACtB,uCAAkB,CAAC,qCAAqC,CAAC,OAAO,CAAC,KACpE,KAAK,EAAE,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,EAAI,mCAAI,SAAS,CAAC,KAAK,IAC5C,CAAC;IACP,CAAC;IAEO,uBAAuB,CAAC,IAAmB;;QAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,uDAAuD;QACvD,MAAM,aAAa,GAAG,MAAA,MAAA,MAAC,MAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,0CAAE,KAA2B,0CAAE,KAAK,0CAAE,IAAI,mCAAI,qBAAS,CAAC,cAAc,CAAC;QACxH,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;QACtC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC1B,MAAM,eAAe,GAAG,MAAA,MAAM,CAAC,IAAI,0CAAE,WAAW,EAAE,CAAC;YAEnD;;eAEG;YACH,IAAI,WAAW,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE;gBAClC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,iCACtB,uCAAkB,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,KACtD,KAAK,EAAE,MAAM,CAAC,KAAK,IACrB,CAAC;aACN;iBAAM;gBACH,WAAW,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;aACpC;YAED,6CAA6C;YAC7C,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;SACtD;IACL,CAAC;IAEO,sBAAsB,CAAC,MAA2B,EAAE,aAAwB;;QAChF,IAAI,eAA0B,CAAC;QAC/B,IAAI,WAAuB,CAAC;QAC5B,IAAI,IAAA,8BAAiB,EAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YACjC,eAAe,GAAG,MAAA,MAAC,MAAA,MAAM,CAAC,KAAK,0CAAE,KAA2B,0CAAE,KAAK,0CAAE,IAAI,CAAC;YAC1E,WAAW,GAAG,MAAA,MAAM,CAAC,KAAK,0CAAE,KAAK,CAAC;SACrC;aAAM;YACH,eAAe,GAAG,MAAA,MAAC,MAAM,CAAC,KAA2B,0CAAE,KAAK,0CAAE,IAAI,CAAC;YACnE,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;SAC9B;QACD,MAAM,KAAK,GAAG,MAAA,CAAC,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,MAAM,CAAC,0CAAE,KAAK,CAAC;QAC7C;QACI,4DAA4D;QAC5D,CAAC,aAAa,KAAK,qBAAS,CAAC,cAAc,IAAI,eAAe,IAAI,eAAe,KAAK,aAAa,CAAC;YACpG,wCAAwC;YACxC,CAAC,WAAW,IAAI,CAAC,IAAA,gCAAmB,EAAC,WAAW,CAAC,CAAC,EACpD;YACE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,iCACtB,uCAAkB,CAAC,mBAAmB,CACrC,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CACvD,KACD,KAAK,EAAE,KAAK,IACd,CAAC;SACN;QAED,sBAAsB;QACtB,IAAI,aAAa,KAAK,qBAAS,CAAC,cAAc,EAAE;YAC5C,uBAAuB;YACvB,IAAI,eAAe,EAAE;gBACjB,8BAA8B;gBAC9B,IAAI,eAAe,KAAK,aAAa,EAAE;oBACnC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,iCACtB,uCAAkB,CAAC,mBAAmB,CACrC,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CACvD,KACD,KAAK,EAAE,KAAK,IACd,CAAC;iBACN;gBAED,uBAAuB;aAC1B;iBAAM;gBACH,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,+BACzB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,IAClB,uCAAkB,CAAC,mBAAmB,CACrC,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CACvD,KACD,KAAK,EAAE,KAAK,IACd,CAAC;aACN;SACJ;IACL,CAAC;IAED;;OAEG;IACK,sBAAsB;QAC1B,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvD,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YAC1B,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC;YACnC,IAAI,IAAA,iCAAoB,EAAC,SAAS,CAAC,EAAE;gBACjC,UAAU,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aACjD;iBAAM;gBACH,kCAAkC;gBAClC,IACI,CAAC,IAAA,gCAAmB,EAAC,SAAS,CAAC;oBAC/B,CAAC,IAAA,6BAAgB,EAAC,SAAS,CAAC;oBAC5B,CAAC,IAAA,4BAAe,EAAC,SAAS,CAAC;oBAC3B,CAAC,IAAA,iCAAoB,EAAC,SAAS,CAAC;oBAChC,CAAC,IAAA,+BAAkB,EAAC,SAAS,CAAC;oBAC9B,CAAC,IAAA,+BAAkB,EAAC,SAAS,CAAC;oBAC9B,CAAC,IAAA,8BAAiB,EAAC,SAAS,CAAC;oBAC7B,CAAC,IAAA,6BAAgB,EAAC,SAAS,CAAC,EAC9B;oBACE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,iCACtB,uCAAkB,CAAC,kCAAkC,EAAE,KAC1D,KAAK,EAAE,SAAS,CAAC,KAAK,IACxB,CAAC;iBACN;aACJ;SACJ;IACL,CAAC;IAEO,wBAAwB;QAC5B,IAAI,0BAA0B,GAAG,EAA+C,CAAC;QACjF,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE;YACpD,eAAe;YACf,IAAI,IAAA,+BAAkB,EAAC,IAAI,CAAC,EAAE;gBAC1B,SAAS;aACZ;YACD,mFAAmF;YACnF,IAAI,IAAA,+BAAkB,EAAC,IAAI,CAAC,IAAI,IAAA,8BAAiB,EAAC,IAAI,CAAC,EAAE;gBACrD,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACzC;iBAAM;gBACH,+DAA+D;gBAC/D,MAAM;aACT;SACJ;QAED,IAAI,UAAU,GAAG;YACb,2DAA2D;YAC3D,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,iBAAiB;YAC1D,2DAA2D;YAC3D,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,gBAAgB;SAC5D,CAAC;QACF,KAAK,IAAI,MAAM,IAAI,UAAU,EAAE;YAC3B,6DAA6D;YAC7D,qDAAqD;YACrD,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;gBAC9C,IAAI,IAAA,+BAAkB,EAAC,MAAM,CAAC,EAAE;oBAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,iCACzB,uCAAkB,CAAC,yCAAyC,EAAE,KACjE,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,IACvB,CAAC;iBACN;qBAAM,IAAI,IAAA,8BAAiB,EAAC,MAAM,CAAC,EAAE;oBAClC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,iCACzB,uCAAkB,CAAC,wCAAwC,EAAE,KAChE,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,IACvB,CAAC;iBACN;aACJ;SACJ;IACL,CAAC;IAEO,yBAAyB,CAAC,SAA4B;QAC1D,MAAM,qBAAqB,GAAG,CAAC,gBAA2B,EAAE,EAAE;;YAC1D,uBAAuB;YACvB,gBAAgB,GAAG,gBAAgB,KAAK,qBAAS,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAS,CAAC,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC;YAC7F,MAAM,cAAc,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC;YACjD,IAAI,cAAc,IAAI,CAAA,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,WAAW,EAAE,OAAK,MAAA,cAAc,CAAC,IAAI,0CAAE,WAAW,EAAE,CAAA,EAAE;gBAC1F,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,iBACzB,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,IACnC,uCAAkB,CAAC,aAAa,CAAC,gBAAgB,CAAC,EACvD,CAAC;aACN;QACL,CAAC,CAAC;QAEF,gCAAgC;QAChC,MAAM,MAAM,GAAG,SAAS,CAAC,YAAY,CAAmD,CAAC,IAAI,EAAE,EAAE;YAC7F,IAAI,IAAA,6BAAgB,EAAC,IAAI,CAAC,EAAE;gBACxB,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC9C,OAAO,IAAI,CAAC;aACf;iBAAM,IAAI,IAAA,2BAAc,EAAC,IAAI,CAAC,EAAE;gBAC7B,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAC1C,OAAO,IAAI,CAAC;aACf;iBAAM,IAAI,IAAA,+BAAkB,EAAC,IAAI,CAAC,EAAE;gBACjC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAChD,OAAO,IAAI,CAAC;aACf;QACL,CAAC,CAAC,CAAC;QACH,kDAAkD;QAClD,IAAI,CAAC,MAAM,EAAE;YACT,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,iBACzB,KAAK,EAAE,SAAS,CAAC,KAAK,IACnB,uCAAkB,CAAC,wBAAwB,EAAE,EAClD,CAAC;SACN;IACL,CAAC;IAED;;OAEG;IACK,kCAAkC,CAAC,MAAe,EAAE,QAAmB;;QAC3E,MAAM,KAAK,GAAG,CAAC,GAAG,QAAQ,EAAE,MAAM,CAAC,CAAC;QACpC,+DAA+D;QAC/D,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YACrB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;YAC3B;YACI,+BAA+B;YAC/B,CAAC,CAAC,IAAA,iCAAoB,EAAC,IAAI,CAAC,IAAI,IAAA,kCAAqB,EAAC,IAAI,CAAC,CAAC,IAAI,CAAA,MAAA,IAAI,CAAC,GAAG,0CAAE,IAAI,MAAK,qBAAS,CAAC,WAAW,CAAC;gBACzG,iBAAiB;gBACjB,CAAC,IAAA,mCAAsB,EAAC,IAAI,CAAC,IAAI,CAAC,CAAA,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,gBAAgB,0CAAE,IAAI,MAAK,qBAAS,CAAC,WAAW,IAAI,CAAA,MAAA,IAAI,CAAC,aAAa,0CAAE,IAAI,MAAK,qBAAS,CAAC,kBAAkB,CAAC,CAAC;gBACvJ,eAAe;gBACf,CAAC,IAAA,kCAAqB,EAAC,IAAI,CAAC,IAAI,CAAA,MAAA,IAAI,CAAC,aAAa,0CAAE,IAAI,MAAK,qBAAS,CAAC,kBAAkB,CAAC,EAC5F;gBACE,mEAAmE;gBACnE,IAAI,KAAY,CAAC;gBACjB,IAAI,IAAA,iCAAoB,EAAC,MAAM,CAAC,EAAE;oBAC9B,KAAK,GAAG,cAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;iBACzE;qBAAM,IAAI,IAAA,kCAAqB,EAAC,MAAM,CAAC,EAAE;oBACtC,KAAK,GAAG,cAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;iBAC1G;qBAAM;oBACH,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;iBACtB;gBAED,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,iCACtB,uCAAkB,CAAC,4CAA4C,EAAE,KACpE,KAAK,EAAE,KAAK,IACd,CAAC;aACN;YAED,IAAI,IAAI,KAAK,MAAM,EAAE;gBACjB,MAAM;aACT;iBAAM;gBACH,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAC3B;SACJ;IACL,CAAC;CACJ;AA3YD,4CA2YC"}
@@ -14,6 +14,11 @@ export declare class ScopeValidator {
14
14
  reset(): void;
15
15
  private walkFiles;
16
16
  private checkIfUsedAsTypeExpression;
17
+ private isTypeKnown;
18
+ /**
19
+ * If this is the lhs of an assignment, we don't need to flag it as unresolved
20
+ */
21
+ private ignoreUnresolvedAssignmentLHS;
17
22
  private expressionsByFile;
18
23
  private iterateFileExpressions;
19
24
  /**
@@ -35,7 +40,23 @@ export declare class ScopeValidator {
35
40
  /**
36
41
  * Detect calls to functions with the incorrect number of parameters, or wrong types of arguments
37
42
  */
38
- private validateFunctionCalls;
43
+ private validateFunctionCall;
44
+ /**
45
+ * Detect return statements with incompatible types vs. declared return type
46
+ */
47
+ private validateReturnStatement;
48
+ /**
49
+ * Detect return statements with incompatible types vs. declared return type
50
+ */
51
+ private validateDottedSetStatement;
52
+ /**
53
+ * Detect invalid use of a binary operator
54
+ */
55
+ private validateBinaryExpression;
56
+ /**
57
+ * Detect invalid use of a Unary operator
58
+ */
59
+ private validateUnaryExpression;
39
60
  /**
40
61
  * Adds a diagnostic to the first scope for this key. Prevents duplicate diagnostics
41
62
  * for diagnostics where scope isn't important. (i.e. CreateObject validations)
@@ -10,11 +10,13 @@ const util_1 = require("../../util");
10
10
  const roku_types_1 = require("../../roku-types");
11
11
  const Parser_1 = require("../../parser/Parser");
12
12
  const TokenKind_1 = require("../../lexer/TokenKind");
13
+ const visitors_1 = require("../../astUtils/visitors");
13
14
  /**
14
15
  * The lower-case names of all platform-included scenegraph nodes
15
16
  */
16
- const platformNodeNames = new Set(Object.values(roku_types_1.nodes).map(x => x.name.toLowerCase()));
17
- const platformComponentNames = new Set(Object.values(roku_types_1.components).map(x => x.name.toLowerCase()));
17
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
18
+ const platformNodeNames = roku_types_1.nodes ? new Set(Object.values(roku_types_1.nodes).map(x => x === null || x === void 0 ? void 0 : x.name.toLowerCase())) : new Set();
19
+ const platformComponentNames = roku_types_1.components ? new Set(Object.values(roku_types_1.components).map(x => x === null || x === void 0 ? void 0 : x.name.toLowerCase())) : new Set();
18
20
  /**
19
21
  * A validator that handles all scope validations for a program validation cycle.
20
22
  * You should create ONE of these to handle all scope events between beforeProgramValidate and afterProgramValidate,
@@ -41,7 +43,25 @@ class ScopeValidator {
41
43
  if ((0, reflection_1.isBrsFile)(file)) {
42
44
  this.iterateFileExpressions(file);
43
45
  this.validateCreateObjectCalls(file);
44
- this.validateFunctionCalls(file);
46
+ file.ast.walk((0, visitors_1.createVisitor)({
47
+ CallExpression: (functionCall) => {
48
+ this.validateFunctionCall(file, functionCall);
49
+ },
50
+ ReturnStatement: (returnStatement) => {
51
+ this.validateReturnStatement(file, returnStatement);
52
+ },
53
+ DottedSetStatement: (dottedSetStmt) => {
54
+ this.validateDottedSetStatement(file, dottedSetStmt);
55
+ },
56
+ BinaryExpression: (binaryExpr) => {
57
+ this.validateBinaryExpression(file, binaryExpr);
58
+ },
59
+ UnaryExpression: (unaryExpr) => {
60
+ this.validateUnaryExpression(file, unaryExpr);
61
+ }
62
+ }), {
63
+ walkMode: visitors_1.WalkMode.visitAllRecursive
64
+ });
45
65
  }
46
66
  });
47
67
  }
@@ -60,6 +80,20 @@ class ScopeValidator {
60
80
  }
61
81
  return false;
62
82
  }
83
+ isTypeKnown(exprType) {
84
+ let isKnownType = exprType === null || exprType === void 0 ? void 0 : exprType.isResolvable();
85
+ return isKnownType;
86
+ }
87
+ /**
88
+ * If this is the lhs of an assignment, we don't need to flag it as unresolved
89
+ */
90
+ ignoreUnresolvedAssignmentLHS(expression, exprType) {
91
+ if (!(0, reflection_1.isVariableExpression)(expression)) {
92
+ return false;
93
+ }
94
+ const assignmentAncestor = expression === null || expression === void 0 ? void 0 : expression.findAncestor(reflection_1.isAssignmentStatement);
95
+ return (assignmentAncestor === null || assignmentAncestor === void 0 ? void 0 : assignmentAncestor.name) === (expression === null || expression === void 0 ? void 0 : expression.name) && (0, reflection_1.isUnionType)(exprType); // the left hand side is not a union, which means it was never assigned
96
+ }
63
97
  iterateFileExpressions(file) {
64
98
  var _a, _b, _c;
65
99
  const { scope } = this.event;
@@ -104,7 +138,7 @@ class ScopeValidator {
104
138
  flags: symbolType,
105
139
  typeChain: typeChain
106
140
  });
107
- if (!exprType || !exprType.isResolvable()) {
141
+ if (!this.isTypeKnown(exprType) && !this.ignoreUnresolvedAssignmentLHS(info.expression, exprType)) {
108
142
  if ((_a = info.expression.getType({ flags: oppositeSymbolType })) === null || _a === void 0 ? void 0 : _a.isResolvable()) {
109
143
  const oppoSiteTypeChain = [];
110
144
  const invalidlyUsedResolvedType = info.expression.getType({ flags: oppositeSymbolType, typeChain: oppoSiteTypeChain });
@@ -289,49 +323,167 @@ class ScopeValidator {
289
323
  /**
290
324
  * Detect calls to functions with the incorrect number of parameters, or wrong types of arguments
291
325
  */
292
- validateFunctionCalls(file) {
293
- var _a, _b, _c;
326
+ validateFunctionCall(file, expression) {
327
+ var _a, _b;
294
328
  const diagnostics = [];
295
- //validate all function calls
296
- for (let expCall of file.functionCalls) {
297
- const funcType = (_b = (_a = expCall.expression) === null || _a === void 0 ? void 0 : _a.callee) === null || _b === void 0 ? void 0 : _b.getType({ flags: SymbolTable_1.SymbolTypeFlag.runtime });
298
- if ((funcType === null || funcType === void 0 ? void 0 : funcType.isResolvable()) && (0, reflection_1.isTypedFunctionType)(funcType)) {
299
- funcType.setName(expCall.name);
300
- //get min/max parameter count for callable
301
- let minParams = 0;
302
- let maxParams = 0;
303
- for (let param of funcType.params) {
304
- maxParams++;
305
- //optional parameters must come last, so we can assume that minParams won't increase once we hit
306
- //the first isOptional
307
- if (param.isOptional !== true) {
308
- minParams++;
309
- }
329
+ const getTypeOptions = { flags: SymbolTable_1.SymbolTypeFlag.runtime };
330
+ let funcType = (_a = expression === null || expression === void 0 ? void 0 : expression.callee) === null || _a === void 0 ? void 0 : _a.getType(getTypeOptions);
331
+ if ((funcType === null || funcType === void 0 ? void 0 : funcType.isResolvable()) && (0, reflection_1.isClassType)(funcType)) {
332
+ // We're calling a class - get the constructor
333
+ funcType = funcType.getMemberType('new', getTypeOptions);
334
+ }
335
+ if ((funcType === null || funcType === void 0 ? void 0 : funcType.isResolvable()) && (0, reflection_1.isTypedFunctionType)(funcType)) {
336
+ //funcType.setName(expression.callee. .name);
337
+ //get min/max parameter count for callable
338
+ let minParams = 0;
339
+ let maxParams = 0;
340
+ for (let param of funcType.params) {
341
+ maxParams++;
342
+ //optional parameters must come last, so we can assume that minParams won't increase once we hit
343
+ //the first isOptional
344
+ if (param.isOptional !== true) {
345
+ minParams++;
310
346
  }
311
- let expCallArgCount = expCall.args.length;
312
- if (expCall.args.length > maxParams || expCall.args.length < minParams) {
313
- let minMaxParamsText = minParams === maxParams ? maxParams : `${minParams}-${maxParams}`;
314
- diagnostics.push(Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.mismatchArgumentCount(minMaxParamsText, expCallArgCount)), { range: expCall.nameRange,
347
+ }
348
+ let expCallArgCount = expression.args.length;
349
+ if (expCallArgCount > maxParams || expCallArgCount < minParams) {
350
+ let minMaxParamsText = minParams === maxParams ? maxParams : `${minParams}-${maxParams}`;
351
+ diagnostics.push(Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.mismatchArgumentCount(minMaxParamsText, expCallArgCount)), { range: expression.callee.range,
352
+ //TODO detect end of expression call
353
+ file: file }));
354
+ }
355
+ let paramIndex = 0;
356
+ for (let arg of expression.args) {
357
+ const argType = arg.getType({ flags: SymbolTable_1.SymbolTypeFlag.runtime });
358
+ const paramType = (_b = funcType.params[paramIndex]) === null || _b === void 0 ? void 0 : _b.type;
359
+ if (!paramType) {
360
+ // unable to find a paramType -- maybe there are more args than params
361
+ break;
362
+ }
363
+ const compatibilityData = {};
364
+ if (!(paramType === null || paramType === void 0 ? void 0 : paramType.isTypeCompatible(argType, compatibilityData))) {
365
+ this.addMultiScopeDiagnostic(Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.argumentTypeMismatch(argType.toString(), paramType.toString(), compatibilityData)), { range: arg.range,
315
366
  //TODO detect end of expression call
316
367
  file: file }));
317
368
  }
318
- let paramIndex = 0;
319
- for (let arg of expCall.args) {
320
- const argType = arg.expression.getType({ flags: SymbolTable_1.SymbolTypeFlag.runtime });
321
- const paramType = (_c = funcType.params[paramIndex]) === null || _c === void 0 ? void 0 : _c.type;
322
- if (!paramType) {
323
- // unable to find a paramType -- maybe there are more args than params
324
- break;
325
- }
326
- if (!(paramType === null || paramType === void 0 ? void 0 : paramType.isTypeCompatible(argType))) {
327
- diagnostics.push(Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.argumentTypeMismatch(argType.toString(), paramType.toString())), { range: arg.expression.range,
328
- //TODO detect end of expression call
329
- file: file }));
330
- }
331
- paramIndex++;
332
- }
369
+ paramIndex++;
370
+ }
371
+ }
372
+ this.event.scope.addDiagnostics(diagnostics);
373
+ }
374
+ /**
375
+ * Detect return statements with incompatible types vs. declared return type
376
+ */
377
+ validateReturnStatement(file, returnStmt) {
378
+ var _a;
379
+ const diagnostics = [];
380
+ const getTypeOptions = { flags: SymbolTable_1.SymbolTypeFlag.runtime };
381
+ let funcType = returnStmt.findAncestor(reflection_1.isFunctionExpression).getType({ flags: SymbolTable_1.SymbolTypeFlag.typetime });
382
+ if ((0, reflection_1.isTypedFunctionType)(funcType)) {
383
+ const actualReturnType = (_a = returnStmt.value) === null || _a === void 0 ? void 0 : _a.getType(getTypeOptions);
384
+ const compatibilityData = {};
385
+ if (actualReturnType && !funcType.returnType.isTypeCompatible(actualReturnType, compatibilityData)) {
386
+ this.addMultiScopeDiagnostic(Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.returnTypeMismatch(actualReturnType.toString(), funcType.returnType.toString(), compatibilityData)), { range: returnStmt.value.range, file: file }));
387
+ }
388
+ }
389
+ this.event.scope.addDiagnostics(diagnostics);
390
+ }
391
+ /**
392
+ * Detect return statements with incompatible types vs. declared return type
393
+ */
394
+ validateDottedSetStatement(file, dottedSetStmt) {
395
+ var _a, _b, _c;
396
+ const diagnostics = [];
397
+ const getTypeOpts = { flags: SymbolTable_1.SymbolTypeFlag.runtime };
398
+ const expectedLHSType = (_b = (_a = dottedSetStmt === null || dottedSetStmt === void 0 ? void 0 : dottedSetStmt.obj) === null || _a === void 0 ? void 0 : _a.getType(getTypeOpts)) === null || _b === void 0 ? void 0 : _b.getMemberType(dottedSetStmt.name.text, getTypeOpts);
399
+ const actualRHSType = (_c = dottedSetStmt === null || dottedSetStmt === void 0 ? void 0 : dottedSetStmt.value) === null || _c === void 0 ? void 0 : _c.getType(getTypeOpts);
400
+ const compatibilityData = {};
401
+ if ((expectedLHSType === null || expectedLHSType === void 0 ? void 0 : expectedLHSType.isResolvable()) && !(expectedLHSType === null || expectedLHSType === void 0 ? void 0 : expectedLHSType.isTypeCompatible(actualRHSType, compatibilityData))) {
402
+ this.addMultiScopeDiagnostic(Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.assignmentTypeMismatch(actualRHSType.toString(), expectedLHSType.toString(), compatibilityData)), { range: dottedSetStmt.range, file: file }));
403
+ }
404
+ this.event.scope.addDiagnostics(diagnostics);
405
+ }
406
+ /**
407
+ * Detect invalid use of a binary operator
408
+ */
409
+ validateBinaryExpression(file, binaryExpr) {
410
+ const diagnostics = [];
411
+ const getTypeOpts = { flags: SymbolTable_1.SymbolTypeFlag.runtime };
412
+ if (this.checkIfUsedAsTypeExpression(binaryExpr)) {
413
+ return;
414
+ }
415
+ let leftType = binaryExpr.left.getType(getTypeOpts);
416
+ let rightType = binaryExpr.right.getType(getTypeOpts);
417
+ if (!leftType.isResolvable() || !rightType.isResolvable()) {
418
+ // Can not find the type. error handled elsewhere
419
+ return;
420
+ }
421
+ let leftTypeToTest = leftType;
422
+ let rightTypeToTest = rightType;
423
+ if ((0, reflection_1.isEnumMemberType)(leftType) || (0, reflection_1.isEnumType)(leftType)) {
424
+ leftTypeToTest = leftType.underlyingType;
425
+ }
426
+ if ((0, reflection_1.isEnumMemberType)(rightType) || (0, reflection_1.isEnumType)(rightType)) {
427
+ rightTypeToTest = rightType.underlyingType;
428
+ }
429
+ if ((0, reflection_1.isUnionType)(leftType) || (0, reflection_1.isUnionType)(rightType)) {
430
+ // TODO: it is possible to validate based on innerTypes, but more complicated
431
+ // Because you need to verify each combination of types
432
+ return;
433
+ }
434
+ const leftIsPrimitive = (0, reflection_1.isPrimitiveType)(leftTypeToTest);
435
+ const rightIsPrimitive = (0, reflection_1.isPrimitiveType)(rightTypeToTest);
436
+ const leftIsAny = (0, reflection_1.isDynamicType)(leftTypeToTest) || (0, reflection_1.isObjectType)(leftTypeToTest);
437
+ const rightIsAny = (0, reflection_1.isDynamicType)(rightTypeToTest) || (0, reflection_1.isObjectType)(rightTypeToTest);
438
+ if (leftIsAny && rightIsAny) {
439
+ // both operands are basically "any" type... ignore;
440
+ return;
441
+ }
442
+ else if ((leftIsAny && rightIsPrimitive) || (leftIsPrimitive && rightIsAny)) {
443
+ // one operand is basically "any" type... ignore;
444
+ return;
445
+ }
446
+ const opResult = util_1.default.binaryOperatorResultType(leftTypeToTest, binaryExpr.operator, rightTypeToTest);
447
+ if ((0, reflection_1.isDynamicType)(opResult)) {
448
+ // if the result was dynamic, that means there wasn't a valid operation
449
+ this.addMultiScopeDiagnostic(Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.operatorTypeMismatch(binaryExpr.operator.text, leftType.toString(), rightType.toString())), { range: binaryExpr.range, file: file }));
450
+ }
451
+ this.event.scope.addDiagnostics(diagnostics);
452
+ }
453
+ /**
454
+ * Detect invalid use of a Unary operator
455
+ */
456
+ validateUnaryExpression(file, unaryExpr) {
457
+ const diagnostics = [];
458
+ const getTypeOpts = { flags: SymbolTable_1.SymbolTypeFlag.runtime };
459
+ let rightType = unaryExpr.right.getType(getTypeOpts);
460
+ if (!rightType.isResolvable()) {
461
+ // Can not find the type. error handled elsewhere
462
+ return;
463
+ }
464
+ let rightTypeToTest = rightType;
465
+ if ((0, reflection_1.isEnumMemberType)(rightType)) {
466
+ rightTypeToTest = rightType.underlyingType;
467
+ }
468
+ if ((0, reflection_1.isUnionType)(rightTypeToTest)) {
469
+ // TODO: it is possible to validate based on innerTypes, but more complicated
470
+ // Because you need to verify each combination of types
471
+ return;
472
+ }
473
+ else if ((0, reflection_1.isDynamicType)(rightTypeToTest) || (0, reflection_1.isObjectType)(rightTypeToTest)) {
474
+ // operand is basically "any" type... ignore;
475
+ return;
476
+ }
477
+ else if ((0, reflection_1.isPrimitiveType)(rightType)) {
478
+ const opResult = util_1.default.unaryOperatorResultType(unaryExpr.operator, rightTypeToTest);
479
+ if ((0, reflection_1.isDynamicType)(opResult)) {
480
+ this.addMultiScopeDiagnostic(Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.operatorTypeMismatch(unaryExpr.operator.text, rightType.toString())), { range: unaryExpr.range, file: file }));
333
481
  }
334
482
  }
483
+ else {
484
+ // rhs is not a primitive, so no binary operator is allowed
485
+ this.addMultiScopeDiagnostic(Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.operatorTypeMismatch(unaryExpr.operator.text, rightType.toString())), { range: unaryExpr.range, file: file }));
486
+ }
335
487
  this.event.scope.addDiagnostics(diagnostics);
336
488
  }
337
489
  /**
@@ -351,7 +503,7 @@ class ScopeValidator {
351
503
  * Add a diagnostic (to the first scope) that will have `relatedInformation` for each affected scope
352
504
  */
353
505
  addMultiScopeDiagnostic(diagnostic, message = 'Not defined in scope') {
354
- var _a, _b;
506
+ var _a, _b, _c, _d, _e, _f, _g, _h;
355
507
  diagnostic = this.multiScopeCache.getOrAdd(`${(_a = diagnostic.file) === null || _a === void 0 ? void 0 : _a.srcPath}-${diagnostic.code}-${diagnostic.message}-${util_1.default.rangeToString(diagnostic.range)}`, () => {
356
508
  if (!diagnostic.relatedInformation) {
357
509
  diagnostic.relatedInformation = [];
@@ -363,7 +515,7 @@ class ScopeValidator {
363
515
  message: `${message} '${this.event.scope.name}'`
364
516
  };
365
517
  if ((0, reflection_1.isXmlScope)(this.event.scope) && ((_b = this.event.scope.xmlFile) === null || _b === void 0 ? void 0 : _b.srcPath)) {
366
- info.location = util_1.default.createLocation(vscode_uri_1.URI.file(this.event.scope.xmlFile.srcPath).toString(), util_1.default.createRange(0, 0, 0, 10));
518
+ info.location = util_1.default.createLocation(vscode_uri_1.URI.file(this.event.scope.xmlFile.srcPath).toString(), (_h = (_g = (_f = (_e = (_d = (_c = this.event.scope) === null || _c === void 0 ? void 0 : _c.xmlFile) === null || _d === void 0 ? void 0 : _d.ast) === null || _e === void 0 ? void 0 : _e.componentElement) === null || _f === void 0 ? void 0 : _f.getAttribute('name')) === null || _g === void 0 ? void 0 : _g.range) !== null && _h !== void 0 ? _h : util_1.default.createRange(0, 0, 0, 10));
367
519
  }
368
520
  else {
369
521
  info.location = util_1.default.createLocation(vscode_uri_1.URI.file(diagnostic.file.srcPath).toString(), diagnostic.range);
@@ -1 +1 @@
1
- {"version":3,"file":"ScopeValidator.js","sourceRoot":"","sources":["../../../src/bscPlugin/validation/ScopeValidator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ScopeValidator.js","sourceRoot":"","sources":["../../../src/bscPlugin/validation/ScopeValidator.ts"],"names":[],"mappings":"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"}