@microsoft/powerquery-language-services 0.6.12 → 0.9.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (198) hide show
  1. package/lib/powerquery-language-services/analysis/analysis.d.ts +12 -11
  2. package/lib/powerquery-language-services/analysis/analysisBase.d.ts +31 -25
  3. package/lib/powerquery-language-services/analysis/analysisBase.js +239 -195
  4. package/lib/powerquery-language-services/analysis/analysisBase.js.map +1 -1
  5. package/lib/powerquery-language-services/analysis/analysisUtils.d.ts +1 -1
  6. package/lib/powerquery-language-services/analysis/analysisUtils.js +3 -3
  7. package/lib/powerquery-language-services/analysis/analysisUtils.js.map +1 -1
  8. package/lib/powerquery-language-services/analysis/memoizedAnalysis.d.ts +6 -6
  9. package/lib/powerquery-language-services/analysis/memoizedAnalysis.js.map +1 -1
  10. package/lib/powerquery-language-services/documentSymbols.js +8 -7
  11. package/lib/powerquery-language-services/documentSymbols.js.map +1 -1
  12. package/lib/powerquery-language-services/externalType/externalType.d.ts +1 -1
  13. package/lib/powerquery-language-services/externalType/externalType.js.map +1 -1
  14. package/lib/powerquery-language-services/externalType/externalTypeUtils.d.ts +2 -2
  15. package/lib/powerquery-language-services/externalType/externalTypeUtils.js +8 -7
  16. package/lib/powerquery-language-services/externalType/externalTypeUtils.js.map +1 -1
  17. package/lib/powerquery-language-services/index.d.ts +2 -1
  18. package/lib/powerquery-language-services/index.js +4 -3
  19. package/lib/powerquery-language-services/index.js.map +1 -1
  20. package/lib/powerquery-language-services/inspection/activeNode/activeNode.d.ts +7 -8
  21. package/lib/powerquery-language-services/inspection/activeNode/activeNode.js +3 -4
  22. package/lib/powerquery-language-services/inspection/activeNode/activeNode.js.map +1 -1
  23. package/lib/powerquery-language-services/inspection/activeNode/activeNodeUtils.d.ts +1 -1
  24. package/lib/powerquery-language-services/inspection/activeNode/activeNodeUtils.js +227 -193
  25. package/lib/powerquery-language-services/inspection/activeNode/activeNodeUtils.js.map +1 -1
  26. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteFieldAccess.d.ts +4 -2
  27. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteFieldAccess.js +121 -98
  28. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteFieldAccess.js.map +1 -1
  29. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteItem/autocompleteItemUtils.d.ts +3 -6
  30. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteItem/autocompleteItemUtils.js +13 -46
  31. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteItem/autocompleteItemUtils.js.map +1 -1
  32. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeyword.d.ts +2 -1
  33. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeyword.js +42 -43
  34. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeyword.js.map +1 -1
  35. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordDefault.js +24 -23
  36. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordDefault.js.map +1 -1
  37. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordErrorHandlingExpression.js +7 -7
  38. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordErrorHandlingExpression.js.map +1 -1
  39. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordIdentifierPairedExpression.js +2 -2
  40. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordIdentifierPairedExpression.js.map +1 -1
  41. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordLetExpression.js +8 -8
  42. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordLetExpression.js.map +1 -1
  43. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordListExpression.js +4 -4
  44. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordListExpression.js.map +1 -1
  45. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordSectionMember.js +8 -9
  46. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordSectionMember.js.map +1 -1
  47. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordTrailingText.d.ts +1 -1
  48. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordTrailingText.js +6 -5
  49. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordTrailingText.js.map +1 -1
  50. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/common.js +1 -1
  51. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/common.js.map +1 -1
  52. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/commonTypes.d.ts +1 -1
  53. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteLanguageConstant.d.ts +4 -3
  54. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteLanguageConstant.js +126 -82
  55. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteLanguageConstant.js.map +1 -1
  56. package/lib/powerquery-language-services/inspection/autocomplete/autocompletePrimitiveType.d.ts +5 -3
  57. package/lib/powerquery-language-services/inspection/autocomplete/autocompletePrimitiveType.js +305 -53
  58. package/lib/powerquery-language-services/inspection/autocomplete/autocompletePrimitiveType.js.map +1 -1
  59. package/lib/powerquery-language-services/inspection/autocomplete/commonTypes.d.ts +6 -7
  60. package/lib/powerquery-language-services/inspection/autocomplete/task.js +8 -11
  61. package/lib/powerquery-language-services/inspection/autocomplete/task.js.map +1 -1
  62. package/lib/powerquery-language-services/inspection/autocomplete/trailingToken.d.ts +7 -0
  63. package/lib/powerquery-language-services/inspection/autocomplete/trailingToken.js +5 -0
  64. package/lib/powerquery-language-services/inspection/autocomplete/trailingToken.js.map +1 -0
  65. package/lib/powerquery-language-services/inspection/autocomplete/{common.d.ts → trailingTokenUtils.d.ts} +1 -1
  66. package/lib/powerquery-language-services/inspection/autocomplete/trailingTokenUtils.js +19 -0
  67. package/lib/powerquery-language-services/inspection/autocomplete/trailingTokenUtils.js.map +1 -0
  68. package/lib/powerquery-language-services/inspection/deferenceIdentifier.js +23 -20
  69. package/lib/powerquery-language-services/inspection/deferenceIdentifier.js.map +1 -1
  70. package/lib/powerquery-language-services/inspection/expectedType.js +62 -61
  71. package/lib/powerquery-language-services/inspection/expectedType.js.map +1 -1
  72. package/lib/powerquery-language-services/inspection/invokeExpression/currentInvokeExpression.js +20 -15
  73. package/lib/powerquery-language-services/inspection/invokeExpression/currentInvokeExpression.js.map +1 -1
  74. package/lib/powerquery-language-services/inspection/invokeExpression/invokeExpression.js +12 -10
  75. package/lib/powerquery-language-services/inspection/invokeExpression/invokeExpression.js.map +1 -1
  76. package/lib/powerquery-language-services/inspection/pseudoFunctionExpressionType.js +7 -7
  77. package/lib/powerquery-language-services/inspection/pseudoFunctionExpressionType.js.map +1 -1
  78. package/lib/powerquery-language-services/inspection/scope/scope.d.ts +1 -1
  79. package/lib/powerquery-language-services/inspection/scope/scope.js.map +1 -1
  80. package/lib/powerquery-language-services/inspection/scope/scopeInspection.js +38 -36
  81. package/lib/powerquery-language-services/inspection/scope/scopeInspection.js.map +1 -1
  82. package/lib/powerquery-language-services/inspection/scope/scopeUtils.js +20 -18
  83. package/lib/powerquery-language-services/inspection/scope/scopeUtils.js.map +1 -1
  84. package/lib/powerquery-language-services/inspection/task.js +24 -21
  85. package/lib/powerquery-language-services/inspection/task.js.map +1 -1
  86. package/lib/powerquery-language-services/inspection/type/inspectType/common.d.ts +1 -1
  87. package/lib/powerquery-language-services/inspection/type/inspectType/common.js +85 -84
  88. package/lib/powerquery-language-services/inspection/type/inspectType/common.js.map +1 -1
  89. package/lib/powerquery-language-services/inspection/type/inspectType/examineFieldSpecificationList.js +4 -3
  90. package/lib/powerquery-language-services/inspection/type/inspectType/examineFieldSpecificationList.js.map +1 -1
  91. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeConstant.js +38 -38
  92. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeConstant.js.map +1 -1
  93. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeEachExpression.js +6 -5
  94. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeEachExpression.js.map +1 -1
  95. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeErrorHandlingExpression.js +10 -9
  96. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeErrorHandlingExpression.js.map +1 -1
  97. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/common.js +6 -5
  98. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/common.js.map +1 -1
  99. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/inspectTypeFieldProjection.js +25 -24
  100. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/inspectTypeFieldProjection.js.map +1 -1
  101. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/inspectTypeFieldSelector.js +11 -10
  102. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/inspectTypeFieldSelector.js.map +1 -1
  103. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFieldSpecification.js +5 -4
  104. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFieldSpecification.js.map +1 -1
  105. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFunctionExpression.js +15 -13
  106. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFunctionExpression.js.map +1 -1
  107. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFunctionType.js +14 -12
  108. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFunctionType.js.map +1 -1
  109. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeIdentifier.js +5 -4
  110. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeIdentifier.js.map +1 -1
  111. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeIdentifierExpression.js +5 -4
  112. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeIdentifierExpression.js.map +1 -1
  113. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeIfExpression.js +11 -10
  114. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeIfExpression.js.map +1 -1
  115. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeInvokeExpression.js +11 -10
  116. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeInvokeExpression.js.map +1 -1
  117. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeList.js +8 -6
  118. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeList.js.map +1 -1
  119. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeListType.js +10 -8
  120. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeListType.js.map +1 -1
  121. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeLiteralExpression.js +11 -10
  122. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeLiteralExpression.js.map +1 -1
  123. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeNullCoalescingExpression.js +10 -6
  124. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeNullCoalescingExpression.js.map +1 -1
  125. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeParameter.js +5 -4
  126. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeParameter.js.map +1 -1
  127. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypePrimitiveType.js +6 -5
  128. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypePrimitiveType.js.map +1 -1
  129. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRangeExpression.js +10 -8
  130. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRangeExpression.js.map +1 -1
  131. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRecord.js +8 -6
  132. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRecord.js.map +1 -1
  133. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRecordType.js +9 -7
  134. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRecordType.js.map +1 -1
  135. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRecursivePrimaryExpression.js +11 -10
  136. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRecursivePrimaryExpression.js.map +1 -1
  137. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeTBinOpExpression.js +89 -88
  138. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeTBinOpExpression.js.map +1 -1
  139. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeTableType.js +12 -10
  140. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeTableType.js.map +1 -1
  141. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeUnaryExpression.js +14 -13
  142. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeUnaryExpression.js.map +1 -1
  143. package/lib/powerquery-language-services/inspection/type/task.js +9 -7
  144. package/lib/powerquery-language-services/inspection/type/task.js.map +1 -1
  145. package/lib/powerquery-language-services/inspection/typeCache/typeCacheUtils.d.ts +1 -1
  146. package/lib/powerquery-language-services/inspection/typeCache/typeCacheUtils.js +3 -3
  147. package/lib/powerquery-language-services/inspection/typeCache/typeCacheUtils.js.map +1 -1
  148. package/lib/powerquery-language-services/inspectionSettings.d.ts +1 -1
  149. package/lib/powerquery-language-services/inspectionSettings.js.map +1 -1
  150. package/lib/powerquery-language-services/inspectionUtils.d.ts +3 -3
  151. package/lib/powerquery-language-services/inspectionUtils.js +51 -52
  152. package/lib/powerquery-language-services/inspectionUtils.js.map +1 -1
  153. package/lib/powerquery-language-services/library/library.d.ts +1 -1
  154. package/lib/powerquery-language-services/library/library.js.map +1 -1
  155. package/lib/powerquery-language-services/library/librarySymbolUtils.d.ts +10 -2
  156. package/lib/powerquery-language-services/library/librarySymbolUtils.js +27 -21
  157. package/lib/powerquery-language-services/library/librarySymbolUtils.js.map +1 -1
  158. package/lib/powerquery-language-services/library/libraryUtils.d.ts +5 -5
  159. package/lib/powerquery-language-services/library/libraryUtils.js +24 -23
  160. package/lib/powerquery-language-services/library/libraryUtils.js.map +1 -1
  161. package/lib/powerquery-language-services/localization/templates.js +42 -42
  162. package/lib/powerquery-language-services/localization/templates.js.map +1 -1
  163. package/lib/powerquery-language-services/positionUtils.d.ts +9 -4
  164. package/lib/powerquery-language-services/positionUtils.js +55 -23
  165. package/lib/powerquery-language-services/positionUtils.js.map +1 -1
  166. package/lib/powerquery-language-services/providers/languageCompletionItemProvider.js +15 -15
  167. package/lib/powerquery-language-services/providers/languageCompletionItemProvider.js.map +1 -1
  168. package/lib/powerquery-language-services/providers/libraryProvider.js +9 -8
  169. package/lib/powerquery-language-services/providers/libraryProvider.js.map +1 -1
  170. package/lib/powerquery-language-services/providers/localDocumentProvider/foldingRanges.js +16 -14
  171. package/lib/powerquery-language-services/providers/localDocumentProvider/foldingRanges.js.map +1 -1
  172. package/lib/powerquery-language-services/providers/localDocumentProvider/localDocumentProvider.js +24 -23
  173. package/lib/powerquery-language-services/providers/localDocumentProvider/localDocumentProvider.js.map +1 -1
  174. package/lib/powerquery-language-services/providers/localDocumentProvider/partialSemanticToken.js +73 -71
  175. package/lib/powerquery-language-services/providers/localDocumentProvider/partialSemanticToken.js.map +1 -1
  176. package/lib/powerquery-language-services/providers/nullSymbolProvider.js +6 -6
  177. package/lib/powerquery-language-services/providers/nullSymbolProvider.js.map +1 -1
  178. package/lib/powerquery-language-services/tokenPositionComparison.d.ts +5 -0
  179. package/lib/powerquery-language-services/tokenPositionComparison.js +13 -0
  180. package/lib/powerquery-language-services/tokenPositionComparison.js.map +1 -0
  181. package/lib/powerquery-language-services/trace.d.ts +4 -4
  182. package/lib/powerquery-language-services/trace.js.map +1 -1
  183. package/lib/powerquery-language-services/traceUtils.d.ts +2 -2
  184. package/lib/powerquery-language-services/traceUtils.js +5 -5
  185. package/lib/powerquery-language-services/traceUtils.js.map +1 -1
  186. package/lib/powerquery-language-services/validate/validate.js +6 -5
  187. package/lib/powerquery-language-services/validate/validate.js.map +1 -1
  188. package/lib/powerquery-language-services/validate/validateDuplicateIdentifiers.js +16 -14
  189. package/lib/powerquery-language-services/validate/validateDuplicateIdentifiers.js.map +1 -1
  190. package/lib/powerquery-language-services/validate/validateFunctionExpression.js +6 -4
  191. package/lib/powerquery-language-services/validate/validateFunctionExpression.js.map +1 -1
  192. package/lib/powerquery-language-services/validate/validateInvokeExpression.js +7 -5
  193. package/lib/powerquery-language-services/validate/validateInvokeExpression.js.map +1 -1
  194. package/lib/powerquery-language-services/validate/validateUnknownIdentifiers.js +10 -7
  195. package/lib/powerquery-language-services/validate/validateUnknownIdentifiers.js.map +1 -1
  196. package/package.json +10 -8
  197. package/lib/powerquery-language-services/inspection/autocomplete/common.js +0 -11
  198. package/lib/powerquery-language-services/inspection/autocomplete/common.js.map +0 -1
@@ -16,24 +16,29 @@ const PQP = require("@microsoft/powerquery-parser/lib/powerquery-parser");
16
16
  const powerquery_parser_1 = require("@microsoft/powerquery-parser");
17
17
  const vscode_languageserver_types_1 = require("vscode-languageserver-types");
18
18
  const parser_1 = require("@microsoft/powerquery-parser/lib/powerquery-parser/parser");
19
+ const trace_1 = require("@microsoft/powerquery-parser/lib/powerquery-parser/common/trace");
20
+ const language_1 = require("@microsoft/powerquery-parser/lib/powerquery-parser/language");
19
21
  const inspection_1 = require("../inspection");
20
22
  const __1 = require("..");
21
23
  const scopeUtils_1 = require("../inspection/scope/scopeUtils");
22
24
  const providers_1 = require("../providers");
23
- // Implementation of Analysis, subclass it as needed.
24
- // Does not implement `dispose`.
25
+ const trace_2 = require("../trace");
26
+ // Implementation of Analysis.
27
+ // All public methods should:
28
+ // - use ensureResultAsync to ensure a Result, allowing all protected methods to safetly throw.
29
+ // - take an optional cancellation token.
25
30
  class AnalysisBase {
26
31
  constructor(textDocument, analysisSettings) {
27
32
  this.textDocument = textDocument;
28
- this.analysisSettings = analysisSettings;
29
- // Shared across actions
30
- this.parseError = undefined;
31
- this.parseState = undefined;
32
- this.triedLexParse = undefined;
33
+ // Local type cache that is shared across provider actions.
33
34
  this.typeCache = {
34
35
  scopeById: new Map(),
35
36
  typeById: new Map(),
36
37
  };
38
+ this.initialCorrelationId = analysisSettings.initialCorrelationId;
39
+ this.inspectionSettings = analysisSettings.inspectionSettings;
40
+ this.locale = analysisSettings.inspectionSettings.locale;
41
+ this.traceManager = analysisSettings.traceManager;
37
42
  this.languageAutocompleteItemProvider = analysisSettings.languageAutocompleteItemProviderFactory
38
43
  ? analysisSettings.languageAutocompleteItemProviderFactory(analysisSettings.inspectionSettings.locale)
39
44
  : new providers_1.LanguageAutocompleteItemProvider(analysisSettings.inspectionSettings.locale);
@@ -43,12 +48,12 @@ class AnalysisBase {
43
48
  this.localDocumentProvider = analysisSettings.localDocumentProviderFactory
44
49
  ? analysisSettings.localDocumentProviderFactory(textDocument.uri.toString(), this.typeCache, analysisSettings.inspectionSettings.library, analysisSettings.inspectionSettings.locale)
45
50
  : new providers_1.LocalDocumentProvider(this.textDocument.uri.toString(), this.typeCache, analysisSettings.inspectionSettings.library, analysisSettings.inspectionSettings.locale);
46
- void this.initializeState();
51
+ this.triedLexParse = this.tryLexParse();
47
52
  }
48
- getAutocompleteItems(position, cancellationToken) {
53
+ getAutocompleteItems(position, cancellationTokenOverride) {
49
54
  return powerquery_parser_1.ResultUtils.ensureResultAsync(() => __awaiter(this, void 0, void 0, function* () {
50
- const trace = this.analysisSettings.traceManager.entry("AnalysisBase" /* AnalysisBase */, this.getAutocompleteItems.name, this.analysisSettings.initialCorrelationId);
51
- const context = yield this.getAutocompleteItemProviderContext(position, trace.id, cancellationToken);
55
+ const trace = this.traceManager.entry(trace_2.ValidationTraceConstant.AnalysisBase, this.getAutocompleteItems.name, this.initialCorrelationId);
56
+ const context = yield this.getAutocompleteItemProviderContext(position, trace.id, cancellationTokenOverride);
52
57
  if (context === undefined) {
53
58
  trace.exit();
54
59
  return undefined;
@@ -70,63 +75,66 @@ class AnalysisBase {
70
75
  }
71
76
  trace.exit();
72
77
  return autocompleteItems;
73
- }), this.analysisSettings.inspectionSettings.locale);
78
+ }), this.locale);
74
79
  }
75
- getDefinition(position, cancellationToken) {
80
+ getDefinition(position, cancellationTokenOverride) {
76
81
  return powerquery_parser_1.ResultUtils.ensureResultAsync(() => __awaiter(this, void 0, void 0, function* () {
77
- const trace = this.analysisSettings.traceManager.entry("AnalysisBase" /* AnalysisBase */, this.getDefinition.name, this.analysisSettings.initialCorrelationId);
78
- const identifierContext = yield this.getDefinitionProviderContext(position, trace.id, cancellationToken);
82
+ const trace = this.traceManager.entry(trace_2.ValidationTraceConstant.AnalysisBase, this.getDefinition.name, this.initialCorrelationId);
83
+ const identifierContext = yield this.getDefinitionProviderContext(position, trace.id, cancellationTokenOverride);
79
84
  if (!identifierContext) {
80
85
  trace.exit();
81
86
  return undefined;
82
87
  }
83
88
  const result = yield this.localDocumentProvider.getDefinition(identifierContext);
84
- trace.exit();
85
89
  if (powerquery_parser_1.ResultUtils.isError(result)) {
90
+ trace.exit({ [trace_1.TraceConstant.IsThrowing]: true });
86
91
  throw result.error;
87
92
  }
93
+ trace.exit();
88
94
  return result.value;
89
- }), this.analysisSettings.inspectionSettings.locale);
95
+ }), this.locale);
90
96
  }
91
- getDocumentSymbols(cancellationToken) {
97
+ getDocumentSymbols(cancellationTokenOverride) {
92
98
  return powerquery_parser_1.ResultUtils.ensureResultAsync(() => __awaiter(this, void 0, void 0, function* () {
93
- const parseState = yield this.getParseState();
99
+ const parseState = yield this.getParseStateOkOrThrow(undefined);
94
100
  if (parseState === undefined) {
95
101
  return undefined;
96
102
  }
97
103
  const nodeIdMapCollection = parseState.contextState.nodeIdMapCollection;
98
104
  const currentSymbols = [];
99
105
  const parentSymbolById = new Map();
106
+ const cancellationToken = cancellationTokenOverride !== null && cancellationTokenOverride !== void 0 ? cancellationTokenOverride : this.inspectionSettings.cancellationToken;
100
107
  addIdentifierPairedExpressionSymbols(nodeIdMapCollection, currentSymbols, parentSymbolById, cancellationToken);
101
108
  addRecordSymbols(nodeIdMapCollection, currentSymbols, parentSymbolById, cancellationToken);
102
109
  return currentSymbols;
103
- }), this.analysisSettings.inspectionSettings.locale);
110
+ }), this.locale);
104
111
  }
105
- getFoldingRanges(cancellationToken) {
112
+ getFoldingRanges(cancellationTokenOverride) {
106
113
  return powerquery_parser_1.ResultUtils.ensureResultAsync(() => __awaiter(this, void 0, void 0, function* () {
107
- const trace = this.analysisSettings.traceManager.entry("AnalysisBase" /* AnalysisBase */, this.getFoldingRanges.name, this.analysisSettings.initialCorrelationId);
108
- const parseState = yield this.getParseState();
114
+ const trace = this.traceManager.entry(trace_2.ValidationTraceConstant.AnalysisBase, this.getFoldingRanges.name, this.initialCorrelationId);
115
+ const parseState = yield this.getParseStateOkOrThrow(trace);
109
116
  if (parseState === undefined) {
110
117
  trace.exit();
111
118
  return undefined;
112
119
  }
113
120
  const result = yield this.localDocumentProvider.getFoldingRanges({
114
- traceManager: this.analysisSettings.traceManager,
121
+ traceManager: this.traceManager,
115
122
  initialCorrelationId: trace.id,
116
- cancellationToken,
123
+ cancellationToken: cancellationTokenOverride !== null && cancellationTokenOverride !== void 0 ? cancellationTokenOverride : this.inspectionSettings.cancellationToken,
117
124
  nodeIdMapCollection: parseState.contextState.nodeIdMapCollection,
118
125
  });
119
- trace.exit();
120
126
  if (powerquery_parser_1.ResultUtils.isError(result)) {
127
+ trace.exit({ [trace_1.TraceConstant.IsThrowing]: true });
121
128
  throw result.error;
122
129
  }
130
+ trace.exit();
123
131
  return result.value;
124
- }), this.analysisSettings.inspectionSettings.locale);
132
+ }), this.locale);
125
133
  }
126
- getHover(position, cancellationToken) {
134
+ getHover(position, cancellationTokenOverride) {
127
135
  return powerquery_parser_1.ResultUtils.ensureResultAsync(() => __awaiter(this, void 0, void 0, function* () {
128
- const trace = this.analysisSettings.traceManager.entry("AnalysisBase" /* AnalysisBase */, this.getHover.name, this.analysisSettings.initialCorrelationId);
129
- const hoverProviderContext = yield this.getHoverProviderContext(position, trace.id, cancellationToken);
136
+ const trace = this.traceManager.entry(trace_2.ValidationTraceConstant.AnalysisBase, this.getHover.name, this.initialCorrelationId);
137
+ const hoverProviderContext = yield this.getHoverProviderContext(position, trace.id, cancellationTokenOverride);
130
138
  if (!hoverProviderContext) {
131
139
  trace.exit();
132
140
  return undefined;
@@ -148,59 +156,84 @@ class AnalysisBase {
148
156
  firstError = triedHover.error;
149
157
  }
150
158
  }
151
- trace.exit();
152
159
  if (firstError !== undefined) {
153
- // This is safe as the ensureResultAsync function catch the error.
160
+ trace.exit({ [trace_1.TraceConstant.IsThrowing]: true });
154
161
  throw firstError;
155
162
  }
156
- else {
163
+ trace.exit();
164
+ return undefined;
165
+ }), this.locale);
166
+ }
167
+ // We should only get an undefined for an activeNode iff a parse pass hasn't been done.
168
+ getActiveNode(position) {
169
+ return powerquery_parser_1.ResultUtils.ensureResultAsync(() => __awaiter(this, void 0, void 0, function* () {
170
+ const parseState = yield this.getParseStateOkOrThrow(undefined);
171
+ if (parseState === undefined) {
157
172
  return undefined;
158
173
  }
159
- }), this.analysisSettings.inspectionSettings.locale);
174
+ return inspection_1.ActiveNodeUtils.activeNode(parseState.contextState.nodeIdMapCollection, position);
175
+ }), this.locale);
160
176
  }
161
- // Assumes that initializeState sets parseError to some value, which may include undefined.
177
+ // undefined means either the parse pass wasn't done (lexing error), or there was no error.
162
178
  getParseError() {
163
- return __awaiter(this, void 0, void 0, function* () {
164
- if (this.triedLexParse === undefined) {
165
- yield this.initializeState();
179
+ return powerquery_parser_1.ResultUtils.ensureResultAsync(() => __awaiter(this, void 0, void 0, function* () {
180
+ const triedLexParse = yield this.triedLexParse;
181
+ if (PQP.TaskUtils.isParseStageCommonError(triedLexParse)) {
182
+ throw triedLexParse.error;
166
183
  }
167
- return this.parseError;
168
- });
184
+ else if (PQP.TaskUtils.isParseStageError(triedLexParse)) {
185
+ return triedLexParse.error;
186
+ }
187
+ else {
188
+ return undefined;
189
+ }
190
+ }), this.locale);
169
191
  }
170
- // Assumes that initializeState sets parseState to some value, which may include undefined.
192
+ // We should only get an undefined for an activeNode iff a parse pass hasn't been done.
171
193
  getParseState() {
172
- return __awaiter(this, void 0, void 0, function* () {
173
- if (this.triedLexParse === undefined) {
174
- yield this.initializeState();
194
+ return powerquery_parser_1.ResultUtils.ensureResultAsync(() => __awaiter(this, void 0, void 0, function* () {
195
+ const triedLexParse = yield this.triedLexParse;
196
+ if (PQP.TaskUtils.isParseStageCommonError(triedLexParse)) {
197
+ throw triedLexParse.error;
175
198
  }
176
- return this.parseState;
177
- });
199
+ else if (PQP.TaskUtils.isParseStageError(triedLexParse)) {
200
+ return triedLexParse.parseState;
201
+ }
202
+ else if (PQP.TaskUtils.isParseStageOk(triedLexParse)) {
203
+ return triedLexParse.parseState;
204
+ }
205
+ else {
206
+ return undefined;
207
+ }
208
+ }), this.locale);
178
209
  }
179
- getPartialSemanticTokens(cancellationToken) {
210
+ getPartialSemanticTokens(cancellationTokenOverride) {
180
211
  return powerquery_parser_1.ResultUtils.ensureResultAsync(() => __awaiter(this, void 0, void 0, function* () {
181
- const trace = this.analysisSettings.traceManager.entry("AnalysisBase" /* AnalysisBase */, this.getPartialSemanticTokens.name, this.analysisSettings.initialCorrelationId);
182
- const parseState = yield this.getParseState();
212
+ const trace = this.traceManager.entry(trace_2.ValidationTraceConstant.AnalysisBase, this.getPartialSemanticTokens.name, this.initialCorrelationId);
213
+ const parseState = yield this.getParseStateOkOrThrow(trace);
183
214
  if (parseState === undefined) {
215
+ trace.exit();
184
216
  return undefined;
185
217
  }
186
218
  const result = yield this.localDocumentProvider.getPartialSemanticTokens({
187
- traceManager: this.analysisSettings.traceManager,
219
+ traceManager: this.traceManager,
188
220
  initialCorrelationId: trace.id,
189
- cancellationToken,
190
- library: this.analysisSettings.inspectionSettings.library,
221
+ cancellationToken: cancellationTokenOverride !== null && cancellationTokenOverride !== void 0 ? cancellationTokenOverride : this.inspectionSettings.cancellationToken,
222
+ library: this.inspectionSettings.library,
191
223
  parseState,
192
224
  });
193
- trace.exit();
194
225
  if (powerquery_parser_1.ResultUtils.isError(result)) {
226
+ trace.exit({ [trace_1.TraceConstant.IsThrowing]: true });
195
227
  throw result.error;
196
228
  }
229
+ trace.exit();
197
230
  return result.value;
198
- }), this.analysisSettings.inspectionSettings.locale);
231
+ }), this.locale);
199
232
  }
200
- getSignatureHelp(position, cancellationToken) {
233
+ getSignatureHelp(position, cancellationTokenOverride) {
201
234
  return powerquery_parser_1.ResultUtils.ensureResultAsync(() => __awaiter(this, void 0, void 0, function* () {
202
- const trace = this.analysisSettings.traceManager.entry("AnalysisBase" /* AnalysisBase */, this.getSignatureHelp.name, this.analysisSettings.initialCorrelationId);
203
- const signatureProviderContext = yield this.getSignatureProviderContext(position, trace.id, cancellationToken);
235
+ const trace = this.traceManager.entry(trace_2.ValidationTraceConstant.AnalysisBase, this.getSignatureHelp.name, this.initialCorrelationId);
236
+ const signatureProviderContext = yield this.getSignatureProviderContext(position, trace.id, cancellationTokenOverride);
204
237
  if (signatureProviderContext === undefined) {
205
238
  trace.exit();
206
239
  return undefined;
@@ -217,62 +250,62 @@ class AnalysisBase {
217
250
  }
218
251
  trace.exit();
219
252
  return undefined;
220
- }), this.analysisSettings.inspectionSettings.locale);
253
+ }), this.locale);
221
254
  }
222
- getRenameEdits(position, newName, cancellationToken) {
255
+ getRenameEdits(position, newName, cancellationTokenOverride) {
223
256
  return powerquery_parser_1.ResultUtils.ensureResultAsync(() => __awaiter(this, void 0, void 0, function* () {
224
- const trace = this.analysisSettings.traceManager.entry("AnalysisBase" /* AnalysisBase */, this.getRenameEdits.name, this.analysisSettings.initialCorrelationId);
225
- const activeNode = powerquery_parser_1.Assert.asDefined(yield this.getActiveNode(position));
226
- let leafIdentifier;
227
- if (!inspection_1.ActiveNodeUtils.isPositionInBounds(activeNode) ||
257
+ const trace = this.traceManager.entry(trace_2.ValidationTraceConstant.AnalysisBase, this.getRenameEdits.name, this.initialCorrelationId);
258
+ const parseState = yield this.getParseStateOkOrThrow(trace);
259
+ const activeNode = yield this.getActiveNodeOkOrThrow(position, trace);
260
+ if (parseState === undefined ||
261
+ activeNode === undefined ||
262
+ !inspection_1.ActiveNodeUtils.isPositionInBounds(activeNode) ||
228
263
  activeNode.inclusiveIdentifierUnderPosition === undefined) {
229
264
  trace.exit();
230
265
  return undefined;
231
266
  }
232
- else {
233
- leafIdentifier = activeNode.inclusiveIdentifierUnderPosition;
234
- }
235
- void (yield this.inspectNodeScope(activeNode, trace.id, cancellationToken));
267
+ void (yield this.inspectNodeScope(activeNode, trace.id, cancellationTokenOverride));
268
+ const leafIdentifier = activeNode.inclusiveIdentifierUnderPosition;
236
269
  const scopeById = this.typeCache.scopeById;
237
270
  const identifiersToBeEdited = [];
238
271
  let valueCreator = undefined;
239
- if (leafIdentifier.node.kind === "GeneralizedIdentifier" /* GeneralizedIdentifier */) {
272
+ if (leafIdentifier.node.kind === language_1.Ast.NodeKind.GeneralizedIdentifier) {
240
273
  valueCreator = leafIdentifier.node;
241
274
  }
242
- else if ((leafIdentifier.node.kind === "Identifier" /* Identifier */ ||
243
- leafIdentifier.node.kind === "IdentifierExpression" /* IdentifierExpression */) &&
275
+ else if ((leafIdentifier.node.kind === language_1.Ast.NodeKind.Identifier ||
276
+ leafIdentifier.node.kind === language_1.Ast.NodeKind.IdentifierExpression) &&
244
277
  scopeById) {
245
278
  // need to find this key value and modify all referring it
246
- const identifierExpression = leafIdentifier.node.kind === "IdentifierExpression" /* IdentifierExpression */
279
+ const identifierExpression = leafIdentifier.node.kind === language_1.Ast.NodeKind.IdentifierExpression
247
280
  ? leafIdentifier.node.identifier
248
281
  : leafIdentifier.node;
249
282
  switch (identifierExpression.identifierContextKind) {
250
- case "Key" /* Key */:
251
- case "Parameter" /* Parameter */:
283
+ case language_1.Ast.IdentifierContextKind.Key:
284
+ case language_1.Ast.IdentifierContextKind.Parameter:
252
285
  // it is the identifier creating the value
253
286
  valueCreator = identifierExpression;
254
287
  break;
255
- case "Value" /* Value */: {
288
+ case language_1.Ast.IdentifierContextKind.Value: {
256
289
  // it is the identifier referring the value
257
290
  let nodeScope = scopeById.get(identifierExpression.id);
258
291
  // there might be a chance that its scope did not get populated yet, do another try
259
292
  if (!nodeScope) {
260
- void (yield __1.Inspection.tryNodeScope(this.analysisSettings.inspectionSettings, powerquery_parser_1.Assert.asDefined(yield this.getParseState()).contextState.nodeIdMapCollection, identifierExpression.id, scopeById));
293
+ void (yield __1.Inspection.tryNodeScope(this.inspectionSettings, parseState.contextState.nodeIdMapCollection, identifierExpression.id, scopeById));
261
294
  nodeScope = scopeById.get(identifierExpression.id);
262
295
  }
263
296
  const scopeItem = (0, scopeUtils_1.findScopeItemByLiteral)(nodeScope, leafIdentifier.normalizedLiteral);
264
297
  if (scopeItem) {
265
298
  const valueCreatorSearch = (0, scopeUtils_1.scopeCreatorIdentifier)(scopeItem);
266
- if ((valueCreatorSearch === null || valueCreatorSearch === void 0 ? void 0 : valueCreatorSearch.kind) === "Identifier" /* Identifier */) {
267
- if (valueCreatorSearch.identifierContextKind === "Key" /* Key */ ||
268
- valueCreatorSearch.identifierContextKind === "Parameter" /* Parameter */) {
299
+ if ((valueCreatorSearch === null || valueCreatorSearch === void 0 ? void 0 : valueCreatorSearch.kind) === language_1.Ast.NodeKind.Identifier) {
300
+ if (valueCreatorSearch.identifierContextKind === language_1.Ast.IdentifierContextKind.Key ||
301
+ valueCreatorSearch.identifierContextKind === language_1.Ast.IdentifierContextKind.Parameter) {
269
302
  valueCreator = valueCreatorSearch;
270
303
  }
271
304
  else {
272
305
  identifiersToBeEdited.push(valueCreatorSearch);
273
306
  }
274
307
  }
275
- else if ((valueCreatorSearch === null || valueCreatorSearch === void 0 ? void 0 : valueCreatorSearch.kind) === "GeneralizedIdentifier" /* GeneralizedIdentifier */) {
308
+ else if ((valueCreatorSearch === null || valueCreatorSearch === void 0 ? void 0 : valueCreatorSearch.kind) === language_1.Ast.NodeKind.GeneralizedIdentifier) {
276
309
  valueCreator = valueCreatorSearch;
277
310
  }
278
311
  else if (valueCreatorSearch) {
@@ -281,7 +314,7 @@ class AnalysisBase {
281
314
  }
282
315
  break;
283
316
  }
284
- case "Keyword" /* Keyword */:
317
+ case language_1.Ast.IdentifierContextKind.Keyword:
285
318
  default:
286
319
  // only modify once
287
320
  identifiersToBeEdited.push(identifierExpression);
@@ -290,72 +323,58 @@ class AnalysisBase {
290
323
  }
291
324
  if (valueCreator) {
292
325
  // need to populate the other identifiers referring it
293
- identifiersToBeEdited.push(...(yield this.collectAllIdentifiersBeneath(powerquery_parser_1.Assert.asDefined(yield this.getParseState()).contextState.nodeIdMapCollection, valueCreator)));
326
+ identifiersToBeEdited.push(...(yield this.collectAllIdentifiersBeneath(parseState.contextState.nodeIdMapCollection, valueCreator)));
294
327
  }
295
328
  // if none found, directly put inclusiveIdentifierUnderPosition in if it exists
296
329
  if (identifiersToBeEdited.length === 0 && leafIdentifier) {
297
- identifiersToBeEdited.push(leafIdentifier.node.kind === "IdentifierExpression" /* IdentifierExpression */
330
+ identifiersToBeEdited.push(leafIdentifier.node.kind === language_1.Ast.NodeKind.IdentifierExpression
298
331
  ? leafIdentifier.node.identifier
299
332
  : leafIdentifier.node);
300
333
  }
301
334
  const result = identifiersToBeEdited.map((one) => ({
302
- range: __1.PositionUtils.createRangeFromTokenRange(one.tokenRange),
335
+ range: __1.PositionUtils.rangeFromTokenRange(one.tokenRange),
303
336
  newText: newName,
304
337
  }));
305
338
  trace.exit();
306
339
  return result;
307
- }), this.analysisSettings.inspectionSettings.locale);
340
+ }), this.locale);
308
341
  }
309
342
  dispose() {
310
343
  this.typeCache.scopeById.clear();
311
344
  this.typeCache.typeById.clear();
312
345
  }
313
- // protected abstract getText(range?: Range): string;
314
346
  static isValidHoverIdentifier(activeNode) {
315
347
  var _a;
316
348
  const ancestry = activeNode.ancestry;
317
- if (ancestry.length <= 1) {
318
- return true;
319
- }
320
- const leaf = powerquery_parser_1.Assert.asDefined(ancestry[0]);
321
- const followingNode = ancestry[1];
322
- if (((_a = followingNode === null || followingNode === void 0 ? void 0 : followingNode.node) === null || _a === void 0 ? void 0 : _a.kind) === "Parameter" /* Parameter */) {
323
- return false;
324
- }
325
- // Allow hover on either the key or value of [Generalized|Identifier]PairedExpression.
326
- // Validate it's not an incomplete Ast or that you're on the conjunction.
327
- else if ([
328
- "GeneralizedIdentifierPairedAnyLiteral" /* GeneralizedIdentifierPairedAnyLiteral */,
329
- "GeneralizedIdentifierPairedExpression" /* GeneralizedIdentifierPairedExpression */,
330
- "IdentifierPairedExpression" /* IdentifierPairedExpression */,
331
- ].includes(followingNode.node.kind) &&
332
- [undefined, 1].includes(powerquery_parser_1.Assert.asDefined(leaf.node.attributeIndex))) {
349
+ const parent = ancestry[1];
350
+ if (((_a = parent === null || parent === void 0 ? void 0 : parent.node) === null || _a === void 0 ? void 0 : _a.kind) === language_1.Ast.NodeKind.Parameter) {
333
351
  return false;
334
352
  }
335
353
  return true;
336
354
  }
337
- getAutocompleteItemProviderContext(position, correlationId, newCancellationToken) {
355
+ getAutocompleteItemProviderContext(position, correlationId, cancellationTokenOverride) {
338
356
  return __awaiter(this, void 0, void 0, function* () {
339
- const trace = this.analysisSettings.traceManager.entry("AnalysisBase" /* AnalysisBase */, this.getAutocompleteItemProviderContext.name, correlationId);
340
- const activeNode = yield this.getActiveNode(position);
341
- if (activeNode === undefined) {
357
+ const trace = this.traceManager.entry(trace_2.ValidationTraceConstant.AnalysisBase, this.getAutocompleteItemProviderContext.name, correlationId);
358
+ const activeNode = yield this.getActiveNodeOkOrThrow(position, trace);
359
+ if (activeNode === undefined || (inspection_1.ActiveNodeUtils.isPositionInBounds(activeNode) && activeNode.isInKey)) {
342
360
  trace.exit();
343
361
  return undefined;
344
362
  }
345
- const autocomplete = powerquery_parser_1.Assert.asDefined(yield this.inspectAutocomplete(activeNode, trace.id, newCancellationToken));
346
- const triedNodeScope = powerquery_parser_1.Assert.asDefined(yield this.inspectNodeScope(activeNode, trace.id, newCancellationToken));
347
- const triedScopeType = powerquery_parser_1.Assert.asDefined(yield this.inspectScopeType(activeNode, trace.id, newCancellationToken));
363
+ const autocomplete = powerquery_parser_1.Assert.asDefined(yield this.inspectAutocomplete(activeNode, trace.id, cancellationTokenOverride), "we have a truthy activeNode meaning we have a truthy parseState");
364
+ const triedNodeScope = powerquery_parser_1.Assert.asDefined(yield this.inspectNodeScope(activeNode, trace.id, cancellationTokenOverride), "we have a truthy activeNode meaning we have a truthy parseState");
365
+ const triedScopeType = powerquery_parser_1.Assert.asDefined(yield this.inspectScopeType(activeNode, trace.id, cancellationTokenOverride), "we have a truthy activeNode meaning we have a truthy parseState");
348
366
  const activeLeafIdentifier = inspection_1.ActiveNodeUtils.isPositionInBounds(activeNode)
349
367
  ? activeNode.inclusiveIdentifierUnderPosition
350
368
  : undefined;
351
369
  let result;
370
+ const cancellationToken = cancellationTokenOverride !== null && cancellationTokenOverride !== void 0 ? cancellationTokenOverride : this.inspectionSettings.cancellationToken;
352
371
  if (activeLeafIdentifier !== undefined) {
353
372
  result = {
354
373
  autocomplete,
355
374
  triedNodeScope,
356
375
  triedScopeType,
357
- traceManager: this.analysisSettings.traceManager,
358
- cancellationToken: newCancellationToken,
376
+ traceManager: this.traceManager,
377
+ cancellationToken,
359
378
  initialCorrelationId: trace.id,
360
379
  range: __1.CommonTypesUtils.rangeFromTokenRange(activeLeafIdentifier.node.tokenRange),
361
380
  text: activeLeafIdentifier.normalizedLiteral,
@@ -367,8 +386,8 @@ class AnalysisBase {
367
386
  autocomplete,
368
387
  triedNodeScope,
369
388
  triedScopeType,
370
- traceManager: this.analysisSettings.traceManager,
371
- cancellationToken: newCancellationToken,
389
+ traceManager: this.traceManager,
390
+ cancellationToken,
372
391
  initialCorrelationId: trace.id,
373
392
  };
374
393
  }
@@ -376,39 +395,40 @@ class AnalysisBase {
376
395
  return result;
377
396
  });
378
397
  }
379
- getDefinitionProviderContext(position, correlationId, cancellationToken) {
398
+ getDefinitionProviderContext(position, correlationId, cancellationTokenOverride) {
380
399
  return __awaiter(this, void 0, void 0, function* () {
381
- const trace = this.analysisSettings.traceManager.entry("AnalysisBase" /* AnalysisBase */, this.getDefinitionProviderContext.name, correlationId);
382
- const activeNode = yield this.getActiveNode(position);
383
- if (activeNode === undefined || !inspection_1.ActiveNodeUtils.isPositionInBounds(activeNode)) {
400
+ const trace = this.traceManager.entry(trace_2.ValidationTraceConstant.AnalysisBase, this.getDefinitionProviderContext.name, correlationId);
401
+ const activeNode = yield this.getActiveNodeOkOrThrow(position, trace);
402
+ if (activeNode === undefined ||
403
+ !inspection_1.ActiveNodeUtils.isPositionInBounds(activeNode) ||
404
+ activeNode.exclusiveIdentifierUnderPosition === undefined ||
405
+ !AnalysisBase.isValidHoverIdentifier(activeNode)) {
384
406
  trace.exit();
385
407
  return undefined;
386
408
  }
387
409
  const identifierUnderPosition = activeNode.exclusiveIdentifierUnderPosition;
388
- if (identifierUnderPosition === undefined || !AnalysisBase.isValidHoverIdentifier(activeNode)) {
389
- trace.exit();
390
- return undefined;
391
- }
392
- const identifier = identifierUnderPosition.node.kind === "IdentifierExpression" /* IdentifierExpression */
410
+ const identifier = identifierUnderPosition.node.kind === language_1.Ast.NodeKind.IdentifierExpression
393
411
  ? identifierUnderPosition.node.identifier
394
412
  : identifierUnderPosition.node;
413
+ const cancellationToken = cancellationTokenOverride !== null && cancellationTokenOverride !== void 0 ? cancellationTokenOverride : this.inspectionSettings.cancellationToken;
395
414
  const context = {
396
- traceManager: this.analysisSettings.traceManager,
415
+ traceManager: this.traceManager,
397
416
  range: __1.CommonTypesUtils.rangeFromTokenRange(identifier.tokenRange),
398
- identifier,
399
- cancellationToken,
400
417
  initialCorrelationId: trace.id,
401
- triedNodeScope: powerquery_parser_1.Assert.asDefined(yield this.inspectNodeScope(activeNode, trace.id, cancellationToken)),
418
+ cancellationToken,
419
+ identifier,
420
+ triedNodeScope: powerquery_parser_1.Assert.asDefined(yield this.inspectNodeScope(activeNode, trace.id, cancellationToken), "we got a truthy activeNode meaning we have a truthy parseState"),
402
421
  };
403
422
  trace.exit();
404
423
  return context;
405
424
  });
406
425
  }
407
- getHoverProviderContext(position, correlationId, cancellationToken) {
426
+ getHoverProviderContext(position, correlationId, cancellationTokenOverride) {
408
427
  return __awaiter(this, void 0, void 0, function* () {
409
- const trace = this.analysisSettings.traceManager.entry("AnalysisBase" /* AnalysisBase */, this.getHoverProviderContext.name, correlationId);
410
- const activeNode = yield this.getActiveNode(position);
411
- if (activeNode === undefined || !inspection_1.ActiveNodeUtils.isPositionInBounds(activeNode)) {
428
+ const trace = this.traceManager.entry(trace_2.ValidationTraceConstant.AnalysisBase, this.getHoverProviderContext.name, correlationId);
429
+ const parseState = yield this.getParseStateOkOrThrow(trace);
430
+ const activeNode = yield this.getActiveNodeOkOrThrow(position, trace);
431
+ if (parseState === undefined || activeNode === undefined || !inspection_1.ActiveNodeUtils.isPositionInBounds(activeNode)) {
412
432
  trace.exit();
413
433
  return undefined;
414
434
  }
@@ -417,30 +437,35 @@ class AnalysisBase {
417
437
  trace.exit();
418
438
  return undefined;
419
439
  }
420
- const identifier = identifierUnderPosition.node.kind === "IdentifierExpression" /* IdentifierExpression */
440
+ const cancellationToken = cancellationTokenOverride !== null && cancellationTokenOverride !== void 0 ? cancellationTokenOverride : this.inspectionSettings.cancellationToken;
441
+ const identifier = identifierUnderPosition.node.kind === language_1.Ast.NodeKind.IdentifierExpression
421
442
  ? identifierUnderPosition.node.identifier
422
443
  : identifierUnderPosition.node;
423
444
  const context = {
424
- traceManager: this.analysisSettings.traceManager,
445
+ traceManager: this.traceManager,
425
446
  range: __1.CommonTypesUtils.rangeFromTokenRange(identifier.tokenRange),
426
447
  identifier,
427
448
  cancellationToken,
428
449
  initialCorrelationId: trace.id,
429
450
  activeNode,
430
- inspectionSettings: Object.assign(Object.assign({}, this.analysisSettings.inspectionSettings), { cancellationToken, initialCorrelationId: correlationId }),
431
- parseState: powerquery_parser_1.Assert.asDefined(yield this.getParseState()),
432
- triedNodeScope: powerquery_parser_1.Assert.asDefined(yield this.inspectNodeScope(activeNode, trace.id, cancellationToken)),
433
- triedScopeType: powerquery_parser_1.Assert.asDefined(yield this.inspectScopeType(activeNode, trace.id, cancellationToken)),
451
+ inspectionSettings: Object.assign(Object.assign({}, this.inspectionSettings), { cancellationToken, initialCorrelationId: correlationId }),
452
+ parseState,
453
+ triedNodeScope: powerquery_parser_1.Assert.asDefined(yield this.inspectNodeScope(activeNode, trace.id, cancellationToken), "we have a truthy activeNode meaning we have a truthy parseState"),
454
+ triedScopeType: powerquery_parser_1.Assert.asDefined(yield this.inspectScopeType(activeNode, trace.id, cancellationToken), "we have a truthy activeNode meaning we have a truthy parseState"),
434
455
  };
435
456
  trace.exit();
436
457
  return context;
437
458
  });
438
459
  }
439
- getSignatureProviderContext(position, correlationId, newCancellationToken) {
460
+ getSignatureProviderContext(position, correlationId, cancellationTokenOverride) {
440
461
  return __awaiter(this, void 0, void 0, function* () {
441
- const trace = this.analysisSettings.traceManager.entry("AnalysisBase" /* AnalysisBase */, this.getSignatureProviderContext.name, correlationId);
442
- const triedCurrentInvokeExpression = yield this.inspectCurrentInvokeExpression(position, trace.id, newCancellationToken);
443
- if (triedCurrentInvokeExpression === undefined ||
462
+ const trace = this.traceManager.entry(trace_2.ValidationTraceConstant.AnalysisBase, this.getSignatureProviderContext.name, correlationId);
463
+ const parseState = yield this.getParseStateOkOrThrow(trace);
464
+ const activeNode = yield this.getActiveNodeOkOrThrow(position, trace);
465
+ const triedCurrentInvokeExpression = yield this.inspectCurrentInvokeExpression(position, trace.id, cancellationTokenOverride);
466
+ if (parseState === undefined ||
467
+ activeNode === undefined ||
468
+ triedCurrentInvokeExpression === undefined ||
444
469
  powerquery_parser_1.ResultUtils.isError(triedCurrentInvokeExpression) ||
445
470
  triedCurrentInvokeExpression.value === undefined) {
446
471
  trace.exit();
@@ -453,15 +478,16 @@ class AnalysisBase {
453
478
  trace.exit();
454
479
  return undefined;
455
480
  }
481
+ const cancellationToken = cancellationTokenOverride !== null && cancellationTokenOverride !== void 0 ? cancellationTokenOverride : this.inspectionSettings.cancellationToken;
456
482
  const result = {
457
483
  argumentOrdinal,
458
484
  functionName,
459
485
  isNameInLocalScope: invokeExpression.isNameInLocalScope,
460
486
  functionType: invokeExpression.functionType,
461
- traceManager: this.analysisSettings.traceManager,
462
- cancellationToken: newCancellationToken,
487
+ traceManager: this.traceManager,
488
+ cancellationToken,
463
489
  initialCorrelationId: trace.id,
464
- triedCurrentInvokeExpression: yield __1.Inspection.tryCurrentInvokeExpression(Object.assign(Object.assign({}, this.analysisSettings.inspectionSettings), { cancellationToken: newCancellationToken, initialCorrelationId: trace.id }), powerquery_parser_1.Assert.asDefined(yield this.getParseState()).contextState.nodeIdMapCollection, powerquery_parser_1.Assert.asDefined(yield this.getActiveNode(position)), this.typeCache),
490
+ triedCurrentInvokeExpression: yield __1.Inspection.tryCurrentInvokeExpression(Object.assign(Object.assign({}, this.inspectionSettings), { cancellationToken, initialCorrelationId: trace.id }), parseState.contextState.nodeIdMapCollection, activeNode, this.typeCache),
465
491
  };
466
492
  trace.exit();
467
493
  return result;
@@ -478,8 +504,8 @@ class AnalysisBase {
478
504
  const originLiteral = valueCreator.literal;
479
505
  const entry = (0, scopeUtils_1.findDirectUpperScopeExpression)(nodeIdMapCollection, valueCreator.id);
480
506
  if (entry) {
481
- const allIdentifierIdSet = (_a = nodeIdMapCollection.idsByNodeKind.get("Identifier" /* Identifier */)) !== null && _a !== void 0 ? _a : new Set();
482
- const allGeneralizedIdentifierIdSet = (_b = nodeIdMapCollection.idsByNodeKind.get("GeneralizedIdentifier" /* GeneralizedIdentifier */)) !== null && _b !== void 0 ? _b : new Set();
507
+ const allIdentifierIdSet = (_a = nodeIdMapCollection.idsByNodeKind.get(language_1.Ast.NodeKind.Identifier)) !== null && _a !== void 0 ? _a : new Set();
508
+ const allGeneralizedIdentifierIdSet = (_b = nodeIdMapCollection.idsByNodeKind.get(language_1.Ast.NodeKind.GeneralizedIdentifier)) !== null && _b !== void 0 ? _b : new Set();
483
509
  const current = entry;
484
510
  const idsByTiers = [];
485
511
  let currentTier = ((_c = childIdsById.get(current.id)) !== null && _c !== void 0 ? _c : []).slice();
@@ -503,21 +529,21 @@ class AnalysisBase {
503
529
  let filteredIdentifierNodes = completeIdentifierNodes.filter((one) => one.literal === originLiteral);
504
530
  // populate the scope items for each
505
531
  yield Promise.all(filteredIdentifierNodes
506
- .filter((oneIdentifier) => oneIdentifier.kind === "GeneralizedIdentifier" /* GeneralizedIdentifier */ ||
507
- oneIdentifier.identifierContextKind === "Value" /* Value */)
508
- .map((oneIdentifier) => __1.Inspection.tryNodeScope(this.analysisSettings.inspectionSettings, nodeIdMapCollection, oneIdentifier.id, this.typeCache.scopeById)));
532
+ .filter((oneIdentifier) => oneIdentifier.kind === language_1.Ast.NodeKind.GeneralizedIdentifier ||
533
+ oneIdentifier.identifierContextKind === language_1.Ast.IdentifierContextKind.Value)
534
+ .map((oneIdentifier) => __1.Inspection.tryNodeScope(this.inspectionSettings, nodeIdMapCollection, oneIdentifier.id, this.typeCache.scopeById)));
509
535
  filteredIdentifierNodes = filteredIdentifierNodes.filter((oneIdentifierNode) => {
510
- if (oneIdentifierNode.kind === "GeneralizedIdentifier" /* GeneralizedIdentifier */) {
536
+ if (oneIdentifierNode.kind === language_1.Ast.NodeKind.GeneralizedIdentifier) {
511
537
  return oneIdentifierNode.id === valueCreator.id;
512
538
  }
513
- else if (oneIdentifierNode.identifierContextKind === "Value" /* Value */) {
539
+ else if (oneIdentifierNode.identifierContextKind === language_1.Ast.IdentifierContextKind.Value) {
514
540
  const theScope = this.typeCache.scopeById.get(oneIdentifierNode.id);
515
541
  const theScopeItem = (0, scopeUtils_1.findScopeItemByLiteral)(theScope, originLiteral);
516
542
  const theCreatorIdentifier = (0, scopeUtils_1.scopeCreatorIdentifier)(theScopeItem);
517
543
  return theCreatorIdentifier && theCreatorIdentifier.id === valueCreator.id;
518
544
  }
519
- else if (oneIdentifierNode.identifierContextKind === "Key" /* Key */ ||
520
- oneIdentifierNode.identifierContextKind === "Parameter" /* Parameter */) {
545
+ else if (oneIdentifierNode.identifierContextKind === language_1.Ast.IdentifierContextKind.Key ||
546
+ oneIdentifierNode.identifierContextKind === language_1.Ast.IdentifierContextKind.Parameter) {
521
547
  return oneIdentifierNode.id === valueCreator.id;
522
548
  }
523
549
  return false;
@@ -529,81 +555,99 @@ class AnalysisBase {
529
555
  }
530
556
  // Performs a lex + parse of the document, then caches the results into local variables.
531
557
  // Any code which operates on the parse state should use this method to ensure that the parse state is initialized.
532
- initializeState() {
558
+ tryLexParse() {
533
559
  return __awaiter(this, void 0, void 0, function* () {
534
- const trace = this.analysisSettings.traceManager.entry("AnalysisBase" /* AnalysisBase */, this.initializeState.name, this.analysisSettings.initialCorrelationId);
535
- const updatedSettings = Object.assign(Object.assign({}, this.analysisSettings.inspectionSettings), { initialCorrelationId: trace.id });
560
+ const trace = this.traceManager.entry(trace_2.ValidationTraceConstant.AnalysisBase, this.tryLexParse.name, this.initialCorrelationId);
561
+ const updatedSettings = Object.assign(Object.assign({}, this.inspectionSettings), { initialCorrelationId: trace.id });
536
562
  const triedLexParse = yield PQP.TaskUtils.tryLexParse(updatedSettings, this.textDocument.getText());
537
- this.triedLexParse = triedLexParse;
538
- if (PQP.TaskUtils.isLexStageError(triedLexParse) || PQP.TaskUtils.isParseStageCommonError(triedLexParse)) {
539
- trace.exit({ ["IsError" /* IsError */]: true });
540
- }
541
- else if (PQP.TaskUtils.isParseStageError(triedLexParse)) {
542
- this.parseState = triedLexParse.parseState;
543
- this.parseError = triedLexParse.error;
544
- }
545
- else {
546
- this.parseState = triedLexParse.parseState;
547
- }
548
563
  trace.exit();
564
+ return triedLexParse;
549
565
  });
550
566
  }
551
- // We should only get an undefined for an activeNode iff a parse pass hasn't been done.
552
- getActiveNode(position) {
567
+ inspectAutocomplete(activeNode, correlationId, cancellationTokenOverride) {
553
568
  return __awaiter(this, void 0, void 0, function* () {
554
- const parseState = yield this.getParseState();
569
+ const parseState = yield this.getParseStateOkOrThrow(undefined);
570
+ const parseError = yield this.getParseErrorOkOrThrow(undefined);
555
571
  if (parseState === undefined) {
556
572
  return undefined;
557
573
  }
558
- return inspection_1.ActiveNodeUtils.activeNode(parseState.contextState.nodeIdMapCollection, position);
574
+ return yield __1.Inspection.autocomplete(Object.assign(Object.assign({}, this.inspectionSettings), { initialCorrelationId: correlationId, cancellationToken: cancellationTokenOverride !== null && cancellationTokenOverride !== void 0 ? cancellationTokenOverride : this.inspectionSettings.cancellationToken }), parseState, this.typeCache, activeNode, parseError);
559
575
  });
560
576
  }
561
- inspectAutocomplete(activeNode, correlationId, cancellationToken) {
577
+ inspectCurrentInvokeExpression(position, correlationId, cancellationTokenOverride) {
562
578
  return __awaiter(this, void 0, void 0, function* () {
563
- const parseState = yield this.getParseState();
564
- if (parseState === undefined) {
579
+ const parseState = yield this.getParseStateOkOrThrow(undefined);
580
+ // parseState needs to be ok, and must be truthy.
581
+ const activeNode = yield this.getActiveNodeOkOrThrow(position, undefined);
582
+ if (parseState === undefined || activeNode === undefined) {
565
583
  return undefined;
566
584
  }
567
- return yield __1.Inspection.autocomplete(Object.assign(Object.assign({}, this.analysisSettings.inspectionSettings), { cancellationToken, initialCorrelationId: correlationId }), parseState, this.typeCache, activeNode, yield this.getParseError());
585
+ return yield __1.Inspection.tryCurrentInvokeExpression(Object.assign(Object.assign({}, this.inspectionSettings), { initialCorrelationId: correlationId, cancellationToken: cancellationTokenOverride !== null && cancellationTokenOverride !== void 0 ? cancellationTokenOverride : this.inspectionSettings.cancellationToken }), parseState.contextState.nodeIdMapCollection, activeNode, this.typeCache);
568
586
  });
569
587
  }
570
- inspectCurrentInvokeExpression(position, correlationId, cancellationToken) {
588
+ inspectNodeScope(activeNode, correlationId, cancellationTokenOverride) {
571
589
  return __awaiter(this, void 0, void 0, function* () {
572
- const activeNode = yield this.getActiveNode(position);
573
- const parseState = yield this.getParseState();
574
- if (activeNode === undefined || parseState === undefined) {
590
+ const parseState = yield this.getParseStateOkOrThrow(undefined);
591
+ if (parseState === undefined || !inspection_1.ActiveNodeUtils.isPositionInBounds(activeNode)) {
575
592
  return undefined;
576
593
  }
577
- return yield __1.Inspection.tryCurrentInvokeExpression(Object.assign(Object.assign({}, this.analysisSettings.inspectionSettings), { cancellationToken, initialCorrelationId: correlationId }), parseState.contextState.nodeIdMapCollection, activeNode, this.typeCache);
594
+ return yield __1.Inspection.tryNodeScope(Object.assign(Object.assign({}, this.inspectionSettings), { cancellationToken: cancellationTokenOverride !== null && cancellationTokenOverride !== void 0 ? cancellationTokenOverride : this.inspectionSettings.cancellationToken, initialCorrelationId: correlationId }), parseState.contextState.nodeIdMapCollection, inspection_1.ActiveNodeUtils.assertGetLeaf(activeNode).node.id, this.typeCache.scopeById);
578
595
  });
579
596
  }
580
- inspectNodeScope(activeNode, correlationId, cancellationToken) {
597
+ inspectScopeType(activeNode, correlationId, cancellationTokenOverride) {
581
598
  return __awaiter(this, void 0, void 0, function* () {
582
- const parseState = yield this.getParseState();
599
+ const parseState = yield this.getParseStateOkOrThrow(undefined);
583
600
  if (parseState === undefined || !inspection_1.ActiveNodeUtils.isPositionInBounds(activeNode)) {
584
601
  return undefined;
585
602
  }
586
- return yield __1.Inspection.tryNodeScope(Object.assign(Object.assign({}, this.analysisSettings.inspectionSettings), { cancellationToken, initialCorrelationId: correlationId }), parseState.contextState.nodeIdMapCollection, inspection_1.ActiveNodeUtils.assertGetLeaf(activeNode).node.id, this.typeCache.scopeById);
603
+ return yield __1.Inspection.tryScopeType(Object.assign(Object.assign({}, this.inspectionSettings), { cancellationToken: cancellationTokenOverride !== null && cancellationTokenOverride !== void 0 ? cancellationTokenOverride : this.inspectionSettings.cancellationToken, initialCorrelationId: correlationId }), parseState.contextState.nodeIdMapCollection, inspection_1.ActiveNodeUtils.assertGetLeaf(activeNode).node.id, this.typeCache);
587
604
  });
588
605
  }
589
- inspectScopeType(activeNode, correlationId, cancellationToken) {
606
+ getActiveNodeOkOrThrow(position, trace) {
590
607
  return __awaiter(this, void 0, void 0, function* () {
591
- const parseState = yield this.getParseState();
592
- if (parseState === undefined || !inspection_1.ActiveNodeUtils.isPositionInBounds(activeNode)) {
593
- return undefined;
608
+ const activeNodeResult = yield this.getActiveNode(position);
609
+ if (powerquery_parser_1.ResultUtils.isError(activeNodeResult)) {
610
+ trace === null || trace === void 0 ? void 0 : trace.exit({ [trace_1.TraceConstant.IsThrowing]: true });
611
+ throw activeNodeResult.error;
594
612
  }
595
- return yield __1.Inspection.tryScopeType(Object.assign(Object.assign({}, this.analysisSettings.inspectionSettings), { cancellationToken, initialCorrelationId: correlationId }), parseState.contextState.nodeIdMapCollection, inspection_1.ActiveNodeUtils.assertGetLeaf(activeNode).node.id, this.typeCache);
613
+ return activeNodeResult.value;
596
614
  });
597
615
  }
616
+ getParseErrorOkOrThrow(trace) {
617
+ return __awaiter(this, void 0, void 0, function* () {
618
+ const parseErrorResult = yield this.getParseError();
619
+ if (powerquery_parser_1.ResultUtils.isError(parseErrorResult)) {
620
+ trace === null || trace === void 0 ? void 0 : trace.exit({ [trace_1.TraceConstant.IsThrowing]: true });
621
+ throw parseErrorResult.error;
622
+ }
623
+ return parseErrorResult.value;
624
+ });
625
+ }
626
+ getParseStateOkOrThrow(trace) {
627
+ return __awaiter(this, void 0, void 0, function* () {
628
+ const parseStateResult = yield this.getParseState();
629
+ if (powerquery_parser_1.ResultUtils.isError(parseStateResult)) {
630
+ trace === null || trace === void 0 ? void 0 : trace.exit({ [trace_1.TraceConstant.IsThrowing]: true });
631
+ throw parseStateResult.error;
632
+ }
633
+ return parseStateResult.value;
634
+ });
635
+ }
636
+ applyAnalysisSettings(analysisSettings) {
637
+ this.initialCorrelationId = analysisSettings.initialCorrelationId;
638
+ this.inspectionSettings = analysisSettings.inspectionSettings;
639
+ this.locale = analysisSettings.inspectionSettings.locale;
640
+ this.traceManager = analysisSettings.traceManager;
641
+ }
598
642
  }
599
643
  exports.AnalysisBase = AnalysisBase;
600
644
  function addIdentifierPairedExpressionSymbols(nodeIdMapCollection, currentSymbols, parentSymbolById, cancellationToken) {
601
645
  var _a;
602
- const identifierPairedExpressionIds = (_a = nodeIdMapCollection.idsByNodeKind.get("IdentifierPairedExpression" /* IdentifierPairedExpression */)) !== null && _a !== void 0 ? _a : new Set();
646
+ const identifierPairedExpressionIds = (_a = nodeIdMapCollection.idsByNodeKind.get(language_1.Ast.NodeKind.IdentifierPairedExpression)) !== null && _a !== void 0 ? _a : new Set();
603
647
  for (const nodeId of identifierPairedExpressionIds) {
604
- cancellationToken.throwIfCancelled();
605
- const xorNode = parser_1.NodeIdMapUtils.assertGetXorChecked(nodeIdMapCollection, nodeId, "IdentifierPairedExpression" /* IdentifierPairedExpression */);
606
- if (!parser_1.XorNodeUtils.isAstXor(xorNode)) {
648
+ cancellationToken === null || cancellationToken === void 0 ? void 0 : cancellationToken.throwIfCancelled();
649
+ const xorNode = parser_1.NodeIdMapUtils.assertXorChecked(nodeIdMapCollection, nodeId, language_1.Ast.NodeKind.IdentifierPairedExpression);
650
+ if (!parser_1.XorNodeUtils.isAst(xorNode)) {
607
651
  continue;
608
652
  }
609
653
  const astNode = xorNode.node;
@@ -615,14 +659,14 @@ function addIdentifierPairedExpressionSymbols(nodeIdMapCollection, currentSymbol
615
659
  function addRecordSymbols(nodeIdMapCollection, currentSymbols, parentSymbolById, cancellationToken) {
616
660
  var _a, _b;
617
661
  const recordIdCollections = [
618
- (_a = nodeIdMapCollection.idsByNodeKind.get("RecordExpression" /* RecordExpression */)) !== null && _a !== void 0 ? _a : new Set(),
619
- (_b = nodeIdMapCollection.idsByNodeKind.get("RecordLiteral" /* RecordLiteral */)) !== null && _b !== void 0 ? _b : new Set(),
662
+ (_a = nodeIdMapCollection.idsByNodeKind.get(language_1.Ast.NodeKind.RecordExpression)) !== null && _a !== void 0 ? _a : new Set(),
663
+ (_b = nodeIdMapCollection.idsByNodeKind.get(language_1.Ast.NodeKind.RecordLiteral)) !== null && _b !== void 0 ? _b : new Set(),
620
664
  ];
621
665
  for (const collection of recordIdCollections) {
622
666
  for (const nodeId of collection) {
623
- cancellationToken.throwIfCancelled();
624
- const xorNode = parser_1.NodeIdMapUtils.assertGetXorChecked(nodeIdMapCollection, nodeId, ["RecordExpression" /* RecordExpression */, "RecordLiteral" /* RecordLiteral */]);
625
- if (!parser_1.XorNodeUtils.isAstXor(xorNode)) {
667
+ cancellationToken === null || cancellationToken === void 0 ? void 0 : cancellationToken.throwIfCancelled();
668
+ const xorNode = parser_1.NodeIdMapUtils.assertXorChecked(nodeIdMapCollection, nodeId, [language_1.Ast.NodeKind.RecordExpression, language_1.Ast.NodeKind.RecordLiteral]);
669
+ if (!parser_1.XorNodeUtils.isAst(xorNode)) {
626
670
  continue;
627
671
  }
628
672
  const astNode = xorNode.node;