@microsoft/powerquery-language-services 0.3.40 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/documentSymbols.d.ts +2 -2
- package/lib/powerquery-language-services/documentSymbols.js +10 -27
- package/lib/powerquery-language-services/documentSymbols.js.map +1 -1
- 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 +1 -4
- package/lib/powerquery-language-services/index.js +1 -11
- 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 +20 -22
- 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 +45 -43
- 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 +13 -14
- package/lib/powerquery-language-services/validate/validateUnknownIdentifiers.js.map +1 -1
- package/package.json +3 -3
- 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
- package/lib/powerquery-language-services/workspaceCache/index.d.ts +0 -2
- package/lib/powerquery-language-services/workspaceCache/index.js +0 -6
- package/lib/powerquery-language-services/workspaceCache/index.js.map +0 -1
- package/lib/powerquery-language-services/workspaceCache/workspaceCache.d.ts +0 -9
- package/lib/powerquery-language-services/workspaceCache/workspaceCache.js +0 -5
- package/lib/powerquery-language-services/workspaceCache/workspaceCache.js.map +0 -1
- package/lib/powerquery-language-services/workspaceCache/workspaceCacheUtils.d.ts +0 -13
- package/lib/powerquery-language-services/workspaceCache/workspaceCacheUtils.js +0 -130
- package/lib/powerquery-language-services/workspaceCache/workspaceCacheUtils.js.map +0 -1
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Copyright (c) Microsoft Corporation.
|
|
3
3
|
// Licensed under the MIT license.
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
-
exports.
|
|
5
|
+
exports.findXorOfNodeKind = exports.isPositionInBounds = exports.assertPositionInBounds = exports.assertGetLeaf = exports.assertActiveNode = exports.createOutOfBoundPosition = exports.activeNode = void 0;
|
|
6
6
|
const PQP = require("@microsoft/powerquery-parser");
|
|
7
7
|
const parser_1 = require("@microsoft/powerquery-parser/lib/powerquery-parser/parser");
|
|
8
8
|
const language_1 = require("@microsoft/powerquery-parser/lib/powerquery-parser/language");
|
|
@@ -24,57 +24,55 @@ const __1 = require("../..");
|
|
|
24
24
|
// Sometimes we don't want to shift at all.
|
|
25
25
|
// Nodes that prevent shifting are called anchor nodes.
|
|
26
26
|
// '[foo = bar|' should be anchored on the identifier 'bar' and not the context node for the ']' Constant.
|
|
27
|
-
function
|
|
27
|
+
function activeNode(nodeIdMapCollection, position) {
|
|
28
28
|
// Search for the closest Ast node on or to the left of Position, as well as the closest shifted right Ast node.
|
|
29
|
-
const astSearch =
|
|
29
|
+
const astSearch = astNodeSearch(nodeIdMapCollection, position);
|
|
30
30
|
// Search for the closest Context node on or to the right of the closest Ast node.
|
|
31
|
-
const
|
|
32
|
-
let
|
|
31
|
+
const contextNode = findContext(nodeIdMapCollection, astSearch);
|
|
32
|
+
let leaf;
|
|
33
33
|
let leafKind;
|
|
34
34
|
// Order of node priority:
|
|
35
35
|
// * shifted
|
|
36
36
|
// * anchor
|
|
37
37
|
// * Context
|
|
38
38
|
// * Ast
|
|
39
|
-
if (astSearch.
|
|
40
|
-
|
|
39
|
+
if (astSearch.shiftedRightNode !== undefined) {
|
|
40
|
+
leaf = parser_1.XorNodeUtils.boxAst(astSearch.shiftedRightNode);
|
|
41
41
|
leafKind = "ShiftedRight" /* ShiftedRight */;
|
|
42
42
|
}
|
|
43
|
-
else if (astSearch.
|
|
44
|
-
|
|
45
|
-
maybeLeaf = parser_1.XorNodeUtils.boxAst(astSearch.maybeBestOnOrBeforeNode);
|
|
43
|
+
else if (astSearch.bestOnOrBeforeNode !== undefined && isAnchorNode(position, astSearch.bestOnOrBeforeNode)) {
|
|
44
|
+
leaf = parser_1.XorNodeUtils.boxAst(astSearch.bestOnOrBeforeNode);
|
|
46
45
|
leafKind = "Anchored" /* Anchored */;
|
|
47
46
|
}
|
|
48
|
-
else if (
|
|
49
|
-
|
|
47
|
+
else if (contextNode !== undefined) {
|
|
48
|
+
leaf = parser_1.XorNodeUtils.boxContext(contextNode);
|
|
50
49
|
leafKind = "Context" /* ContextNode */;
|
|
51
50
|
}
|
|
52
|
-
else if (astSearch.
|
|
53
|
-
|
|
54
|
-
leafKind = __1.PositionUtils.isAfterAst(position, astSearch.
|
|
51
|
+
else if (astSearch.bestOnOrBeforeNode !== undefined) {
|
|
52
|
+
leaf = parser_1.XorNodeUtils.boxAst(astSearch.bestOnOrBeforeNode);
|
|
53
|
+
leafKind = __1.PositionUtils.isAfterAst(position, astSearch.bestOnOrBeforeNode, false)
|
|
55
54
|
? "AfterAstNode" /* AfterAstNode */
|
|
56
55
|
: "OnAstNode" /* OnAstNode */;
|
|
57
56
|
}
|
|
58
57
|
else {
|
|
59
58
|
return createOutOfBoundPosition(position);
|
|
60
59
|
}
|
|
61
|
-
const
|
|
62
|
-
const
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
? maybeInclusiveIdentifierUnderPosition
|
|
60
|
+
const inclusiveIdentifierUnderPosition = findLeafIdentifier(nodeIdMapCollection, leaf);
|
|
61
|
+
const exclusiveIdentifierUnderPosition = inclusiveIdentifierUnderPosition &&
|
|
62
|
+
__1.PositionUtils.isInAst(position, inclusiveIdentifierUnderPosition.node, false, true)
|
|
63
|
+
? inclusiveIdentifierUnderPosition
|
|
66
64
|
: undefined;
|
|
67
65
|
const ancestry = parser_1.AncestryUtils.assertGetAncestry(nodeIdMapCollection, leaf.node.id);
|
|
68
66
|
return {
|
|
69
67
|
ancestry,
|
|
70
68
|
kind: "ActiveNode" /* ActiveNode */,
|
|
71
69
|
leafKind,
|
|
72
|
-
|
|
73
|
-
|
|
70
|
+
exclusiveIdentifierUnderPosition,
|
|
71
|
+
inclusiveIdentifierUnderPosition,
|
|
74
72
|
position,
|
|
75
73
|
};
|
|
76
74
|
}
|
|
77
|
-
exports.
|
|
75
|
+
exports.activeNode = activeNode;
|
|
78
76
|
function createOutOfBoundPosition(position) {
|
|
79
77
|
return {
|
|
80
78
|
kind: "OutOfBoundPosition" /* OutOfBoundPosition */,
|
|
@@ -83,29 +81,29 @@ function createOutOfBoundPosition(position) {
|
|
|
83
81
|
}
|
|
84
82
|
exports.createOutOfBoundPosition = createOutOfBoundPosition;
|
|
85
83
|
function assertActiveNode(nodeIdMapCollection, position) {
|
|
86
|
-
const
|
|
87
|
-
assertPositionInBounds(
|
|
88
|
-
return
|
|
84
|
+
const value = activeNode(nodeIdMapCollection, position);
|
|
85
|
+
assertPositionInBounds(value);
|
|
86
|
+
return value;
|
|
89
87
|
}
|
|
90
88
|
exports.assertActiveNode = assertActiveNode;
|
|
91
89
|
function assertGetLeaf(activeNode) {
|
|
92
90
|
return parser_1.AncestryUtils.assertGetLeaf(activeNode.ancestry);
|
|
93
91
|
}
|
|
94
92
|
exports.assertGetLeaf = assertGetLeaf;
|
|
95
|
-
function assertPositionInBounds(
|
|
96
|
-
if (!isPositionInBounds(
|
|
97
|
-
throw new PQP.CommonError.InvariantError(`
|
|
93
|
+
function assertPositionInBounds(value) {
|
|
94
|
+
if (!isPositionInBounds(value)) {
|
|
95
|
+
throw new PQP.CommonError.InvariantError(`value was not in bounds`);
|
|
98
96
|
}
|
|
99
97
|
}
|
|
100
98
|
exports.assertPositionInBounds = assertPositionInBounds;
|
|
101
|
-
function isPositionInBounds(
|
|
102
|
-
return
|
|
99
|
+
function isPositionInBounds(value) {
|
|
100
|
+
return value.kind === "ActiveNode" /* ActiveNode */;
|
|
103
101
|
}
|
|
104
102
|
exports.isPositionInBounds = isPositionInBounds;
|
|
105
|
-
function
|
|
106
|
-
return parser_1.AncestryUtils.
|
|
103
|
+
function findXorOfNodeKind(activeNode, nodeKind) {
|
|
104
|
+
return parser_1.AncestryUtils.findXorOfNodeKind(activeNode.ancestry, nodeKind);
|
|
107
105
|
}
|
|
108
|
-
exports.
|
|
106
|
+
exports.findXorOfNodeKind = findXorOfNodeKind;
|
|
109
107
|
const DrilldownConstantKind = [
|
|
110
108
|
"{" /* LeftBrace */,
|
|
111
109
|
"[" /* LeftBracket */,
|
|
@@ -158,52 +156,51 @@ function isAnchorNode(position, astNode) {
|
|
|
158
156
|
return false;
|
|
159
157
|
}
|
|
160
158
|
}
|
|
161
|
-
function
|
|
159
|
+
function astNodeSearch(nodeIdMapCollection, position) {
|
|
162
160
|
const astNodeById = nodeIdMapCollection.astNodeById;
|
|
163
|
-
let
|
|
164
|
-
let
|
|
165
|
-
let
|
|
161
|
+
let bestOnOrBeforeNode;
|
|
162
|
+
let bestAfter;
|
|
163
|
+
let shiftedRightNode;
|
|
166
164
|
// Find:
|
|
167
165
|
// the closest leaf to the left or on position.
|
|
168
166
|
// the closest leaf to the right of position.
|
|
169
167
|
for (const nodeId of nodeIdMapCollection.leafIds) {
|
|
170
|
-
const
|
|
171
|
-
if (
|
|
168
|
+
const candidate = astNodeById.get(nodeId);
|
|
169
|
+
if (candidate === undefined) {
|
|
172
170
|
continue;
|
|
173
171
|
}
|
|
174
|
-
const candidate = maybeCandidate;
|
|
175
172
|
let isBoundIncluded;
|
|
176
173
|
if (
|
|
177
174
|
// let x|=1
|
|
178
175
|
(candidate.kind === "Constant" /* Constant */ &&
|
|
179
176
|
ShiftRightConstantKinds.indexOf(candidate.constantKind) !== -1) ||
|
|
180
177
|
// let x=|1
|
|
181
|
-
((
|
|
182
|
-
ShiftRightConstantKinds.indexOf(
|
|
178
|
+
((bestOnOrBeforeNode === null || bestOnOrBeforeNode === void 0 ? void 0 : bestOnOrBeforeNode.kind) === "Constant" /* Constant */ &&
|
|
179
|
+
ShiftRightConstantKinds.indexOf(bestOnOrBeforeNode.constantKind) !== -1)) {
|
|
183
180
|
isBoundIncluded = false;
|
|
184
181
|
}
|
|
185
182
|
else {
|
|
186
183
|
isBoundIncluded = true;
|
|
187
184
|
}
|
|
188
185
|
if (!__1.PositionUtils.isBeforeTokenPosition(position, candidate.tokenRange.positionStart, isBoundIncluded)) {
|
|
189
|
-
if (
|
|
190
|
-
candidate.tokenRange.tokenIndexStart >
|
|
191
|
-
|
|
186
|
+
if (bestOnOrBeforeNode === undefined ||
|
|
187
|
+
candidate.tokenRange.tokenIndexStart > bestOnOrBeforeNode.tokenRange.tokenIndexStart) {
|
|
188
|
+
bestOnOrBeforeNode = candidate;
|
|
192
189
|
}
|
|
193
190
|
}
|
|
194
191
|
// Check if after position.
|
|
195
|
-
else if (
|
|
196
|
-
candidate.tokenRange.tokenIndexStart <
|
|
197
|
-
|
|
192
|
+
else if (bestAfter === undefined ||
|
|
193
|
+
candidate.tokenRange.tokenIndexStart < bestAfter.tokenRange.tokenIndexStart) {
|
|
194
|
+
bestAfter = candidate;
|
|
198
195
|
}
|
|
199
196
|
}
|
|
200
197
|
// Might need to shift.
|
|
201
|
-
if ((
|
|
202
|
-
const currentOnOrBefore =
|
|
198
|
+
if ((bestOnOrBeforeNode === null || bestOnOrBeforeNode === void 0 ? void 0 : bestOnOrBeforeNode.kind) === "Constant" /* Constant */) {
|
|
199
|
+
const currentOnOrBefore = bestOnOrBeforeNode;
|
|
203
200
|
// Requires a shift into an empty ArrayWrapper.
|
|
204
|
-
if (DrilldownConstantKind.indexOf(
|
|
205
|
-
(
|
|
206
|
-
PQP.Language.ConstantUtils.isPairedWrapperConstantKinds(
|
|
201
|
+
if (DrilldownConstantKind.indexOf(bestOnOrBeforeNode.constantKind) !== -1 &&
|
|
202
|
+
(bestAfter === null || bestAfter === void 0 ? void 0 : bestAfter.kind) === "Constant" /* Constant */ &&
|
|
203
|
+
PQP.Language.ConstantUtils.isPairedWrapperConstantKinds(bestOnOrBeforeNode.constantKind, bestAfter.constantKind)) {
|
|
207
204
|
const parent = parser_1.NodeIdMapUtils.assertUnboxParentAstChecked(nodeIdMapCollection, currentOnOrBefore.id, [
|
|
208
205
|
"RecordExpression" /* RecordExpression */,
|
|
209
206
|
"RecordLiteral" /* RecordLiteral */,
|
|
@@ -212,42 +209,42 @@ function maybeFindAstNodes(nodeIdMapCollection, position) {
|
|
|
212
209
|
"InvokeExpression" /* InvokeExpression */,
|
|
213
210
|
]);
|
|
214
211
|
const arrayWrapper = parser_1.NodeIdMapUtils.assertUnboxArrayWrapperAst(nodeIdMapCollection, parent.id);
|
|
215
|
-
|
|
212
|
+
shiftedRightNode = arrayWrapper;
|
|
216
213
|
}
|
|
217
214
|
// Requires a shift to the right.
|
|
218
215
|
else if (ShiftRightConstantKinds.indexOf(currentOnOrBefore.constantKind) !== -1) {
|
|
219
|
-
|
|
216
|
+
shiftedRightNode = bestAfter;
|
|
220
217
|
}
|
|
221
218
|
// No shifting.
|
|
222
219
|
else {
|
|
223
|
-
|
|
220
|
+
shiftedRightNode = undefined;
|
|
224
221
|
}
|
|
225
222
|
}
|
|
226
223
|
else {
|
|
227
|
-
|
|
224
|
+
shiftedRightNode = undefined;
|
|
228
225
|
}
|
|
229
226
|
return {
|
|
230
|
-
|
|
231
|
-
|
|
227
|
+
bestOnOrBeforeNode,
|
|
228
|
+
shiftedRightNode,
|
|
232
229
|
};
|
|
233
230
|
}
|
|
234
|
-
function
|
|
235
|
-
if (astNodeSearch.
|
|
231
|
+
function findContext(nodeIdMapCollection, astNodeSearch) {
|
|
232
|
+
if (astNodeSearch.bestOnOrBeforeNode === undefined) {
|
|
236
233
|
return undefined;
|
|
237
234
|
}
|
|
238
|
-
const tokenIndexLowBound = astNodeSearch.
|
|
239
|
-
let
|
|
235
|
+
const tokenIndexLowBound = astNodeSearch.bestOnOrBeforeNode.tokenRange.tokenIndexStart;
|
|
236
|
+
let current = undefined;
|
|
240
237
|
for (const candidate of nodeIdMapCollection.contextNodeById.values()) {
|
|
241
|
-
if (candidate.
|
|
238
|
+
if (candidate.tokenStart) {
|
|
242
239
|
if (candidate.tokenIndexStart < tokenIndexLowBound) {
|
|
243
240
|
continue;
|
|
244
241
|
}
|
|
245
|
-
if (
|
|
246
|
-
|
|
242
|
+
if (current === undefined || current.id < candidate.id) {
|
|
243
|
+
current = candidate;
|
|
247
244
|
}
|
|
248
245
|
}
|
|
249
246
|
}
|
|
250
|
-
return
|
|
247
|
+
return current;
|
|
251
248
|
}
|
|
252
249
|
function findLeafIdentifier(nodeIdMapCollection, leafXorNode) {
|
|
253
250
|
if (parser_1.XorNodeUtils.isContextXor(leafXorNode)) {
|
|
@@ -255,18 +252,17 @@ function findLeafIdentifier(nodeIdMapCollection, leafXorNode) {
|
|
|
255
252
|
}
|
|
256
253
|
const leaf = leafXorNode.node;
|
|
257
254
|
let identifier;
|
|
258
|
-
const
|
|
255
|
+
const parentId = nodeIdMapCollection.parentIdById.get(leaf.id);
|
|
259
256
|
if (leaf.kind === "Identifier" /* Identifier */) {
|
|
260
|
-
if (
|
|
257
|
+
if (parentId === undefined) {
|
|
261
258
|
return undefined;
|
|
262
259
|
}
|
|
263
|
-
const
|
|
264
|
-
|
|
265
|
-
if ((maybeParent === null || maybeParent === void 0 ? void 0 : maybeParent.kind) === "IdentifierPairedExpression" /* IdentifierPairedExpression */) {
|
|
260
|
+
const parent = parser_1.NodeIdMapUtils.unboxIfAst(nodeIdMapCollection, parentId);
|
|
261
|
+
if ((parent === null || parent === void 0 ? void 0 : parent.kind) === "IdentifierPairedExpression" /* IdentifierPairedExpression */) {
|
|
266
262
|
identifier = leaf;
|
|
267
263
|
}
|
|
268
|
-
else if ((
|
|
269
|
-
identifier =
|
|
264
|
+
else if ((parent === null || parent === void 0 ? void 0 : parent.kind) === "IdentifierExpression" /* IdentifierExpression */) {
|
|
265
|
+
identifier = parent;
|
|
270
266
|
}
|
|
271
267
|
else {
|
|
272
268
|
identifier = leaf;
|
|
@@ -274,13 +270,12 @@ function findLeafIdentifier(nodeIdMapCollection, leafXorNode) {
|
|
|
274
270
|
}
|
|
275
271
|
// If closestLeaf is '@', then check if it's part of an IdentifierExpression.
|
|
276
272
|
else if (leaf.kind === "Constant" /* Constant */ && leaf.constantKind === "@" /* AtSign */) {
|
|
277
|
-
if (
|
|
273
|
+
if (parentId === undefined) {
|
|
278
274
|
return undefined;
|
|
279
275
|
}
|
|
280
|
-
const
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
identifier = maybeParent;
|
|
276
|
+
const parent = parser_1.NodeIdMapUtils.unboxIfAst(nodeIdMapCollection, parentId);
|
|
277
|
+
if ((parent === null || parent === void 0 ? void 0 : parent.kind) === "IdentifierExpression" /* IdentifierExpression */) {
|
|
278
|
+
identifier = parent;
|
|
284
279
|
}
|
|
285
280
|
else {
|
|
286
281
|
return undefined;
|
|
@@ -300,16 +295,16 @@ function findLeafIdentifier(nodeIdMapCollection, leafXorNode) {
|
|
|
300
295
|
node: identifier,
|
|
301
296
|
isRecursive: false,
|
|
302
297
|
normalizedLiteral: language_1.TextUtils.normalizeIdentifier(identifier.literal),
|
|
303
|
-
|
|
298
|
+
normalizedRecursiveLiteral: undefined,
|
|
304
299
|
};
|
|
305
300
|
break;
|
|
306
301
|
case "IdentifierExpression" /* IdentifierExpression */: {
|
|
307
302
|
const normalizedLiteral = language_1.TextUtils.normalizeIdentifier(identifier.identifier.literal);
|
|
308
303
|
result = {
|
|
309
304
|
node: identifier,
|
|
310
|
-
isRecursive: Boolean(identifier.
|
|
305
|
+
isRecursive: Boolean(identifier.inclusiveConstant),
|
|
311
306
|
normalizedLiteral,
|
|
312
|
-
|
|
307
|
+
normalizedRecursiveLiteral: `@${normalizedLiteral}`,
|
|
313
308
|
};
|
|
314
309
|
break;
|
|
315
310
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activeNodeUtils.js","sourceRoot":"","sources":["../../../../src/powerquery-language-services/inspection/activeNode/activeNodeUtils.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,oDAAoD;AACpD,sFAOmE;AACnE,0FAAuG;AAWvG,6BAAsC;AAEtC,gFAAgF;AAChF,8EAA8E;AAC9E,2DAA2D;AAC3D,kEAAkE;AAClE,EAAE;AACF,6GAA6G;AAC7G,iDAAiD;AACjD,EAAE;AACF,yDAAyD;AACzD,mEAAmE;AACnE,uGAAuG;AACvG,sEAAsE;AACtE,iHAAiH;AACjH,EAAE;AACF,2CAA2C;AAC3C,uDAAuD;AACvD,0GAA0G;AAC1G,SAAgB,
|
|
1
|
+
{"version":3,"file":"activeNodeUtils.js","sourceRoot":"","sources":["../../../../src/powerquery-language-services/inspection/activeNode/activeNodeUtils.ts"],"names":[],"mappings":"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"}
|
package/lib/powerquery-language-services/inspection/autocomplete/autocompleteFieldAccess.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as PQP from "@microsoft/powerquery-parser";
|
|
2
|
-
import {
|
|
2
|
+
import { TActiveNode } from "../activeNode";
|
|
3
3
|
import { TriedAutocompleteFieldAccess } from "./commonTypes";
|
|
4
4
|
import { InspectionSettings } from "../../inspectionSettings";
|
|
5
5
|
import { TypeCache } from "../typeCache";
|
|
6
|
-
export declare function tryAutocompleteFieldAccess(settings: InspectionSettings, parseState: PQP.Parser.ParseState,
|
|
6
|
+
export declare function tryAutocompleteFieldAccess(settings: InspectionSettings, parseState: PQP.Parser.ParseState, activeNode: TActiveNode, typeCache: TypeCache): Promise<TriedAutocompleteFieldAccess>;
|
|
@@ -19,16 +19,16 @@ const activeNode_1 = require("../activeNode");
|
|
|
19
19
|
const autocompleteItem_1 = require("./autocompleteItem");
|
|
20
20
|
const __1 = require("../..");
|
|
21
21
|
const type_1 = require("../type");
|
|
22
|
-
function tryAutocompleteFieldAccess(settings, parseState,
|
|
22
|
+
function tryAutocompleteFieldAccess(settings, parseState, activeNode, typeCache) {
|
|
23
23
|
return __awaiter(this, void 0, void 0, function* () {
|
|
24
|
-
const trace = settings.traceManager.entry("FieldAccess" /* AutocompleteFieldAccess */, tryAutocompleteFieldAccess.name, settings.
|
|
25
|
-
const updatedSettings = Object.assign(Object.assign({}, settings), {
|
|
24
|
+
const trace = settings.traceManager.entry("FieldAccess" /* AutocompleteFieldAccess */, tryAutocompleteFieldAccess.name, settings.initialCorrelationId);
|
|
25
|
+
const updatedSettings = Object.assign(Object.assign({}, settings), { initialCorrelationId: trace.id });
|
|
26
26
|
let result;
|
|
27
|
-
if (!activeNode_1.ActiveNodeUtils.isPositionInBounds(
|
|
27
|
+
if (!activeNode_1.ActiveNodeUtils.isPositionInBounds(activeNode)) {
|
|
28
28
|
result = powerquery_parser_1.ResultUtils.boxOk(undefined);
|
|
29
29
|
}
|
|
30
30
|
else {
|
|
31
|
-
result = yield powerquery_parser_1.ResultUtils.ensureResultAsync(() => autocompleteFieldAccess(updatedSettings, parseState,
|
|
31
|
+
result = yield powerquery_parser_1.ResultUtils.ensureResultAsync(() => autocompleteFieldAccess(updatedSettings, parseState, activeNode, typeCache), updatedSettings.locale);
|
|
32
32
|
}
|
|
33
33
|
trace.exit({ ["IsError" /* IsError */]: powerquery_parser_1.ResultUtils.isError(result) });
|
|
34
34
|
return result;
|
|
@@ -42,40 +42,38 @@ const AllowedExtendedTypeKindsForFieldEntries = [
|
|
|
42
42
|
];
|
|
43
43
|
function autocompleteFieldAccess(settings, parseState, activeNode, typeCache) {
|
|
44
44
|
return __awaiter(this, void 0, void 0, function* () {
|
|
45
|
-
let
|
|
45
|
+
let inspectedFieldAccess = undefined;
|
|
46
46
|
// Option 1: Find a field access node in the ancestry.
|
|
47
|
-
let
|
|
47
|
+
let fieldAccessAncestor;
|
|
48
48
|
for (const ancestor of activeNode.ancestry) {
|
|
49
49
|
if (parser_1.XorNodeUtils.isNodeKind(ancestor, [
|
|
50
50
|
"FieldSelector" /* FieldSelector */,
|
|
51
51
|
"FieldProjection" /* FieldProjection */,
|
|
52
52
|
])) {
|
|
53
|
-
|
|
53
|
+
fieldAccessAncestor = ancestor;
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
|
-
if (
|
|
57
|
-
|
|
56
|
+
if (fieldAccessAncestor !== undefined) {
|
|
57
|
+
inspectedFieldAccess = inspectFieldAccess(parseState.lexerSnapshot, parseState.contextState.nodeIdMapCollection, activeNode.position, fieldAccessAncestor);
|
|
58
58
|
}
|
|
59
59
|
// No field access was found, or the field access reports no autocomplete is possible.
|
|
60
60
|
// Eg. `[x = 1][x |]`
|
|
61
|
-
if (
|
|
61
|
+
if (inspectedFieldAccess === undefined || inspectedFieldAccess.isAutocompleteAllowed === false) {
|
|
62
62
|
return undefined;
|
|
63
63
|
}
|
|
64
|
-
const inspectedFieldAccess = maybeInspectedFieldAccess;
|
|
65
64
|
// Don't waste time on type analysis if the field access
|
|
66
65
|
// reports it's in an invalid location for an autocomplete.
|
|
67
|
-
if (inspectedFieldAccess.isAutocompleteAllowed
|
|
66
|
+
if (!inspectedFieldAccess.isAutocompleteAllowed) {
|
|
68
67
|
return undefined;
|
|
69
68
|
}
|
|
70
69
|
// After a field access was found then find the field it's accessing and inspect the field's Type.
|
|
71
70
|
// This is delayed until after the field access because running static type analysis on an
|
|
72
71
|
// arbitrary field could be costly.
|
|
73
72
|
const nodeIdMapCollection = parseState.contextState.nodeIdMapCollection;
|
|
74
|
-
const
|
|
75
|
-
if (
|
|
73
|
+
const field = typablePrimaryExpression(nodeIdMapCollection, activeNode);
|
|
74
|
+
if (field === undefined) {
|
|
76
75
|
return undefined;
|
|
77
76
|
}
|
|
78
|
-
const field = maybeField;
|
|
79
77
|
const triedFieldType = yield (0, type_1.tryType)(settings, nodeIdMapCollection, field.node.id, typeCache);
|
|
80
78
|
if (powerquery_parser_1.ResultUtils.isError(triedFieldType)) {
|
|
81
79
|
throw triedFieldType.error;
|
|
@@ -95,12 +93,11 @@ function autocompleteFieldAccess(settings, parseState, activeNode, typeCache) {
|
|
|
95
93
|
});
|
|
96
94
|
}
|
|
97
95
|
function fieldEntriesFromFieldType(type) {
|
|
98
|
-
switch (type.
|
|
96
|
+
switch (type.extendedKind) {
|
|
99
97
|
case "AnyUnion" /* AnyUnion */: {
|
|
100
98
|
let fields = [];
|
|
101
99
|
for (const field of type.unionedTypePairs) {
|
|
102
|
-
if (field.
|
|
103
|
-
AllowedExtendedTypeKindsForFieldEntries.includes(field.maybeExtendedKind)) {
|
|
100
|
+
if (field.extendedKind && AllowedExtendedTypeKindsForFieldEntries.includes(field.extendedKind)) {
|
|
104
101
|
fields = fields.concat(fieldEntriesFromFieldType(field));
|
|
105
102
|
}
|
|
106
103
|
}
|
|
@@ -125,26 +122,26 @@ function inspectFieldAccess(lexerSnapshot, nodeIdMapCollection, position, fieldA
|
|
|
125
122
|
}
|
|
126
123
|
function inspectFieldProjection(lexerSnapshot, nodeIdMapCollection, position, fieldProjection) {
|
|
127
124
|
let isAutocompleteAllowed = false;
|
|
128
|
-
let
|
|
125
|
+
let identifierUnderPosition;
|
|
129
126
|
const fieldNames = [];
|
|
130
127
|
for (const fieldSelector of parser_1.NodeIdMapIterator.iterFieldProjection(nodeIdMapCollection, fieldProjection)) {
|
|
131
128
|
const inspectedFieldSelector = inspectFieldSelector(lexerSnapshot, nodeIdMapCollection, position, fieldSelector);
|
|
132
|
-
if (inspectedFieldSelector.isAutocompleteAllowed || inspectedFieldSelector.
|
|
129
|
+
if (inspectedFieldSelector.isAutocompleteAllowed || inspectedFieldSelector.identifierUnderPosition) {
|
|
133
130
|
isAutocompleteAllowed = true;
|
|
134
|
-
|
|
131
|
+
identifierUnderPosition = inspectedFieldSelector.identifierUnderPosition;
|
|
135
132
|
}
|
|
136
133
|
fieldNames.push(...inspectedFieldSelector.fieldNames);
|
|
137
134
|
}
|
|
138
135
|
return {
|
|
139
136
|
isAutocompleteAllowed,
|
|
140
|
-
|
|
137
|
+
identifierUnderPosition,
|
|
141
138
|
fieldNames,
|
|
142
139
|
};
|
|
143
140
|
}
|
|
144
141
|
function createInspectedFieldAccess(isAutocompleteAllowed) {
|
|
145
142
|
return {
|
|
146
143
|
isAutocompleteAllowed,
|
|
147
|
-
|
|
144
|
+
identifierUnderPosition: undefined,
|
|
148
145
|
fieldNames: [],
|
|
149
146
|
};
|
|
150
147
|
}
|
|
@@ -165,7 +162,7 @@ function inspectFieldSelector(lexerSnapshot, nodeIdMapCollection, position, fiel
|
|
|
165
162
|
const isPositionInIdentifier = __1.PositionUtils.isInAst(position, generalizedIdentifier, true, true);
|
|
166
163
|
return {
|
|
167
164
|
isAutocompleteAllowed: isPositionInIdentifier,
|
|
168
|
-
|
|
165
|
+
identifierUnderPosition: isPositionInIdentifier === true ? generalizedIdentifier : undefined,
|
|
169
166
|
fieldNames: [generalizedIdentifier.literal],
|
|
170
167
|
};
|
|
171
168
|
}
|
|
@@ -174,14 +171,14 @@ function inspectFieldSelector(lexerSnapshot, nodeIdMapCollection, position, fiel
|
|
|
174
171
|
// This doesn't take into account of generalized identifiers consisting of multiple tokens.
|
|
175
172
|
// Eg. `foo[bar baz]` or `foo[#"bar baz"].
|
|
176
173
|
const openBracketConstant = parser_1.NodeIdMapUtils.assertUnboxNthChildAsAstChecked(nodeIdMapCollection, fieldSelector.node.id, 0, "Constant" /* Constant */);
|
|
177
|
-
const
|
|
174
|
+
const nextTokenPosition = (_a = lexerSnapshot.tokens[openBracketConstant.tokenRange.tokenIndexEnd + 1]) === null || _a === void 0 ? void 0 : _a.positionStart;
|
|
178
175
|
const isAutocompleteAllowed = __1.PositionUtils.isAfterAst(position, openBracketConstant, false) &&
|
|
179
|
-
(
|
|
180
|
-
__1.PositionUtils.isOnTokenPosition(position,
|
|
181
|
-
__1.PositionUtils.isBeforeTokenPosition(position,
|
|
176
|
+
(nextTokenPosition === undefined ||
|
|
177
|
+
__1.PositionUtils.isOnTokenPosition(position, nextTokenPosition) ||
|
|
178
|
+
__1.PositionUtils.isBeforeTokenPosition(position, nextTokenPosition, true));
|
|
182
179
|
return {
|
|
183
180
|
isAutocompleteAllowed,
|
|
184
|
-
|
|
181
|
+
identifierUnderPosition: undefined,
|
|
185
182
|
fieldNames: [],
|
|
186
183
|
};
|
|
187
184
|
}
|
|
@@ -193,19 +190,19 @@ function createAutocompleteItems(fieldEntries, inspectedFieldAccess) {
|
|
|
193
190
|
var _a;
|
|
194
191
|
const fieldAccessNames = inspectedFieldAccess.fieldNames;
|
|
195
192
|
const autocompleteItems = [];
|
|
196
|
-
const
|
|
193
|
+
const identifierUnderPositionLiteral = (_a = inspectedFieldAccess.identifierUnderPosition) === null || _a === void 0 ? void 0 : _a.literal;
|
|
197
194
|
for (const [label, powerQueryType] of fieldEntries) {
|
|
198
|
-
if (fieldAccessNames.includes(label) && label !==
|
|
195
|
+
if (fieldAccessNames.includes(label) && label !== identifierUnderPositionLiteral) {
|
|
199
196
|
continue;
|
|
200
197
|
}
|
|
201
|
-
autocompleteItems.push(autocompleteItem_1.AutocompleteItemUtils.createFromFieldAccess(label, powerQueryType,
|
|
198
|
+
autocompleteItems.push(autocompleteItem_1.AutocompleteItemUtils.createFromFieldAccess(label, powerQueryType, identifierUnderPositionLiteral));
|
|
202
199
|
}
|
|
203
200
|
return autocompleteItems;
|
|
204
201
|
}
|
|
205
|
-
function
|
|
202
|
+
function typablePrimaryExpression(nodeIdMapCollection, activeNode) {
|
|
206
203
|
const ancestry = activeNode.ancestry;
|
|
207
204
|
const numAncestors = ancestry.length;
|
|
208
|
-
let
|
|
205
|
+
let contiguousPrimaryExpression;
|
|
209
206
|
let matchingContiguousPrimaryExpression = true;
|
|
210
207
|
for (let index = 0; index < numAncestors; index += 1) {
|
|
211
208
|
const xorNode = ancestry[index];
|
|
@@ -214,14 +211,14 @@ function maybeTypablePrimaryExpression(nodeIdMapCollection, activeNode) {
|
|
|
214
211
|
const xorNodeBeforeRpe = parser_1.AncestryUtils.assertGetNthPreviousXor(ancestry, index);
|
|
215
212
|
// If we're coming from the head node,
|
|
216
213
|
// then return undefined as there can be no nodes before the head ode.
|
|
217
|
-
if (xorNodeBeforeRpe.node.
|
|
214
|
+
if (xorNodeBeforeRpe.node.attributeIndex === 0) {
|
|
218
215
|
return undefined;
|
|
219
216
|
}
|
|
220
217
|
// Else if we're coming from the ArrayWrapper,
|
|
221
218
|
// then grab the previous sibling.
|
|
222
|
-
else if (xorNodeBeforeRpe.node.
|
|
219
|
+
else if (xorNodeBeforeRpe.node.attributeIndex === 1) {
|
|
223
220
|
const rpeChild = parser_1.AncestryUtils.assertGetNthPreviousXor(ancestry, index, 2);
|
|
224
|
-
return parser_1.NodeIdMapUtils.
|
|
221
|
+
return parser_1.NodeIdMapUtils.assertRecursiveExpressionPreviousSibling(nodeIdMapCollection, rpeChild.node.id);
|
|
225
222
|
}
|
|
226
223
|
else {
|
|
227
224
|
throw new PQP.CommonError.InvariantError(`the child of a ${"RecursivePrimaryExpression" /* RecursivePrimaryExpression */} should have an attribute index of either 1 or 2`, {
|
|
@@ -231,12 +228,12 @@ function maybeTypablePrimaryExpression(nodeIdMapCollection, activeNode) {
|
|
|
231
228
|
}
|
|
232
229
|
}
|
|
233
230
|
else if (matchingContiguousPrimaryExpression && parser_1.XorNodeUtils.isTPrimaryExpression(xorNode)) {
|
|
234
|
-
|
|
231
|
+
contiguousPrimaryExpression = xorNode;
|
|
235
232
|
}
|
|
236
233
|
else {
|
|
237
234
|
matchingContiguousPrimaryExpression = false;
|
|
238
235
|
}
|
|
239
236
|
}
|
|
240
|
-
return
|
|
237
|
+
return contiguousPrimaryExpression;
|
|
241
238
|
}
|
|
242
239
|
//# sourceMappingURL=autocompleteFieldAccess.js.map
|
package/lib/powerquery-language-services/inspection/autocomplete/autocompleteFieldAccess.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autocompleteFieldAccess.js","sourceRoot":"","sources":["../../../../src/powerquery-language-services/inspection/autocomplete/autocompleteFieldAccess.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;;;;;;;;;AAElC,oDAAoD;AACpD,sFAQmE;AACnE,oEAAmE;AAKnE,
|
|
1
|
+
{"version":3,"file":"autocompleteFieldAccess.js","sourceRoot":"","sources":["../../../../src/powerquery-language-services/inspection/autocomplete/autocompleteFieldAccess.ts"],"names":[],"mappings":"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"}
|