@microsoft/powerquery-language-services 0.9.2 → 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 (161) hide show
  1. package/lib/powerquery-language-services/analysis/analysisBase.js +51 -48
  2. package/lib/powerquery-language-services/analysis/analysisBase.js.map +1 -1
  3. package/lib/powerquery-language-services/documentSymbols.js +6 -5
  4. package/lib/powerquery-language-services/documentSymbols.js.map +1 -1
  5. package/lib/powerquery-language-services/externalType/externalType.d.ts +1 -1
  6. package/lib/powerquery-language-services/externalType/externalType.js.map +1 -1
  7. package/lib/powerquery-language-services/externalType/externalTypeUtils.js +3 -2
  8. package/lib/powerquery-language-services/externalType/externalTypeUtils.js.map +1 -1
  9. package/lib/powerquery-language-services/inspection/activeNode/activeNode.d.ts +2 -2
  10. package/lib/powerquery-language-services/inspection/activeNode/activeNode.js.map +1 -1
  11. package/lib/powerquery-language-services/inspection/activeNode/activeNodeUtils.js +41 -40
  12. package/lib/powerquery-language-services/inspection/activeNode/activeNodeUtils.js.map +1 -1
  13. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteFieldAccess.d.ts +4 -2
  14. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteFieldAccess.js +118 -95
  15. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteFieldAccess.js.map +1 -1
  16. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteItem/autocompleteItemUtils.d.ts +1 -3
  17. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteItem/autocompleteItemUtils.js +8 -31
  18. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteItem/autocompleteItemUtils.js.map +1 -1
  19. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeyword.js +31 -31
  20. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeyword.js.map +1 -1
  21. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordDefault.js +23 -22
  22. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordDefault.js.map +1 -1
  23. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordErrorHandlingExpression.js +6 -6
  24. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordErrorHandlingExpression.js.map +1 -1
  25. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordIdentifierPairedExpression.js +2 -2
  26. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordIdentifierPairedExpression.js.map +1 -1
  27. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordLetExpression.js +6 -6
  28. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordLetExpression.js.map +1 -1
  29. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordListExpression.js +1 -1
  30. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordListExpression.js.map +1 -1
  31. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordSectionMember.js +6 -5
  32. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordSectionMember.js.map +1 -1
  33. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordTrailingText.js +6 -5
  34. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordTrailingText.js.map +1 -1
  35. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteLanguageConstant.d.ts +2 -2
  36. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteLanguageConstant.js +122 -78
  37. package/lib/powerquery-language-services/inspection/autocomplete/autocompleteLanguageConstant.js.map +1 -1
  38. package/lib/powerquery-language-services/inspection/autocomplete/autocompletePrimitiveType.js +56 -54
  39. package/lib/powerquery-language-services/inspection/autocomplete/autocompletePrimitiveType.js.map +1 -1
  40. package/lib/powerquery-language-services/inspection/autocomplete/commonTypes.d.ts +6 -4
  41. package/lib/powerquery-language-services/inspection/autocomplete/task.js +6 -9
  42. package/lib/powerquery-language-services/inspection/autocomplete/task.js.map +1 -1
  43. package/lib/powerquery-language-services/inspection/autocomplete/trailingToken.d.ts +0 -1
  44. package/lib/powerquery-language-services/inspection/autocomplete/trailingTokenUtils.js +3 -3
  45. package/lib/powerquery-language-services/inspection/autocomplete/trailingTokenUtils.js.map +1 -1
  46. package/lib/powerquery-language-services/inspection/deferenceIdentifier.js +17 -14
  47. package/lib/powerquery-language-services/inspection/deferenceIdentifier.js.map +1 -1
  48. package/lib/powerquery-language-services/inspection/expectedType.js +61 -60
  49. package/lib/powerquery-language-services/inspection/expectedType.js.map +1 -1
  50. package/lib/powerquery-language-services/inspection/invokeExpression/currentInvokeExpression.js +15 -10
  51. package/lib/powerquery-language-services/inspection/invokeExpression/currentInvokeExpression.js.map +1 -1
  52. package/lib/powerquery-language-services/inspection/invokeExpression/invokeExpression.js +8 -6
  53. package/lib/powerquery-language-services/inspection/invokeExpression/invokeExpression.js.map +1 -1
  54. package/lib/powerquery-language-services/inspection/pseudoFunctionExpressionType.js +6 -6
  55. package/lib/powerquery-language-services/inspection/pseudoFunctionExpressionType.js.map +1 -1
  56. package/lib/powerquery-language-services/inspection/scope/scope.d.ts +1 -1
  57. package/lib/powerquery-language-services/inspection/scope/scope.js.map +1 -1
  58. package/lib/powerquery-language-services/inspection/scope/scopeInspection.js +35 -33
  59. package/lib/powerquery-language-services/inspection/scope/scopeInspection.js.map +1 -1
  60. package/lib/powerquery-language-services/inspection/scope/scopeUtils.js +20 -18
  61. package/lib/powerquery-language-services/inspection/scope/scopeUtils.js.map +1 -1
  62. package/lib/powerquery-language-services/inspection/task.js +17 -14
  63. package/lib/powerquery-language-services/inspection/task.js.map +1 -1
  64. package/lib/powerquery-language-services/inspection/type/inspectType/common.js +80 -79
  65. package/lib/powerquery-language-services/inspection/type/inspectType/common.js.map +1 -1
  66. package/lib/powerquery-language-services/inspection/type/inspectType/examineFieldSpecificationList.js +4 -3
  67. package/lib/powerquery-language-services/inspection/type/inspectType/examineFieldSpecificationList.js.map +1 -1
  68. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeConstant.js +20 -20
  69. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeConstant.js.map +1 -1
  70. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeEachExpression.js +5 -4
  71. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeEachExpression.js.map +1 -1
  72. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeErrorHandlingExpression.js +8 -7
  73. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeErrorHandlingExpression.js.map +1 -1
  74. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/common.js +6 -5
  75. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/common.js.map +1 -1
  76. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/inspectTypeFieldProjection.js +23 -22
  77. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/inspectTypeFieldProjection.js.map +1 -1
  78. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/inspectTypeFieldSelector.js +11 -10
  79. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/inspectTypeFieldSelector.js.map +1 -1
  80. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFieldSpecification.js +4 -3
  81. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFieldSpecification.js.map +1 -1
  82. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFunctionExpression.js +15 -13
  83. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFunctionExpression.js.map +1 -1
  84. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFunctionType.js +13 -11
  85. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFunctionType.js.map +1 -1
  86. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeIdentifier.js +4 -3
  87. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeIdentifier.js.map +1 -1
  88. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeIdentifierExpression.js +4 -3
  89. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeIdentifierExpression.js.map +1 -1
  90. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeIfExpression.js +10 -9
  91. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeIfExpression.js.map +1 -1
  92. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeInvokeExpression.js +10 -9
  93. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeInvokeExpression.js.map +1 -1
  94. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeList.js +8 -6
  95. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeList.js.map +1 -1
  96. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeListType.js +9 -7
  97. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeListType.js.map +1 -1
  98. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeLiteralExpression.js +9 -8
  99. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeLiteralExpression.js.map +1 -1
  100. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeNullCoalescingExpression.js +6 -5
  101. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeNullCoalescingExpression.js.map +1 -1
  102. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeParameter.js +5 -4
  103. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeParameter.js.map +1 -1
  104. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypePrimitiveType.js +5 -4
  105. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypePrimitiveType.js.map +1 -1
  106. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRangeExpression.js +10 -8
  107. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRangeExpression.js.map +1 -1
  108. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRecord.js +8 -6
  109. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRecord.js.map +1 -1
  110. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRecordType.js +9 -7
  111. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRecordType.js.map +1 -1
  112. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRecursivePrimaryExpression.js +10 -9
  113. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRecursivePrimaryExpression.js.map +1 -1
  114. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeTBinOpExpression.js +74 -73
  115. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeTBinOpExpression.js.map +1 -1
  116. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeTableType.js +11 -9
  117. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeTableType.js.map +1 -1
  118. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeUnaryExpression.js +12 -11
  119. package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeUnaryExpression.js.map +1 -1
  120. package/lib/powerquery-language-services/inspection/type/task.js +6 -4
  121. package/lib/powerquery-language-services/inspection/type/task.js.map +1 -1
  122. package/lib/powerquery-language-services/inspectionSettings.d.ts +1 -1
  123. package/lib/powerquery-language-services/inspectionSettings.js.map +1 -1
  124. package/lib/powerquery-language-services/inspectionUtils.js +22 -21
  125. package/lib/powerquery-language-services/inspectionUtils.js.map +1 -1
  126. package/lib/powerquery-language-services/library/library.d.ts +1 -1
  127. package/lib/powerquery-language-services/library/library.js.map +1 -1
  128. package/lib/powerquery-language-services/library/librarySymbolUtils.js +9 -9
  129. package/lib/powerquery-language-services/library/librarySymbolUtils.js.map +1 -1
  130. package/lib/powerquery-language-services/library/libraryUtils.js +12 -11
  131. package/lib/powerquery-language-services/library/libraryUtils.js.map +1 -1
  132. package/lib/powerquery-language-services/localization/templates.js +42 -42
  133. package/lib/powerquery-language-services/localization/templates.js.map +1 -1
  134. package/lib/powerquery-language-services/positionUtils.d.ts +1 -0
  135. package/lib/powerquery-language-services/positionUtils.js +20 -15
  136. package/lib/powerquery-language-services/positionUtils.js.map +1 -1
  137. package/lib/powerquery-language-services/providers/languageCompletionItemProvider.js +15 -15
  138. package/lib/powerquery-language-services/providers/languageCompletionItemProvider.js.map +1 -1
  139. package/lib/powerquery-language-services/providers/libraryProvider.js +7 -6
  140. package/lib/powerquery-language-services/providers/libraryProvider.js.map +1 -1
  141. package/lib/powerquery-language-services/providers/localDocumentProvider/foldingRanges.js +15 -13
  142. package/lib/powerquery-language-services/providers/localDocumentProvider/foldingRanges.js.map +1 -1
  143. package/lib/powerquery-language-services/providers/localDocumentProvider/localDocumentProvider.js +21 -20
  144. package/lib/powerquery-language-services/providers/localDocumentProvider/localDocumentProvider.js.map +1 -1
  145. package/lib/powerquery-language-services/providers/localDocumentProvider/partialSemanticToken.js +63 -61
  146. package/lib/powerquery-language-services/providers/localDocumentProvider/partialSemanticToken.js.map +1 -1
  147. package/lib/powerquery-language-services/tokenPositionComparison.d.ts +1 -1
  148. package/lib/powerquery-language-services/tokenPositionComparison.js.map +1 -1
  149. package/lib/powerquery-language-services/trace.d.ts +4 -4
  150. package/lib/powerquery-language-services/trace.js.map +1 -1
  151. package/lib/powerquery-language-services/validate/validate.js +2 -1
  152. package/lib/powerquery-language-services/validate/validate.js.map +1 -1
  153. package/lib/powerquery-language-services/validate/validateDuplicateIdentifiers.js +13 -11
  154. package/lib/powerquery-language-services/validate/validateDuplicateIdentifiers.js.map +1 -1
  155. package/lib/powerquery-language-services/validate/validateFunctionExpression.js +5 -3
  156. package/lib/powerquery-language-services/validate/validateFunctionExpression.js.map +1 -1
  157. package/lib/powerquery-language-services/validate/validateInvokeExpression.js +5 -3
  158. package/lib/powerquery-language-services/validate/validateInvokeExpression.js.map +1 -1
  159. package/lib/powerquery-language-services/validate/validateUnknownIdentifiers.js +9 -6
  160. package/lib/powerquery-language-services/validate/validateUnknownIdentifiers.js.map +1 -1
  161. package/package.json +4 -4
@@ -8,6 +8,7 @@ exports.findNodeKind = exports.isPositionInBounds = exports.assertPositionInBoun
8
8
  const parser_1 = require("@microsoft/powerquery-parser/lib/powerquery-parser/parser");
9
9
  const powerquery_parser_1 = require("@microsoft/powerquery-parser");
10
10
  const language_1 = require("@microsoft/powerquery-parser/lib/powerquery-parser/language");
11
+ const activeNode_1 = require("./activeNode");
11
12
  const __1 = require("../..");
12
13
  function activeNode(nodeIdMapCollection, position) {
13
14
  const astSearched = leafSearch(nodeIdMapCollection, position);
@@ -32,13 +33,13 @@ function activeNode(nodeIdMapCollection, position) {
32
33
  // `not |`
33
34
  if (contextClosestOnOrAfterPosition !== undefined) {
34
35
  leaf = parser_1.XorNodeUtils.boxContext(contextClosestOnOrAfterPosition);
35
- leafKind = "Context" /* ContextNode */;
36
+ leafKind = activeNode_1.ActiveNodeLeafKind.ContextNode;
36
37
  }
37
38
  // Without context
38
39
  // `foo |`
39
40
  else {
40
41
  leaf = parser_1.XorNodeUtils.boxAst(nodeClosestBeforePosition);
41
- leafKind = "IsBeforePosition" /* IsBeforePosition */;
42
+ leafKind = activeNode_1.ActiveNodeLeafKind.IsBeforePosition;
42
43
  }
43
44
  }
44
45
  // Case 2b: truthy center
@@ -51,7 +52,7 @@ function activeNode(nodeIdMapCollection, position) {
51
52
  nodeClosestAfterPosition === undefined) {
52
53
  // With or without context
53
54
  leaf = parser_1.XorNodeUtils.boxAst(nodeOnPosition);
54
- leafKind = "IsInAst" /* IsInAst */;
55
+ leafKind = activeNode_1.ActiveNodeLeafKind.IsInAst;
55
56
  }
56
57
  // Case 2c: truthy right
57
58
  // `| not`
@@ -73,20 +74,20 @@ function activeNode(nodeIdMapCollection, position) {
73
74
  nodeClosestAfterPosition == undefined) {
74
75
  // With or without context
75
76
  leaf = parser_1.XorNodeUtils.boxAst(nodeOnPosition);
76
- leafKind = "IsInAst" /* IsInAst */;
77
+ leafKind = activeNode_1.ActiveNodeLeafKind.IsInAst;
77
78
  }
78
79
  // Case 3b: truthy left and right
79
80
  else if (nodeClosestBeforePosition !== undefined &&
80
81
  nodeOnPosition === undefined &&
81
82
  nodeClosestAfterPosition !== undefined) {
82
- if (language_1.AstUtils.isNodeKind(nodeClosestBeforePosition, "Constant" /* Constant */) &&
83
+ if (language_1.AstUtils.isNodeKind(nodeClosestBeforePosition, language_1.Ast.NodeKind.Constant) &&
83
84
  ShiftRightConstantKinds.includes(nodeClosestBeforePosition.constantKind)) {
84
85
  leaf = parser_1.XorNodeUtils.boxAst(nodeClosestAfterPosition);
85
- leafKind = "IsAfterPosition" /* IsAfterPosition */;
86
+ leafKind = activeNode_1.ActiveNodeLeafKind.IsAfterPosition;
86
87
  }
87
88
  else {
88
89
  leaf = parser_1.XorNodeUtils.boxAst(nodeClosestBeforePosition);
89
- leafKind = "IsBeforePosition" /* IsBeforePosition */;
90
+ leafKind = activeNode_1.ActiveNodeLeafKind.IsBeforePosition;
90
91
  }
91
92
  }
92
93
  // Case 3c: truthy center and right
@@ -95,14 +96,14 @@ function activeNode(nodeIdMapCollection, position) {
95
96
  nodeOnPosition !== undefined &&
96
97
  nodeClosestAfterPosition !== undefined) {
97
98
  leaf = parser_1.XorNodeUtils.boxAst(nodeOnPosition);
98
- leafKind = "IsInAst" /* IsInAst */;
99
+ leafKind = activeNode_1.ActiveNodeLeafKind.IsInAst;
99
100
  }
100
101
  // Case 4: There's 3 leafs
101
102
  else if (nodeClosestBeforePosition !== undefined &&
102
103
  nodeOnPosition !== undefined &&
103
104
  nodeClosestAfterPosition !== undefined) {
104
105
  leaf = parser_1.XorNodeUtils.boxAst(nodeOnPosition);
105
- leafKind = "IsInAst" /* IsInAst */;
106
+ leafKind = activeNode_1.ActiveNodeLeafKind.IsInAst;
106
107
  }
107
108
  // Case 5: TypeScript can't tell this is exhaustive.
108
109
  else {
@@ -115,7 +116,7 @@ function activeNode(nodeIdMapCollection, position) {
115
116
  : undefined;
116
117
  const ancestry = parser_1.AncestryUtils.assertAncestry(nodeIdMapCollection, leaf.node.id);
117
118
  return {
118
- kind: "ActiveNode" /* ActiveNode */,
119
+ kind: activeNode_1.ActiveNodeKind.ActiveNode,
119
120
  leafKind,
120
121
  position,
121
122
  ancestry,
@@ -127,7 +128,7 @@ function activeNode(nodeIdMapCollection, position) {
127
128
  exports.activeNode = activeNode;
128
129
  function createOutOfBoundPosition(position) {
129
130
  return {
130
- kind: "OutOfBoundPosition" /* OutOfBoundPosition */,
131
+ kind: activeNode_1.ActiveNodeKind.OutOfBoundPosition,
131
132
  position,
132
133
  };
133
134
  }
@@ -139,7 +140,7 @@ function assertActiveNode(nodeIdMapCollection, position) {
139
140
  }
140
141
  exports.assertActiveNode = assertActiveNode;
141
142
  function assertGetLeaf(activeNode) {
142
- return parser_1.AncestryUtils.assertFirst(activeNode.ancestry);
143
+ return parser_1.AncestryUtils.assertNth(activeNode.ancestry, 0);
143
144
  }
144
145
  exports.assertGetLeaf = assertGetLeaf;
145
146
  function assertPositionInBounds(value) {
@@ -149,7 +150,7 @@ function assertPositionInBounds(value) {
149
150
  }
150
151
  exports.assertPositionInBounds = assertPositionInBounds;
151
152
  function isPositionInBounds(value) {
152
- return value.kind === "ActiveNode" /* ActiveNode */;
153
+ return value.kind === activeNode_1.ActiveNodeKind.ActiveNode;
153
154
  }
154
155
  exports.isPositionInBounds = isPositionInBounds;
155
156
  function findNodeKind(activeNode, nodeKind) {
@@ -157,23 +158,23 @@ function findNodeKind(activeNode, nodeKind) {
157
158
  }
158
159
  exports.findNodeKind = findNodeKind;
159
160
  const ShiftLeftConstantKinds = [
160
- "}" /* RightBrace */,
161
- "]" /* RightBracket */,
162
- ")" /* RightParenthesis */,
161
+ language_1.Constant.WrapperConstant.RightBrace,
162
+ language_1.Constant.WrapperConstant.RightBracket,
163
+ language_1.Constant.WrapperConstant.RightParenthesis,
163
164
  ];
164
165
  const ShiftRightConstantKinds = [
165
166
  ...language_1.Constant.BinOpExpressionOperators,
166
- "&" /* Ampersand */,
167
- "," /* Comma */,
168
- ".." /* DotDot */,
169
- "=" /* Equal */,
170
- "=>" /* FatArrow */,
171
- "??" /* NullCoalescingOperator */,
172
- "?" /* QuestionMark */,
173
- ";" /* Semicolon */,
174
- "{" /* LeftBrace */,
175
- "[" /* LeftBracket */,
176
- "(" /* LeftParenthesis */,
167
+ language_1.Constant.MiscConstant.Ampersand,
168
+ language_1.Constant.MiscConstant.Comma,
169
+ language_1.Constant.MiscConstant.DotDot,
170
+ language_1.Constant.MiscConstant.Equal,
171
+ language_1.Constant.MiscConstant.FatArrow,
172
+ language_1.Constant.MiscConstant.NullCoalescingOperator,
173
+ language_1.Constant.MiscConstant.QuestionMark,
174
+ language_1.Constant.MiscConstant.Semicolon,
175
+ language_1.Constant.WrapperConstant.LeftBrace,
176
+ language_1.Constant.WrapperConstant.LeftBracket,
177
+ language_1.Constant.WrapperConstant.LeftParenthesis,
177
178
  ];
178
179
  // Searches for the closest leaf to the left, right, and on the given position if such an option exists.
179
180
  function leafSearch(nodeIdMapCollection, position) {
@@ -192,7 +193,7 @@ function leafSearch(nodeIdMapCollection, position) {
192
193
  }
193
194
  let includeLowerBound = true;
194
195
  let includeUpperBound = true;
195
- if (language_1.AstUtils.isNodeKind(candidate, "Constant" /* Constant */)) {
196
+ if (language_1.AstUtils.isNodeKind(candidate, language_1.Ast.NodeKind.Constant)) {
196
197
  if (ShiftRightConstantKinds.includes(candidate.constantKind)) {
197
198
  includeLowerBound = false;
198
199
  includeUpperBound = false;
@@ -272,16 +273,16 @@ function findLeafIdentifier(nodeIdMapCollection, leafXorNode) {
272
273
  const leaf = leafXorNode.node;
273
274
  let identifier;
274
275
  const parentId = nodeIdMapCollection.parentIdById.get(leaf.id);
275
- if (leaf.kind === "Identifier" /* Identifier */) {
276
+ if (leaf.kind === language_1.Ast.NodeKind.Identifier) {
276
277
  if (parentId === undefined) {
277
278
  identifier = leaf;
278
279
  }
279
280
  else {
280
281
  const parent = parser_1.NodeIdMapUtils.ast(nodeIdMapCollection, parentId);
281
- if ((parent === null || parent === void 0 ? void 0 : parent.kind) === "IdentifierPairedExpression" /* IdentifierPairedExpression */) {
282
+ if ((parent === null || parent === void 0 ? void 0 : parent.kind) === language_1.Ast.NodeKind.IdentifierPairedExpression) {
282
283
  identifier = leaf;
283
284
  }
284
- else if ((parent === null || parent === void 0 ? void 0 : parent.kind) === "IdentifierExpression" /* IdentifierExpression */) {
285
+ else if ((parent === null || parent === void 0 ? void 0 : parent.kind) === language_1.Ast.NodeKind.IdentifierExpression) {
285
286
  identifier = parent;
286
287
  }
287
288
  else {
@@ -290,19 +291,19 @@ function findLeafIdentifier(nodeIdMapCollection, leafXorNode) {
290
291
  }
291
292
  }
292
293
  // If '@', then check if it's part of an IdentifierExpression.
293
- else if (leaf.kind === "Constant" /* Constant */ && leaf.constantKind === "@" /* AtSign */) {
294
+ else if (leaf.kind === language_1.Ast.NodeKind.Constant && leaf.constantKind === language_1.Constant.MiscConstant.AtSign) {
294
295
  if (parentId === undefined) {
295
296
  return undefined;
296
297
  }
297
298
  const parent = parser_1.NodeIdMapUtils.ast(nodeIdMapCollection, parentId);
298
- if ((parent === null || parent === void 0 ? void 0 : parent.kind) === "IdentifierExpression" /* IdentifierExpression */) {
299
+ if ((parent === null || parent === void 0 ? void 0 : parent.kind) === language_1.Ast.NodeKind.IdentifierExpression) {
299
300
  identifier = parent;
300
301
  }
301
302
  else {
302
303
  return undefined;
303
304
  }
304
305
  }
305
- else if (leaf.kind === "GeneralizedIdentifier" /* GeneralizedIdentifier */) {
306
+ else if (leaf.kind === language_1.Ast.NodeKind.GeneralizedIdentifier) {
306
307
  identifier = leaf;
307
308
  }
308
309
  else {
@@ -310,8 +311,8 @@ function findLeafIdentifier(nodeIdMapCollection, leafXorNode) {
310
311
  }
311
312
  let result;
312
313
  switch (identifier.kind) {
313
- case "Identifier" /* Identifier */:
314
- case "GeneralizedIdentifier" /* GeneralizedIdentifier */:
314
+ case language_1.Ast.NodeKind.Identifier:
315
+ case language_1.Ast.NodeKind.GeneralizedIdentifier:
315
316
  result = {
316
317
  node: identifier,
317
318
  isRecursive: false,
@@ -319,7 +320,7 @@ function findLeafIdentifier(nodeIdMapCollection, leafXorNode) {
319
320
  normalizedRecursiveLiteral: undefined,
320
321
  };
321
322
  break;
322
- case "IdentifierExpression" /* IdentifierExpression */: {
323
+ case language_1.Ast.NodeKind.IdentifierExpression: {
323
324
  const normalizedLiteral = language_1.TextUtils.normalizeIdentifier(identifier.identifier.literal);
324
325
  result = {
325
326
  node: identifier,
@@ -341,9 +342,9 @@ function isInKey(ancestry) {
341
342
  const parent = powerquery_parser_1.ArrayUtils.assertGet(ancestry, 1);
342
343
  // Return true if we're in the key portion of a key-value pair.
343
344
  return ([
344
- "GeneralizedIdentifierPairedAnyLiteral" /* GeneralizedIdentifierPairedAnyLiteral */,
345
- "GeneralizedIdentifierPairedExpression" /* GeneralizedIdentifierPairedExpression */,
346
- "IdentifierPairedExpression" /* IdentifierPairedExpression */,
345
+ language_1.Ast.NodeKind.GeneralizedIdentifierPairedAnyLiteral,
346
+ language_1.Ast.NodeKind.GeneralizedIdentifierPairedExpression,
347
+ language_1.Ast.NodeKind.IdentifierPairedExpression,
347
348
  ].includes(parent.node.kind) && child.node.attributeIndex === 0);
348
349
  }
349
350
  //# sourceMappingURL=activeNodeUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"activeNodeUtils.js","sourceRoot":"","sources":["../../../../src/powerquery-language-services/inspection/activeNode/activeNodeUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"activeNodeUtils.js","sourceRoot":"","sources":["../../../../src/powerquery-language-services/inspection/activeNode/activeNodeUtils.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  import * as PQP from "@microsoft/powerquery-parser";
2
- import { TActiveNode } from "../activeNode";
3
- import { TriedAutocompleteFieldAccess } from "./commonTypes";
2
+ import { NodeIdMap } from "@microsoft/powerquery-parser/lib/powerquery-parser/parser";
3
+ import { ActiveNode, TActiveNode } from "../activeNode";
4
+ import { InspectedFieldAccess, TriedAutocompleteFieldAccess } from "./commonTypes";
4
5
  import { InspectionSettings } from "../../inspectionSettings";
5
6
  import { TypeCache } from "../typeCache";
7
+ export declare function inspectFieldAccess(lexerSnapshot: PQP.Lexer.LexerSnapshot, nodeIdMapCollection: NodeIdMap.Collection, activeNode: ActiveNode): InspectedFieldAccess | undefined;
6
8
  export declare function tryAutocompleteFieldAccess(settings: InspectionSettings, parseState: PQP.Parser.ParseState, activeNode: TActiveNode, typeCache: TypeCache): Promise<TriedAutocompleteFieldAccess>;
@@ -11,17 +11,33 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
11
11
  });
12
12
  };
13
13
  Object.defineProperty(exports, "__esModule", { value: true });
14
- exports.tryAutocompleteFieldAccess = void 0;
14
+ exports.tryAutocompleteFieldAccess = exports.inspectFieldAccess = void 0;
15
15
  const PQP = require("@microsoft/powerquery-parser");
16
16
  const parser_1 = require("@microsoft/powerquery-parser/lib/powerquery-parser/parser");
17
17
  const powerquery_parser_1 = require("@microsoft/powerquery-parser");
18
+ const language_1 = require("@microsoft/powerquery-parser/lib/powerquery-parser/language");
19
+ const token_1 = require("@microsoft/powerquery-parser/lib/powerquery-parser/language/token");
20
+ const trace_1 = require("@microsoft/powerquery-parser/lib/powerquery-parser/common/trace");
18
21
  const activeNode_1 = require("../activeNode");
19
- const autocompleteItem_1 = require("./autocompleteItem");
20
22
  const __1 = require("../..");
21
23
  const type_1 = require("../type");
24
+ function inspectFieldAccess(lexerSnapshot, nodeIdMapCollection, activeNode) {
25
+ const fieldProjection = parser_1.AncestryUtils.findNodeKind(activeNode.ancestry, language_1.Ast.NodeKind.FieldProjection);
26
+ const fieldSelector = parser_1.AncestryUtils.findNodeKind(activeNode.ancestry, language_1.Ast.NodeKind.FieldSelector);
27
+ if (fieldProjection) {
28
+ return inspectFieldProjection(lexerSnapshot, nodeIdMapCollection, activeNode.position, fieldProjection);
29
+ }
30
+ else if (fieldSelector) {
31
+ return inspectFieldSelector(lexerSnapshot, nodeIdMapCollection, activeNode.position, fieldSelector);
32
+ }
33
+ else {
34
+ return undefined;
35
+ }
36
+ }
37
+ exports.inspectFieldAccess = inspectFieldAccess;
22
38
  function tryAutocompleteFieldAccess(settings, parseState, activeNode, typeCache) {
23
39
  return __awaiter(this, void 0, void 0, function* () {
24
- const trace = settings.traceManager.entry("FieldAccess" /* AutocompleteFieldAccess */, tryAutocompleteFieldAccess.name, settings.initialCorrelationId);
40
+ const trace = settings.traceManager.entry(__1.AutocompleteTraceConstant.AutocompleteFieldAccess, tryAutocompleteFieldAccess.name, settings.initialCorrelationId);
25
41
  const updatedSettings = Object.assign(Object.assign({}, settings), { initialCorrelationId: trace.id });
26
42
  let result;
27
43
  if (!activeNode_1.ActiveNodeUtils.isPositionInBounds(activeNode)) {
@@ -30,40 +46,22 @@ function tryAutocompleteFieldAccess(settings, parseState, activeNode, typeCache)
30
46
  else {
31
47
  result = yield powerquery_parser_1.ResultUtils.ensureResultAsync(() => autocompleteFieldAccess(updatedSettings, parseState, activeNode, typeCache), updatedSettings.locale);
32
48
  }
33
- trace.exit({ ["IsError" /* IsError */]: powerquery_parser_1.ResultUtils.isError(result) });
49
+ trace.exit({ [trace_1.TraceConstant.IsError]: powerquery_parser_1.ResultUtils.isError(result) });
34
50
  return result;
35
51
  });
36
52
  }
37
53
  exports.tryAutocompleteFieldAccess = tryAutocompleteFieldAccess;
38
54
  const AllowedExtendedTypeKindsForFieldEntries = [
39
- "AnyUnion" /* AnyUnion */,
40
- "DefinedRecord" /* DefinedRecord */,
41
- "DefinedTable" /* DefinedTable */,
55
+ language_1.Type.ExtendedTypeKind.AnyUnion,
56
+ language_1.Type.ExtendedTypeKind.DefinedRecord,
57
+ language_1.Type.ExtendedTypeKind.DefinedTable,
42
58
  ];
43
59
  function autocompleteFieldAccess(settings, parseState, activeNode, typeCache) {
44
60
  return __awaiter(this, void 0, void 0, function* () {
45
- let inspectedFieldAccess = undefined;
46
- // Option 1: Find a field access node in the ancestry.
47
- let fieldAccessAncestor;
48
- for (const ancestor of activeNode.ancestry) {
49
- if (parser_1.XorNodeUtils.isNodeKind(ancestor, [
50
- "FieldSelector" /* FieldSelector */,
51
- "FieldProjection" /* FieldProjection */,
52
- ])) {
53
- fieldAccessAncestor = ancestor;
54
- }
55
- }
56
- if (fieldAccessAncestor !== undefined) {
57
- inspectedFieldAccess = inspectFieldAccess(parseState.lexerSnapshot, parseState.contextState.nodeIdMapCollection, activeNode.position, fieldAccessAncestor);
58
- }
61
+ const inspectedFieldAccess = inspectFieldAccess(parseState.lexerSnapshot, parseState.contextState.nodeIdMapCollection, activeNode);
59
62
  // No field access was found, or the field access reports no autocomplete is possible.
60
63
  // Eg. `[x = 1][x |]`
61
- if (inspectedFieldAccess === undefined || inspectedFieldAccess.isAutocompleteAllowed === false) {
62
- return undefined;
63
- }
64
- // Don't waste time on type analysis if the field access
65
- // reports it's in an invalid location for an autocomplete.
66
- if (!inspectedFieldAccess.isAutocompleteAllowed) {
64
+ if (!(inspectedFieldAccess === null || inspectedFieldAccess === void 0 ? void 0 : inspectedFieldAccess.isAutocompleteAllowed)) {
67
65
  return undefined;
68
66
  }
69
67
  // After a field access was found then find the field it's accessing and inspect the field's Type.
@@ -92,9 +90,38 @@ function autocompleteFieldAccess(settings, parseState, activeNode, typeCache) {
92
90
  };
93
91
  });
94
92
  }
93
+ function createAutocompleteItems(fieldEntries, inspectedFieldAccess) {
94
+ const autocompleteItems = [];
95
+ const { textUnderPosition, textEditRange } = inspectedFieldAccess;
96
+ for (const [label, powerQueryType] of fieldEntries) {
97
+ autocompleteItems.push(createAutocompleteItem(label, powerQueryType, textUnderPosition, textEditRange));
98
+ }
99
+ return autocompleteItems;
100
+ }
101
+ function createAutocompleteItem(label, powerQueryType, textUnderPosition, textEditRange) {
102
+ const jaroWinklerScore = textUnderPosition ? (0, __1.calculateJaroWinkler)(label, textUnderPosition) : 1;
103
+ // If the key is a quoted identifier but doesn't need to be one then slice out the quote contents.
104
+ const identifierKind = PQP.Language.TextUtils.identifierKind(label, false);
105
+ const normalizedLabel = identifierKind === PQP.Language.TextUtils.IdentifierKind.Quote ? label.slice(2, -1) : label;
106
+ return {
107
+ jaroWinklerScore,
108
+ kind: __1.CompletionItemKind.Field,
109
+ label: normalizedLabel,
110
+ powerQueryType,
111
+ textEdit: textEditRange ? __1.TextEdit.replace(textEditRange, label) : undefined,
112
+ };
113
+ }
114
+ function emptyInspectedFieldAccess(isAutocompleteAllowed) {
115
+ return {
116
+ fieldNames: [],
117
+ isAutocompleteAllowed,
118
+ textEditRange: undefined,
119
+ textUnderPosition: undefined,
120
+ };
121
+ }
95
122
  function fieldEntriesFromFieldType(type) {
96
123
  switch (type.extendedKind) {
97
- case "AnyUnion" /* AnyUnion */: {
124
+ case language_1.Type.ExtendedTypeKind.AnyUnion: {
98
125
  let fields = [];
99
126
  for (const field of type.unionedTypePairs) {
100
127
  if (field.extendedKind && AllowedExtendedTypeKindsForFieldEntries.includes(field.extendedKind)) {
@@ -103,102 +130,98 @@ function fieldEntriesFromFieldType(type) {
103
130
  }
104
131
  return fields;
105
132
  }
106
- case "DefinedRecord" /* DefinedRecord */:
107
- case "DefinedTable" /* DefinedTable */:
133
+ case language_1.Type.ExtendedTypeKind.DefinedRecord:
134
+ case language_1.Type.ExtendedTypeKind.DefinedTable:
108
135
  return [...type.fields.entries()];
109
136
  default:
110
137
  return [];
111
138
  }
112
139
  }
113
- function inspectFieldAccess(lexerSnapshot, nodeIdMapCollection, position, fieldAccess) {
114
- switch (fieldAccess.node.kind) {
115
- case "FieldProjection" /* FieldProjection */:
116
- return inspectFieldProjection(lexerSnapshot, nodeIdMapCollection, position, fieldAccess);
117
- case "FieldSelector" /* FieldSelector */:
118
- return inspectFieldSelector(lexerSnapshot, nodeIdMapCollection, position, fieldAccess);
119
- default:
120
- throw powerquery_parser_1.Assert.isNever(fieldAccess.node);
121
- }
122
- }
123
140
  function inspectFieldProjection(lexerSnapshot, nodeIdMapCollection, position, fieldProjection) {
124
- let isAutocompleteAllowed = false;
125
- let identifierUnderPosition;
126
- const fieldNames = [];
141
+ const fieldNamesResult = [];
142
+ let isAutocompleteAllowedResult = false;
143
+ let textEditRangeResult;
144
+ let textUnderPositionResult;
127
145
  for (const fieldSelector of parser_1.NodeIdMapIterator.iterFieldProjection(nodeIdMapCollection, fieldProjection)) {
128
- const inspectedFieldSelector = inspectFieldSelector(lexerSnapshot, nodeIdMapCollection, position, fieldSelector);
129
- if (inspectedFieldSelector.isAutocompleteAllowed || inspectedFieldSelector.identifierUnderPosition) {
130
- isAutocompleteAllowed = true;
131
- identifierUnderPosition = inspectedFieldSelector.identifierUnderPosition;
146
+ const inspectedFieldAccess = inspectFieldSelector(lexerSnapshot, nodeIdMapCollection, position, fieldSelector);
147
+ fieldNamesResult.push(...inspectedFieldAccess.fieldNames);
148
+ if (inspectedFieldAccess.isAutocompleteAllowed) {
149
+ isAutocompleteAllowedResult = true;
150
+ textEditRangeResult = inspectedFieldAccess.textEditRange;
151
+ textUnderPositionResult = inspectedFieldAccess.textUnderPosition;
132
152
  }
133
- fieldNames.push(...inspectedFieldSelector.fieldNames);
134
153
  }
135
154
  return {
136
- isAutocompleteAllowed,
137
- identifierUnderPosition,
138
- fieldNames,
139
- };
140
- }
141
- function createInspectedFieldAccess(isAutocompleteAllowed) {
142
- return {
143
- isAutocompleteAllowed,
144
- identifierUnderPosition: undefined,
145
- fieldNames: [],
155
+ fieldNames: fieldNamesResult,
156
+ isAutocompleteAllowed: isAutocompleteAllowedResult,
157
+ textEditRange: textEditRangeResult,
158
+ textUnderPosition: textUnderPositionResult,
146
159
  };
147
160
  }
148
161
  function inspectFieldSelector(lexerSnapshot, nodeIdMapCollection, position, fieldSelector) {
149
- var _a;
150
162
  const childIds = nodeIdMapCollection.childIdsById.get(fieldSelector.node.id);
151
163
  if (childIds === undefined) {
152
- return createInspectedFieldAccess(false);
164
+ return emptyInspectedFieldAccess(false);
153
165
  }
154
166
  else if (childIds.length === 1) {
155
- return createInspectedFieldAccess(nodeIdMapCollection.astNodeById.has(childIds[0]));
167
+ return emptyInspectedFieldAccess(nodeIdMapCollection.astNodeById.has(childIds[0]));
156
168
  }
157
- const generalizedIdentifierId = childIds[1];
158
- const generalizedIdentifierXor = parser_1.NodeIdMapUtils.assertXorChecked(nodeIdMapCollection, generalizedIdentifierId, "GeneralizedIdentifier" /* GeneralizedIdentifier */);
169
+ const generalizedIdentifierXor = parser_1.NodeIdMapUtils.assertXorChecked(nodeIdMapCollection, PQP.ArrayUtils.assertGet(childIds, 1), language_1.Ast.NodeKind.GeneralizedIdentifier);
159
170
  switch (generalizedIdentifierXor.kind) {
160
- case "Ast" /* Ast */: {
171
+ // There isn't a perfect way to determine if an autocomplete should be allowed.
172
+ // Take the following scenario, staring with start with: `let foo = [key = 1] in foo`
173
+ // Now the user wants to add a field selector: `let [key = 1][|in foo`
174
+ // The parser rules generate the GeneralizedIdentifier `in foo`, even though the user wouldn't expect it.
175
+ //
176
+ // The best solution I can think of is the following:
177
+ // - if it' a fully parsed Ast (ie. there exists a closing bracket) then the entire field is fair game.
178
+ // - if it's a partial Ast (ie. there is no closing bracket) then only operate on the first identifier token
179
+ case PQP.Parser.XorNodeKind.Ast: {
161
180
  const generalizedIdentifier = generalizedIdentifierXor.node;
162
- const isPositionInIdentifier = __1.PositionUtils.isInAst(position, generalizedIdentifier, true, true);
181
+ const generalizedIdentifierLiteral = generalizedIdentifier.literal;
182
+ let isPositionInOrOnIdentifier;
183
+ let textEditRange;
184
+ let textUnderPosition;
185
+ const firstToken = lexerSnapshot.tokens[generalizedIdentifier.tokenRange.tokenIndexStart];
186
+ if (!generalizedIdentifierLiteral.includes(" ")) {
187
+ isPositionInOrOnIdentifier = __1.PositionUtils.isInAst(position, generalizedIdentifier, true, true);
188
+ textUnderPosition = isPositionInOrOnIdentifier ? generalizedIdentifierLiteral : undefined;
189
+ textEditRange = __1.PositionUtils.rangeFromTokenRange(generalizedIdentifier.tokenRange);
190
+ }
191
+ // Given `let _ = [key with space = 1][#"key with space"| in _`
192
+ // assume the user wants to autocomplete the identifier `#"key with space"`
193
+ //
194
+ // Given: `let _ = [key with space = 1][key| in _`
195
+ // assume the user wants to autocomplete the identifier `key`
196
+ else if ((firstToken === null || firstToken === void 0 ? void 0 : firstToken.kind) === token_1.TokenKind.Identifier) {
197
+ isPositionInOrOnIdentifier = __1.PositionUtils.isInToken(position, firstToken, true, true);
198
+ textUnderPosition = isPositionInOrOnIdentifier ? firstToken.data : undefined;
199
+ textEditRange = isPositionInOrOnIdentifier ? __1.PositionUtils.rangeFromToken(firstToken) : undefined;
200
+ }
201
+ else {
202
+ isPositionInOrOnIdentifier = false;
203
+ textEditRange = undefined;
204
+ textUnderPosition = undefined;
205
+ }
163
206
  return {
164
- isAutocompleteAllowed: isPositionInIdentifier,
165
- identifierUnderPosition: isPositionInIdentifier === true ? generalizedIdentifier : undefined,
166
- fieldNames: [generalizedIdentifier.literal],
207
+ fieldNames: [generalizedIdentifierLiteral],
208
+ isAutocompleteAllowed: isPositionInOrOnIdentifier,
209
+ textEditRange,
210
+ textUnderPosition,
167
211
  };
168
212
  }
169
- case "Context" /* Context */: {
170
- // TODO [Autocomplete]:
171
- // This doesn't take into account of generalized identifiers consisting of multiple tokens.
172
- // Eg. `foo[bar baz]` or `foo[#"bar baz"].
173
- const openBracketConstant = parser_1.NodeIdMapUtils.assertNthChildAstChecked(nodeIdMapCollection, fieldSelector.node.id, 0, "Constant" /* Constant */);
174
- const nextTokenPosition = (_a = lexerSnapshot.tokens[openBracketConstant.tokenRange.tokenIndexEnd + 1]) === null || _a === void 0 ? void 0 : _a.positionStart;
175
- const isAutocompleteAllowed = __1.PositionUtils.isAfterAst(position, openBracketConstant, false) &&
176
- (nextTokenPosition === undefined ||
177
- __1.PositionUtils.isOnTokenPosition(position, nextTokenPosition) ||
178
- __1.PositionUtils.isBeforeTokenPosition(position, nextTokenPosition, true));
213
+ case PQP.Parser.XorNodeKind.Context: {
179
214
  return {
180
- isAutocompleteAllowed,
181
- identifierUnderPosition: undefined,
182
215
  fieldNames: [],
216
+ isAutocompleteAllowed: true,
217
+ textEditRange: undefined,
218
+ textUnderPosition: undefined,
183
219
  };
184
220
  }
185
221
  default:
186
222
  throw powerquery_parser_1.Assert.isNever(generalizedIdentifierXor);
187
223
  }
188
224
  }
189
- function createAutocompleteItems(fieldEntries, inspectedFieldAccess) {
190
- var _a;
191
- const fieldAccessNames = inspectedFieldAccess.fieldNames;
192
- const autocompleteItems = [];
193
- const identifierUnderPositionLiteral = (_a = inspectedFieldAccess.identifierUnderPosition) === null || _a === void 0 ? void 0 : _a.literal;
194
- for (const [label, powerQueryType] of fieldEntries) {
195
- if (fieldAccessNames.includes(label) && label !== identifierUnderPositionLiteral) {
196
- continue;
197
- }
198
- autocompleteItems.push(autocompleteItem_1.AutocompleteItemUtils.fromFieldAccess(label, powerQueryType, identifierUnderPositionLiteral));
199
- }
200
- return autocompleteItems;
201
- }
202
225
  function typablePrimaryExpression(nodeIdMapCollection, activeNode) {
203
226
  const ancestry = activeNode.ancestry;
204
227
  const numAncestors = ancestry.length;
@@ -206,7 +229,7 @@ function typablePrimaryExpression(nodeIdMapCollection, activeNode) {
206
229
  let matchingContiguousPrimaryExpression = true;
207
230
  for (let index = 0; index < numAncestors; index += 1) {
208
231
  const xorNode = ancestry[index];
209
- if (xorNode.node.kind === "RecursivePrimaryExpression" /* RecursivePrimaryExpression */) {
232
+ if (xorNode.node.kind === language_1.Ast.NodeKind.RecursivePrimaryExpression) {
210
233
  // The previous ancestor must be an attribute of Rpe, which is either its head or ArrrayWrapper.
211
234
  const xorNodeBeforeRpe = parser_1.AncestryUtils.assertNth(ancestry, index - 1);
212
235
  // If we're coming from the head node,
@@ -221,7 +244,7 @@ function typablePrimaryExpression(nodeIdMapCollection, activeNode) {
221
244
  return parser_1.NodeIdMapUtils.assertRecursiveExpressionPreviousSibling(nodeIdMapCollection, rpeChild.node.id);
222
245
  }
223
246
  else {
224
- throw new PQP.CommonError.InvariantError(`the child of a ${"RecursivePrimaryExpression" /* RecursivePrimaryExpression */} should have an attribute index of either 1 or 2`, {
247
+ throw new PQP.CommonError.InvariantError(`the child of a ${language_1.Ast.NodeKind.RecursivePrimaryExpression} should have an attribute index of either 1 or 2`, {
225
248
  parentId: xorNode.node.id,
226
249
  childId: xorNodeBeforeRpe.node.id,
227
250
  });