@microsoft/powerquery-language-services 0.2.17 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (226) hide show
  1. package/lib/powerquery-language-services/analysis/analysisBase.d.ts +4 -6
  2. package/lib/powerquery-language-services/analysis/analysisBase.js +120 -229
  3. package/lib/powerquery-language-services/analysis/analysisBase.js.map +1 -1
  4. package/lib/powerquery-language-services/analysis/analysisSettings.d.ts +2 -2
  5. package/lib/powerquery-language-services/analysis/analysisUtils.js +1 -1
  6. package/lib/powerquery-language-services/analysis/analysisUtils.js.map +1 -1
  7. package/lib/powerquery-language-services/analysis/documentAnalysis.d.ts +0 -2
  8. package/lib/powerquery-language-services/analysis/documentAnalysis.js +11 -32
  9. package/lib/powerquery-language-services/analysis/documentAnalysis.js.map +1 -1
  10. package/lib/powerquery-language-services/commonTypes.js +1 -1
  11. package/lib/powerquery-language-services/commonTypes.js.map +1 -1
  12. package/lib/powerquery-language-services/documentSymbols.d.ts +1 -1
  13. package/lib/powerquery-language-services/documentSymbols.js +62 -111
  14. package/lib/powerquery-language-services/documentSymbols.js.map +1 -1
  15. package/lib/powerquery-language-services/formatter.d.ts +1 -1
  16. package/lib/powerquery-language-services/formatter.js +35 -34
  17. package/lib/powerquery-language-services/formatter.js.map +1 -1
  18. package/lib/powerquery-language-services/index.js +2 -2
  19. package/lib/powerquery-language-services/index.js.map +1 -1
  20. package/lib/powerquery-language-services/inspection/activeNode/activeNodeUtils.js +74 -131
  21. package/lib/powerquery-language-services/inspection/activeNode/activeNodeUtils.js.map +1 -1
  22. package/lib/powerquery-language-services/inspection/activeNode/index.js +1 -1
  23. package/lib/powerquery-language-services/inspection/activeNode/index.js.map +1 -1
  24. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteFieldAccess.d.ts +1 -1
  25. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteFieldAccess.js +117 -187
  26. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteFieldAccess.js.map +1 -1
  27. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteItem/autocompleteItemUtils.js +29 -31
  28. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteItem/autocompleteItemUtils.js.map +1 -1
  29. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeyword.d.ts +2 -2
  30. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeyword.js +97 -114
  31. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeyword.js.map +1 -1
  32. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordDefault.js +11 -11
  33. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordDefault.js.map +1 -1
  34. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordErrorHandlingExpression.js +9 -9
  35. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordErrorHandlingExpression.js.map +1 -1
  36. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordIdentifierPairedExpression.js +5 -5
  37. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordIdentifierPairedExpression.js.map +1 -1
  38. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordLetExpression.d.ts +1 -1
  39. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordLetExpression.js +43 -56
  40. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordLetExpression.js.map +1 -1
  41. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordListExpression.js +10 -10
  42. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordListExpression.js.map +1 -1
  43. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordSectionMember.d.ts +1 -1
  44. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordSectionMember.js +11 -11
  45. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordSectionMember.js.map +1 -1
  46. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordTrailingText.js +5 -5
  47. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordTrailingText.js.map +1 -1
  48. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/common.d.ts +1 -1
  49. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/common.js +28 -28
  50. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/common.js.map +1 -1
  51. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteLanguageConstant.js +28 -31
  52. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteLanguageConstant.js.map +1 -1
  53. package/lib/powerquery-language-services/inspection/autocomplete/autocompletePrimitiveType.js +19 -23
  54. package/lib/powerquery-language-services/inspection/autocomplete/autocompletePrimitiveType.js.map +1 -1
  55. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteUtils.js +5 -5
  56. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteUtils.js.map +1 -1
  57. package/lib/powerquery-language-services/inspection/autocomplete/common.js +2 -13
  58. package/lib/powerquery-language-services/inspection/autocomplete/common.js.map +1 -1
  59. package/lib/powerquery-language-services/inspection/autocomplete/index.js +1 -1
  60. package/lib/powerquery-language-services/inspection/autocomplete/index.js.map +1 -1
  61. package/lib/powerquery-language-services/inspection/autocomplete/task.d.ts +1 -1
  62. package/lib/powerquery-language-services/inspection/autocomplete/task.js +36 -25
  63. package/lib/powerquery-language-services/inspection/autocomplete/task.js.map +1 -1
  64. package/lib/powerquery-language-services/inspection/commonTypes.d.ts +6 -5
  65. package/lib/powerquery-language-services/inspection/expectedType.js +66 -54
  66. package/lib/powerquery-language-services/inspection/expectedType.js.map +1 -1
  67. package/lib/powerquery-language-services/inspection/externalType/externalType.d.ts +2 -2
  68. package/lib/powerquery-language-services/inspection/externalType/externalType.js +2 -1
  69. package/lib/powerquery-language-services/inspection/externalType/externalType.js.map +1 -1
  70. package/lib/powerquery-language-services/inspection/externalType/externalTypeUtils.js +3 -3
  71. package/lib/powerquery-language-services/inspection/externalType/externalTypeUtils.js.map +1 -1
  72. package/lib/powerquery-language-services/inspection/invokeExpression/currentInvokeExpression.d.ts +1 -1
  73. package/lib/powerquery-language-services/inspection/invokeExpression/currentInvokeExpression.js +49 -66
  74. package/lib/powerquery-language-services/inspection/invokeExpression/currentInvokeExpression.js.map +1 -1
  75. package/lib/powerquery-language-services/inspection/invokeExpression/invokeExpression.d.ts +1 -1
  76. package/lib/powerquery-language-services/inspection/invokeExpression/invokeExpression.js +74 -99
  77. package/lib/powerquery-language-services/inspection/invokeExpression/invokeExpression.js.map +1 -1
  78. package/lib/powerquery-language-services/inspection/jaroWinkler.js +26 -42
  79. package/lib/powerquery-language-services/inspection/jaroWinkler.js.map +1 -1
  80. package/lib/powerquery-language-services/inspection/pseudoFunctionExpressionType.js +18 -51
  81. package/lib/powerquery-language-services/inspection/pseudoFunctionExpressionType.js.map +1 -1
  82. package/lib/powerquery-language-services/inspection/scope/scopeInspection.d.ts +3 -3
  83. package/lib/powerquery-language-services/inspection/scope/scopeInspection.js +237 -282
  84. package/lib/powerquery-language-services/inspection/scope/scopeInspection.js.map +1 -1
  85. package/lib/powerquery-language-services/inspection/task.d.ts +2 -2
  86. package/lib/powerquery-language-services/inspection/task.js +52 -41
  87. package/lib/powerquery-language-services/inspection/task.js.map +1 -1
  88. package/lib/powerquery-language-services/inspection/type/index.js +1 -1
  89. package/lib/powerquery-language-services/inspection/type/index.js.map +1 -1
  90. package/lib/powerquery-language-services/inspection/type/inspectType/common.d.ts +9 -9
  91. package/lib/powerquery-language-services/inspection/type/inspectType/common.js +353 -335
  92. package/lib/powerquery-language-services/inspection/type/inspectType/common.js.map +1 -1
  93. package/lib/powerquery-language-services/inspection/type/inspectType/examineFieldSpecificationList.d.ts +1 -1
  94. package/lib/powerquery-language-services/inspection/type/inspectType/examineFieldSpecificationList.js +31 -41
  95. package/lib/powerquery-language-services/inspection/type/inspectType/examineFieldSpecificationList.js.map +1 -1
  96. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeConstant.js +3 -3
  97. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeConstant.js.map +1 -1
  98. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeEachExpression.d.ts +1 -1
  99. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeEachExpression.js +29 -19
  100. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeEachExpression.js.map +1 -1
  101. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeErrorHandlingExpression.d.ts +1 -1
  102. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeErrorHandlingExpression.js +27 -17
  103. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeErrorHandlingExpression.js.map +1 -1
  104. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/common.d.ts +4 -0
  105. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/common.js +68 -0
  106. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/common.js.map +1 -0
  107. package/lib/powerquery-language-services/inspection/type/inspectType/{inspectTypeFieldProjection.d.ts → inspectTypeField/inspectTypeFieldProjection.d.ts} +2 -2
  108. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/inspectTypeFieldProjection.js +103 -0
  109. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/inspectTypeFieldProjection.js.map +1 -0
  110. package/lib/powerquery-language-services/inspection/type/inspectType/{inspectTypeFieldSelector.d.ts → inspectTypeField/inspectTypeFieldSelector.d.ts} +2 -2
  111. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/inspectTypeFieldSelector.js +76 -0
  112. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/inspectTypeFieldSelector.js.map +1 -0
  113. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFieldSpecification.d.ts +1 -1
  114. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFieldSpecification.js +24 -12
  115. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFieldSpecification.js.map +1 -1
  116. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFunctionExpression.d.ts +1 -1
  117. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFunctionExpression.js +61 -53
  118. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFunctionExpression.js.map +1 -1
  119. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFunctionType.d.ts +1 -1
  120. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFunctionType.js +43 -35
  121. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFunctionType.js.map +1 -1
  122. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeIdentifier.d.ts +1 -1
  123. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeIdentifier.js +28 -18
  124. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeIdentifier.js.map +1 -1
  125. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeIdentifierExpression.d.ts +1 -1
  126. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeIdentifierExpression.js +28 -18
  127. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeIdentifierExpression.js.map +1 -1
  128. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeIfExpression.d.ts +1 -1
  129. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeIfExpression.js +42 -30
  130. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeIfExpression.js.map +1 -1
  131. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeInvokeExpression.d.ts +1 -1
  132. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeInvokeExpression.js +55 -64
  133. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeInvokeExpression.js.map +1 -1
  134. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeList.d.ts +1 -1
  135. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeList.js +26 -16
  136. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeList.js.map +1 -1
  137. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeListType.d.ts +1 -1
  138. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeListType.js +34 -24
  139. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeListType.js.map +1 -1
  140. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeLiteralExpression.js +9 -10
  141. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeLiteralExpression.js.map +1 -1
  142. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeNullCoalescingExpression.d.ts +1 -1
  143. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeNullCoalescingExpression.js +33 -23
  144. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeNullCoalescingExpression.js.map +1 -1
  145. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeParameter.d.ts +1 -1
  146. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeParameter.js +22 -23
  147. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeParameter.js.map +1 -1
  148. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypePrimitiveType.js +9 -10
  149. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypePrimitiveType.js.map +1 -1
  150. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRangeExpression.d.ts +1 -1
  151. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRangeExpression.js +40 -30
  152. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRangeExpression.js.map +1 -1
  153. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRecord.d.ts +1 -1
  154. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRecord.js +31 -41
  155. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRecord.js.map +1 -1
  156. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRecordType.d.ts +1 -1
  157. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRecordType.js +27 -28
  158. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRecordType.js.map +1 -1
  159. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRecursivePrimaryExpression.d.ts +1 -1
  160. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRecursivePrimaryExpression.js +44 -54
  161. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRecursivePrimaryExpression.js.map +1 -1
  162. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeTBinOpExpression.d.ts +1 -1
  163. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeTBinOpExpression.js +132 -179
  164. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeTBinOpExpression.js.map +1 -1
  165. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeTableType.d.ts +1 -1
  166. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeTableType.js +36 -37
  167. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeTableType.js.map +1 -1
  168. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeUnaryExpression.d.ts +1 -1
  169. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeUnaryExpression.js +57 -105
  170. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeUnaryExpression.js.map +1 -1
  171. package/lib/powerquery-language-services/inspection/type/task.d.ts +2 -2
  172. package/lib/powerquery-language-services/inspection/type/task.js +59 -104
  173. package/lib/powerquery-language-services/inspection/type/task.js.map +1 -1
  174. package/lib/powerquery-language-services/inspectionSettings.d.ts +2 -0
  175. package/lib/powerquery-language-services/inspectionUtils.d.ts +5 -4
  176. package/lib/powerquery-language-services/inspectionUtils.js +81 -137
  177. package/lib/powerquery-language-services/inspectionUtils.js.map +1 -1
  178. package/lib/powerquery-language-services/languageServiceUtils.js +1 -1
  179. package/lib/powerquery-language-services/languageServiceUtils.js.map +1 -1
  180. package/lib/powerquery-language-services/library/libraryUtils.js +11 -11
  181. package/lib/powerquery-language-services/library/libraryUtils.js.map +1 -1
  182. package/lib/powerquery-language-services/localization/localization.js +9 -13
  183. package/lib/powerquery-language-services/localization/localization.js.map +1 -1
  184. package/lib/powerquery-language-services/localization/localizationUtils.js +1 -1
  185. package/lib/powerquery-language-services/localization/localizationUtils.js.map +1 -1
  186. package/lib/powerquery-language-services/localization/templates.js +43 -43
  187. package/lib/powerquery-language-services/localization/templates.js.map +1 -1
  188. package/lib/powerquery-language-services/positionUtils.d.ts +5 -5
  189. package/lib/powerquery-language-services/positionUtils.js +53 -33
  190. package/lib/powerquery-language-services/positionUtils.js.map +1 -1
  191. package/lib/powerquery-language-services/providers/languageCompletionItemProvider.d.ts +3 -3
  192. package/lib/powerquery-language-services/providers/languageCompletionItemProvider.js +40 -94
  193. package/lib/powerquery-language-services/providers/languageCompletionItemProvider.js.map +1 -1
  194. package/lib/powerquery-language-services/providers/librarySymbolProvider.js +66 -138
  195. package/lib/powerquery-language-services/providers/librarySymbolProvider.js.map +1 -1
  196. package/lib/powerquery-language-services/providers/localDocumentSymbolProvider.d.ts +4 -6
  197. package/lib/powerquery-language-services/providers/localDocumentSymbolProvider.js +137 -213
  198. package/lib/powerquery-language-services/providers/localDocumentSymbolProvider.js.map +1 -1
  199. package/lib/powerquery-language-services/providers/nullSymbolProvider.js +21 -52
  200. package/lib/powerquery-language-services/providers/nullSymbolProvider.js.map +1 -1
  201. package/lib/powerquery-language-services/validate/validate.d.ts +1 -1
  202. package/lib/powerquery-language-services/validate/validate.js +38 -42
  203. package/lib/powerquery-language-services/validate/validate.js.map +1 -1
  204. package/lib/powerquery-language-services/validate/validateDuplicateIdentifiers.d.ts +1 -1
  205. package/lib/powerquery-language-services/validate/validateDuplicateIdentifiers.js +82 -129
  206. package/lib/powerquery-language-services/validate/validateDuplicateIdentifiers.js.map +1 -1
  207. package/lib/powerquery-language-services/validate/validateFunctionExpression.d.ts +1 -1
  208. package/lib/powerquery-language-services/validate/validateFunctionExpression.js +61 -101
  209. package/lib/powerquery-language-services/validate/validateFunctionExpression.js.map +1 -1
  210. package/lib/powerquery-language-services/validate/validateInvokeExpression.d.ts +1 -1
  211. package/lib/powerquery-language-services/validate/validateInvokeExpression.js +61 -98
  212. package/lib/powerquery-language-services/validate/validateInvokeExpression.js.map +1 -1
  213. package/lib/powerquery-language-services/validate/validateLexAndParse.d.ts +1 -1
  214. package/lib/powerquery-language-services/validate/validateLexAndParse.js +114 -122
  215. package/lib/powerquery-language-services/validate/validateLexAndParse.js.map +1 -1
  216. package/lib/powerquery-language-services/validate/validationSettings/validationSettingsUtils.js +1 -12
  217. package/lib/powerquery-language-services/validate/validationSettings/validationSettingsUtils.js.map +1 -1
  218. package/lib/powerquery-language-services/workspaceCache/workspaceCache.d.ts +3 -13
  219. package/lib/powerquery-language-services/workspaceCache/workspaceCacheUtils.d.ts +7 -8
  220. package/lib/powerquery-language-services/workspaceCache/workspaceCacheUtils.js +93 -147
  221. package/lib/powerquery-language-services/workspaceCache/workspaceCacheUtils.js.map +1 -1
  222. package/package.json +5 -4
  223. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFieldProjection.js +0 -124
  224. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFieldProjection.js.map +0 -1
  225. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFieldSelector.js +0 -68
  226. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFieldSelector.js.map +0 -1
@@ -1,74 +1,59 @@
1
1
  "use strict";
2
2
  // Copyright (c) Microsoft Corporation.
3
3
  // Licensed under the MIT license.
4
- var __values = (this && this.__values) || function(o) {
5
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
6
- if (m) return m.call(o);
7
- if (o && typeof o.length === "number") return {
8
- next: function () {
9
- if (o && i >= o.length) o = void 0;
10
- return { value: o && o[i++], done: !o };
11
- }
12
- };
13
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
14
- };
15
- var __read = (this && this.__read) || function (o, n) {
16
- var m = typeof Symbol === "function" && o[Symbol.iterator];
17
- if (!m) return o;
18
- var i = m.call(o), r, ar = [], e;
19
- try {
20
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
21
- }
22
- catch (error) { e = { error: error }; }
23
- finally {
24
- try {
25
- if (r && !r.done && (m = i["return"])) m.call(i);
26
- }
27
- finally { if (e) throw e.error; }
28
- }
29
- return ar;
4
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
5
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
6
+ return new (P || (P = Promise))(function (resolve, reject) {
7
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
8
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
9
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
10
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
11
+ });
30
12
  };
31
13
  Object.defineProperty(exports, "__esModule", { value: true });
32
14
  exports.maybeDereferencedIdentifier = exports.assertGetOrCreateNodeScope = exports.tryNodeScope = void 0;
33
- var parser_1 = require("@microsoft/powerquery-parser/lib/powerquery-parser/parser");
34
- var powerquery_parser_1 = require("@microsoft/powerquery-parser");
35
- var language_1 = require("@microsoft/powerquery-parser/lib/powerquery-parser/language");
36
- var __1 = require("../..");
37
- var pseudoFunctionExpressionType_1 = require("../pseudoFunctionExpressionType");
15
+ const parser_1 = require("@microsoft/powerquery-parser/lib/powerquery-parser/parser");
16
+ const powerquery_parser_1 = require("@microsoft/powerquery-parser");
17
+ const language_1 = require("@microsoft/powerquery-parser/lib/powerquery-parser/language");
18
+ const __1 = require("../..");
19
+ const pseudoFunctionExpressionType_1 = require("../pseudoFunctionExpressionType");
38
20
  // Builds a scope for the given node.
39
21
  function tryNodeScope(settings, nodeIdMapCollection, nodeId,
40
22
  // scopeById may get mutated by adding new entries.
41
23
  scopeById) {
42
- var trace = settings.traceManager.entry("Scope" /* Scope */, tryNodeScope.name);
43
- var result = powerquery_parser_1.ResultUtils.ensureResult(settings.locale, function () {
44
- var ancestry = parser_1.AncestryUtils.assertGetAncestry(nodeIdMapCollection, nodeId);
45
- if (ancestry.length === 0) {
46
- return new Map();
47
- }
48
- var inspected = inspectScope(settings, nodeIdMapCollection, ancestry, scopeById);
49
- return powerquery_parser_1.Assert.asDefined(inspected.get(nodeId), "expected nodeId in scope result", { nodeId: nodeId });
24
+ return __awaiter(this, void 0, void 0, function* () {
25
+ const trace = settings.traceManager.entry("Scope" /* Scope */, tryNodeScope.name);
26
+ const result = yield powerquery_parser_1.ResultUtils.ensureResultAsync(settings.locale, () => __awaiter(this, void 0, void 0, function* () {
27
+ const ancestry = parser_1.AncestryUtils.assertGetAncestry(nodeIdMapCollection, nodeId);
28
+ if (ancestry.length === 0) {
29
+ return new Map();
30
+ }
31
+ const inspected = yield inspectScope(settings, nodeIdMapCollection, ancestry, scopeById);
32
+ return powerquery_parser_1.Assert.asDefined(inspected.get(nodeId), `expected nodeId in scope result`, { nodeId });
33
+ }));
34
+ trace.exit();
35
+ return result;
50
36
  });
51
- trace.exit();
52
- return result;
53
37
  }
54
38
  exports.tryNodeScope = tryNodeScope;
55
39
  function assertGetOrCreateNodeScope(settings, nodeIdMapCollection, nodeId,
56
40
  // scopeById may get mutated by adding new entries.
57
41
  scopeById) {
58
- var _a, _b, _c;
59
- var trace = settings.traceManager.entry("Scope" /* Scope */, assertGetOrCreateNodeScope.name);
60
- var maybeScope = scopeById.get(nodeId);
61
- if (maybeScope !== undefined) {
62
- trace.exit((_a = {}, _a["IsThrowing" /* IsThrowing */] = false, _a));
63
- return powerquery_parser_1.ResultUtils.boxOk(maybeScope);
64
- }
65
- var triedNodeScope = tryNodeScope(settings, nodeIdMapCollection, nodeId, scopeById);
66
- if (powerquery_parser_1.ResultUtils.isError(triedNodeScope)) {
67
- trace.exit((_b = {}, _b["IsThrowing" /* IsThrowing */] = true, _b));
68
- throw triedNodeScope;
69
- }
70
- trace.exit((_c = {}, _c["IsThrowing" /* IsThrowing */] = false, _c));
71
- return triedNodeScope;
42
+ return __awaiter(this, void 0, void 0, function* () {
43
+ const trace = settings.traceManager.entry("Scope" /* Scope */, assertGetOrCreateNodeScope.name);
44
+ const maybeScope = scopeById.get(nodeId);
45
+ if (maybeScope !== undefined) {
46
+ trace.exit({ ["IsThrowing" /* IsThrowing */]: false });
47
+ return powerquery_parser_1.ResultUtils.boxOk(maybeScope);
48
+ }
49
+ const triedNodeScope = yield tryNodeScope(settings, nodeIdMapCollection, nodeId, scopeById);
50
+ if (powerquery_parser_1.ResultUtils.isError(triedNodeScope)) {
51
+ trace.exit({ ["IsThrowing" /* IsThrowing */]: true });
52
+ throw triedNodeScope;
53
+ }
54
+ trace.exit({ ["IsThrowing" /* IsThrowing */]: false });
55
+ return triedNodeScope;
56
+ });
72
57
  }
73
58
  exports.assertGetOrCreateNodeScope = assertGetOrCreateNodeScope;
74
59
  // Recusrive deference of the identifier until it reaches the value node.
@@ -76,132 +61,138 @@ exports.assertGetOrCreateNodeScope = assertGetOrCreateNodeScope;
76
61
  function maybeDereferencedIdentifier(settings, nodeIdMapCollection, xorNode,
77
62
  // If a map is given, then it's mutated and returned.
78
63
  // Else create a new Map instance and return that instead.
79
- scopeById) {
80
- var _a, _b, _c, _d;
81
- if (scopeById === void 0) { scopeById = new Map(); }
82
- var trace = settings.traceManager.entry("Scope" /* Scope */, maybeDereferencedIdentifier.name, __1.TraceUtils.createXorNodeDetails(xorNode));
83
- parser_1.XorNodeUtils.assertIsIdentifier(xorNode);
84
- if (parser_1.XorNodeUtils.isContextXor(xorNode)) {
85
- trace.exit((_a = {}, _a["Result" /* Result */] = undefined, _a));
86
- return powerquery_parser_1.ResultUtils.boxOk(undefined);
87
- }
88
- var identifier = xorNode.node;
89
- var identifierLiteral;
90
- var isIdentifierRecurisve;
91
- switch (identifier.kind) {
92
- case "Identifier" /* Identifier */:
93
- identifierLiteral = identifier.literal;
94
- isIdentifierRecurisve = false;
95
- break;
96
- case "IdentifierExpression" /* IdentifierExpression */:
97
- identifierLiteral = identifier.identifier.literal;
98
- isIdentifierRecurisve = identifier.maybeInclusiveConstant !== undefined;
99
- break;
100
- default:
101
- throw powerquery_parser_1.Assert.isNever(identifier);
102
- }
103
- var triedNodeScope = assertGetOrCreateNodeScope(settings, nodeIdMapCollection, xorNode.node.id, scopeById);
104
- if (powerquery_parser_1.ResultUtils.isError(triedNodeScope)) {
105
- trace.exit((_b = {}, _b["Result" /* Result */] = triedNodeScope.kind, _b));
106
- return triedNodeScope;
107
- }
108
- var nodeScope = triedNodeScope.value;
109
- var maybeScopeItem = nodeScope.get(identifierLiteral);
110
- if (
111
- // If the identifier couldn't be found in the generated scope,
112
- // then either the scope generation is incorrect or it's an external identifier.
113
- (maybeScopeItem === null || maybeScopeItem === void 0 ? void 0 : maybeScopeItem.isRecursive) !== isIdentifierRecurisve) {
114
- trace.exit((_c = {}, _c["Result" /* Result */] = undefined, _c));
115
- return powerquery_parser_1.ResultUtils.boxOk(undefined);
116
- }
117
- var scopeItem = maybeScopeItem;
118
- var maybeNextXorNode;
119
- switch (scopeItem.kind) {
120
- case "Each" /* Each */:
121
- case "Parameter" /* Parameter */:
122
- case "Undefined" /* Undefined */:
123
- break;
124
- case "LetVariable" /* LetVariable */:
125
- case "RecordField" /* RecordField */:
126
- maybeNextXorNode = scopeItem.maybeValue;
127
- break;
128
- case "SectionMember" /* SectionMember */:
129
- maybeNextXorNode = scopeItem.maybeValue;
130
- break;
131
- default:
132
- throw powerquery_parser_1.Assert.isNever(scopeItem);
133
- }
134
- var result;
135
- if (maybeNextXorNode === undefined) {
136
- result = powerquery_parser_1.ResultUtils.boxOk(xorNode);
137
- }
138
- else if (parser_1.XorNodeUtils.isContextXor(maybeNextXorNode) ||
139
- (maybeNextXorNode.node.kind !== "Identifier" /* Identifier */ &&
140
- maybeNextXorNode.node.kind !== "IdentifierExpression" /* IdentifierExpression */)) {
141
- result = powerquery_parser_1.ResultUtils.boxOk(xorNode);
142
- }
143
- else {
144
- result = maybeDereferencedIdentifier(settings, nodeIdMapCollection, maybeNextXorNode, scopeById);
145
- }
146
- trace.exit((_d = {}, _d["Result" /* Result */] = result.kind, _d));
147
- return result;
64
+ scopeById = new Map()) {
65
+ return __awaiter(this, void 0, void 0, function* () {
66
+ const trace = settings.traceManager.entry("Scope" /* Scope */, maybeDereferencedIdentifier.name, __1.TraceUtils.createXorNodeDetails(xorNode));
67
+ parser_1.XorNodeUtils.assertIsIdentifier(xorNode);
68
+ if (parser_1.XorNodeUtils.isContextXor(xorNode)) {
69
+ trace.exit({ ["Result" /* Result */]: undefined });
70
+ return powerquery_parser_1.ResultUtils.boxOk(undefined);
71
+ }
72
+ const identifier = xorNode.node;
73
+ let identifierLiteral;
74
+ let isIdentifierRecurisve;
75
+ switch (identifier.kind) {
76
+ case "Identifier" /* Identifier */:
77
+ identifierLiteral = identifier.literal;
78
+ isIdentifierRecurisve = false;
79
+ break;
80
+ case "IdentifierExpression" /* IdentifierExpression */:
81
+ identifierLiteral = identifier.identifier.literal;
82
+ isIdentifierRecurisve = identifier.maybeInclusiveConstant !== undefined;
83
+ break;
84
+ default:
85
+ throw powerquery_parser_1.Assert.isNever(identifier);
86
+ }
87
+ const triedNodeScope = yield assertGetOrCreateNodeScope(settings, nodeIdMapCollection, xorNode.node.id, scopeById);
88
+ if (powerquery_parser_1.ResultUtils.isError(triedNodeScope)) {
89
+ trace.exit({ ["Result" /* Result */]: triedNodeScope.kind });
90
+ return triedNodeScope;
91
+ }
92
+ const nodeScope = triedNodeScope.value;
93
+ const maybeScopeItem = nodeScope.get(identifierLiteral);
94
+ if (
95
+ // If the identifier couldn't be found in the generated scope,
96
+ // then either the scope generation is incorrect or it's an external identifier.
97
+ (maybeScopeItem === null || maybeScopeItem === void 0 ? void 0 : maybeScopeItem.isRecursive) !== isIdentifierRecurisve) {
98
+ trace.exit({ ["Result" /* Result */]: undefined });
99
+ return powerquery_parser_1.ResultUtils.boxOk(undefined);
100
+ }
101
+ const scopeItem = maybeScopeItem;
102
+ let maybeNextXorNode;
103
+ switch (scopeItem.kind) {
104
+ case "Each" /* Each */:
105
+ case "Parameter" /* Parameter */:
106
+ case "Undefined" /* Undefined */:
107
+ break;
108
+ case "LetVariable" /* LetVariable */:
109
+ case "RecordField" /* RecordField */:
110
+ maybeNextXorNode = scopeItem.maybeValue;
111
+ break;
112
+ case "SectionMember" /* SectionMember */:
113
+ maybeNextXorNode = scopeItem.maybeValue;
114
+ break;
115
+ default:
116
+ throw powerquery_parser_1.Assert.isNever(scopeItem);
117
+ }
118
+ let result;
119
+ if (maybeNextXorNode === undefined) {
120
+ result = Promise.resolve(powerquery_parser_1.ResultUtils.boxOk(xorNode));
121
+ }
122
+ else if (parser_1.XorNodeUtils.isContextXor(maybeNextXorNode) ||
123
+ (maybeNextXorNode.node.kind !== "Identifier" /* Identifier */ &&
124
+ maybeNextXorNode.node.kind !== "IdentifierExpression" /* IdentifierExpression */)) {
125
+ result = Promise.resolve(powerquery_parser_1.ResultUtils.boxOk(xorNode));
126
+ }
127
+ else {
128
+ result = maybeDereferencedIdentifier(settings, nodeIdMapCollection, maybeNextXorNode, scopeById);
129
+ }
130
+ trace.exit();
131
+ return result;
132
+ });
148
133
  }
149
134
  exports.maybeDereferencedIdentifier = maybeDereferencedIdentifier;
150
135
  function inspectScope(settings, nodeIdMapCollection, ancestry,
151
136
  // scopeById may get mutated by adding new entries.
152
137
  scopeById) {
153
- var trace = settings.traceManager.entry("Scope" /* Scope */, inspectScope.name);
154
- var rootId = ancestry[0].node.id;
155
- // A scope for the given ancestry has already been generated.
156
- var maybeCached = scopeById.get(rootId);
157
- if (maybeCached !== undefined) {
138
+ return __awaiter(this, void 0, void 0, function* () {
139
+ const trace = settings.traceManager.entry("Scope" /* Scope */, inspectScope.name);
140
+ const rootId = ancestry[0].node.id;
141
+ // A scope for the given ancestry has already been generated.
142
+ const maybeCached = scopeById.get(rootId);
143
+ if (maybeCached !== undefined) {
144
+ trace.exit();
145
+ return scopeById;
146
+ }
147
+ // Store the delta between the given scope and what's found in a temporary map.
148
+ // This will prevent mutation in the given map if an error is thrown.
149
+ const scopeChanges = new Map();
150
+ const state = {
151
+ traceManager: settings.traceManager,
152
+ givenScope: scopeById,
153
+ deltaScope: scopeChanges,
154
+ ancestry,
155
+ nodeIdMapCollection,
156
+ ancestryIndex: 0,
157
+ };
158
+ // Build up the scope through a top-down inspection.
159
+ const numNodes = ancestry.length;
160
+ for (let ancestryIndex = numNodes - 1; ancestryIndex >= 0; ancestryIndex -= 1) {
161
+ state.ancestryIndex = ancestryIndex;
162
+ const xorNode = ancestry[ancestryIndex];
163
+ // eslint-disable-next-line no-await-in-loop
164
+ yield inspectNode(state, xorNode);
165
+ }
158
166
  trace.exit();
159
- return scopeById;
160
- }
161
- // Store the delta between the given scope and what's found in a temporary map.
162
- // This will prevent mutation in the given map if an error is thrown.
163
- var scopeChanges = new Map();
164
- var state = {
165
- traceManager: settings.traceManager,
166
- givenScope: scopeById,
167
- deltaScope: scopeChanges,
168
- ancestry: ancestry,
169
- nodeIdMapCollection: nodeIdMapCollection,
170
- ancestryIndex: 0,
171
- };
172
- // Build up the scope through a top-down inspection.
173
- var numNodes = ancestry.length;
174
- for (var ancestryIndex = numNodes - 1; ancestryIndex >= 0; ancestryIndex -= 1) {
175
- state.ancestryIndex = ancestryIndex;
176
- var xorNode = ancestry[ancestryIndex];
177
- inspectNode(state, xorNode);
178
- }
179
- trace.exit();
180
- return state.deltaScope;
167
+ return state.deltaScope;
168
+ });
181
169
  }
170
+ // eslint-disable-next-line require-await
182
171
  function inspectNode(state, xorNode) {
183
- var trace = state.traceManager.entry("Scope" /* Scope */, inspectNode.name, __1.TraceUtils.createXorNodeDetails(xorNode));
184
- switch (xorNode.node.kind) {
185
- case "EachExpression" /* EachExpression */:
186
- inspectEachExpression(state, xorNode);
187
- break;
188
- case "FunctionExpression" /* FunctionExpression */:
189
- inspectFunctionExpression(state, xorNode);
190
- break;
191
- case "LetExpression" /* LetExpression */:
192
- inspectLetExpression(state, xorNode);
193
- break;
194
- case "RecordExpression" /* RecordExpression */:
195
- case "RecordLiteral" /* RecordLiteral */:
196
- inspectRecordExpressionOrRecordLiteral(state, xorNode);
197
- break;
198
- case "Section" /* Section */:
199
- inspectSection(state, xorNode);
200
- break;
201
- default:
202
- localGetOrCreateNodeScope(state, xorNode.node.id, undefined);
203
- }
204
- trace.exit();
172
+ return __awaiter(this, void 0, void 0, function* () {
173
+ const trace = state.traceManager.entry("Scope" /* Scope */, inspectNode.name, __1.TraceUtils.createXorNodeDetails(xorNode));
174
+ switch (xorNode.node.kind) {
175
+ case "EachExpression" /* EachExpression */:
176
+ inspectEachExpression(state, xorNode);
177
+ break;
178
+ case "FunctionExpression" /* FunctionExpression */:
179
+ inspectFunctionExpression(state, xorNode);
180
+ break;
181
+ case "LetExpression" /* LetExpression */:
182
+ inspectLetExpression(state, xorNode);
183
+ break;
184
+ case "RecordExpression" /* RecordExpression */:
185
+ case "RecordLiteral" /* RecordLiteral */:
186
+ inspectRecordExpressionOrRecordLiteral(state, xorNode);
187
+ break;
188
+ case "Section" /* Section */:
189
+ inspectSection(state, xorNode);
190
+ break;
191
+ default:
192
+ localGetOrCreateNodeScope(state, xorNode.node.id, undefined);
193
+ }
194
+ trace.exit();
195
+ });
205
196
  }
206
197
  function inspectEachExpression(state, eachExpr) {
207
198
  parser_1.XorNodeUtils.assertIsNodeKind(eachExpr, "EachExpression" /* EachExpression */);
@@ -220,183 +211,147 @@ function inspectEachExpression(state, eachExpr) {
220
211
  function inspectFunctionExpression(state, fnExpr) {
221
212
  parser_1.XorNodeUtils.assertIsNodeKind(fnExpr, "FunctionExpression" /* FunctionExpression */);
222
213
  // Propegates the parent's scope.
223
- var nodeScope = localGetOrCreateNodeScope(state, fnExpr.node.id, undefined);
224
- var pseudoType = (0, pseudoFunctionExpressionType_1.pseudoFunctionExpressionType)(state.nodeIdMapCollection, fnExpr);
225
- var newEntries = pseudoType.parameters.map(function (parameter) {
226
- return [
227
- parameter.name.literal,
228
- {
229
- kind: "Parameter" /* Parameter */,
230
- id: parameter.id,
231
- isRecursive: false,
232
- name: parameter.name,
233
- isOptional: parameter.isOptional,
234
- isNullable: parameter.isNullable,
235
- maybeType: parameter.maybeType !== undefined
236
- ? language_1.TypeUtils.maybePrimitiveTypeConstantKindFromTypeKind(parameter.maybeType)
237
- : undefined,
238
- },
239
- ];
240
- });
214
+ const nodeScope = localGetOrCreateNodeScope(state, fnExpr.node.id, undefined);
215
+ const pseudoType = (0, pseudoFunctionExpressionType_1.pseudoFunctionExpressionType)(state.nodeIdMapCollection, fnExpr);
216
+ const newEntries = pseudoType.parameters.map((parameter) => [
217
+ parameter.name.literal,
218
+ {
219
+ kind: "Parameter" /* Parameter */,
220
+ id: parameter.id,
221
+ isRecursive: false,
222
+ name: parameter.name,
223
+ isOptional: parameter.isOptional,
224
+ isNullable: parameter.isNullable,
225
+ maybeType: parameter.maybeType !== undefined
226
+ ? language_1.TypeUtils.maybePrimitiveTypeConstantKindFromTypeKind(parameter.maybeType)
227
+ : undefined,
228
+ },
229
+ ]);
241
230
  expandChildScope(state, fnExpr, [3], newEntries, nodeScope);
242
231
  }
243
232
  function inspectLetExpression(state, letExpr) {
244
233
  parser_1.XorNodeUtils.assertIsNodeKind(letExpr, "LetExpression" /* LetExpression */);
245
234
  // Propegates the parent's scope.
246
- var nodeScope = localGetOrCreateNodeScope(state, letExpr.node.id, undefined);
247
- var keyValuePairs = parser_1.NodeIdMapIterator.iterLetExpression(state.nodeIdMapCollection, letExpr);
235
+ const nodeScope = localGetOrCreateNodeScope(state, letExpr.node.id, undefined);
236
+ const keyValuePairs = parser_1.NodeIdMapIterator.iterLetExpression(state.nodeIdMapCollection, letExpr);
248
237
  inspectKeyValuePairs(state, nodeScope, keyValuePairs, createLetVariableScopeItem);
249
238
  // Places the assignments from the 'let' into LetExpression.expression
250
- var newEntries = scopeItemsFromKeyValuePairs(keyValuePairs, -1, createLetVariableScopeItem);
239
+ const newEntries = scopeItemsFromKeyValuePairs(keyValuePairs, -1, createLetVariableScopeItem);
251
240
  expandChildScope(state, letExpr, [3], newEntries, nodeScope);
252
241
  }
253
242
  function inspectRecordExpressionOrRecordLiteral(state, record) {
254
243
  parser_1.XorNodeUtils.assertIsRecord(record);
255
244
  // Propegates the parent's scope.
256
- var nodeScope = localGetOrCreateNodeScope(state, record.node.id, undefined);
257
- var keyValuePairs = parser_1.NodeIdMapIterator.iterRecord(state.nodeIdMapCollection, record);
245
+ const nodeScope = localGetOrCreateNodeScope(state, record.node.id, undefined);
246
+ const keyValuePairs = parser_1.NodeIdMapIterator.iterRecord(state.nodeIdMapCollection, record);
258
247
  inspectKeyValuePairs(state, nodeScope, keyValuePairs, createRecordMemberScopeItem);
259
248
  }
260
249
  function inspectSection(state, section) {
261
- var e_1, _a;
262
250
  parser_1.XorNodeUtils.assertIsNodeKind(section, "Section" /* Section */);
263
- var keyValuePairs = parser_1.NodeIdMapIterator.iterSection(state.nodeIdMapCollection, section);
264
- try {
265
- for (var keyValuePairs_1 = __values(keyValuePairs), keyValuePairs_1_1 = keyValuePairs_1.next(); !keyValuePairs_1_1.done; keyValuePairs_1_1 = keyValuePairs_1.next()) {
266
- var kvp = keyValuePairs_1_1.value;
267
- if (kvp.maybeValue === undefined) {
268
- continue;
269
- }
270
- var newScopeItems = scopeItemsFromKeyValuePairs(keyValuePairs, kvp.key.id, createSectionMemberScopeItem);
271
- if (newScopeItems.length !== 0) {
272
- expandScope(state, kvp.maybeValue, newScopeItems, new Map());
273
- }
251
+ const keyValuePairs = parser_1.NodeIdMapIterator.iterSection(state.nodeIdMapCollection, section);
252
+ for (const kvp of keyValuePairs) {
253
+ if (kvp.maybeValue === undefined) {
254
+ continue;
274
255
  }
275
- }
276
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
277
- finally {
278
- try {
279
- if (keyValuePairs_1_1 && !keyValuePairs_1_1.done && (_a = keyValuePairs_1.return)) _a.call(keyValuePairs_1);
256
+ const newScopeItems = scopeItemsFromKeyValuePairs(keyValuePairs, kvp.key.id, createSectionMemberScopeItem);
257
+ if (newScopeItems.length !== 0) {
258
+ expandScope(state, kvp.maybeValue, newScopeItems, new Map());
280
259
  }
281
- finally { if (e_1) throw e_1.error; }
282
260
  }
283
261
  }
284
- // Expands the scope of the value portion for each key value pair.
262
+ // Expands the scope on the value part of the key value pair.
285
263
  function inspectKeyValuePairs(state, parentScope, keyValuePairs, createFn) {
286
- var e_2, _a;
287
- try {
288
- for (var keyValuePairs_2 = __values(keyValuePairs), keyValuePairs_2_1 = keyValuePairs_2.next(); !keyValuePairs_2_1.done; keyValuePairs_2_1 = keyValuePairs_2.next()) {
289
- var kvp = keyValuePairs_2_1.value;
290
- if (kvp.maybeValue === undefined) {
291
- continue;
292
- }
293
- var newScopeItems = scopeItemsFromKeyValuePairs(keyValuePairs, kvp.key.id, createFn);
294
- if (newScopeItems.length !== 0) {
295
- expandScope(state, kvp.maybeValue, newScopeItems, parentScope);
296
- }
264
+ for (const kvp of keyValuePairs) {
265
+ if (kvp.maybeValue === undefined) {
266
+ continue;
297
267
  }
298
- }
299
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
300
- finally {
301
- try {
302
- if (keyValuePairs_2_1 && !keyValuePairs_2_1.done && (_a = keyValuePairs_2.return)) _a.call(keyValuePairs_2);
268
+ const newScopeItems = scopeItemsFromKeyValuePairs(keyValuePairs, kvp.key.id, createFn);
269
+ if (newScopeItems.length !== 0) {
270
+ expandScope(state, kvp.maybeValue, newScopeItems, parentScope);
303
271
  }
304
- finally { if (e_2) throw e_2.error; }
305
272
  }
306
273
  }
307
274
  function expandScope(state, xorNode, newEntries, maybeDefaultScope) {
308
- var e_3, _a;
309
- var nodeScope = localGetOrCreateNodeScope(state, xorNode.node.id, maybeDefaultScope);
310
- try {
311
- for (var newEntries_1 = __values(newEntries), newEntries_1_1 = newEntries_1.next(); !newEntries_1_1.done; newEntries_1_1 = newEntries_1.next()) {
312
- var _b = __read(newEntries_1_1.value, 2), key = _b[0], value = _b[1];
313
- nodeScope.set(key, value);
314
- }
315
- }
316
- catch (e_3_1) { e_3 = { error: e_3_1 }; }
317
- finally {
318
- try {
319
- if (newEntries_1_1 && !newEntries_1_1.done && (_a = newEntries_1.return)) _a.call(newEntries_1);
320
- }
321
- finally { if (e_3) throw e_3.error; }
275
+ const nodeScope = localGetOrCreateNodeScope(state, xorNode.node.id, maybeDefaultScope);
276
+ for (const [key, value] of newEntries) {
277
+ nodeScope.set(value.isRecursive ? `@${key}` : key, value);
322
278
  }
323
279
  }
324
280
  function expandChildScope(state, parent, childAttributeIds, newEntries, maybeDefaultScope) {
325
- var e_4, _a;
326
- var nodeIdMapCollection = state.nodeIdMapCollection;
327
- var parentId = parent.node.id;
328
- try {
329
- // TODO: optimize this
330
- for (var childAttributeIds_1 = __values(childAttributeIds), childAttributeIds_1_1 = childAttributeIds_1.next(); !childAttributeIds_1_1.done; childAttributeIds_1_1 = childAttributeIds_1.next()) {
331
- var attributeId = childAttributeIds_1_1.value;
332
- var maybeChild = parser_1.NodeIdMapUtils.maybeNthChild(nodeIdMapCollection, parentId, attributeId);
333
- if (maybeChild !== undefined) {
334
- expandScope(state, maybeChild, newEntries, maybeDefaultScope);
335
- }
281
+ const nodeIdMapCollection = state.nodeIdMapCollection;
282
+ const parentId = parent.node.id;
283
+ // TODO: optimize this
284
+ for (const attributeId of childAttributeIds) {
285
+ const maybeChild = parser_1.NodeIdMapUtils.maybeNthChild(nodeIdMapCollection, parentId, attributeId);
286
+ if (maybeChild !== undefined) {
287
+ expandScope(state, maybeChild, newEntries, maybeDefaultScope);
336
288
  }
337
289
  }
338
- catch (e_4_1) { e_4 = { error: e_4_1 }; }
339
- finally {
340
- try {
341
- if (childAttributeIds_1_1 && !childAttributeIds_1_1.done && (_a = childAttributeIds_1.return)) _a.call(childAttributeIds_1);
342
- }
343
- finally { if (e_4) throw e_4.error; }
344
- }
345
290
  }
346
291
  // Any operation done on a scope should first invoke `scopeFor` for data integrity.
347
292
  function localGetOrCreateNodeScope(state, nodeId, maybeDefaultScope) {
293
+ const trace = state.traceManager.entry("Scope" /* Scope */, localGetOrCreateNodeScope.name, {
294
+ nodeId,
295
+ });
348
296
  // If scopeFor has already been called then there should be a nodeId in the deltaScope.
349
- var maybeDeltaScope = state.deltaScope.get(nodeId);
297
+ const maybeDeltaScope = state.deltaScope.get(nodeId);
350
298
  if (maybeDeltaScope !== undefined) {
299
+ trace.exit({ ["Result" /* Result */]: "deltaScope cache hit" });
351
300
  return maybeDeltaScope;
352
301
  }
353
302
  // If given a scope with an existing value then assume it's valid.
354
303
  // Cache and return.
355
- var maybeGivenScope = state.givenScope.get(nodeId);
304
+ const maybeGivenScope = state.givenScope.get(nodeId);
356
305
  if (maybeGivenScope !== undefined) {
357
- var shallowCopy = new Map(maybeGivenScope.entries());
306
+ const shallowCopy = new Map(maybeGivenScope.entries());
358
307
  state.deltaScope.set(nodeId, shallowCopy);
308
+ trace.exit({ ["Result" /* Result */]: "givenScope cache hit" });
359
309
  return shallowCopy;
360
310
  }
361
311
  if (maybeDefaultScope !== undefined) {
362
- var shallowCopy = new Map(maybeDefaultScope.entries());
312
+ const shallowCopy = new Map(maybeDefaultScope.entries());
363
313
  state.deltaScope.set(nodeId, shallowCopy);
314
+ trace.exit({ ["Result" /* Result */]: "defaultScope entry" });
364
315
  return shallowCopy;
365
316
  }
366
317
  // Default to a parent's scope if the node has a parent.
367
- var maybeParent = parser_1.NodeIdMapUtils.maybeParentXor(state.nodeIdMapCollection, nodeId);
318
+ const maybeParent = parser_1.NodeIdMapUtils.maybeParentXor(state.nodeIdMapCollection, nodeId);
368
319
  if (maybeParent !== undefined) {
369
- var parentNodeId = maybeParent.node.id;
370
- var maybeParentDeltaScope = state.deltaScope.get(parentNodeId);
320
+ const parentNodeId = maybeParent.node.id;
321
+ const maybeParentDeltaScope = state.deltaScope.get(parentNodeId);
371
322
  if (maybeParentDeltaScope !== undefined) {
372
- var shallowCopy = new Map(maybeParentDeltaScope.entries());
323
+ const shallowCopy = new Map(maybeParentDeltaScope.entries());
373
324
  state.deltaScope.set(nodeId, shallowCopy);
325
+ trace.exit({ ["Result" /* Result */]: "parent deltaScope hit" });
374
326
  return shallowCopy;
375
327
  }
376
- var maybeParentGivenScope = state.givenScope.get(parentNodeId);
328
+ const maybeParentGivenScope = state.givenScope.get(parentNodeId);
377
329
  if (maybeParentGivenScope !== undefined) {
378
- var shallowCopy = new Map(maybeParentGivenScope.entries());
330
+ const shallowCopy = new Map(maybeParentGivenScope.entries());
379
331
  state.deltaScope.set(nodeId, shallowCopy);
332
+ trace.exit({ ["Result" /* Result */]: "parent givenScope hit" });
380
333
  return shallowCopy;
381
334
  }
382
335
  }
383
336
  // The node has no parent or it hasn't been visited.
384
- var newScope = new Map();
337
+ const newScope = new Map();
385
338
  state.deltaScope.set(nodeId, newScope);
339
+ trace.exit({ ["Result" /* Result */]: "set new entry" });
386
340
  return newScope;
387
341
  }
388
342
  function scopeItemsFromKeyValuePairs(keyValuePairs, ancestorKeyNodeId, createFn) {
389
343
  return keyValuePairs
390
- .filter(function (keyValuePair) { return keyValuePair.maybeValue !== undefined; })
391
- .map(function (keyValuePair) {
392
- return [keyValuePair.keyLiteral, createFn(keyValuePair, ancestorKeyNodeId === keyValuePair.key.id)];
393
- });
344
+ .filter((keyValuePair) => keyValuePair.maybeValue !== undefined)
345
+ .map((keyValuePair) => [
346
+ keyValuePair.keyLiteral,
347
+ createFn(keyValuePair, ancestorKeyNodeId === keyValuePair.key.id),
348
+ ]);
394
349
  }
395
350
  function createSectionMemberScopeItem(keyValuePair, isRecursive) {
396
351
  return {
397
352
  kind: "SectionMember" /* SectionMember */,
398
353
  id: keyValuePair.source.node.id,
399
- isRecursive: isRecursive,
354
+ isRecursive,
400
355
  key: keyValuePair.key,
401
356
  maybeValue: keyValuePair.maybeValue,
402
357
  };
@@ -405,7 +360,7 @@ function createLetVariableScopeItem(keyValuePair, isRecursive) {
405
360
  return {
406
361
  kind: "LetVariable" /* LetVariable */,
407
362
  id: keyValuePair.source.node.id,
408
- isRecursive: isRecursive,
363
+ isRecursive,
409
364
  key: keyValuePair.key,
410
365
  maybeValue: keyValuePair.maybeValue,
411
366
  };
@@ -414,7 +369,7 @@ function createRecordMemberScopeItem(keyValuePair, isRecursive) {
414
369
  return {
415
370
  kind: "RecordField" /* RecordField */,
416
371
  id: keyValuePair.source.node.id,
417
- isRecursive: isRecursive,
372
+ isRecursive,
418
373
  key: keyValuePair.key,
419
374
  maybeValue: keyValuePair.maybeValue,
420
375
  };