@microsoft/powerquery-language-services 0.10.6 → 0.11.3

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 (419) hide show
  1. package/lib/powerquery-language-services/analysis/analysis.d.ts +21 -21
  2. package/lib/powerquery-language-services/analysis/analysis.js +4 -4
  3. package/lib/powerquery-language-services/analysis/analysisBase.d.ts +53 -53
  4. package/lib/powerquery-language-services/analysis/analysisBase.js +741 -710
  5. package/lib/powerquery-language-services/analysis/analysisBase.js.map +1 -1
  6. package/lib/powerquery-language-services/analysis/analysisSettings.d.ts +14 -14
  7. package/lib/powerquery-language-services/analysis/analysisSettings.js +4 -4
  8. package/lib/powerquery-language-services/analysis/analysisUtils.d.ts +4 -4
  9. package/lib/powerquery-language-services/analysis/analysisUtils.js +26 -28
  10. package/lib/powerquery-language-services/analysis/analysisUtils.js.map +1 -1
  11. package/lib/powerquery-language-services/analysis/documentAnalysis.d.ts +8 -8
  12. package/lib/powerquery-language-services/analysis/documentAnalysis.js +15 -15
  13. package/lib/powerquery-language-services/analysis/index.d.ts +5 -5
  14. package/lib/powerquery-language-services/analysis/index.js +43 -10
  15. package/lib/powerquery-language-services/analysis/index.js.map +1 -1
  16. package/lib/powerquery-language-services/analysis/memoizedAnalysis.d.ts +18 -18
  17. package/lib/powerquery-language-services/analysis/memoizedAnalysis.js +51 -65
  18. package/lib/powerquery-language-services/analysis/memoizedAnalysis.js.map +1 -1
  19. package/lib/powerquery-language-services/commonTypes.d.ts +8 -8
  20. package/lib/powerquery-language-services/commonTypes.js +33 -33
  21. package/lib/powerquery-language-services/commonTypesUtils.d.ts +4 -4
  22. package/lib/powerquery-language-services/commonTypesUtils.js +18 -19
  23. package/lib/powerquery-language-services/commonTypesUtils.js.map +1 -1
  24. package/lib/powerquery-language-services/diagnosticErrorCode.d.ts +8 -8
  25. package/lib/powerquery-language-services/diagnosticErrorCode.js +14 -14
  26. package/lib/powerquery-language-services/diagnosticErrorCode.js.map +1 -1
  27. package/lib/powerquery-language-services/documentSymbols.d.ts +3 -3
  28. package/lib/powerquery-language-services/documentSymbols.js +80 -83
  29. package/lib/powerquery-language-services/documentSymbols.js.map +1 -1
  30. package/lib/powerquery-language-services/externalType/externalType.d.ts +21 -21
  31. package/lib/powerquery-language-services/externalType/externalType.js +16 -16
  32. package/lib/powerquery-language-services/externalType/externalType.js.map +1 -1
  33. package/lib/powerquery-language-services/externalType/externalTypeUtils.d.ts +5 -5
  34. package/lib/powerquery-language-services/externalType/externalTypeUtils.js +32 -33
  35. package/lib/powerquery-language-services/externalType/externalTypeUtils.js.map +1 -1
  36. package/lib/powerquery-language-services/externalType/index.d.ts +2 -2
  37. package/lib/powerquery-language-services/externalType/index.js +40 -7
  38. package/lib/powerquery-language-services/externalType/index.js.map +1 -1
  39. package/lib/powerquery-language-services/formatter.d.ts +5 -5
  40. package/lib/powerquery-language-services/formatter.js +72 -46
  41. package/lib/powerquery-language-services/formatter.js.map +1 -1
  42. package/lib/powerquery-language-services/index.d.ts +20 -20
  43. package/lib/powerquery-language-services/index.js +64 -42
  44. package/lib/powerquery-language-services/index.js.map +1 -1
  45. package/lib/powerquery-language-services/inspection/activeNode/activeNode.d.ts +43 -43
  46. package/lib/powerquery-language-services/inspection/activeNode/activeNode.js +17 -17
  47. package/lib/powerquery-language-services/inspection/activeNode/activeNode.js.map +1 -1
  48. package/lib/powerquery-language-services/inspection/activeNode/activeNodeUtils.d.ts +11 -11
  49. package/lib/powerquery-language-services/inspection/activeNode/activeNodeUtils.js +351 -351
  50. package/lib/powerquery-language-services/inspection/activeNode/activeNodeUtils.js.map +1 -1
  51. package/lib/powerquery-language-services/inspection/activeNode/index.d.ts +3 -3
  52. package/lib/powerquery-language-services/inspection/activeNode/index.js +44 -22
  53. package/lib/powerquery-language-services/inspection/activeNode/index.js.map +1 -1
  54. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteFieldAccess.d.ts +8 -8
  55. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteFieldAccess.js +281 -258
  56. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteFieldAccess.js.map +1 -1
  57. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteItem/autocompleteItem.d.ts +6 -6
  58. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteItem/autocompleteItem.js +4 -4
  59. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteItem/autocompleteItemUtils.d.ts +8 -8
  60. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteItem/autocompleteItemUtils.js +78 -79
  61. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteItem/autocompleteItemUtils.js.map +1 -1
  62. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteItem/index.d.ts +2 -2
  63. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteItem/index.js +43 -21
  64. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteItem/index.js.map +1 -1
  65. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeyword.d.ts +8 -8
  66. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeyword.js +217 -197
  67. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeyword.js.map +1 -1
  68. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordDefault.d.ts +3 -3
  69. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordDefault.js +86 -87
  70. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordDefault.js.map +1 -1
  71. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordErrorHandlingExpression.d.ts +3 -3
  72. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordErrorHandlingExpression.js +53 -54
  73. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordErrorHandlingExpression.js.map +1 -1
  74. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordIdentifierPairedExpression.d.ts +3 -3
  75. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordIdentifierPairedExpression.js +29 -30
  76. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordIdentifierPairedExpression.js.map +1 -1
  77. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordLetExpression.d.ts +3 -3
  78. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordLetExpression.js +58 -70
  79. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordLetExpression.js.map +1 -1
  80. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordListExpression.d.ts +3 -3
  81. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordListExpression.js +38 -39
  82. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordListExpression.js.map +1 -1
  83. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordSectionMember.d.ts +3 -3
  84. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordSectionMember.js +40 -41
  85. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordSectionMember.js.map +1 -1
  86. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordTrailingText.d.ts +3 -3
  87. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordTrailingText.js +63 -31
  88. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordTrailingText.js.map +1 -1
  89. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/common.d.ts +3 -3
  90. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/common.js +30 -39
  91. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/common.js.map +1 -1
  92. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/commonTypes.d.ts +11 -11
  93. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/commonTypes.js +4 -4
  94. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/index.d.ts +1 -1
  95. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/index.js +7 -7
  96. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteLanguageConstant.d.ts +6 -6
  97. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteLanguageConstant.js +190 -188
  98. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteLanguageConstant.js.map +1 -1
  99. package/lib/powerquery-language-services/inspection/autocomplete/autocompletePrimitiveType.d.ts +6 -6
  100. package/lib/powerquery-language-services/inspection/autocomplete/autocompletePrimitiveType.js +334 -335
  101. package/lib/powerquery-language-services/inspection/autocomplete/autocompletePrimitiveType.js.map +1 -1
  102. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteUtils.d.ts +2 -2
  103. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteUtils.js +19 -20
  104. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteUtils.js.map +1 -1
  105. package/lib/powerquery-language-services/inspection/autocomplete/commonTypes.d.ts +27 -27
  106. package/lib/powerquery-language-services/inspection/autocomplete/commonTypes.js +4 -4
  107. package/lib/powerquery-language-services/inspection/autocomplete/index.d.ts +6 -6
  108. package/lib/powerquery-language-services/inspection/autocomplete/index.js +47 -25
  109. package/lib/powerquery-language-services/inspection/autocomplete/index.js.map +1 -1
  110. package/lib/powerquery-language-services/inspection/autocomplete/task.d.ts +6 -6
  111. package/lib/powerquery-language-services/inspection/autocomplete/task.js +68 -44
  112. package/lib/powerquery-language-services/inspection/autocomplete/task.js.map +1 -1
  113. package/lib/powerquery-language-services/inspection/autocomplete/trailingToken.d.ts +7 -7
  114. package/lib/powerquery-language-services/inspection/autocomplete/trailingToken.js +4 -4
  115. package/lib/powerquery-language-services/inspection/autocomplete/trailingTokenUtils.d.ts +4 -4
  116. package/lib/powerquery-language-services/inspection/autocomplete/trailingTokenUtils.js +20 -18
  117. package/lib/powerquery-language-services/inspection/autocomplete/trailingTokenUtils.js.map +1 -1
  118. package/lib/powerquery-language-services/inspection/commonTypes.d.ts +20 -20
  119. package/lib/powerquery-language-services/inspection/commonTypes.js +4 -4
  120. package/lib/powerquery-language-services/inspection/dereferencedIdentifier/dereferencedIdentifier.d.ts +37 -37
  121. package/lib/powerquery-language-services/inspection/dereferencedIdentifier/dereferencedIdentifier.js +13 -13
  122. package/lib/powerquery-language-services/inspection/dereferencedIdentifier/dereferencedIdentifier.js.map +1 -1
  123. package/lib/powerquery-language-services/inspection/dereferencedIdentifier/dereferencedIdentifierUtils.d.ts +6 -6
  124. package/lib/powerquery-language-services/inspection/dereferencedIdentifier/dereferencedIdentifierUtils.js +244 -221
  125. package/lib/powerquery-language-services/inspection/dereferencedIdentifier/dereferencedIdentifierUtils.js.map +1 -1
  126. package/lib/powerquery-language-services/inspection/dereferencedIdentifier/index.d.ts +2 -2
  127. package/lib/powerquery-language-services/inspection/dereferencedIdentifier/index.js +41 -19
  128. package/lib/powerquery-language-services/inspection/dereferencedIdentifier/index.js.map +1 -1
  129. package/lib/powerquery-language-services/inspection/expectedType.d.ts +8 -8
  130. package/lib/powerquery-language-services/inspection/expectedType.js +420 -388
  131. package/lib/powerquery-language-services/inspection/expectedType.js.map +1 -1
  132. package/lib/powerquery-language-services/inspection/index.d.ts +9 -9
  133. package/lib/powerquery-language-services/inspection/index.js +27 -27
  134. package/lib/powerquery-language-services/inspection/invokeExpression/common.d.ts +16 -16
  135. package/lib/powerquery-language-services/inspection/invokeExpression/common.js +4 -4
  136. package/lib/powerquery-language-services/inspection/invokeExpression/currentInvokeExpression.d.ts +12 -12
  137. package/lib/powerquery-language-services/inspection/invokeExpression/currentInvokeExpression.js +137 -106
  138. package/lib/powerquery-language-services/inspection/invokeExpression/currentInvokeExpression.js.map +1 -1
  139. package/lib/powerquery-language-services/inspection/invokeExpression/index.d.ts +3 -3
  140. package/lib/powerquery-language-services/inspection/invokeExpression/index.js +20 -20
  141. package/lib/powerquery-language-services/inspection/invokeExpression/invokeExpression.d.ts +8 -8
  142. package/lib/powerquery-language-services/inspection/invokeExpression/invokeExpression.js +141 -119
  143. package/lib/powerquery-language-services/inspection/invokeExpression/invokeExpression.js.map +1 -1
  144. package/lib/powerquery-language-services/inspection/pseudoFunctionExpressionType.d.ts +11 -11
  145. package/lib/powerquery-language-services/inspection/pseudoFunctionExpressionType.js +57 -58
  146. package/lib/powerquery-language-services/inspection/pseudoFunctionExpressionType.js.map +1 -1
  147. package/lib/powerquery-language-services/inspection/scope/index.d.ts +3 -3
  148. package/lib/powerquery-language-services/inspection/scope/index.js +44 -22
  149. package/lib/powerquery-language-services/inspection/scope/index.js.map +1 -1
  150. package/lib/powerquery-language-services/inspection/scope/scope.d.ts +49 -46
  151. package/lib/powerquery-language-services/inspection/scope/scope.js +14 -14
  152. package/lib/powerquery-language-services/inspection/scope/scope.js.map +1 -1
  153. package/lib/powerquery-language-services/inspection/scope/scopeInspection.d.ts +7 -7
  154. package/lib/powerquery-language-services/inspection/scope/scopeInspection.js +372 -327
  155. package/lib/powerquery-language-services/inspection/scope/scopeInspection.js.map +1 -1
  156. package/lib/powerquery-language-services/inspection/scope/scopeUtils.d.ts +17 -17
  157. package/lib/powerquery-language-services/inspection/scope/scopeUtils.js +125 -104
  158. package/lib/powerquery-language-services/inspection/scope/scopeUtils.js.map +1 -1
  159. package/lib/powerquery-language-services/inspection/task.d.ts +28 -28
  160. package/lib/powerquery-language-services/inspection/task.js +196 -160
  161. package/lib/powerquery-language-services/inspection/task.js.map +1 -1
  162. package/lib/powerquery-language-services/inspection/type/index.d.ts +3 -3
  163. package/lib/powerquery-language-services/inspection/type/index.js +44 -22
  164. package/lib/powerquery-language-services/inspection/type/index.js.map +1 -1
  165. package/lib/powerquery-language-services/inspection/type/inspectType/common.d.ts +14 -14
  166. package/lib/powerquery-language-services/inspection/type/inspectType/common.js +362 -353
  167. package/lib/powerquery-language-services/inspection/type/inspectType/common.js.map +1 -1
  168. package/lib/powerquery-language-services/inspection/type/inspectType/examineFieldSpecificationList.d.ts +8 -8
  169. package/lib/powerquery-language-services/inspection/type/inspectType/examineFieldSpecificationList.js +28 -43
  170. package/lib/powerquery-language-services/inspection/type/inspectType/examineFieldSpecificationList.js.map +1 -1
  171. package/lib/powerquery-language-services/inspection/type/inspectType/index.d.ts +1 -1
  172. package/lib/powerquery-language-services/inspection/type/inspectType/index.js +19 -19
  173. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeConstant.d.ts +3 -3
  174. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeConstant.js +57 -57
  175. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeConstant.js.map +1 -1
  176. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeEachExpression.d.ts +4 -4
  177. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeEachExpression.js +26 -39
  178. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeEachExpression.js.map +1 -1
  179. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeErrorHandlingExpression.d.ts +4 -4
  180. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeErrorHandlingExpression.js +82 -62
  181. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeErrorHandlingExpression.js.map +1 -1
  182. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/common.d.ts +4 -4
  183. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/common.js +55 -69
  184. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/common.js.map +1 -1
  185. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/inspectTypeFieldProjection.d.ts +4 -4
  186. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/inspectTypeFieldProjection.js +128 -103
  187. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/inspectTypeFieldProjection.js.map +1 -1
  188. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/inspectTypeFieldSelector.d.ts +4 -4
  189. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/inspectTypeFieldSelector.js +63 -75
  190. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/inspectTypeFieldSelector.js.map +1 -1
  191. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFieldSpecification.d.ts +4 -4
  192. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFieldSpecification.js +21 -34
  193. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFieldSpecification.js.map +1 -1
  194. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFunctionExpression.d.ts +4 -4
  195. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFunctionExpression.js +74 -87
  196. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFunctionExpression.js.map +1 -1
  197. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFunctionType.d.ts +4 -4
  198. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFunctionType.js +85 -65
  199. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFunctionType.js.map +1 -1
  200. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeIdentifier.d.ts +4 -4
  201. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeIdentifier.js +25 -38
  202. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeIdentifier.js.map +1 -1
  203. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeIdentifierExpression.d.ts +4 -4
  204. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeIdentifierExpression.js +25 -38
  205. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeIdentifierExpression.js.map +1 -1
  206. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeIfExpression.d.ts +4 -4
  207. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeIfExpression.js +46 -61
  208. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeIfExpression.js.map +1 -1
  209. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeInvokeExpression.d.ts +4 -4
  210. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeInvokeExpression.js +69 -84
  211. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeInvokeExpression.js.map +1 -1
  212. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeList.d.ts +4 -4
  213. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeList.js +37 -50
  214. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeList.js.map +1 -1
  215. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeListType.d.ts +4 -4
  216. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeListType.js +43 -56
  217. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeListType.js.map +1 -1
  218. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeLiteralExpression.d.ts +4 -4
  219. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeLiteralExpression.js +44 -44
  220. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeLiteralExpression.js.map +1 -1
  221. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeNullCoalescingExpression.d.ts +4 -4
  222. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeNullCoalescingExpression.js +36 -49
  223. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeNullCoalescingExpression.js.map +1 -1
  224. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeParameter.d.ts +4 -4
  225. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeParameter.js +23 -33
  226. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeParameter.js.map +1 -1
  227. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypePrimitiveType.d.ts +4 -4
  228. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypePrimitiveType.js +25 -26
  229. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypePrimitiveType.js.map +1 -1
  230. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRangeExpression.d.ts +4 -4
  231. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRangeExpression.js +53 -66
  232. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRangeExpression.js.map +1 -1
  233. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRecord.d.ts +4 -4
  234. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRecord.js +45 -58
  235. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRecord.js.map +1 -1
  236. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRecordType.d.ts +4 -4
  237. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRecordType.js +42 -50
  238. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRecordType.js.map +1 -1
  239. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRecursivePrimaryExpression.d.ts +4 -4
  240. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRecursivePrimaryExpression.js +43 -56
  241. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRecursivePrimaryExpression.js.map +1 -1
  242. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeState/index.d.ts +2 -2
  243. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeState/index.js +41 -19
  244. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeState/index.js.map +1 -1
  245. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeState/inspectTypeState.d.ts +9 -9
  246. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeState/inspectTypeState.js +4 -4
  247. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeState/inspectTypeStateUtils.d.ts +7 -7
  248. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeState/inspectTypeStateUtils.js +41 -42
  249. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeState/inspectTypeStateUtils.js.map +1 -1
  250. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeTBinOpExpression.d.ts +8 -8
  251. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeTBinOpExpression.js +326 -292
  252. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeTBinOpExpression.js.map +1 -1
  253. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeTableType.d.ts +4 -4
  254. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeTableType.js +51 -59
  255. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeTableType.js.map +1 -1
  256. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeUnaryExpression.d.ts +4 -4
  257. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeUnaryExpression.js +76 -89
  258. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeUnaryExpression.js.map +1 -1
  259. package/lib/powerquery-language-services/inspection/type/task.d.ts +10 -10
  260. package/lib/powerquery-language-services/inspection/type/task.js +49 -65
  261. package/lib/powerquery-language-services/inspection/type/task.js.map +1 -1
  262. package/lib/powerquery-language-services/inspection/typeCache/index.d.ts +2 -2
  263. package/lib/powerquery-language-services/inspection/typeCache/index.js +43 -21
  264. package/lib/powerquery-language-services/inspection/typeCache/index.js.map +1 -1
  265. package/lib/powerquery-language-services/inspection/typeCache/typeCache.d.ts +7 -7
  266. package/lib/powerquery-language-services/inspection/typeCache/typeCache.js +4 -4
  267. package/lib/powerquery-language-services/inspection/typeCache/typeCacheUtils.d.ts +2 -2
  268. package/lib/powerquery-language-services/inspection/typeCache/typeCacheUtils.js +12 -13
  269. package/lib/powerquery-language-services/inspection/typeCache/typeCacheUtils.js.map +1 -1
  270. package/lib/powerquery-language-services/inspectionSettings.d.ts +13 -13
  271. package/lib/powerquery-language-services/inspectionSettings.js +12 -12
  272. package/lib/powerquery-language-services/inspectionSettings.js.map +1 -1
  273. package/lib/powerquery-language-services/inspectionUtils.d.ts +16 -16
  274. package/lib/powerquery-language-services/inspectionUtils.js +142 -149
  275. package/lib/powerquery-language-services/inspectionUtils.js.map +1 -1
  276. package/lib/powerquery-language-services/jaroWinkler.d.ts +3 -3
  277. package/lib/powerquery-language-services/jaroWinkler.js +102 -103
  278. package/lib/powerquery-language-services/jaroWinkler.js.map +1 -1
  279. package/lib/powerquery-language-services/languageServiceUtils.d.ts +2 -2
  280. package/lib/powerquery-language-services/languageServiceUtils.js +53 -39
  281. package/lib/powerquery-language-services/languageServiceUtils.js.map +1 -1
  282. package/lib/powerquery-language-services/library/index.d.ts +5 -5
  283. package/lib/powerquery-language-services/library/index.js +43 -10
  284. package/lib/powerquery-language-services/library/index.js.map +1 -1
  285. package/lib/powerquery-language-services/library/library.d.ts +45 -45
  286. package/lib/powerquery-language-services/library/library.js +19 -19
  287. package/lib/powerquery-language-services/library/library.js.map +1 -1
  288. package/lib/powerquery-language-services/library/libraryDefinitionUtils.d.ts +21 -21
  289. package/lib/powerquery-language-services/library/libraryDefinitionUtils.js +106 -107
  290. package/lib/powerquery-language-services/library/libraryDefinitionUtils.js.map +1 -1
  291. package/lib/powerquery-language-services/library/librarySymbol.d.ts +33 -33
  292. package/lib/powerquery-language-services/library/librarySymbol.js +4 -4
  293. package/lib/powerquery-language-services/library/librarySymbolUtils.d.ts +34 -34
  294. package/lib/powerquery-language-services/library/librarySymbolUtils.js +258 -261
  295. package/lib/powerquery-language-services/library/librarySymbolUtils.js.map +1 -1
  296. package/lib/powerquery-language-services/library/libraryUtils.d.ts +8 -8
  297. package/lib/powerquery-language-services/library/libraryUtils.js +48 -49
  298. package/lib/powerquery-language-services/library/libraryUtils.js.map +1 -1
  299. package/lib/powerquery-language-services/localization/index.d.ts +2 -2
  300. package/lib/powerquery-language-services/localization/index.js +43 -21
  301. package/lib/powerquery-language-services/localization/index.js.map +1 -1
  302. package/lib/powerquery-language-services/localization/localization.d.ts +10 -10
  303. package/lib/powerquery-language-services/localization/localization.js +51 -51
  304. package/lib/powerquery-language-services/localization/localization.js.map +1 -1
  305. package/lib/powerquery-language-services/localization/localizationUtils.d.ts +2 -2
  306. package/lib/powerquery-language-services/localization/localizationUtils.js +7 -9
  307. package/lib/powerquery-language-services/localization/localizationUtils.js.map +1 -1
  308. package/lib/powerquery-language-services/localization/templates/templates.bg-BG.json +12 -12
  309. package/lib/powerquery-language-services/localization/templates/templates.ca-ES.json +12 -12
  310. package/lib/powerquery-language-services/localization/templates/templates.cs-CZ.json +12 -12
  311. package/lib/powerquery-language-services/localization/templates/templates.da-DK.json +12 -12
  312. package/lib/powerquery-language-services/localization/templates/templates.de-DE.json +12 -12
  313. package/lib/powerquery-language-services/localization/templates/templates.el-GR.json +12 -12
  314. package/lib/powerquery-language-services/localization/templates/templates.es-ES.json +12 -12
  315. package/lib/powerquery-language-services/localization/templates/templates.et-EE.json +12 -12
  316. package/lib/powerquery-language-services/localization/templates/templates.eu-ES.json +12 -12
  317. package/lib/powerquery-language-services/localization/templates/templates.fi-FI.json +12 -12
  318. package/lib/powerquery-language-services/localization/templates/templates.fr-FR.json +12 -12
  319. package/lib/powerquery-language-services/localization/templates/templates.gl-ES.json +12 -12
  320. package/lib/powerquery-language-services/localization/templates/templates.hi-IN.json +12 -12
  321. package/lib/powerquery-language-services/localization/templates/templates.hr-HR.json +12 -12
  322. package/lib/powerquery-language-services/localization/templates/templates.hu-HU.json +12 -12
  323. package/lib/powerquery-language-services/localization/templates/templates.id-ID.json +12 -12
  324. package/lib/powerquery-language-services/localization/templates/templates.it-IT.json +12 -12
  325. package/lib/powerquery-language-services/localization/templates/templates.ja-JP.json +12 -12
  326. package/lib/powerquery-language-services/localization/templates/templates.json +20 -20
  327. package/lib/powerquery-language-services/localization/templates/templates.kk-KZ.json +12 -12
  328. package/lib/powerquery-language-services/localization/templates/templates.ko-KR.json +12 -12
  329. package/lib/powerquery-language-services/localization/templates/templates.lt-LT.json +12 -12
  330. package/lib/powerquery-language-services/localization/templates/templates.lv-LV.json +12 -12
  331. package/lib/powerquery-language-services/localization/templates/templates.ms-MY.json +12 -12
  332. package/lib/powerquery-language-services/localization/templates/templates.nb-NO.json +12 -12
  333. package/lib/powerquery-language-services/localization/templates/templates.nl-NL.json +12 -12
  334. package/lib/powerquery-language-services/localization/templates/templates.pl-PL.json +12 -12
  335. package/lib/powerquery-language-services/localization/templates/templates.pt-BR.json +12 -12
  336. package/lib/powerquery-language-services/localization/templates/templates.pt-PT.json +12 -12
  337. package/lib/powerquery-language-services/localization/templates/templates.ro-RO.json +12 -12
  338. package/lib/powerquery-language-services/localization/templates/templates.ru-RU.json +12 -12
  339. package/lib/powerquery-language-services/localization/templates/templates.sk-SK.json +12 -12
  340. package/lib/powerquery-language-services/localization/templates/templates.sl-SI.json +12 -12
  341. package/lib/powerquery-language-services/localization/templates/templates.sr-Cyrl-RS.json +12 -12
  342. package/lib/powerquery-language-services/localization/templates/templates.sr-Latn-RS.json +12 -12
  343. package/lib/powerquery-language-services/localization/templates/templates.sv-SE.json +12 -12
  344. package/lib/powerquery-language-services/localization/templates/templates.th-TH.json +12 -12
  345. package/lib/powerquery-language-services/localization/templates/templates.tr-TR.json +12 -12
  346. package/lib/powerquery-language-services/localization/templates/templates.uk-UA.json +12 -12
  347. package/lib/powerquery-language-services/localization/templates/templates.vi-VN.json +12 -12
  348. package/lib/powerquery-language-services/localization/templates/templates.zh-CN.json +12 -12
  349. package/lib/powerquery-language-services/localization/templates/templates.zh-TW.json +12 -12
  350. package/lib/powerquery-language-services/localization/templates.d.ts +55 -55
  351. package/lib/powerquery-language-services/localization/templates.js +166 -133
  352. package/lib/powerquery-language-services/localization/templates.js.map +1 -1
  353. package/lib/powerquery-language-services/positionUtils.d.ts +32 -32
  354. package/lib/powerquery-language-services/positionUtils.js +257 -240
  355. package/lib/powerquery-language-services/positionUtils.js.map +1 -1
  356. package/lib/powerquery-language-services/providers/commonTypes.d.ts +75 -75
  357. package/lib/powerquery-language-services/providers/commonTypes.js +4 -4
  358. package/lib/powerquery-language-services/providers/index.d.ts +5 -5
  359. package/lib/powerquery-language-services/providers/index.js +28 -28
  360. package/lib/powerquery-language-services/providers/languageCompletionItemProvider.d.ts +12 -12
  361. package/lib/powerquery-language-services/providers/languageCompletionItemProvider.js +62 -73
  362. package/lib/powerquery-language-services/providers/languageCompletionItemProvider.js.map +1 -1
  363. package/lib/powerquery-language-services/providers/libraryProvider.d.ts +16 -16
  364. package/lib/powerquery-language-services/providers/libraryProvider.js +116 -131
  365. package/lib/powerquery-language-services/providers/libraryProvider.js.map +1 -1
  366. package/lib/powerquery-language-services/providers/localDocumentProvider/foldingRanges.d.ts +4 -4
  367. package/lib/powerquery-language-services/providers/localDocumentProvider/foldingRanges.js +50 -52
  368. package/lib/powerquery-language-services/providers/localDocumentProvider/foldingRanges.js.map +1 -1
  369. package/lib/powerquery-language-services/providers/localDocumentProvider/index.d.ts +1 -1
  370. package/lib/powerquery-language-services/providers/localDocumentProvider/index.js +19 -19
  371. package/lib/powerquery-language-services/providers/localDocumentProvider/localDocumentProvider.d.ts +21 -21
  372. package/lib/powerquery-language-services/providers/localDocumentProvider/localDocumentProvider.js +277 -259
  373. package/lib/powerquery-language-services/providers/localDocumentProvider/localDocumentProvider.js.map +1 -1
  374. package/lib/powerquery-language-services/providers/localDocumentProvider/partialSemanticToken.d.ts +6 -6
  375. package/lib/powerquery-language-services/providers/localDocumentProvider/partialSemanticToken.js +313 -321
  376. package/lib/powerquery-language-services/providers/localDocumentProvider/partialSemanticToken.js.map +1 -1
  377. package/lib/powerquery-language-services/providers/nullSymbolProvider.d.ts +19 -19
  378. package/lib/powerquery-language-services/providers/nullSymbolProvider.js +46 -68
  379. package/lib/powerquery-language-services/providers/nullSymbolProvider.js.map +1 -1
  380. package/lib/powerquery-language-services/tokenPositionComparison.d.ts +5 -5
  381. package/lib/powerquery-language-services/tokenPositionComparison.js +12 -12
  382. package/lib/powerquery-language-services/tokenPositionComparison.js.map +1 -1
  383. package/lib/powerquery-language-services/trace.d.ts +27 -27
  384. package/lib/powerquery-language-services/trace.js +36 -36
  385. package/lib/powerquery-language-services/trace.js.map +1 -1
  386. package/lib/powerquery-language-services/traceUtils.d.ts +14 -14
  387. package/lib/powerquery-language-services/traceUtils.js +19 -20
  388. package/lib/powerquery-language-services/traceUtils.js.map +1 -1
  389. package/lib/powerquery-language-services/validate/index.d.ts +3 -3
  390. package/lib/powerquery-language-services/validate/index.js +23 -23
  391. package/lib/powerquery-language-services/validate/validate.d.ts +6 -6
  392. package/lib/powerquery-language-services/validate/validate.js +70 -67
  393. package/lib/powerquery-language-services/validate/validate.js.map +1 -1
  394. package/lib/powerquery-language-services/validate/validateDuplicateIdentifiers.d.ts +6 -6
  395. package/lib/powerquery-language-services/validate/validateDuplicateIdentifiers.js +164 -134
  396. package/lib/powerquery-language-services/validate/validateDuplicateIdentifiers.js.map +1 -1
  397. package/lib/powerquery-language-services/validate/validateFunctionExpression.d.ts +4 -4
  398. package/lib/powerquery-language-services/validate/validateFunctionExpression.js +63 -63
  399. package/lib/powerquery-language-services/validate/validateFunctionExpression.js.map +1 -1
  400. package/lib/powerquery-language-services/validate/validateInvokeExpression.d.ts +5 -5
  401. package/lib/powerquery-language-services/validate/validateInvokeExpression.js +109 -123
  402. package/lib/powerquery-language-services/validate/validateInvokeExpression.js.map +1 -1
  403. package/lib/powerquery-language-services/validate/validateOk.d.ts +5 -5
  404. package/lib/powerquery-language-services/validate/validateOk.js +4 -4
  405. package/lib/powerquery-language-services/validate/validateParse.d.ts +4 -4
  406. package/lib/powerquery-language-services/validate/validateParse.js +94 -73
  407. package/lib/powerquery-language-services/validate/validateParse.js.map +1 -1
  408. package/lib/powerquery-language-services/validate/validateUnknownIdentifiers.d.ts +5 -5
  409. package/lib/powerquery-language-services/validate/validateUnknownIdentifiers.js +99 -109
  410. package/lib/powerquery-language-services/validate/validateUnknownIdentifiers.js.map +1 -1
  411. package/lib/powerquery-language-services/validate/validationSettings/index.d.ts +2 -2
  412. package/lib/powerquery-language-services/validate/validationSettings/index.js +43 -21
  413. package/lib/powerquery-language-services/validate/validationSettings/index.js.map +1 -1
  414. package/lib/powerquery-language-services/validate/validationSettings/validationSettings.d.ts +13 -12
  415. package/lib/powerquery-language-services/validate/validationSettings/validationSettings.js +4 -4
  416. package/lib/powerquery-language-services/validate/validationSettings/validationSettingsUtils.d.ts +3 -3
  417. package/lib/powerquery-language-services/validate/validationSettings/validationSettingsUtils.js +16 -10
  418. package/lib/powerquery-language-services/validate/validationSettings/validationSettingsUtils.js.map +1 -1
  419. package/package.json +23 -22
@@ -1,328 +1,373 @@
1
- "use strict";
2
- // Copyright (c) Microsoft Corporation.
3
- // Licensed under the MIT license.
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
- });
12
- };
13
- Object.defineProperty(exports, "__esModule", { value: true });
14
- exports.assertGetOrCreateNodeScope = exports.tryNodeScope = void 0;
15
- const parser_1 = require("@microsoft/powerquery-parser/lib/powerquery-parser/parser");
16
- const language_1 = require("@microsoft/powerquery-parser/lib/powerquery-parser/language");
17
- const powerquery_parser_1 = require("@microsoft/powerquery-parser");
18
- const __1 = require("../..");
19
- const scope_1 = require("./scope");
20
- const pseudoFunctionExpressionType_1 = require("../pseudoFunctionExpressionType");
21
- const trace_1 = require("@microsoft/powerquery-parser/lib/powerquery-parser/common/trace");
22
- // Builds a scope for the given node.
23
- function tryNodeScope(settings, nodeIdMapCollection, eachScopeById, nodeId,
24
- // scopeById may get mutated by adding new entries.
25
- scopeById) {
26
- return __awaiter(this, void 0, void 0, function* () {
27
- const trace = settings.traceManager.entry(__1.InspectionTraceConstant.InspectScope, tryNodeScope.name, settings.initialCorrelationId);
28
- const updatedSettings = Object.assign(Object.assign({}, settings), { initialCorrelationId: trace.id });
29
- const result = yield powerquery_parser_1.ResultUtils.ensureResultAsync(() => __awaiter(this, void 0, void 0, function* () {
30
- const ancestry = parser_1.AncestryUtils.assertAncestry(nodeIdMapCollection, nodeId);
31
- if (ancestry.length === 0) {
32
- return new Map();
33
- }
34
- yield inspectScope(updatedSettings, nodeIdMapCollection, eachScopeById, ancestry, scopeById, trace.id);
35
- const result = powerquery_parser_1.MapUtils.assertGet(scopeById, nodeId, `expected nodeId in scope result`, {
36
- nodeId,
37
- });
38
- return result;
39
- }), updatedSettings.locale);
40
- trace.exit();
41
- return result;
42
- });
43
- }
44
- exports.tryNodeScope = tryNodeScope;
45
- function assertGetOrCreateNodeScope(settings, nodeIdMapCollection, eachScopeById, nodeId,
46
- // scopeById may get mutated by adding new entries.
47
- scopeById) {
48
- return __awaiter(this, void 0, void 0, function* () {
49
- const trace = settings.traceManager.entry(__1.InspectionTraceConstant.InspectScope, assertGetOrCreateNodeScope.name, settings.initialCorrelationId);
50
- const updatedSettings = Object.assign(Object.assign({}, settings), { initialCorrelationId: trace.id });
51
- const nodeScope = scopeById.get(nodeId);
52
- if (nodeScope !== undefined) {
53
- trace.exit({ [trace_1.TraceConstant.IsThrowing]: false });
54
- return powerquery_parser_1.ResultUtils.ok(nodeScope);
55
- }
56
- const triedNodeScope = yield tryNodeScope(updatedSettings, nodeIdMapCollection, eachScopeById, nodeId, scopeById);
57
- if (powerquery_parser_1.ResultUtils.isError(triedNodeScope)) {
58
- trace.exit({ [trace_1.TraceConstant.IsThrowing]: true });
59
- throw triedNodeScope;
60
- }
61
- trace.exit({ [trace_1.TraceConstant.IsThrowing]: false });
62
- return triedNodeScope;
63
- });
64
- }
65
- exports.assertGetOrCreateNodeScope = assertGetOrCreateNodeScope;
66
- function inspectScope(settings, nodeIdMapCollection, eachScopeById, ancestry,
67
- // scopeById may get mutated by adding new entries.
68
- scopeById, correlationId) {
69
- return __awaiter(this, void 0, void 0, function* () {
70
- const trace = settings.traceManager.entry(__1.InspectionTraceConstant.InspectScope, inspectScope.name, correlationId);
71
- const rootId = ancestry[0].node.id;
72
- // A scope for the given ancestry has already been generated.
73
- const cached = scopeById.get(rootId);
74
- if (cached !== undefined) {
75
- trace.exit();
76
- return;
77
- }
78
- const state = {
79
- traceManager: settings.traceManager,
80
- givenScope: scopeById,
81
- ancestry,
82
- nodeIdMapCollection,
83
- eachScopeById,
84
- cancellationToken: settings.cancellationToken,
85
- ancestryIndex: 0,
86
- };
87
- // Build up the scope through a top-down inspection.
88
- const numNodes = ancestry.length;
89
- for (let ancestryIndex = numNodes - 1; ancestryIndex >= 0; ancestryIndex -= 1) {
90
- state.ancestryIndex = ancestryIndex;
91
- const xorNode = ancestry[ancestryIndex];
92
- // eslint-disable-next-line no-await-in-loop
93
- yield inspectNode(state, xorNode, trace.id);
94
- }
95
- trace.exit();
96
- });
97
- }
98
- // eslint-disable-next-line require-await
99
- function inspectNode(state, xorNode, correlationId) {
100
- var _a;
101
- return __awaiter(this, void 0, void 0, function* () {
102
- const trace = state.traceManager.entry(__1.InspectionTraceConstant.InspectScope, inspectNode.name, correlationId, __1.TraceUtils.xorNodeDetails(xorNode));
103
- (_a = state.cancellationToken) === null || _a === void 0 ? void 0 : _a.throwIfCancelled();
104
- switch (xorNode.node.kind) {
105
- case language_1.Ast.NodeKind.EachExpression:
106
- inspectEachExpression(state, xorNode, trace.id);
107
- break;
108
- case language_1.Ast.NodeKind.FunctionExpression:
109
- inspectFunctionExpression(state, xorNode, trace.id);
110
- break;
111
- case language_1.Ast.NodeKind.LetExpression:
112
- inspectLetExpression(state, xorNode, trace.id);
113
- break;
114
- case language_1.Ast.NodeKind.RecordExpression:
115
- case language_1.Ast.NodeKind.RecordLiteral:
116
- inspectRecordExpressionOrRecordLiteral(state, xorNode, trace.id);
117
- break;
118
- case language_1.Ast.NodeKind.Section:
119
- inspectSection(state, xorNode, trace.id);
120
- break;
121
- default:
122
- localGetOrCreateNodeScope(state, xorNode.node.id, undefined, trace.id);
123
- }
124
- trace.exit();
125
- });
126
- }
127
- function inspectEachExpression(state, eachExpr, correlationId) {
128
- var _a, _b;
129
- const trace = state.traceManager.entry(__1.InspectionTraceConstant.InspectScope, inspectEachExpression.name, correlationId);
130
- parser_1.XorNodeUtils.assertIsNodeKind(eachExpr, language_1.Ast.NodeKind.EachExpression);
131
- expandChildScope(state, eachExpr, [1], [
132
- [
133
- "_",
134
- {
135
- kind: scope_1.ScopeItemKind.Each,
136
- nodeId: eachExpr.node.id,
137
- isRecursive: false,
138
- eachExpression: eachExpr,
139
- implicitParameterType: (_b = (_a = state.eachScopeById) === null || _a === void 0 ? void 0 : _a.get(eachExpr.node.id)) !== null && _b !== void 0 ? _b : language_1.Type.UnknownInstance,
140
- },
141
- ],
142
- ], localGetOrCreateNodeScope(state, eachExpr.node.id, undefined, trace.id), trace.id);
143
- trace.exit();
144
- }
145
- function inspectFunctionExpression(state, fnExpr, correlationId) {
146
- const trace = state.traceManager.entry(__1.InspectionTraceConstant.InspectScope, inspectFunctionExpression.name, correlationId);
147
- parser_1.XorNodeUtils.assertIsNodeKind(fnExpr, language_1.Ast.NodeKind.FunctionExpression);
148
- // Propegates the parent's scope.
149
- const nodeScope = localGetOrCreateNodeScope(state, fnExpr.node.id, undefined, trace.id);
150
- const pseudoType = (0, pseudoFunctionExpressionType_1.pseudoFunctionExpressionType)(state.nodeIdMapCollection, fnExpr);
151
- const newEntries = [];
152
- for (const parameter of pseudoType.parameters) {
153
- const type = parameter.type
154
- ? language_1.TypeUtils.primitiveTypeConstantKindFromTypeKind(parameter.type)
155
- : undefined;
156
- const parameterScopeItem = scopeItemFactoryForParameter(parameter, type);
157
- for (const scopeKey of language_1.IdentifierUtils.getAllowedIdentifiers(parameter.name.literal)) {
158
- newEntries.push([scopeKey, parameterScopeItem]);
159
- }
160
- }
161
- expandChildScope(state, fnExpr, [3], newEntries, nodeScope, trace.id);
162
- trace.exit();
163
- }
164
- function inspectLetExpression(state, letExpr, correlationId) {
165
- const trace = state.traceManager.entry(__1.InspectionTraceConstant.InspectScope, inspectLetExpression.name, correlationId);
166
- parser_1.XorNodeUtils.assertIsNodeKind(letExpr, language_1.Ast.NodeKind.LetExpression);
167
- // Propegates the parent's scope.
168
- const nodeScope = localGetOrCreateNodeScope(state, letExpr.node.id, undefined, trace.id);
169
- const keyValuePairs = parser_1.NodeIdMapIterator.iterLetExpression(state.nodeIdMapCollection, letExpr);
170
- inspectKeyValuePairs(state, nodeScope, keyValuePairs, { allowRecursive: true }, scopeItemFactoryForLetVariable, trace.id);
171
- // Places the assignments from the 'let' into LetExpression.expression
172
- const newEntries = scopeItemFactoryForKeyValuePairs(keyValuePairs, -1, { allowRecursive: true }, scopeItemFactoryForLetVariable);
173
- expandChildScope(state, letExpr, [3], newEntries, nodeScope, trace.id);
174
- trace.exit();
175
- }
176
- function inspectRecordExpressionOrRecordLiteral(state, record, correlationId) {
177
- const trace = state.traceManager.entry(__1.InspectionTraceConstant.InspectScope, inspectRecordExpressionOrRecordLiteral.name, correlationId);
178
- parser_1.XorNodeUtils.assertIsRecord(record);
179
- // Propegates the parent's scope.
180
- const nodeScope = localGetOrCreateNodeScope(state, record.node.id, undefined, trace.id);
181
- const keyValuePairs = parser_1.NodeIdMapIterator.iterRecord(state.nodeIdMapCollection, record);
182
- inspectKeyValuePairs(state, nodeScope, keyValuePairs, {
183
- allowGeneralizedIdentifier: true,
184
- allowRecursive: true,
185
- }, scopeItemFactoryForRecordMember, trace.id);
186
- trace.exit();
187
- }
188
- function inspectSection(state, section, correlationId) {
189
- var _a;
190
- const trace = state.traceManager.entry(__1.InspectionTraceConstant.InspectScope, inspectSection.name, correlationId);
191
- parser_1.XorNodeUtils.assertIsNodeKind(section, language_1.Ast.NodeKind.Section);
192
- const keyValuePairs = parser_1.NodeIdMapIterator.iterSection(state.nodeIdMapCollection, section);
193
- for (const kvp of keyValuePairs) {
194
- (_a = state.cancellationToken) === null || _a === void 0 ? void 0 : _a.throwIfCancelled();
195
- if (kvp.value === undefined) {
196
- continue;
197
- }
198
- const newScopeItems = scopeItemFactoryForKeyValuePairs(keyValuePairs, kvp.key.id, { allowRecursive: true }, scopeItemFactoryForSectionMember);
199
- if (newScopeItems.length !== 0) {
200
- expandScope(state, kvp.value, newScopeItems, new Map(), trace.id);
201
- }
202
- }
203
- trace.exit();
204
- }
205
- // Expands the scope on the value part of the key value pair.
206
- function inspectKeyValuePairs(state, parentScope, keyValuePairs, getAllowedIdentifiersOptions, scopeItemFactory, correlationId) {
207
- var _a;
208
- const trace = state.traceManager.entry(__1.InspectionTraceConstant.InspectScope, inspectKeyValuePairs.name, correlationId);
209
- for (const kvp of keyValuePairs) {
210
- (_a = state.cancellationToken) === null || _a === void 0 ? void 0 : _a.throwIfCancelled();
211
- if (kvp.value === undefined) {
212
- continue;
213
- }
214
- const newScopeItems = scopeItemFactoryForKeyValuePairs(keyValuePairs, kvp.key.id, getAllowedIdentifiersOptions, scopeItemFactory);
215
- if (newScopeItems.length !== 0) {
216
- expandScope(state, kvp.value, newScopeItems, parentScope, trace.id);
217
- }
218
- }
219
- trace.exit();
220
- }
221
- function expandScope(state, xorNode, newEntries, defaultScope, correlationId) {
222
- const nodeScope = localGetOrCreateNodeScope(state, xorNode.node.id, defaultScope, correlationId);
223
- for (const [key, value] of newEntries) {
224
- nodeScope.set(key, value);
225
- }
226
- }
227
- function expandChildScope(state, parent, childAttributeIds, newEntries, defaultScope, correlationId) {
228
- const nodeIdMapCollection = state.nodeIdMapCollection;
229
- const parentId = parent.node.id;
230
- // TODO: optimize this
231
- for (const attributeId of childAttributeIds) {
232
- const child = parser_1.NodeIdMapUtils.nthChildXor(nodeIdMapCollection, parentId, attributeId);
233
- if (child !== undefined) {
234
- expandScope(state, child, newEntries, defaultScope, correlationId);
235
- }
236
- }
237
- }
238
- // Any operation done on a scope should first invoke `scopeFor` for data integrity.
239
- function localGetOrCreateNodeScope(state, nodeId, defaultScope, correlationId) {
240
- const trace = state.traceManager.entry(__1.InspectionTraceConstant.InspectScope, localGetOrCreateNodeScope.name, correlationId, { nodeId });
241
- // If scopeFor has already been called then there should be a nodeId in the givenScope.
242
- const givenScope = state.givenScope.get(nodeId);
243
- if (givenScope !== undefined) {
244
- trace.exit({ [trace_1.TraceConstant.Result]: "givenScope cache hit" });
245
- return givenScope;
246
- }
247
- if (defaultScope !== undefined) {
248
- const shallowCopy = new Map(defaultScope.entries());
249
- state.givenScope.set(nodeId, shallowCopy);
250
- trace.exit({ [trace_1.TraceConstant.Result]: "defaultScope entry" });
251
- return shallowCopy;
252
- }
253
- const xorNode = parser_1.NodeIdMapUtils.assertXor(state.nodeIdMapCollection, nodeId);
254
- if ([language_1.Ast.NodeKind.FieldProjection, language_1.Ast.NodeKind.FieldSelector].includes(xorNode.node.kind)) {
255
- trace.exit({ [trace_1.TraceConstant.Result]: "field projection or selector - empty scope" });
256
- const newScope = new Map();
257
- state.givenScope.set(nodeId, newScope);
258
- return newScope;
259
- }
260
- // Default to a parent's scope if the node has a parent.
261
- const parent = parser_1.NodeIdMapUtils.parentXor(state.nodeIdMapCollection, nodeId);
262
- if (parent !== undefined) {
263
- const parentNodeId = parent.node.id;
264
- const parentGivenScope = state.givenScope.get(parentNodeId);
265
- if (parentGivenScope !== undefined) {
266
- const shallowCopy = new Map(parentGivenScope.entries());
267
- state.givenScope.set(nodeId, shallowCopy);
268
- trace.exit({ [trace_1.TraceConstant.Result]: "parent givenScope hit" });
269
- return parentGivenScope;
270
- }
271
- }
272
- // The node has no parent or it hasn't been visited.
273
- const newScope = new Map();
274
- state.givenScope.set(nodeId, newScope);
275
- trace.exit({ [trace_1.TraceConstant.Result]: "set new entry" });
276
- return newScope;
277
- }
278
- function scopeItemFactoryForKeyValuePairs(keyValuePairs, ancestorKeyNodeId, getAllowedIdentifiersOptions, scopeItemFactory) {
279
- const result = [];
280
- for (const kvp of keyValuePairs.filter((keyValuePair) => keyValuePair.value !== undefined)) {
281
- const isRecursive = ancestorKeyNodeId === kvp.key.id;
282
- for (const key of language_1.IdentifierUtils.getAllowedIdentifiers(kvp.key.literal, getAllowedIdentifiersOptions)) {
283
- if (!isRecursive || key.includes("@")) {
284
- result.push([key, scopeItemFactory(kvp, isRecursive)]);
285
- }
286
- }
287
- }
288
- return result;
289
- }
290
- function scopeItemFactoryForLetVariable(keyValuePair, isRecursive) {
291
- return {
292
- kind: scope_1.ScopeItemKind.LetVariable,
293
- nodeId: keyValuePair.source.node.id,
294
- isRecursive,
295
- key: keyValuePair.key,
296
- value: keyValuePair.value,
297
- };
298
- }
299
- function scopeItemFactoryForParameter(parameter, type) {
300
- return {
301
- kind: scope_1.ScopeItemKind.Parameter,
302
- nodeId: parameter.id,
303
- isRecursive: false,
304
- name: parameter.name,
305
- isOptional: parameter.isOptional,
306
- isNullable: parameter.isNullable,
307
- type,
308
- };
309
- }
310
- function scopeItemFactoryForRecordMember(keyValuePair, isRecursive) {
311
- return {
312
- kind: scope_1.ScopeItemKind.RecordField,
313
- nodeId: keyValuePair.source.node.id,
314
- isRecursive,
315
- key: keyValuePair.key,
316
- value: keyValuePair.value,
317
- };
318
- }
319
- function scopeItemFactoryForSectionMember(keyValuePair, isRecursive) {
320
- return {
321
- kind: scope_1.ScopeItemKind.SectionMember,
322
- nodeId: keyValuePair.source.node.id,
323
- isRecursive,
324
- key: keyValuePair.key,
325
- value: keyValuePair.value,
326
- };
327
- }
1
+ "use strict";
2
+ // Copyright (c) Microsoft Corporation.
3
+ // Licensed under the MIT license.
4
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
5
+ if (k2 === undefined) k2 = k;
6
+ var desc = Object.getOwnPropertyDescriptor(m, k);
7
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
8
+ desc = { enumerable: true, get: function() { return m[k]; } };
9
+ }
10
+ Object.defineProperty(o, k2, desc);
11
+ }) : (function(o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ o[k2] = m[k];
14
+ }));
15
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
16
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
17
+ }) : function(o, v) {
18
+ o["default"] = v;
19
+ });
20
+ var __importStar = (this && this.__importStar) || (function () {
21
+ var ownKeys = function(o) {
22
+ ownKeys = Object.getOwnPropertyNames || function (o) {
23
+ var ar = [];
24
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
25
+ return ar;
26
+ };
27
+ return ownKeys(o);
28
+ };
29
+ return function (mod) {
30
+ if (mod && mod.__esModule) return mod;
31
+ var result = {};
32
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
33
+ __setModuleDefault(result, mod);
34
+ return result;
35
+ };
36
+ })();
37
+ Object.defineProperty(exports, "__esModule", { value: true });
38
+ exports.tryNodeScope = tryNodeScope;
39
+ exports.assertGetOrCreateNodeScope = assertGetOrCreateNodeScope;
40
+ const PQP = __importStar(require("@microsoft/powerquery-parser"));
41
+ const parser_1 = require("@microsoft/powerquery-parser/lib/powerquery-parser/parser");
42
+ const language_1 = require("@microsoft/powerquery-parser/lib/powerquery-parser/language");
43
+ const powerquery_parser_1 = require("@microsoft/powerquery-parser");
44
+ const __1 = require("../..");
45
+ const scope_1 = require("./scope");
46
+ const pseudoFunctionExpressionType_1 = require("../pseudoFunctionExpressionType");
47
+ const trace_1 = require("@microsoft/powerquery-parser/lib/powerquery-parser/common/trace");
48
+ // Builds a scope for the given node.
49
+ async function tryNodeScope(settings, nodeIdMapCollection, eachScopeById, nodeId,
50
+ // scopeById may get mutated by adding new entries.
51
+ scopeById) {
52
+ const trace = settings.traceManager.entry(__1.InspectionTraceConstant.InspectScope, tryNodeScope.name, settings.initialCorrelationId);
53
+ const updatedSettings = {
54
+ ...settings,
55
+ initialCorrelationId: trace.id,
56
+ };
57
+ const result = await powerquery_parser_1.ResultUtils.ensureResultAsync(async () => {
58
+ const ancestry = parser_1.AncestryUtils.assertAncestry(nodeIdMapCollection, nodeId);
59
+ if (ancestry.length === 0) {
60
+ throw new PQP.CommonError.InvariantError(`expected ancestry to have at least one node`, { nodeId });
61
+ }
62
+ await inspectScope(updatedSettings, nodeIdMapCollection, eachScopeById, ancestry, scopeById, trace.id);
63
+ const result = powerquery_parser_1.MapUtils.assertGet(scopeById, nodeId, `expected nodeId in scope result`, {
64
+ nodeId,
65
+ });
66
+ return result;
67
+ }, updatedSettings.locale);
68
+ trace.exit();
69
+ return result;
70
+ }
71
+ async function assertGetOrCreateNodeScope(settings, nodeIdMapCollection, eachScopeById, nodeId,
72
+ // scopeById may get mutated by adding new entries.
73
+ scopeById) {
74
+ const trace = settings.traceManager.entry(__1.InspectionTraceConstant.InspectScope, assertGetOrCreateNodeScope.name, settings.initialCorrelationId);
75
+ const updatedSettings = {
76
+ ...settings,
77
+ initialCorrelationId: trace.id,
78
+ };
79
+ const nodeScope = scopeById.get(nodeId);
80
+ if (nodeScope !== undefined) {
81
+ trace.exit({ [trace_1.TraceConstant.IsThrowing]: false });
82
+ return powerquery_parser_1.ResultUtils.ok(nodeScope);
83
+ }
84
+ const triedNodeScope = await tryNodeScope(updatedSettings, nodeIdMapCollection, eachScopeById, nodeId, scopeById);
85
+ if (powerquery_parser_1.ResultUtils.isError(triedNodeScope)) {
86
+ trace.exit({ [trace_1.TraceConstant.IsThrowing]: true });
87
+ throw triedNodeScope;
88
+ }
89
+ trace.exit({ [trace_1.TraceConstant.IsThrowing]: false });
90
+ return triedNodeScope;
91
+ }
92
+ // The only function that should directly mutate `ScopeInspectionState.scopeById`.
93
+ // It attempts to reuse the inherited scope instance whenever:
94
+ // 1. there's no `newEntries`,
95
+ // 2. the node is not a FieldSelector or FieldProjection (which have special scoping rules)
96
+ //
97
+ // For scenario (1) we take a shallow copy of the parent's scope, then merge in the new entries.
98
+ // This means the `newEntries` take precedence over the inherited scope.
99
+ //
100
+ // For scenario (2) we only inherit `EachScopeItem`s from the parent scope.
101
+ function assignScopeForNodeId(state, nodeId, inheritedScope, newEntries, correlationId) {
102
+ const trace = state.traceManager.entry(__1.InspectionTraceConstant.InspectScope, assignScopeForNodeId.name, correlationId, { nodeId });
103
+ // If a scope has already been generated for this nodeId, return it.
104
+ // This can happen as a parent might have assigned a scope to its child already,
105
+ // e.g. LetExpression assigns scope to its expression.
106
+ const existingNodeScope = state.scopeById.get(nodeId);
107
+ if (existingNodeScope !== undefined) {
108
+ trace.exit({ [trace_1.TraceConstant.Result]: "cache hit" });
109
+ return existingNodeScope;
110
+ }
111
+ // Unique case for root node.
112
+ if (inheritedScope === undefined) {
113
+ const nodeScope = {
114
+ createdForNodeId: nodeId,
115
+ scopeItemByKey: new Map(newEntries ?? []),
116
+ };
117
+ state.scopeById.set(nodeId, nodeScope);
118
+ trace.exit({ [trace_1.TraceConstant.Result]: "new root scope" });
119
+ return nodeScope;
120
+ }
121
+ const xorNode = parser_1.NodeIdMapUtils.assertXor(state.nodeIdMapCollection, nodeId);
122
+ // We can't actually inherit everything if node is a FieldSelector or FieldProjection,
123
+ // so we create a new scope that only includes allowed items.
124
+ if ([language_1.Ast.NodeKind.FieldProjection, language_1.Ast.NodeKind.FieldSelector].includes(xorNode.node.kind)) {
125
+ const inheritedEachScopeItemEntries = [
126
+ ...inheritedScope.scopeItemByKey.entries(),
127
+ ].filter(([_key, scopeItem]) => scopeItem.kind === scope_1.ScopeItemKind.Each);
128
+ const nodeScope = {
129
+ createdForNodeId: nodeId,
130
+ scopeItemByKey: new Map([...inheritedEachScopeItemEntries, ...(newEntries ?? [])]),
131
+ };
132
+ state.scopeById.set(nodeId, nodeScope);
133
+ trace.exit({ [trace_1.TraceConstant.Result]: "inherited filtered scope" });
134
+ return nodeScope;
135
+ }
136
+ // Else if there are no new entries we can simply inherit the scope.
137
+ else if (!newEntries) {
138
+ state.scopeById.set(nodeId, inheritedScope);
139
+ trace.exit({ [trace_1.TraceConstant.Result]: "inherited scope" });
140
+ return inheritedScope;
141
+ }
142
+ // Else there are new entries so we create a new scope that merges the inherited scope with the new entries.
143
+ else {
144
+ const nodeScope = {
145
+ createdForNodeId: nodeId,
146
+ scopeItemByKey: new Map([...inheritedScope.scopeItemByKey.entries(), ...newEntries]),
147
+ };
148
+ state.scopeById.set(nodeId, nodeScope);
149
+ trace.exit({ [trace_1.TraceConstant.Result]: "created new scope" });
150
+ return nodeScope;
151
+ }
152
+ }
153
+ function getParentScope(state, nodeId) {
154
+ const parentNodeId = state.nodeIdMapCollection.parentIdById.get(nodeId);
155
+ if (parentNodeId === undefined) {
156
+ return undefined;
157
+ }
158
+ return state.scopeById.get(parentNodeId);
159
+ }
160
+ async function inspectScope(settings, nodeIdMapCollection, eachScopeById, ancestry,
161
+ // scopeById may get mutated by adding new entries.
162
+ scopeById, correlationId) {
163
+ const trace = settings.traceManager.entry(__1.InspectionTraceConstant.InspectScope, inspectScope.name, correlationId);
164
+ const rootId = ancestry[0].node.id;
165
+ // A scope for the given ancestry has already been generated.
166
+ const cached = scopeById.get(rootId);
167
+ if (cached !== undefined) {
168
+ trace.exit();
169
+ return;
170
+ }
171
+ const state = {
172
+ traceManager: settings.traceManager,
173
+ scopeById,
174
+ ancestry,
175
+ nodeIdMapCollection,
176
+ eachScopeById,
177
+ cancellationToken: settings.cancellationToken,
178
+ ancestryIndex: 0,
179
+ };
180
+ // Build up the scope through a top-down inspection.
181
+ const numNodes = ancestry.length;
182
+ for (let ancestryIndex = numNodes - 1; ancestryIndex >= 0; ancestryIndex -= 1) {
183
+ state.ancestryIndex = ancestryIndex;
184
+ const xorNode = ancestry[ancestryIndex];
185
+ // eslint-disable-next-line no-await-in-loop
186
+ await inspectNode(state, xorNode, trace.id);
187
+ }
188
+ trace.exit();
189
+ }
190
+ // eslint-disable-next-line require-await
191
+ async function inspectNode(state, xorNode, correlationId) {
192
+ const trace = state.traceManager.entry(__1.InspectionTraceConstant.InspectScope, inspectNode.name, correlationId, __1.TraceUtils.xorNodeDetails(xorNode));
193
+ state.cancellationToken?.throwIfCancelled();
194
+ // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check
195
+ switch (xorNode.node.kind) {
196
+ case language_1.Ast.NodeKind.EachExpression:
197
+ inspectEachExpression(state, xorNode, trace.id);
198
+ break;
199
+ case language_1.Ast.NodeKind.FunctionExpression:
200
+ inspectFunctionExpression(state, xorNode, trace.id);
201
+ break;
202
+ case language_1.Ast.NodeKind.LetExpression:
203
+ inspectLetExpression(state, xorNode, trace.id);
204
+ break;
205
+ case language_1.Ast.NodeKind.RecordExpression:
206
+ case language_1.Ast.NodeKind.RecordLiteral:
207
+ inspectRecordExpressionOrRecordLiteral(state, xorNode, trace.id);
208
+ break;
209
+ case language_1.Ast.NodeKind.Section:
210
+ inspectSection(state, xorNode, trace.id);
211
+ break;
212
+ default:
213
+ assignScopeForNodeId(state, xorNode.node.id, getParentScope(state, xorNode.node.id),
214
+ /* newEntries */ undefined, trace.id);
215
+ }
216
+ trace.exit();
217
+ }
218
+ function inspectEachExpression(state, eachExpr, correlationId) {
219
+ const trace = state.traceManager.entry(__1.InspectionTraceConstant.InspectScope, inspectEachExpression.name, correlationId);
220
+ parser_1.XorNodeUtils.assertIsNodeKind(eachExpr, language_1.Ast.NodeKind.EachExpression);
221
+ // Generate the scope for the EachExpression
222
+ const nodeScope = assignScopeForNodeId(state, eachExpr.node.id, getParentScope(state, eachExpr.node.id),
223
+ /* newEntries */ undefined, trace.id);
224
+ // Propegate the scope to the paired expression (if one exists)
225
+ const expression = parser_1.NodeIdMapUtils.nthChildXor(state.nodeIdMapCollection, eachExpr.node.id, 1);
226
+ if (expression !== undefined) {
227
+ assignScopeForNodeId(state, expression.node.id, nodeScope,
228
+ // Append the implicit "_" parameter for the 'each' expression.
229
+ [
230
+ [
231
+ "_",
232
+ {
233
+ kind: scope_1.ScopeItemKind.Each,
234
+ nodeId: eachExpr.node.id,
235
+ isRecursive: false,
236
+ eachExpression: eachExpr,
237
+ implicitParameterType: state.eachScopeById?.get(eachExpr.node.id) ?? language_1.Type.UnknownInstance,
238
+ },
239
+ ],
240
+ ], trace.id);
241
+ }
242
+ trace.exit();
243
+ }
244
+ function inspectFunctionExpression(state, fnExpr, correlationId) {
245
+ const trace = state.traceManager.entry(__1.InspectionTraceConstant.InspectScope, inspectFunctionExpression.name, correlationId);
246
+ parser_1.XorNodeUtils.assertIsNodeKind(fnExpr, language_1.Ast.NodeKind.FunctionExpression);
247
+ // Creates the NodeScope for the FunctionExpression.
248
+ const nodeScope = assignScopeForNodeId(state, fnExpr.node.id, getParentScope(state, fnExpr.node.id),
249
+ /* newEntries */ undefined, trace.id);
250
+ // Build up a list of new scope items derived from the function's parameters.
251
+ const newEntries = [];
252
+ const pseudoType = (0, pseudoFunctionExpressionType_1.pseudoFunctionExpressionType)(state.nodeIdMapCollection, fnExpr);
253
+ for (const parameter of pseudoType.parameters) {
254
+ const type = parameter.type
255
+ ? language_1.TypeUtils.primitiveTypeConstantKindFromTypeKind(parameter.type)
256
+ : undefined;
257
+ const parameterScopeItem = scopeItemFactoryForParameter(parameter, type);
258
+ for (const scopeKey of language_1.IdentifierUtils.getAllowedIdentifiers(parameter.name.literal)) {
259
+ newEntries.push([scopeKey, parameterScopeItem]);
260
+ }
261
+ }
262
+ // Propagate the FunctionExpression's scope to its body.
263
+ const functionExpressionBody = parser_1.NodeIdMapUtils.nthChildXor(state.nodeIdMapCollection, fnExpr.node.id, 3);
264
+ if (functionExpressionBody !== undefined) {
265
+ assignScopeForNodeId(state, functionExpressionBody.node.id, nodeScope, newEntries, trace.id);
266
+ }
267
+ trace.exit();
268
+ }
269
+ function inspectLetExpression(state, letExpr, correlationId) {
270
+ const trace = state.traceManager.entry(__1.InspectionTraceConstant.InspectScope, inspectLetExpression.name, correlationId);
271
+ parser_1.XorNodeUtils.assertIsNodeKind(letExpr, language_1.Ast.NodeKind.LetExpression);
272
+ // Creates the NodeScope for the LetExpression.
273
+ const nodeScope = assignScopeForNodeId(state, letExpr.node.id, getParentScope(state, letExpr.node.id),
274
+ /* newEntries */ undefined, trace.id);
275
+ const keyValuePairs = parser_1.NodeIdMapIterator.iterLetExpression(state.nodeIdMapCollection, letExpr);
276
+ inspectKeyValuePairs(state, nodeScope, keyValuePairs, { allowRecursive: true }, scopeItemFactoryForLetVariable, trace.id);
277
+ // Places the assignments from the 'let' into LetExpression.expression
278
+ const newEntries = scopeItemFactoryForKeyValuePairs(keyValuePairs, -1, { allowRecursive: true }, scopeItemFactoryForLetVariable);
279
+ const expression = parser_1.NodeIdMapUtils.nthChildXor(state.nodeIdMapCollection, letExpr.node.id, 3);
280
+ if (expression !== undefined) {
281
+ assignScopeForNodeId(state, expression.node.id, nodeScope, newEntries, trace.id);
282
+ }
283
+ trace.exit();
284
+ }
285
+ function inspectRecordExpressionOrRecordLiteral(state, record, correlationId) {
286
+ const trace = state.traceManager.entry(__1.InspectionTraceConstant.InspectScope, inspectRecordExpressionOrRecordLiteral.name, correlationId);
287
+ parser_1.XorNodeUtils.assertIsRecord(record);
288
+ // Creates the NodeScope for the record.
289
+ const nodeScope = assignScopeForNodeId(state, record.node.id, getParentScope(state, record.node.id),
290
+ /* newEntries */ undefined, trace.id);
291
+ const keyValuePairs = parser_1.NodeIdMapIterator.iterRecord(state.nodeIdMapCollection, record);
292
+ inspectKeyValuePairs(state, nodeScope, keyValuePairs, {
293
+ allowGeneralizedIdentifier: true,
294
+ allowRecursive: true,
295
+ }, scopeItemFactoryForRecordMember, trace.id);
296
+ trace.exit();
297
+ }
298
+ function inspectSection(state, section, correlationId) {
299
+ const trace = state.traceManager.entry(__1.InspectionTraceConstant.InspectScope, inspectSection.name, correlationId);
300
+ parser_1.XorNodeUtils.assertIsNodeKind(section, language_1.Ast.NodeKind.Section);
301
+ const keyValuePairs = parser_1.NodeIdMapIterator.iterSection(state.nodeIdMapCollection, section);
302
+ for (const kvp of keyValuePairs) {
303
+ state.cancellationToken?.throwIfCancelled();
304
+ if (kvp.value === undefined) {
305
+ continue;
306
+ }
307
+ assignScopeForNodeId(state, kvp.value.node.id, getParentScope(state, kvp.value.node.id), scopeItemFactoryForKeyValuePairs(keyValuePairs, kvp.key.id, { allowRecursive: true }, scopeItemFactoryForSectionMember), trace.id);
308
+ }
309
+ trace.exit();
310
+ }
311
+ // Expands the scope on the value part of the key value pair.
312
+ function inspectKeyValuePairs(state, inheritedScope, keyValuePairs, getAllowedIdentifiersOptions, scopeItemFactory, correlationId) {
313
+ const trace = state.traceManager.entry(__1.InspectionTraceConstant.InspectScope, inspectKeyValuePairs.name, correlationId);
314
+ for (const kvp of keyValuePairs) {
315
+ state.cancellationToken?.throwIfCancelled();
316
+ if (kvp.value === undefined) {
317
+ continue;
318
+ }
319
+ assignScopeForNodeId(state, kvp.value.node.id, inheritedScope, scopeItemFactoryForKeyValuePairs(keyValuePairs, kvp.key.id, getAllowedIdentifiersOptions, scopeItemFactory), trace.id);
320
+ }
321
+ trace.exit();
322
+ }
323
+ function scopeItemFactoryForKeyValuePairs(keyValuePairs, keyNodeId, getAllowedIdentifiersOptions, scopeItemFactory) {
324
+ const result = [];
325
+ for (const kvp of keyValuePairs.filter((keyValuePair) => keyValuePair.value !== undefined)) {
326
+ const isRecursive = keyNodeId === kvp.key.id;
327
+ for (const key of language_1.IdentifierUtils.getAllowedIdentifiers(kvp.key.literal, getAllowedIdentifiersOptions)) {
328
+ if (!isRecursive || key.includes("@")) {
329
+ result.push([key, scopeItemFactory(kvp, isRecursive)]);
330
+ }
331
+ }
332
+ }
333
+ return result;
334
+ }
335
+ function scopeItemFactoryForLetVariable(keyValuePair, isRecursive) {
336
+ return {
337
+ kind: scope_1.ScopeItemKind.LetVariable,
338
+ nodeId: keyValuePair.source.node.id,
339
+ isRecursive,
340
+ key: keyValuePair.key,
341
+ value: keyValuePair.value,
342
+ };
343
+ }
344
+ function scopeItemFactoryForParameter(parameter, type) {
345
+ return {
346
+ kind: scope_1.ScopeItemKind.Parameter,
347
+ nodeId: parameter.id,
348
+ isRecursive: false,
349
+ name: parameter.name,
350
+ isOptional: parameter.isOptional,
351
+ isNullable: parameter.isNullable,
352
+ type,
353
+ };
354
+ }
355
+ function scopeItemFactoryForRecordMember(keyValuePair, isRecursive) {
356
+ return {
357
+ kind: scope_1.ScopeItemKind.RecordField,
358
+ nodeId: keyValuePair.source.node.id,
359
+ isRecursive,
360
+ key: keyValuePair.key,
361
+ value: keyValuePair.value,
362
+ };
363
+ }
364
+ function scopeItemFactoryForSectionMember(keyValuePair, isRecursive) {
365
+ return {
366
+ kind: scope_1.ScopeItemKind.SectionMember,
367
+ nodeId: keyValuePair.source.node.id,
368
+ isRecursive,
369
+ key: keyValuePair.key,
370
+ value: keyValuePair.value,
371
+ };
372
+ }
328
373
  //# sourceMappingURL=scopeInspection.js.map