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