@microsoft/powerquery-language-services 0.3.38 → 0.5.0
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.
- package/lib/powerquery-language-services/analysis/analysis.d.ts +17 -8
- package/lib/powerquery-language-services/analysis/analysisBase.d.ts +41 -26
- package/lib/powerquery-language-services/analysis/analysisBase.js +524 -173
- package/lib/powerquery-language-services/analysis/analysisBase.js.map +1 -1
- package/lib/powerquery-language-services/analysis/analysisSettings.d.ts +8 -11
- package/lib/powerquery-language-services/analysis/analysisUtils.d.ts +1 -2
- package/lib/powerquery-language-services/analysis/analysisUtils.js +20 -2
- package/lib/powerquery-language-services/analysis/analysisUtils.js.map +1 -1
- package/lib/powerquery-language-services/analysis/documentAnalysis.d.ts +4 -6
- package/lib/powerquery-language-services/analysis/documentAnalysis.js +4 -11
- package/lib/powerquery-language-services/analysis/documentAnalysis.js.map +1 -1
- package/lib/powerquery-language-services/analysis/memoizedAnalysis.d.ts +18 -0
- package/lib/powerquery-language-services/analysis/memoizedAnalysis.js +66 -0
- package/lib/powerquery-language-services/analysis/memoizedAnalysis.js.map +1 -0
- package/lib/powerquery-language-services/formatter.d.ts +1 -1
- package/lib/powerquery-language-services/formatter.js +2 -4
- package/lib/powerquery-language-services/formatter.js.map +1 -1
- package/lib/powerquery-language-services/index.d.ts +0 -1
- package/lib/powerquery-language-services/index.js +0 -1
- package/lib/powerquery-language-services/index.js.map +1 -1
- package/lib/powerquery-language-services/inspection/activeNode/activeNode.d.ts +5 -5
- package/lib/powerquery-language-services/inspection/activeNode/activeNodeUtils.d.ts +5 -5
- package/lib/powerquery-language-services/inspection/activeNode/activeNodeUtils.js +78 -83
- package/lib/powerquery-language-services/inspection/activeNode/activeNodeUtils.js.map +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteFieldAccess.d.ts +2 -2
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteFieldAccess.js +37 -40
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteFieldAccess.js.map +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteItem/autocompleteItemUtils.d.ts +7 -7
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteItem/autocompleteItemUtils.js +17 -17
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteItem/autocompleteItemUtils.js.map +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeyword.d.ts +3 -3
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeyword.js +43 -43
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeyword.js.map +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordDefault.js +7 -7
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordDefault.js.map +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordErrorHandlingExpression.js +7 -7
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordErrorHandlingExpression.js.map +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordIdentifierPairedExpression.js +4 -4
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordIdentifierPairedExpression.js.map +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordLetExpression.js +24 -17
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordLetExpression.js.map +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordListExpression.js +4 -4
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordListExpression.js.map +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordSectionMember.js +9 -9
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordSectionMember.js.map +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordTrailingText.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordTrailingText.js +5 -5
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordTrailingText.js.map +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/common.js +4 -4
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/common.js.map +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/commonTypes.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteLanguageConstant.d.ts +2 -2
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteLanguageConstant.js +21 -26
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteLanguageConstant.js.map +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/autocompletePrimitiveType.d.ts +2 -2
- package/lib/powerquery-language-services/inspection/autocomplete/autocompletePrimitiveType.js +21 -21
- package/lib/powerquery-language-services/inspection/autocomplete/autocompletePrimitiveType.js.map +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/commonTypes.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/task.d.ts +2 -2
- package/lib/powerquery-language-services/inspection/autocomplete/task.js +12 -12
- package/lib/powerquery-language-services/inspection/autocomplete/task.js.map +1 -1
- package/lib/powerquery-language-services/inspection/commonTypes.d.ts +2 -2
- package/lib/powerquery-language-services/inspection/deferenceIdentifier.js +12 -13
- package/lib/powerquery-language-services/inspection/deferenceIdentifier.js.map +1 -1
- package/lib/powerquery-language-services/inspection/expectedType.d.ts +3 -3
- package/lib/powerquery-language-services/inspection/expectedType.js +8 -8
- package/lib/powerquery-language-services/inspection/expectedType.js.map +1 -1
- package/lib/powerquery-language-services/inspection/invokeExpression/common.d.ts +2 -2
- package/lib/powerquery-language-services/inspection/invokeExpression/currentInvokeExpression.d.ts +2 -2
- package/lib/powerquery-language-services/inspection/invokeExpression/currentInvokeExpression.js +24 -24
- package/lib/powerquery-language-services/inspection/invokeExpression/currentInvokeExpression.js.map +1 -1
- package/lib/powerquery-language-services/inspection/invokeExpression/invokeExpression.js +17 -18
- package/lib/powerquery-language-services/inspection/invokeExpression/invokeExpression.js.map +1 -1
- package/lib/powerquery-language-services/inspection/pseudoFunctionExpressionType.js +20 -22
- package/lib/powerquery-language-services/inspection/pseudoFunctionExpressionType.js.map +1 -1
- package/lib/powerquery-language-services/inspection/scope/scope.d.ts +2 -2
- package/lib/powerquery-language-services/inspection/scope/scopeInspection.js +47 -45
- package/lib/powerquery-language-services/inspection/scope/scopeInspection.js.map +1 -1
- package/lib/powerquery-language-services/inspection/scope/scopeUtils.d.ts +7 -7
- package/lib/powerquery-language-services/inspection/scope/scopeUtils.js +15 -15
- package/lib/powerquery-language-services/inspection/scope/scopeUtils.js.map +1 -1
- package/lib/powerquery-language-services/inspection/task.d.ts +4 -4
- package/lib/powerquery-language-services/inspection/task.js +17 -18
- package/lib/powerquery-language-services/inspection/task.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/common.d.ts +7 -7
- package/lib/powerquery-language-services/inspection/type/inspectType/common.js +56 -59
- package/lib/powerquery-language-services/inspection/type/inspectType/common.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/examineFieldSpecificationList.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/examineFieldSpecificationList.js +4 -5
- package/lib/powerquery-language-services/inspection/type/inspectType/examineFieldSpecificationList.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeEachExpression.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeEachExpression.js +4 -4
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeEachExpression.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeErrorHandlingExpression.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeErrorHandlingExpression.js +14 -12
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeErrorHandlingExpression.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/common.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/common.js +13 -13
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/common.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/inspectTypeFieldProjection.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/inspectTypeFieldProjection.js +9 -9
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/inspectTypeFieldProjection.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/inspectTypeFieldSelector.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/inspectTypeFieldSelector.js +13 -14
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/inspectTypeFieldSelector.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFieldSpecification.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFieldSpecification.js +6 -6
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFieldSpecification.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFunctionExpression.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFunctionExpression.js +8 -8
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFunctionExpression.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFunctionType.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFunctionType.js +9 -9
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFunctionType.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeIdentifier.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeIdentifier.js +5 -5
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeIdentifier.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeIdentifierExpression.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeIdentifierExpression.js +5 -5
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeIdentifierExpression.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeIfExpression.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeIfExpression.js +4 -4
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeIfExpression.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeInvokeExpression.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeInvokeExpression.js +18 -18
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeInvokeExpression.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeList.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeList.js +4 -4
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeList.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeListType.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeListType.js +7 -7
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeListType.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeLiteralExpression.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeLiteralExpression.js +2 -2
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeLiteralExpression.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeNullCoalescingExpression.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeNullCoalescingExpression.js +10 -10
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeNullCoalescingExpression.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeParameter.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeParameter.js +6 -6
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeParameter.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypePrimitiveType.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypePrimitiveType.js +3 -3
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypePrimitiveType.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRangeExpression.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRangeExpression.js +10 -10
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRangeExpression.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRecord.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRecord.js +7 -6
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRecord.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRecordType.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRecordType.js +6 -6
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRecordType.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRecursivePrimaryExpression.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRecursivePrimaryExpression.js +10 -10
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRecursivePrimaryExpression.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeTBinOpExpression.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeTBinOpExpression.js +35 -41
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeTBinOpExpression.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeTableType.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeTableType.js +9 -9
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeTableType.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeUnaryExpression.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeUnaryExpression.js +10 -12
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeUnaryExpression.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/task.js +5 -5
- package/lib/powerquery-language-services/inspection/type/task.js.map +1 -1
- package/lib/powerquery-language-services/inspectionSettings.d.ts +1 -1
- package/lib/powerquery-language-services/inspectionUtils.d.ts +3 -6
- package/lib/powerquery-language-services/inspectionUtils.js +20 -75
- package/lib/powerquery-language-services/inspectionUtils.js.map +1 -1
- package/lib/powerquery-language-services/library/library.d.ts +1 -1
- package/lib/powerquery-language-services/library/libraryUtils.d.ts +9 -9
- package/lib/powerquery-language-services/library/libraryUtils.js +21 -21
- package/lib/powerquery-language-services/library/libraryUtils.js.map +1 -1
- package/lib/powerquery-language-services/localization/localization.d.ts +3 -3
- package/lib/powerquery-language-services/localization/localization.js +9 -9
- package/lib/powerquery-language-services/localization/localization.js.map +1 -1
- package/lib/powerquery-language-services/positionUtils.js +16 -17
- package/lib/powerquery-language-services/positionUtils.js.map +1 -1
- package/lib/powerquery-language-services/providers/commonTypes.d.ts +41 -13
- package/lib/powerquery-language-services/providers/index.d.ts +2 -2
- package/lib/powerquery-language-services/providers/index.js +4 -4
- package/lib/powerquery-language-services/providers/index.js.map +1 -1
- package/lib/powerquery-language-services/providers/languageCompletionItemProvider.d.ts +4 -4
- package/lib/powerquery-language-services/providers/languageCompletionItemProvider.js +22 -19
- package/lib/powerquery-language-services/providers/languageCompletionItemProvider.js.map +1 -1
- package/lib/powerquery-language-services/providers/libraryProvider.d.ts +17 -0
- package/lib/powerquery-language-services/providers/libraryProvider.js +129 -0
- package/lib/powerquery-language-services/providers/libraryProvider.js.map +1 -0
- package/lib/powerquery-language-services/providers/localDocumentProvider/foldingRanges.d.ts +4 -0
- package/lib/powerquery-language-services/providers/localDocumentProvider/foldingRanges.js +51 -0
- package/lib/powerquery-language-services/providers/localDocumentProvider/foldingRanges.js.map +1 -0
- package/lib/powerquery-language-services/providers/localDocumentProvider/localDocumentProvider.d.ts +18 -19
- package/lib/powerquery-language-services/providers/localDocumentProvider/localDocumentProvider.js +131 -116
- package/lib/powerquery-language-services/providers/localDocumentProvider/localDocumentProvider.js.map +1 -1
- package/lib/powerquery-language-services/providers/localDocumentProvider/partialSemanticToken.js +112 -124
- package/lib/powerquery-language-services/providers/localDocumentProvider/partialSemanticToken.js.map +1 -1
- package/lib/powerquery-language-services/providers/nullSymbolProvider.d.ts +11 -8
- package/lib/powerquery-language-services/providers/nullSymbolProvider.js +12 -5
- package/lib/powerquery-language-services/providers/nullSymbolProvider.js.map +1 -1
- package/lib/powerquery-language-services/traceUtils.d.ts +1 -1
- package/lib/powerquery-language-services/traceUtils.js +1 -1
- package/lib/powerquery-language-services/traceUtils.js.map +1 -1
- package/lib/powerquery-language-services/validate/validate.d.ts +2 -2
- package/lib/powerquery-language-services/validate/validate.js +19 -20
- package/lib/powerquery-language-services/validate/validate.js.map +1 -1
- package/lib/powerquery-language-services/validate/validateDuplicateIdentifiers.d.ts +2 -1
- package/lib/powerquery-language-services/validate/validateDuplicateIdentifiers.js +24 -54
- package/lib/powerquery-language-services/validate/validateDuplicateIdentifiers.js.map +1 -1
- package/lib/powerquery-language-services/validate/validateFunctionExpression.js +6 -6
- package/lib/powerquery-language-services/validate/validateFunctionExpression.js.map +1 -1
- package/lib/powerquery-language-services/validate/validateInvokeExpression.d.ts +1 -1
- package/lib/powerquery-language-services/validate/validateInvokeExpression.js +23 -23
- package/lib/powerquery-language-services/validate/validateInvokeExpression.js.map +1 -1
- package/lib/powerquery-language-services/validate/validateParse.d.ts +4 -0
- package/lib/powerquery-language-services/validate/validateParse.js +74 -0
- package/lib/powerquery-language-services/validate/validateParse.js.map +1 -0
- package/lib/powerquery-language-services/validate/validateUnknownIdentifiers.js +19 -15
- package/lib/powerquery-language-services/validate/validateUnknownIdentifiers.js.map +1 -1
- package/lib/powerquery-language-services/workspaceCache/workspaceCache.d.ts +2 -2
- package/lib/powerquery-language-services/workspaceCache/workspaceCacheUtils.js +31 -31
- package/lib/powerquery-language-services/workspaceCache/workspaceCacheUtils.js.map +1 -1
- package/package.json +3 -3
- package/lib/powerquery-language-services/documentSymbols.d.ts +0 -3
- package/lib/powerquery-language-services/documentSymbols.js +0 -100
- package/lib/powerquery-language-services/documentSymbols.js.map +0 -1
- package/lib/powerquery-language-services/providers/librarySymbolProvider.d.ts +0 -15
- package/lib/powerquery-language-services/providers/librarySymbolProvider.js +0 -117
- package/lib/powerquery-language-services/providers/librarySymbolProvider.js.map +0 -1
- package/lib/powerquery-language-services/validate/validateLexAndParse.d.ts +0 -4
- package/lib/powerquery-language-services/validate/validateLexAndParse.js +0 -130
- package/lib/powerquery-language-services/validate/validateLexAndParse.js.map +0 -1
|
@@ -12,16 +12,16 @@ function autocompleteKeywordListExpression(state) {
|
|
|
12
12
|
const ancestryIndex = state.ancestryIndex;
|
|
13
13
|
const child = state.child;
|
|
14
14
|
// '{' or '}'
|
|
15
|
-
if (child.node.
|
|
15
|
+
if (child.node.attributeIndex === 0 || child.node.attributeIndex === 2) {
|
|
16
16
|
return undefined;
|
|
17
17
|
}
|
|
18
|
-
powerquery_parser_1.Assert.isTrue(child.node.
|
|
18
|
+
powerquery_parser_1.Assert.isTrue(child.node.attributeIndex === 1, `must be in range [0, 2]`, {
|
|
19
19
|
nodeId: child.node.id,
|
|
20
|
-
|
|
20
|
+
attributeIndex: child.node.attributeIndex,
|
|
21
21
|
});
|
|
22
22
|
// ListExpression -> ArrayWrapper -> Csv -> X
|
|
23
23
|
const nodeOrComma = parser_1.AncestryUtils.assertGetNthPreviousXor(activeNode.ancestry, ancestryIndex, 3);
|
|
24
|
-
if (nodeOrComma.node.
|
|
24
|
+
if (nodeOrComma.node.attributeIndex !== 0) {
|
|
25
25
|
return undefined;
|
|
26
26
|
}
|
|
27
27
|
// We know it's the node component of the Csv,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autocompleteKeywordListExpression.js","sourceRoot":"","sources":["../../../../../src/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordListExpression.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,sFAAkH;AAClH,0FAA2F;AAC3F,oEAAsD;AAItD,gCAAyC;AAEzC,SAAgB,iCAAiC,CAC7C,KAAsC;IAEtC,MAAM,UAAU,GAAe,KAAK,CAAC,UAAU,CAAC;IAChD,MAAM,aAAa,GAAW,KAAK,CAAC,aAAa,CAAC;IAClD,MAAM,KAAK,GAAa,KAAK,CAAC,KAAK,CAAC;IAEpC,aAAa;IACb,IAAI,KAAK,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"autocompleteKeywordListExpression.js","sourceRoot":"","sources":["../../../../../src/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordListExpression.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,sFAAkH;AAClH,0FAA2F;AAC3F,oEAAsD;AAItD,gCAAyC;AAEzC,SAAgB,iCAAiC,CAC7C,KAAsC;IAEtC,MAAM,UAAU,GAAe,KAAK,CAAC,UAAU,CAAC;IAChD,MAAM,aAAa,GAAW,KAAK,CAAC,aAAa,CAAC;IAClD,MAAM,KAAK,GAAa,KAAK,CAAC,KAAK,CAAC;IAEpC,aAAa;IACb,IAAI,KAAK,CAAC,IAAI,CAAC,cAAc,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,cAAc,KAAK,CAAC,EAAE;QACpE,OAAO,SAAS,CAAC;KACpB;IAED,0BAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,KAAK,CAAC,EAAE,yBAAyB,EAAE;QACtE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE;QACrB,cAAc,EAAE,KAAK,CAAC,IAAI,CAAC,cAAc;KAC5C,CAAC,CAAC;IAEH,6CAA6C;IAC7C,MAAM,WAAW,GAAa,sBAAa,CAAC,uBAAuB,CAAC,UAAU,CAAC,QAAQ,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;IAE3G,IAAI,WAAW,CAAC,IAAI,CAAC,cAAc,KAAK,CAAC,EAAE;QACvC,OAAO,SAAS,CAAC;KACpB;IAED,8CAA8C;IAC9C,sEAAsE;IACtE,MAAM,QAAQ,GAAa,qBAAY,CAAC,UAAU,CAAC,WAAW,0CAA+B;QACzF,CAAC,CAAC,sBAAa,CAAC,uBAAuB,CAAC,UAAU,CAAC,QAAQ,EAAE,aAAa,EAAE,CAAC,CAAC;QAC9E,CAAC,CAAC,WAAW,CAAC;IAElB,IAAI,qBAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,iBAAa,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE;QACxG,OAAO,kBAAO,CAAC,sBAAsB,CAAC;KACzC;SAAM;QACH,OAAO,SAAS,CAAC;KACpB;AACL,CAAC;AAnCD,8EAmCC"}
|
|
@@ -6,32 +6,32 @@ exports.autocompleteKeywordSectionMember = void 0;
|
|
|
6
6
|
const parser_1 = require("@microsoft/powerquery-parser/lib/powerquery-parser/parser");
|
|
7
7
|
const common_1 = require("./common");
|
|
8
8
|
function autocompleteKeywordSectionMember(state) {
|
|
9
|
-
const
|
|
9
|
+
const childAttributeIndex = state.child.node.attributeIndex;
|
|
10
10
|
// SectionMember.namePairedExpression
|
|
11
|
-
if (
|
|
11
|
+
if (childAttributeIndex === 2) {
|
|
12
12
|
// A test for 'shared', which as we're on namePairedExpression we either parsed it or skipped it.
|
|
13
|
-
const
|
|
13
|
+
const sharedConstant = parser_1.NodeIdMapUtils.nthChildChecked(state.nodeIdMapCollection, state.parent.node.id, 1, "Constant" /* Constant */);
|
|
14
14
|
// 'shared' was parsed so we can exit.
|
|
15
|
-
if (
|
|
15
|
+
if (sharedConstant !== undefined) {
|
|
16
16
|
return Promise.resolve(undefined);
|
|
17
17
|
}
|
|
18
18
|
// SectionMember -> IdentifierPairedExpression -> Identifier
|
|
19
|
-
const
|
|
19
|
+
const name = parser_1.AncestryUtils.nthPreviousXor(state.activeNode.ancestry, state.ancestryIndex, 2);
|
|
20
20
|
// Name hasn't been parsed yet so we can exit.
|
|
21
|
-
if (!
|
|
22
|
-
!parser_1.XorNodeUtils.isAstXorChecked(
|
|
21
|
+
if (!name ||
|
|
22
|
+
!parser_1.XorNodeUtils.isAstXorChecked(name, [
|
|
23
23
|
"IdentifierPairedExpression" /* IdentifierPairedExpression */,
|
|
24
24
|
])) {
|
|
25
25
|
return Promise.resolve(undefined);
|
|
26
26
|
}
|
|
27
|
-
if ("shared" /* Shared */.startsWith(
|
|
27
|
+
if ("shared" /* Shared */.startsWith(name.node.key.literal)) {
|
|
28
28
|
return Promise.resolve(["shared" /* Shared */]);
|
|
29
29
|
}
|
|
30
30
|
return Promise.resolve(undefined);
|
|
31
31
|
}
|
|
32
32
|
// `section foo; bar = 1 |` would be expecting a semicolon.
|
|
33
33
|
// The autocomplete should be for the IdentifierPairedExpression found on the previous child index.
|
|
34
|
-
else if (
|
|
34
|
+
else if (childAttributeIndex === 3 && parser_1.XorNodeUtils.isContextXor(state.child)) {
|
|
35
35
|
const identifierPairedExpression = parser_1.NodeIdMapUtils.assertUnboxNthChildAsAstChecked(state.nodeIdMapCollection, state.parent.node.id, 2, "IdentifierPairedExpression" /* IdentifierPairedExpression */);
|
|
36
36
|
return (0, common_1.autocompleteKeywordRightMostLeaf)(state, identifierPairedExpression.id);
|
|
37
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autocompleteKeywordSectionMember.js","sourceRoot":"","sources":["../../../../../src/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordSectionMember.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,sFAMmE;AAGnE,qCAA4D;AAG5D,SAAgB,gCAAgC,CAC5C,KAAsC;IAEtC,MAAM,
|
|
1
|
+
{"version":3,"file":"autocompleteKeywordSectionMember.js","sourceRoot":"","sources":["../../../../../src/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordSectionMember.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,sFAMmE;AAGnE,qCAA4D;AAG5D,SAAgB,gCAAgC,CAC5C,KAAsC;IAEtC,MAAM,mBAAmB,GAAuB,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC;IAEhF,qCAAqC;IACrC,IAAI,mBAAmB,KAAK,CAAC,EAAE;QAC3B,iGAAiG;QACjG,MAAM,cAAc,GAAuC,uBAAc,CAAC,eAAe,CACrF,KAAK,CAAC,mBAAmB,EACzB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EACpB,CAAC,4BAEJ,CAAC;QAEF,sCAAsC;QACtC,IAAI,cAAc,KAAK,SAAS,EAAE;YAC9B,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;SACrC;QAED,4DAA4D;QAC5D,MAAM,IAAI,GAAyB,sBAAa,CAAC,cAAc,CAC3D,KAAK,CAAC,UAAU,CAAC,QAAQ,EACzB,KAAK,CAAC,aAAa,EACnB,CAAC,CACJ,CAAC;QAEF,8CAA8C;QAC9C,IACI,CAAC,IAAI;YACL,CAAC,qBAAY,CAAC,eAAe,CAAiC,IAAI,EAAE;;aAEnE,CAAC,EACJ;YACE,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;SACrC;QAED,IAAI,sBAA2B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YAC9D,OAAO,OAAO,CAAC,OAAO,CAAC,uBAA4B,CAAC,CAAC;SACxD;QAED,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;KACrC;IACD,2DAA2D;IAC3D,mGAAmG;SAC9F,IAAI,mBAAmB,KAAK,CAAC,IAAI,qBAAY,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QAC1E,MAAM,0BAA0B,GAC5B,uBAAc,CAAC,+BAA+B,CAC1C,KAAK,CAAC,mBAAmB,EACzB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EACpB,CAAC,gEAEJ,CAAC;QAEN,OAAO,IAAA,yCAAgC,EAAC,KAAK,EAAE,0BAA0B,CAAC,EAAE,CAAC,CAAC;KACjF;SAAM;QACH,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;KACrC;AACL,CAAC;AA1DD,4EA0DC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { Keyword } from "@microsoft/powerquery-parser/lib/powerquery-parser/language";
|
|
2
2
|
import { TrailingToken } from "../commonTypes";
|
|
3
|
-
export declare function autocompleteKeywordTrailingText(inspected: ReadonlyArray<Keyword.KeywordKind>, trailingToken: TrailingToken,
|
|
3
|
+
export declare function autocompleteKeywordTrailingText(inspected: ReadonlyArray<Keyword.KeywordKind>, trailingToken: TrailingToken, allowedKeywords: ReadonlyArray<Keyword.KeywordKind> | undefined): ReadonlyArray<Keyword.KeywordKind>;
|
|
@@ -5,22 +5,22 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
5
5
|
exports.autocompleteKeywordTrailingText = void 0;
|
|
6
6
|
const PQP = require("@microsoft/powerquery-parser");
|
|
7
7
|
const powerquery_parser_1 = require("@microsoft/powerquery-parser");
|
|
8
|
-
function autocompleteKeywordTrailingText(inspected, trailingToken,
|
|
8
|
+
function autocompleteKeywordTrailingText(inspected, trailingToken, allowedKeywords) {
|
|
9
9
|
if (trailingToken.isInOrOnPosition === false) {
|
|
10
10
|
return inspected;
|
|
11
11
|
}
|
|
12
12
|
powerquery_parser_1.Assert.isTrue(trailingToken.data.length > 0, "trailingToken.data.length > 0");
|
|
13
13
|
const token = trailingToken;
|
|
14
|
-
|
|
15
|
-
if (
|
|
16
|
-
return PQP.ArrayUtils.concatUnique(inspected,
|
|
14
|
+
allowedKeywords = allowedKeywords !== null && allowedKeywords !== void 0 ? allowedKeywords : PartialConjunctionKeywordAutocompleteMap.get(token.data[0]);
|
|
15
|
+
if (allowedKeywords !== undefined) {
|
|
16
|
+
return PQP.ArrayUtils.concatUnique(inspected, allowedKeywords.filter((keyword) => keyword.startsWith(token.data)));
|
|
17
17
|
}
|
|
18
18
|
else {
|
|
19
19
|
return inspected;
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
exports.autocompleteKeywordTrailingText = autocompleteKeywordTrailingText;
|
|
23
|
-
// Used with
|
|
23
|
+
// Used with parseError to see if a user could be typing a conjunctive keyword such as 'or'. Eg.
|
|
24
24
|
// 'Details[UserName] <> "" o|'
|
|
25
25
|
const PartialConjunctionKeywordAutocompleteMap = new Map([
|
|
26
26
|
["a", ["and" /* And */, "as" /* As */]],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autocompleteKeywordTrailingText.js","sourceRoot":"","sources":["../../../../../src/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordTrailingText.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,oDAAoD;AACpD,oEAAsD;AAKtD,SAAgB,+BAA+B,CAC3C,SAA6C,EAC7C,aAA4B,EAC5B,
|
|
1
|
+
{"version":3,"file":"autocompleteKeywordTrailingText.js","sourceRoot":"","sources":["../../../../../src/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordTrailingText.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,oDAAoD;AACpD,oEAAsD;AAKtD,SAAgB,+BAA+B,CAC3C,SAA6C,EAC7C,aAA4B,EAC5B,eAA+D;IAE/D,IAAI,aAAa,CAAC,gBAAgB,KAAK,KAAK,EAAE;QAC1C,OAAO,SAAS,CAAC;KACpB;IAED,0BAAM,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,+BAA+B,CAAC,CAAC;IAC9E,MAAM,KAAK,GAA6B,aAAa,CAAC;IAEtD,eAAe,GAAG,eAAe,aAAf,eAAe,cAAf,eAAe,GAAI,wCAAwC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAEjG,IAAI,eAAe,KAAK,SAAS,EAAE;QAC/B,OAAO,GAAG,CAAC,UAAU,CAAC,YAAY,CAC9B,SAAS,EACT,eAAe,CAAC,MAAM,CAAC,CAAC,OAA4B,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAC3F,CAAC;KACL;SAAM;QACH,OAAO,SAAS,CAAC;KACpB;AACL,CAAC;AAtBD,0EAsBC;AAED,gGAAgG;AAChG,+BAA+B;AAC/B,MAAM,wCAAwC,GAAoD,IAAI,GAAG,CAGvG;IACE,CAAC,GAAG,EAAE,gCAAiD,CAAC;IACxD,CAAC,GAAG,EAAE,eAAwB,CAAC;IAC/B,CAAC,GAAG,EAAE,mBAA0B,CAAC;IACjC,CAAC,GAAG,EAAE,eAAwB,CAAC;CAClC,CAAC,CAAC"}
|
package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/common.js
CHANGED
|
@@ -19,15 +19,15 @@ const autocompleteKeyword_1 = require("./autocompleteKeyword");
|
|
|
19
19
|
function autocompleteKeywordRightMostLeaf(state, xorNodeId) {
|
|
20
20
|
return __awaiter(this, void 0, void 0, function* () {
|
|
21
21
|
// Grab the right-most Ast node in the last value.
|
|
22
|
-
const
|
|
23
|
-
if (
|
|
22
|
+
const rightMostAstLeafForLastValue = yield parser_1.NodeIdMapUtils.rightMostLeaf(state.nodeIdMapCollection, xorNodeId, undefined);
|
|
23
|
+
if (rightMostAstLeafForLastValue === undefined) {
|
|
24
24
|
return undefined;
|
|
25
25
|
}
|
|
26
26
|
// Start a new autocomplete inspection where the ActiveNode's ancestry is the right-most Ast node in the last value.
|
|
27
|
-
const shiftedAncestry = parser_1.AncestryUtils.assertGetAncestry(state.nodeIdMapCollection,
|
|
27
|
+
const shiftedAncestry = parser_1.AncestryUtils.assertGetAncestry(state.nodeIdMapCollection, rightMostAstLeafForLastValue.id);
|
|
28
28
|
powerquery_parser_1.Assert.isTrue(shiftedAncestry.length >= 2, "shiftedAncestry.length >= 2");
|
|
29
29
|
const shiftedActiveNode = Object.assign(Object.assign({}, state.activeNode), { ancestry: shiftedAncestry });
|
|
30
|
-
const inspected = yield (0, autocompleteKeyword_1.autocompleteKeyword)(state.nodeIdMapCollection, shiftedActiveNode, state.
|
|
30
|
+
const inspected = yield (0, autocompleteKeyword_1.autocompleteKeyword)(state.nodeIdMapCollection, shiftedActiveNode, state.trailingToken);
|
|
31
31
|
return inspected.map((autocompleteItem) => {
|
|
32
32
|
if (!language_1.KeywordUtils.isKeyword(autocompleteItem.label)) {
|
|
33
33
|
throw new powerquery_parser_1.CommonError.InvariantError(`expected ${autocompleteKeyword_1.autocompleteKeyword.name} to return only with KeywordKind values for AutocompleteItem.label`);
|
package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/common.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../../src/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/common.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;;;;;;;;;AAElC,sFAAoH;AACpH,oEAAmE;AACnE,0FAAyG;AAIzG,+DAA4D;AAG5D,SAAsB,gCAAgC,CAClD,KAAsC,EACtC,SAAiB;;QAEjB,kDAAkD;QAClD,MAAM,
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../../src/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/common.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;;;;;;;;;AAElC,sFAAoH;AACpH,oEAAmE;AACnE,0FAAyG;AAIzG,+DAA4D;AAG5D,SAAsB,gCAAgC,CAClD,KAAsC,EACtC,SAAiB;;QAEjB,kDAAkD;QAClD,MAAM,4BAA4B,GAA0B,MAAM,uBAAc,CAAC,aAAa,CAC1F,KAAK,CAAC,mBAAmB,EACzB,SAAS,EACT,SAAS,CACZ,CAAC;QAEF,IAAI,4BAA4B,KAAK,SAAS,EAAE;YAC5C,OAAO,SAAS,CAAC;SACpB;QAED,oHAAoH;QACpH,MAAM,eAAe,GAA4B,sBAAa,CAAC,iBAAiB,CAC5E,KAAK,CAAC,mBAAmB,EACzB,4BAA4B,CAAC,EAAE,CAClC,CAAC;QAEF,0BAAM,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,IAAI,CAAC,EAAE,6BAA6B,CAAC,CAAC;QAE1E,MAAM,iBAAiB,mCAChB,KAAK,CAAC,UAAU,KACnB,QAAQ,EAAE,eAAe,GAC5B,CAAC;QAEF,MAAM,SAAS,GAAoC,MAAM,IAAA,yCAAmB,EACxE,KAAK,CAAC,mBAAmB,EACzB,iBAAiB,EACjB,KAAK,CAAC,aAAa,CACtB,CAAC;QAEF,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,gBAAkC,EAAE,EAAE;YACxD,IAAI,CAAC,uBAAY,CAAC,SAAS,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE;gBACjD,MAAM,IAAI,+BAAW,CAAC,cAAc,CAChC,YAAY,yCAAmB,CAAC,IAAI,oEAAoE,CAC3G,CAAC;aACL;YAED,OAAO,gBAAgB,CAAC,KAAK,CAAC;QAClC,CAAC,CAAC,CAAC;IACP,CAAC;CAAA;AA3CD,4EA2CC"}
|
|
@@ -4,7 +4,7 @@ import { TrailingToken } from "../commonTypes";
|
|
|
4
4
|
export interface InspectAutocompleteKeywordState {
|
|
5
5
|
readonly nodeIdMapCollection: NodeIdMap.Collection;
|
|
6
6
|
readonly activeNode: ActiveNode;
|
|
7
|
-
readonly
|
|
7
|
+
readonly trailingToken: TrailingToken | undefined;
|
|
8
8
|
parent: TXorNode;
|
|
9
9
|
child: TXorNode;
|
|
10
10
|
ancestryIndex: number;
|
package/lib/powerquery-language-services/inspection/autocomplete/autocompleteLanguageConstant.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as PQP from "@microsoft/powerquery-parser";
|
|
2
2
|
import { NodeIdMap } from "@microsoft/powerquery-parser/lib/powerquery-parser/parser";
|
|
3
|
-
import {
|
|
3
|
+
import { TActiveNode } from "../activeNode";
|
|
4
4
|
import { TrailingToken, TriedAutocompleteLanguageConstant } from "./commonTypes";
|
|
5
|
-
export declare function tryAutocompleteLanguageConstant(settings: PQP.CommonSettings, nodeIdMapCollection: NodeIdMap.Collection,
|
|
5
|
+
export declare function tryAutocompleteLanguageConstant(settings: PQP.CommonSettings, nodeIdMapCollection: NodeIdMap.Collection, activeNode: TActiveNode, trailingToken: TrailingToken | undefined): TriedAutocompleteLanguageConstant;
|
package/lib/powerquery-language-services/inspection/autocomplete/autocompleteLanguageConstant.js
CHANGED
|
@@ -9,19 +9,18 @@ const powerquery_parser_1 = require("@microsoft/powerquery-parser");
|
|
|
9
9
|
const activeNode_1 = require("../activeNode");
|
|
10
10
|
const autocompleteItem_1 = require("./autocompleteItem");
|
|
11
11
|
const __1 = require("../..");
|
|
12
|
-
function tryAutocompleteLanguageConstant(settings, nodeIdMapCollection,
|
|
13
|
-
const trace = settings.traceManager.entry("LanguageConstant" /* AutocompleteLanguageConstant */, tryAutocompleteLanguageConstant.name, settings.
|
|
14
|
-
const result = powerquery_parser_1.ResultUtils.ensureResult(() => autocompleteLanguageConstant(nodeIdMapCollection,
|
|
12
|
+
function tryAutocompleteLanguageConstant(settings, nodeIdMapCollection, activeNode, trailingToken) {
|
|
13
|
+
const trace = settings.traceManager.entry("LanguageConstant" /* AutocompleteLanguageConstant */, tryAutocompleteLanguageConstant.name, settings.initialCorrelationId);
|
|
14
|
+
const result = powerquery_parser_1.ResultUtils.ensureResult(() => autocompleteLanguageConstant(nodeIdMapCollection, activeNode, trailingToken), settings.locale);
|
|
15
15
|
trace.exit({ ["IsError" /* IsError */]: powerquery_parser_1.ResultUtils.isError(result) });
|
|
16
16
|
return result;
|
|
17
17
|
}
|
|
18
18
|
exports.tryAutocompleteLanguageConstant = tryAutocompleteLanguageConstant;
|
|
19
|
-
function autocompleteLanguageConstant(nodeIdMapCollection,
|
|
20
|
-
if (!activeNode_1.ActiveNodeUtils.isPositionInBounds(
|
|
19
|
+
function autocompleteLanguageConstant(nodeIdMapCollection, activeNode, trailingToken) {
|
|
20
|
+
if (!activeNode_1.ActiveNodeUtils.isPositionInBounds(activeNode)) {
|
|
21
21
|
return undefined;
|
|
22
22
|
}
|
|
23
|
-
|
|
24
|
-
if (isCatchAllowed(nodeIdMapCollection, activeNode, maybeTrailingToken)) {
|
|
23
|
+
if (isCatchAllowed(nodeIdMapCollection, activeNode, trailingToken)) {
|
|
25
24
|
return autocompleteItem_1.AutocompleteItemUtils.createFromLanguageConstant("catch" /* Catch */);
|
|
26
25
|
}
|
|
27
26
|
else if (isNullableAllowed(activeNode)) {
|
|
@@ -34,7 +33,7 @@ function autocompleteLanguageConstant(nodeIdMapCollection, maybeActiveNode, mayb
|
|
|
34
33
|
return undefined;
|
|
35
34
|
}
|
|
36
35
|
}
|
|
37
|
-
function isCatchAllowed(nodeIdMapCollection, activeNode,
|
|
36
|
+
function isCatchAllowed(nodeIdMapCollection, activeNode, trailingToken) {
|
|
38
37
|
const ancestry = activeNode.ancestry;
|
|
39
38
|
const numAncestors = ancestry.length;
|
|
40
39
|
for (let index = 0; index < numAncestors; index += 1) {
|
|
@@ -48,7 +47,7 @@ function isCatchAllowed(nodeIdMapCollection, activeNode, maybeTrailingToken) {
|
|
|
48
47
|
activeNode.leafKind === "AfterAstNode" /* AfterAstNode */ &&
|
|
49
48
|
// And it only has two children, meaning it hasn't parsed an error handler
|
|
50
49
|
parser_1.NodeIdMapUtils.assertGetChildren(nodeIdMapCollection.childIdsById, xorNode.node.id).length === 2) {
|
|
51
|
-
return
|
|
50
|
+
return trailingToken ? "catch" /* Catch */.startsWith(trailingToken.data) : true;
|
|
52
51
|
}
|
|
53
52
|
}
|
|
54
53
|
return false;
|
|
@@ -76,12 +75,12 @@ function isNullableAllowed(activeNode) {
|
|
|
76
75
|
return false;
|
|
77
76
|
}
|
|
78
77
|
function isNullableAllowedForAsNullablePrimitiveType(activeNode, ancestryIndex) {
|
|
79
|
-
const
|
|
80
|
-
if ((
|
|
78
|
+
const child = parser_1.AncestryUtils.previousXor(activeNode.ancestry, ancestryIndex);
|
|
79
|
+
if ((child === null || child === void 0 ? void 0 : child.node.attributeIndex) !== 1) {
|
|
81
80
|
return false;
|
|
82
81
|
}
|
|
83
82
|
// Ast.AsNullablePrimitiveType.paired: Ast.TNullablePrimitiveType
|
|
84
|
-
const paired =
|
|
83
|
+
const paired = child;
|
|
85
84
|
const position = activeNode.position;
|
|
86
85
|
// Ast.PrimitiveType
|
|
87
86
|
if (paired.node.kind === "PrimitiveType" /* PrimitiveType */ && __1.PositionUtils.isBeforeXor(position, paired, false)) {
|
|
@@ -89,12 +88,10 @@ function isNullableAllowedForAsNullablePrimitiveType(activeNode, ancestryIndex)
|
|
|
89
88
|
}
|
|
90
89
|
// Ast.NullablePrimitiveType
|
|
91
90
|
else if (paired.node.kind === "NullablePrimitiveType" /* NullablePrimitiveType */) {
|
|
92
|
-
const
|
|
93
|
-
if (
|
|
91
|
+
const grandchild = parser_1.AncestryUtils.nthPreviousXor(activeNode.ancestry, ancestryIndex, 2);
|
|
92
|
+
if (grandchild === undefined) {
|
|
94
93
|
return false;
|
|
95
94
|
}
|
|
96
|
-
// Ast.Constant || Ast.PrimitiveType
|
|
97
|
-
const grandchild = maybeGrandchild;
|
|
98
95
|
return (
|
|
99
96
|
// Ast.Constant
|
|
100
97
|
grandchild.node.kind === "Constant" /* Constant */ ||
|
|
@@ -109,23 +106,21 @@ function isNullableAllowedForAsNullablePrimitiveType(activeNode, ancestryIndex)
|
|
|
109
106
|
}
|
|
110
107
|
}
|
|
111
108
|
function isOptionalAllowed(activeNode) {
|
|
112
|
-
const
|
|
113
|
-
if (
|
|
109
|
+
const fnExprAncestryIndex = parser_1.AncestryUtils.findIndexOfNodeKind(activeNode.ancestry, "FunctionExpression" /* FunctionExpression */);
|
|
110
|
+
if (fnExprAncestryIndex === undefined) {
|
|
114
111
|
return false;
|
|
115
112
|
}
|
|
116
|
-
const fnExprAncestryIndex = maybeFnExprAncestryIndex;
|
|
117
113
|
// FunctionExpression -> IParenthesisWrapped -> ParameterList -> Csv -> Parameter
|
|
118
|
-
const
|
|
119
|
-
if (
|
|
114
|
+
const parameter = parser_1.AncestryUtils.nthPreviousXorChecked(activeNode.ancestry, fnExprAncestryIndex, 4, "Parameter" /* Parameter */);
|
|
115
|
+
if (parameter === undefined) {
|
|
120
116
|
return false;
|
|
121
117
|
}
|
|
122
|
-
const
|
|
123
|
-
if (
|
|
118
|
+
const childOfParameter = parser_1.AncestryUtils.nthPreviousXor(activeNode.ancestry, fnExprAncestryIndex, 5);
|
|
119
|
+
if (childOfParameter === undefined) {
|
|
124
120
|
return true;
|
|
125
121
|
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
// IParameter.maybeOptionalConstant
|
|
122
|
+
switch (childOfParameter.node.attributeIndex) {
|
|
123
|
+
// IParameter.optionalConstant
|
|
129
124
|
case 0:
|
|
130
125
|
return true;
|
|
131
126
|
// IParameter.name
|
package/lib/powerquery-language-services/inspection/autocomplete/autocompleteLanguageConstant.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autocompleteLanguageConstant.js","sourceRoot":"","sources":["../../../../src/powerquery-language-services/inspection/autocomplete/autocompleteLanguageConstant.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,oDAAoD;AACpD,sFAOmE;AACnE,oEAAmE;AAKnE,
|
|
1
|
+
{"version":3,"file":"autocompleteLanguageConstant.js","sourceRoot":"","sources":["../../../../src/powerquery-language-services/inspection/autocomplete/autocompleteLanguageConstant.ts"],"names":[],"mappings":"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"}
|
package/lib/powerquery-language-services/inspection/autocomplete/autocompletePrimitiveType.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import * as PQP from "@microsoft/powerquery-parser";
|
|
2
|
-
import {
|
|
2
|
+
import { TActiveNode } from "../activeNode";
|
|
3
3
|
import { TrailingToken, TriedAutocompletePrimitiveType } from "./commonTypes";
|
|
4
|
-
export declare function tryAutocompletePrimitiveType(settings: PQP.CommonSettings,
|
|
4
|
+
export declare function tryAutocompletePrimitiveType(settings: PQP.CommonSettings, activeNode: TActiveNode, trailingToken: TrailingToken | undefined): TriedAutocompletePrimitiveType;
|
package/lib/powerquery-language-services/inspection/autocomplete/autocompletePrimitiveType.js
CHANGED
|
@@ -9,24 +9,24 @@ const powerquery_parser_1 = require("@microsoft/powerquery-parser");
|
|
|
9
9
|
const activeNode_1 = require("../activeNode");
|
|
10
10
|
const autocompleteItem_1 = require("./autocompleteItem");
|
|
11
11
|
const __1 = require("../..");
|
|
12
|
-
function tryAutocompletePrimitiveType(settings,
|
|
13
|
-
const trace = settings.traceManager.entry("PrimitiveType" /* AutocompletePrimitiveType */, tryAutocompletePrimitiveType.name, settings.
|
|
12
|
+
function tryAutocompletePrimitiveType(settings, activeNode, trailingToken) {
|
|
13
|
+
const trace = settings.traceManager.entry("PrimitiveType" /* AutocompletePrimitiveType */, tryAutocompletePrimitiveType.name, settings.initialCorrelationId);
|
|
14
14
|
let result;
|
|
15
|
-
if (!activeNode_1.ActiveNodeUtils.isPositionInBounds(
|
|
15
|
+
if (!activeNode_1.ActiveNodeUtils.isPositionInBounds(activeNode)) {
|
|
16
16
|
result = powerquery_parser_1.ResultUtils.boxOk([]);
|
|
17
17
|
}
|
|
18
18
|
else {
|
|
19
|
-
result = powerquery_parser_1.ResultUtils.ensureResult(() => autocompletePrimitiveType(
|
|
19
|
+
result = powerquery_parser_1.ResultUtils.ensureResult(() => autocompletePrimitiveType(activeNode, trailingToken === null || trailingToken === void 0 ? void 0 : trailingToken.data), settings.locale);
|
|
20
20
|
}
|
|
21
21
|
trace.exit();
|
|
22
22
|
return result;
|
|
23
23
|
}
|
|
24
24
|
exports.tryAutocompletePrimitiveType = tryAutocompletePrimitiveType;
|
|
25
|
-
function autocompletePrimitiveType(activeNode,
|
|
26
|
-
return createAutocompleteItems(traverseAncestors(activeNode),
|
|
25
|
+
function autocompletePrimitiveType(activeNode, trailingText) {
|
|
26
|
+
return createAutocompleteItems(traverseAncestors(activeNode), trailingText);
|
|
27
27
|
}
|
|
28
|
-
function createAutocompleteItems(PrimitiveTypeConstants,
|
|
29
|
-
return PrimitiveTypeConstants.map((PrimitiveTypeConstant) => autocompleteItem_1.AutocompleteItemUtils.createFromPrimitiveTypeConstant(PrimitiveTypeConstant,
|
|
28
|
+
function createAutocompleteItems(PrimitiveTypeConstants, trailingText) {
|
|
29
|
+
return PrimitiveTypeConstants.map((PrimitiveTypeConstant) => autocompleteItem_1.AutocompleteItemUtils.createFromPrimitiveTypeConstant(PrimitiveTypeConstant, trailingText));
|
|
30
30
|
}
|
|
31
31
|
function traverseAncestors(activeNode) {
|
|
32
32
|
if (activeNode.ancestry.length === 0) {
|
|
@@ -36,7 +36,7 @@ function traverseAncestors(activeNode) {
|
|
|
36
36
|
const numAncestors = activeNode.ancestry.length;
|
|
37
37
|
for (let index = 0; index < numAncestors; index += 1) {
|
|
38
38
|
const parent = ancestry[index];
|
|
39
|
-
const
|
|
39
|
+
const child = ancestry[index - 1];
|
|
40
40
|
// If the node is a context PrimitiveType node,
|
|
41
41
|
// which is created only when a primitive type was expected but there was nothing to parse.
|
|
42
42
|
// `x as |`
|
|
@@ -46,35 +46,35 @@ function traverseAncestors(activeNode) {
|
|
|
46
46
|
// If on the second attribute for TypePrimaryType.
|
|
47
47
|
// `type |`
|
|
48
48
|
else if (parent.node.kind === "TypePrimaryType" /* TypePrimaryType */) {
|
|
49
|
-
if (
|
|
49
|
+
if (child === undefined) {
|
|
50
50
|
return language_1.Constant.PrimitiveTypeConstants;
|
|
51
51
|
}
|
|
52
|
-
else if (
|
|
53
|
-
parser_1.XorNodeUtils.isAstXor(
|
|
54
|
-
__1.PositionUtils.isAfterAst(activeNode.position,
|
|
52
|
+
else if (child.node.attributeIndex === 0 &&
|
|
53
|
+
parser_1.XorNodeUtils.isAstXor(child) &&
|
|
54
|
+
__1.PositionUtils.isAfterAst(activeNode.position, child.node, true)) {
|
|
55
55
|
return language_1.Constant.PrimitiveTypeConstants;
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
58
|
// If on a FunctionExpression parameter.
|
|
59
59
|
else if (parent.node.kind === "Parameter" /* Parameter */ &&
|
|
60
|
-
parser_1.AncestryUtils.
|
|
60
|
+
parser_1.AncestryUtils.nthNextXorChecked(ancestry, index, 4, "FunctionExpression" /* FunctionExpression */) !== undefined) {
|
|
61
61
|
// Things get messy when testing if it's on a nullable primitive type OR a primitive type.
|
|
62
|
-
const
|
|
63
|
-
if (
|
|
62
|
+
const grandchild = parser_1.AncestryUtils.nthPreviousXor(ancestry, index, 2);
|
|
63
|
+
if (grandchild === undefined) {
|
|
64
64
|
continue;
|
|
65
65
|
}
|
|
66
66
|
// On primitive type.
|
|
67
67
|
// `(x as |) => 0`
|
|
68
|
-
else if (parser_1.XorNodeUtils.isAstXorChecked(
|
|
69
|
-
|
|
70
|
-
__1.PositionUtils.isAfterAst(activeNode.position,
|
|
68
|
+
else if (parser_1.XorNodeUtils.isAstXorChecked(grandchild, "Constant" /* Constant */) &&
|
|
69
|
+
grandchild.node.constantKind === "as" /* As */ &&
|
|
70
|
+
__1.PositionUtils.isAfterAst(activeNode.position, grandchild.node, true)) {
|
|
71
71
|
return language_1.Constant.PrimitiveTypeConstants;
|
|
72
72
|
}
|
|
73
73
|
// On nullable primitive type
|
|
74
74
|
// `(x as nullable |) => 0`
|
|
75
|
-
else if (
|
|
75
|
+
else if (grandchild.node.kind === "NullablePrimitiveType" /* NullablePrimitiveType */ &&
|
|
76
76
|
// Check the great grandchild
|
|
77
|
-
parser_1.AncestryUtils.
|
|
77
|
+
parser_1.AncestryUtils.nthPreviousXorChecked(ancestry, index, 3, "PrimitiveType" /* PrimitiveType */)) {
|
|
78
78
|
return language_1.Constant.PrimitiveTypeConstants;
|
|
79
79
|
}
|
|
80
80
|
}
|
package/lib/powerquery-language-services/inspection/autocomplete/autocompletePrimitiveType.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autocompletePrimitiveType.js","sourceRoot":"","sources":["../../../../src/powerquery-language-services/inspection/autocomplete/autocompletePrimitiveType.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAGlC,sFAAkH;AAClH,0FAA4F;AAC5F,oEAA2D;AAG3D,
|
|
1
|
+
{"version":3,"file":"autocompletePrimitiveType.js","sourceRoot":"","sources":["../../../../src/powerquery-language-services/inspection/autocomplete/autocompletePrimitiveType.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,7 +20,7 @@ export interface AutocompleteFieldAccess {
|
|
|
20
20
|
}
|
|
21
21
|
export interface InspectedFieldAccess {
|
|
22
22
|
readonly isAutocompleteAllowed: boolean;
|
|
23
|
-
readonly
|
|
23
|
+
readonly identifierUnderPosition: Ast.GeneralizedIdentifier | undefined;
|
|
24
24
|
readonly fieldNames: ReadonlyArray<string>;
|
|
25
25
|
}
|
|
26
26
|
export interface TrailingToken extends PQP.Language.Token.Token {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as PQP from "@microsoft/powerquery-parser";
|
|
2
2
|
import { Autocomplete } from "./commonTypes";
|
|
3
3
|
import { InspectionSettings } from "../../inspectionSettings";
|
|
4
|
-
import {
|
|
4
|
+
import { TActiveNode } from "../activeNode";
|
|
5
5
|
import { TypeCache } from "../typeCache";
|
|
6
|
-
export declare function autocomplete(settings: InspectionSettings, parseState: PQP.Parser.ParseState, typeCache: TypeCache,
|
|
6
|
+
export declare function autocomplete(settings: InspectionSettings, parseState: PQP.Parser.ParseState, typeCache: TypeCache, activeNode: TActiveNode, parseError: PQP.Parser.ParseError.ParseError | undefined): Promise<Autocomplete>;
|
|
@@ -19,22 +19,22 @@ const autocompleteKeyword_1 = require("./autocompleteKeyword/autocompleteKeyword
|
|
|
19
19
|
const autocompleteLanguageConstant_1 = require("./autocompleteLanguageConstant");
|
|
20
20
|
const autocompletePrimitiveType_1 = require("./autocompletePrimitiveType");
|
|
21
21
|
// Given some Position and ParseState, return autocomplete suggestions.
|
|
22
|
-
function autocomplete(settings, parseState, typeCache,
|
|
22
|
+
function autocomplete(settings, parseState, typeCache, activeNode, parseError) {
|
|
23
23
|
return __awaiter(this, void 0, void 0, function* () {
|
|
24
|
-
const trace = settings.traceManager.entry("Autocomplete" /* Autocomplete */, autocomplete.name, settings.
|
|
25
|
-
const updatedSettings = Object.assign(Object.assign({}, settings), {
|
|
24
|
+
const trace = settings.traceManager.entry("Autocomplete" /* Autocomplete */, autocomplete.name, settings.initialCorrelationId);
|
|
25
|
+
const updatedSettings = Object.assign(Object.assign({}, settings), { initialCorrelationId: trace.id });
|
|
26
26
|
const nodeIdMapCollection = parseState.contextState.nodeIdMapCollection;
|
|
27
|
-
let
|
|
28
|
-
if (
|
|
29
|
-
const
|
|
30
|
-
if (
|
|
31
|
-
|
|
27
|
+
let trailingToken;
|
|
28
|
+
if (parseError !== undefined) {
|
|
29
|
+
const parseErrorToken = PQP.Parser.ParseError.tokenFrom(parseError.innerError);
|
|
30
|
+
if (parseErrorToken !== undefined) {
|
|
31
|
+
trailingToken = (0, common_1.createTrailingToken)(activeNode.position, parseErrorToken);
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
|
-
const triedFieldAccess = yield (0, autocompleteFieldAccess_1.tryAutocompleteFieldAccess)(updatedSettings, parseState,
|
|
35
|
-
const triedKeyword = yield (0, autocompleteKeyword_1.tryAutocompleteKeyword)(updatedSettings, nodeIdMapCollection,
|
|
36
|
-
const triedLanguageConstant = (0, autocompleteLanguageConstant_1.tryAutocompleteLanguageConstant)(updatedSettings, nodeIdMapCollection,
|
|
37
|
-
const triedPrimitiveType = (0, autocompletePrimitiveType_1.tryAutocompletePrimitiveType)(updatedSettings,
|
|
34
|
+
const triedFieldAccess = yield (0, autocompleteFieldAccess_1.tryAutocompleteFieldAccess)(updatedSettings, parseState, activeNode, typeCache);
|
|
35
|
+
const triedKeyword = yield (0, autocompleteKeyword_1.tryAutocompleteKeyword)(updatedSettings, nodeIdMapCollection, activeNode, trailingToken);
|
|
36
|
+
const triedLanguageConstant = (0, autocompleteLanguageConstant_1.tryAutocompleteLanguageConstant)(updatedSettings, nodeIdMapCollection, activeNode, trailingToken);
|
|
37
|
+
const triedPrimitiveType = (0, autocompletePrimitiveType_1.tryAutocompletePrimitiveType)(updatedSettings, activeNode, trailingToken);
|
|
38
38
|
trace.exit();
|
|
39
39
|
return {
|
|
40
40
|
triedFieldAccess,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task.js","sourceRoot":"","sources":["../../../../src/powerquery-language-services/inspection/autocomplete/task.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;;;;;;;;;AAElC,oDAAoD;AAapD,qCAA+C;AAG/C,uEAAuE;AACvE,mFAAmF;AACnF,iFAAiF;AACjF,2EAA2E;AAG3E,uEAAuE;AACvE,SAAsB,YAAY,CAC9B,QAA4B,EAC5B,UAAiC,EACjC,SAAoB,EACpB,
|
|
1
|
+
{"version":3,"file":"task.js","sourceRoot":"","sources":["../../../../src/powerquery-language-services/inspection/autocomplete/task.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;;;;;;;;;AAElC,oDAAoD;AAapD,qCAA+C;AAG/C,uEAAuE;AACvE,mFAAmF;AACnF,iFAAiF;AACjF,2EAA2E;AAG3E,uEAAuE;AACvE,SAAsB,YAAY,CAC9B,QAA4B,EAC5B,UAAiC,EACjC,SAAoB,EACpB,UAAuB,EACvB,UAAwD;;QAExD,MAAM,KAAK,GAAU,QAAQ,CAAC,YAAY,CAAC,KAAK,oCAE5C,YAAY,CAAC,IAAI,EACjB,QAAQ,CAAC,oBAAoB,CAChC,CAAC;QAEF,MAAM,eAAe,mCACd,QAAQ,KACX,oBAAoB,EAAE,KAAK,CAAC,EAAE,GACjC,CAAC;QAEF,MAAM,mBAAmB,GAAyB,UAAU,CAAC,YAAY,CAAC,mBAAmB,CAAC;QAE9F,IAAI,aAAwC,CAAC;QAE7C,IAAI,UAAU,KAAK,SAAS,EAAE;YAC1B,MAAM,eAAe,GAAyC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CACzF,UAAU,CAAC,UAAU,CACxB,CAAC;YAEF,IAAI,eAAe,KAAK,SAAS,EAAE;gBAC/B,aAAa,GAAG,IAAA,4BAAmB,EAAC,UAAU,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;aAC7E;SACJ;QAED,MAAM,gBAAgB,GAAiC,MAAM,IAAA,oDAA0B,EACnF,eAAe,EACf,UAAU,EACV,UAAU,EACV,SAAS,CACZ,CAAC;QAEF,MAAM,YAAY,GAA6B,MAAM,IAAA,4CAAsB,EACvE,eAAe,EACf,mBAAmB,EACnB,UAAU,EACV,aAAa,CAChB,CAAC;QAEF,MAAM,qBAAqB,GAAsC,IAAA,8DAA+B,EAC5F,eAAe,EACf,mBAAmB,EACnB,UAAU,EACV,aAAa,CAChB,CAAC;QAEF,MAAM,kBAAkB,GAAmC,IAAA,wDAA4B,EACnF,eAAe,EACf,UAAU,EACV,aAAa,CAChB,CAAC;QAEF,KAAK,CAAC,IAAI,EAAE,CAAC;QAEb,OAAO;YACH,gBAAgB;YAChB,YAAY;YACZ,qBAAqB;YACrB,kBAAkB;SACrB,CAAC;IACN,CAAC;CAAA;AAnED,oCAmEC"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import * as PQP from "@microsoft/powerquery-parser";
|
|
2
2
|
import { Ast } from "@microsoft/powerquery-parser/lib/powerquery-parser/language";
|
|
3
3
|
import { Inspection } from "..";
|
|
4
|
-
import {
|
|
4
|
+
import { TActiveNode } from "./activeNode";
|
|
5
5
|
import { TriedExpectedType } from "./expectedType";
|
|
6
6
|
import { TriedNodeScope } from "./scope";
|
|
7
7
|
import { TypeCache } from "./typeCache";
|
|
8
8
|
export declare type TriedInspection = PQP.Result<Inspected, PQP.CommonError.CommonError>;
|
|
9
9
|
export interface Inspected {
|
|
10
|
-
readonly
|
|
10
|
+
readonly activeNode: TActiveNode;
|
|
11
11
|
readonly autocomplete: Inspection.Autocomplete;
|
|
12
12
|
readonly triedCurrentInvokeExpression: Promise<Inspection.TriedCurrentInvokeExpression>;
|
|
13
13
|
readonly triedNodeScope: Promise<Inspection.TriedNodeScope>;
|
|
@@ -23,8 +23,8 @@ function tryDeferenceIdentifier(settings, nodeIdMapCollection, xorNode,
|
|
|
23
23
|
// Else create a new Map instance and return that instead.
|
|
24
24
|
scopeById = new Map()) {
|
|
25
25
|
return __awaiter(this, void 0, void 0, function* () {
|
|
26
|
-
const trace = settings.traceManager.entry("Inspection.Scope" /* InspectScope */, tryDeferenceIdentifier.name, settings.
|
|
27
|
-
const updatedSettings = Object.assign(Object.assign({}, settings), {
|
|
26
|
+
const trace = settings.traceManager.entry("Inspection.Scope" /* InspectScope */, tryDeferenceIdentifier.name, settings.initialCorrelationId, __1.TraceUtils.createXorNodeDetails(xorNode));
|
|
27
|
+
const updatedSettings = Object.assign(Object.assign({}, settings), { initialCorrelationId: trace.id });
|
|
28
28
|
parser_1.XorNodeUtils.assertIsIdentifier(xorNode);
|
|
29
29
|
if (parser_1.XorNodeUtils.isContextXor(xorNode)) {
|
|
30
30
|
trace.exit({ ["Result" /* Result */]: undefined });
|
|
@@ -48,16 +48,15 @@ scopeById = new Map()) {
|
|
|
48
48
|
return triedNodeScope;
|
|
49
49
|
}
|
|
50
50
|
const nodeScope = triedNodeScope.value;
|
|
51
|
-
const
|
|
51
|
+
const scopeItem = nodeScope.get(identifierLiteral);
|
|
52
52
|
if (
|
|
53
53
|
// If the identifier couldn't be found in the generated scope,
|
|
54
54
|
// then either the scope generation is incorrect or it's an external identifier.
|
|
55
|
-
|
|
55
|
+
scopeItem === undefined) {
|
|
56
56
|
trace.exit({ ["Result" /* Result */]: undefined });
|
|
57
57
|
return powerquery_parser_1.ResultUtils.boxOk(xorNode);
|
|
58
58
|
}
|
|
59
|
-
|
|
60
|
-
let maybeNextXorNode;
|
|
59
|
+
let nextXorNode;
|
|
61
60
|
switch (scopeItem.kind) {
|
|
62
61
|
case "Each" /* Each */:
|
|
63
62
|
case "Parameter" /* Parameter */:
|
|
@@ -65,25 +64,25 @@ scopeById = new Map()) {
|
|
|
65
64
|
break;
|
|
66
65
|
case "LetVariable" /* LetVariable */:
|
|
67
66
|
case "RecordField" /* RecordField */:
|
|
68
|
-
|
|
67
|
+
nextXorNode = scopeItem.value;
|
|
69
68
|
break;
|
|
70
69
|
case "SectionMember" /* SectionMember */:
|
|
71
|
-
|
|
70
|
+
nextXorNode = scopeItem.value;
|
|
72
71
|
break;
|
|
73
72
|
default:
|
|
74
73
|
throw powerquery_parser_1.Assert.isNever(scopeItem);
|
|
75
74
|
}
|
|
76
75
|
let result;
|
|
77
|
-
if (
|
|
76
|
+
if (nextXorNode === undefined) {
|
|
78
77
|
result = Promise.resolve(powerquery_parser_1.ResultUtils.boxOk(xorNode));
|
|
79
78
|
}
|
|
80
|
-
else if (parser_1.XorNodeUtils.isContextXor(
|
|
81
|
-
(
|
|
82
|
-
|
|
79
|
+
else if (parser_1.XorNodeUtils.isContextXor(nextXorNode) ||
|
|
80
|
+
(nextXorNode.node.kind !== "Identifier" /* Identifier */ &&
|
|
81
|
+
nextXorNode.node.kind !== "IdentifierExpression" /* IdentifierExpression */)) {
|
|
83
82
|
result = Promise.resolve(powerquery_parser_1.ResultUtils.boxOk(xorNode));
|
|
84
83
|
}
|
|
85
84
|
else {
|
|
86
|
-
result = tryDeferenceIdentifier(updatedSettings, nodeIdMapCollection,
|
|
85
|
+
result = tryDeferenceIdentifier(updatedSettings, nodeIdMapCollection, nextXorNode, scopeById);
|
|
87
86
|
}
|
|
88
87
|
trace.exit();
|
|
89
88
|
return result;
|