@microsoft/powerquery-language-services 0.2.19 → 0.3.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/analysisBase.d.ts +4 -6
- package/lib/powerquery-language-services/analysis/analysisBase.js +118 -223
- package/lib/powerquery-language-services/analysis/analysisBase.js.map +1 -1
- package/lib/powerquery-language-services/analysis/analysisSettings.d.ts +2 -2
- package/lib/powerquery-language-services/analysis/analysisUtils.js +1 -1
- package/lib/powerquery-language-services/analysis/analysisUtils.js.map +1 -1
- package/lib/powerquery-language-services/analysis/documentAnalysis.d.ts +0 -2
- package/lib/powerquery-language-services/analysis/documentAnalysis.js +11 -32
- package/lib/powerquery-language-services/analysis/documentAnalysis.js.map +1 -1
- package/lib/powerquery-language-services/commonTypes.js +1 -1
- package/lib/powerquery-language-services/commonTypes.js.map +1 -1
- package/lib/powerquery-language-services/documentSymbols.d.ts +1 -1
- package/lib/powerquery-language-services/documentSymbols.js +62 -111
- 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 +35 -34
- package/lib/powerquery-language-services/formatter.js.map +1 -1
- package/lib/powerquery-language-services/index.js +2 -2
- package/lib/powerquery-language-services/index.js.map +1 -1
- package/lib/powerquery-language-services/inspection/activeNode/activeNodeUtils.js +74 -131
- package/lib/powerquery-language-services/inspection/activeNode/activeNodeUtils.js.map +1 -1
- package/lib/powerquery-language-services/inspection/activeNode/index.js +1 -1
- package/lib/powerquery-language-services/inspection/activeNode/index.js.map +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteFieldAccess.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteFieldAccess.js +117 -187
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteFieldAccess.js.map +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteItem/autocompleteItemUtils.js +28 -28
- 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 -2
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeyword.js +97 -114
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeyword.js.map +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordDefault.js +11 -11
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordDefault.js.map +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordErrorHandlingExpression.js +9 -9
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordErrorHandlingExpression.js.map +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordIdentifierPairedExpression.js +5 -5
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordIdentifierPairedExpression.js.map +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordLetExpression.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordLetExpression.js +43 -56
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordLetExpression.js.map +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordListExpression.js +10 -10
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordListExpression.js.map +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordSectionMember.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordSectionMember.js +11 -11
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordSectionMember.js.map +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.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/common.js +28 -28
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/common.js.map +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteLanguageConstant.js +28 -31
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteLanguageConstant.js.map +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/autocompletePrimitiveType.js +19 -23
- package/lib/powerquery-language-services/inspection/autocomplete/autocompletePrimitiveType.js.map +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteUtils.js +5 -5
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteUtils.js.map +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/common.js +2 -13
- package/lib/powerquery-language-services/inspection/autocomplete/common.js.map +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/index.js +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/index.js.map +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/task.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/task.js +36 -25
- package/lib/powerquery-language-services/inspection/autocomplete/task.js.map +1 -1
- package/lib/powerquery-language-services/inspection/commonTypes.d.ts +6 -5
- package/lib/powerquery-language-services/inspection/expectedType.js +18 -18
- package/lib/powerquery-language-services/inspection/expectedType.js.map +1 -1
- package/lib/powerquery-language-services/inspection/externalType/externalType.d.ts +2 -2
- package/lib/powerquery-language-services/inspection/externalType/externalType.js +2 -1
- package/lib/powerquery-language-services/inspection/externalType/externalType.js.map +1 -1
- package/lib/powerquery-language-services/inspection/externalType/externalTypeUtils.js +3 -3
- package/lib/powerquery-language-services/inspection/externalType/externalTypeUtils.js.map +1 -1
- package/lib/powerquery-language-services/inspection/invokeExpression/currentInvokeExpression.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/invokeExpression/currentInvokeExpression.js +49 -66
- package/lib/powerquery-language-services/inspection/invokeExpression/currentInvokeExpression.js.map +1 -1
- package/lib/powerquery-language-services/inspection/invokeExpression/invokeExpression.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/invokeExpression/invokeExpression.js +74 -99
- package/lib/powerquery-language-services/inspection/invokeExpression/invokeExpression.js.map +1 -1
- package/lib/powerquery-language-services/inspection/jaroWinkler.js +26 -42
- package/lib/powerquery-language-services/inspection/jaroWinkler.js.map +1 -1
- package/lib/powerquery-language-services/inspection/pseudoFunctionExpressionType.js +18 -51
- package/lib/powerquery-language-services/inspection/pseudoFunctionExpressionType.js.map +1 -1
- package/lib/powerquery-language-services/inspection/scope/scopeInspection.d.ts +3 -3
- package/lib/powerquery-language-services/inspection/scope/scopeInspection.js +221 -275
- package/lib/powerquery-language-services/inspection/scope/scopeInspection.js.map +1 -1
- package/lib/powerquery-language-services/inspection/task.d.ts +2 -2
- package/lib/powerquery-language-services/inspection/task.js +52 -41
- package/lib/powerquery-language-services/inspection/task.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/index.js +1 -1
- package/lib/powerquery-language-services/inspection/type/index.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/common.d.ts +9 -9
- package/lib/powerquery-language-services/inspection/type/inspectType/common.js +353 -338
- 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 +31 -41
- package/lib/powerquery-language-services/inspection/type/inspectType/examineFieldSpecificationList.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeConstant.js +3 -3
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeConstant.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 +29 -19
- 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 +27 -17
- 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 +4 -0
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/common.js +68 -0
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/common.js.map +1 -0
- package/lib/powerquery-language-services/inspection/type/inspectType/{inspectTypeFieldProjection.d.ts → inspectTypeField/inspectTypeFieldProjection.d.ts} +2 -2
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/inspectTypeFieldProjection.js +103 -0
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/inspectTypeFieldProjection.js.map +1 -0
- package/lib/powerquery-language-services/inspection/type/inspectType/{inspectTypeFieldSelector.d.ts → inspectTypeField/inspectTypeFieldSelector.d.ts} +2 -2
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/inspectTypeFieldSelector.js +76 -0
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/inspectTypeFieldSelector.js.map +1 -0
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFieldSpecification.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFieldSpecification.js +24 -12
- 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 +65 -55
- 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 +43 -35
- 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 +28 -18
- 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 +28 -18
- 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 +42 -30
- 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 +55 -64
- 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 +26 -16
- 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 +34 -24
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeListType.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeLiteralExpression.js +9 -10
- 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 +33 -23
- 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 +22 -23
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeParameter.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypePrimitiveType.js +9 -10
- 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 +40 -30
- 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 +31 -41
- 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 +27 -28
- 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 +44 -54
- 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 +132 -179
- 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 +36 -37
- 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 +57 -105
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeUnaryExpression.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/task.d.ts +2 -2
- package/lib/powerquery-language-services/inspection/type/task.js +59 -104
- package/lib/powerquery-language-services/inspection/type/task.js.map +1 -1
- package/lib/powerquery-language-services/inspectionSettings.d.ts +2 -0
- package/lib/powerquery-language-services/inspectionUtils.d.ts +5 -4
- package/lib/powerquery-language-services/inspectionUtils.js +80 -134
- package/lib/powerquery-language-services/inspectionUtils.js.map +1 -1
- package/lib/powerquery-language-services/languageServiceUtils.js +1 -1
- package/lib/powerquery-language-services/languageServiceUtils.js.map +1 -1
- package/lib/powerquery-language-services/library/libraryUtils.js +11 -11
- package/lib/powerquery-language-services/library/libraryUtils.js.map +1 -1
- package/lib/powerquery-language-services/localization/localization.js +9 -13
- package/lib/powerquery-language-services/localization/localization.js.map +1 -1
- package/lib/powerquery-language-services/localization/localizationUtils.js +1 -1
- package/lib/powerquery-language-services/localization/localizationUtils.js.map +1 -1
- package/lib/powerquery-language-services/localization/templates.js +43 -43
- package/lib/powerquery-language-services/localization/templates.js.map +1 -1
- package/lib/powerquery-language-services/positionUtils.d.ts +5 -5
- package/lib/powerquery-language-services/positionUtils.js +53 -33
- package/lib/powerquery-language-services/positionUtils.js.map +1 -1
- package/lib/powerquery-language-services/providers/languageCompletionItemProvider.d.ts +3 -3
- package/lib/powerquery-language-services/providers/languageCompletionItemProvider.js +40 -95
- package/lib/powerquery-language-services/providers/languageCompletionItemProvider.js.map +1 -1
- package/lib/powerquery-language-services/providers/librarySymbolProvider.js +63 -138
- package/lib/powerquery-language-services/providers/librarySymbolProvider.js.map +1 -1
- package/lib/powerquery-language-services/providers/localDocumentSymbolProvider.d.ts +3 -5
- package/lib/powerquery-language-services/providers/localDocumentSymbolProvider.js +130 -194
- package/lib/powerquery-language-services/providers/localDocumentSymbolProvider.js.map +1 -1
- package/lib/powerquery-language-services/providers/nullSymbolProvider.js +18 -52
- package/lib/powerquery-language-services/providers/nullSymbolProvider.js.map +1 -1
- package/lib/powerquery-language-services/validate/validate.d.ts +1 -1
- package/lib/powerquery-language-services/validate/validate.js +38 -42
- package/lib/powerquery-language-services/validate/validate.js.map +1 -1
- package/lib/powerquery-language-services/validate/validateDuplicateIdentifiers.d.ts +1 -1
- package/lib/powerquery-language-services/validate/validateDuplicateIdentifiers.js +82 -127
- package/lib/powerquery-language-services/validate/validateDuplicateIdentifiers.js.map +1 -1
- package/lib/powerquery-language-services/validate/validateFunctionExpression.d.ts +1 -1
- package/lib/powerquery-language-services/validate/validateFunctionExpression.js +61 -101
- 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 +61 -98
- package/lib/powerquery-language-services/validate/validateInvokeExpression.js.map +1 -1
- package/lib/powerquery-language-services/validate/validateLexAndParse.d.ts +1 -1
- package/lib/powerquery-language-services/validate/validateLexAndParse.js +114 -122
- package/lib/powerquery-language-services/validate/validateLexAndParse.js.map +1 -1
- package/lib/powerquery-language-services/validate/validationSettings/validationSettingsUtils.js +1 -12
- package/lib/powerquery-language-services/validate/validationSettings/validationSettingsUtils.js.map +1 -1
- package/lib/powerquery-language-services/workspaceCache/workspaceCache.d.ts +3 -13
- package/lib/powerquery-language-services/workspaceCache/workspaceCacheUtils.d.ts +7 -8
- package/lib/powerquery-language-services/workspaceCache/workspaceCacheUtils.js +93 -147
- package/lib/powerquery-language-services/workspaceCache/workspaceCacheUtils.js.map +1 -1
- package/package.json +4 -4
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFieldProjection.js +0 -126
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFieldProjection.js.map +0 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFieldSelector.js +0 -67
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFieldSelector.js.map +0 -1
|
@@ -1,74 +1,59 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
// Copyright (c) Microsoft Corporation.
|
|
3
3
|
// Licensed under the MIT license.
|
|
4
|
-
var
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
};
|
|
13
|
-
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
14
|
-
};
|
|
15
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
16
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
17
|
-
if (!m) return o;
|
|
18
|
-
var i = m.call(o), r, ar = [], e;
|
|
19
|
-
try {
|
|
20
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
21
|
-
}
|
|
22
|
-
catch (error) { e = { error: error }; }
|
|
23
|
-
finally {
|
|
24
|
-
try {
|
|
25
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
26
|
-
}
|
|
27
|
-
finally { if (e) throw e.error; }
|
|
28
|
-
}
|
|
29
|
-
return ar;
|
|
4
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
5
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
6
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
7
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
8
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
9
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
10
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
11
|
+
});
|
|
30
12
|
};
|
|
31
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
32
14
|
exports.maybeDereferencedIdentifier = exports.assertGetOrCreateNodeScope = exports.tryNodeScope = void 0;
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
15
|
+
const parser_1 = require("@microsoft/powerquery-parser/lib/powerquery-parser/parser");
|
|
16
|
+
const powerquery_parser_1 = require("@microsoft/powerquery-parser");
|
|
17
|
+
const language_1 = require("@microsoft/powerquery-parser/lib/powerquery-parser/language");
|
|
18
|
+
const __1 = require("../..");
|
|
19
|
+
const pseudoFunctionExpressionType_1 = require("../pseudoFunctionExpressionType");
|
|
38
20
|
// Builds a scope for the given node.
|
|
39
21
|
function tryNodeScope(settings, nodeIdMapCollection, nodeId,
|
|
40
22
|
// scopeById may get mutated by adding new entries.
|
|
41
23
|
scopeById) {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
24
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
25
|
+
const trace = settings.traceManager.entry("Scope" /* Scope */, tryNodeScope.name);
|
|
26
|
+
const result = yield powerquery_parser_1.ResultUtils.ensureResultAsync(settings.locale, () => __awaiter(this, void 0, void 0, function* () {
|
|
27
|
+
const ancestry = parser_1.AncestryUtils.assertGetAncestry(nodeIdMapCollection, nodeId);
|
|
28
|
+
if (ancestry.length === 0) {
|
|
29
|
+
return new Map();
|
|
30
|
+
}
|
|
31
|
+
const inspected = yield inspectScope(settings, nodeIdMapCollection, ancestry, scopeById);
|
|
32
|
+
return powerquery_parser_1.Assert.asDefined(inspected.get(nodeId), `expected nodeId in scope result`, { nodeId });
|
|
33
|
+
}));
|
|
34
|
+
trace.exit();
|
|
35
|
+
return result;
|
|
50
36
|
});
|
|
51
|
-
trace.exit();
|
|
52
|
-
return result;
|
|
53
37
|
}
|
|
54
38
|
exports.tryNodeScope = tryNodeScope;
|
|
55
39
|
function assertGetOrCreateNodeScope(settings, nodeIdMapCollection, nodeId,
|
|
56
40
|
// scopeById may get mutated by adding new entries.
|
|
57
41
|
scopeById) {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
42
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
43
|
+
const trace = settings.traceManager.entry("Scope" /* Scope */, assertGetOrCreateNodeScope.name);
|
|
44
|
+
const maybeScope = scopeById.get(nodeId);
|
|
45
|
+
if (maybeScope !== undefined) {
|
|
46
|
+
trace.exit({ ["IsThrowing" /* IsThrowing */]: false });
|
|
47
|
+
return powerquery_parser_1.ResultUtils.boxOk(maybeScope);
|
|
48
|
+
}
|
|
49
|
+
const triedNodeScope = yield tryNodeScope(settings, nodeIdMapCollection, nodeId, scopeById);
|
|
50
|
+
if (powerquery_parser_1.ResultUtils.isError(triedNodeScope)) {
|
|
51
|
+
trace.exit({ ["IsThrowing" /* IsThrowing */]: true });
|
|
52
|
+
throw triedNodeScope;
|
|
53
|
+
}
|
|
54
|
+
trace.exit({ ["IsThrowing" /* IsThrowing */]: false });
|
|
55
|
+
return triedNodeScope;
|
|
56
|
+
});
|
|
72
57
|
}
|
|
73
58
|
exports.assertGetOrCreateNodeScope = assertGetOrCreateNodeScope;
|
|
74
59
|
// Recusrive deference of the identifier until it reaches the value node.
|
|
@@ -76,132 +61,138 @@ exports.assertGetOrCreateNodeScope = assertGetOrCreateNodeScope;
|
|
|
76
61
|
function maybeDereferencedIdentifier(settings, nodeIdMapCollection, xorNode,
|
|
77
62
|
// If a map is given, then it's mutated and returned.
|
|
78
63
|
// Else create a new Map instance and return that instead.
|
|
79
|
-
scopeById) {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
64
|
+
scopeById = new Map()) {
|
|
65
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
66
|
+
const trace = settings.traceManager.entry("Scope" /* Scope */, maybeDereferencedIdentifier.name, __1.TraceUtils.createXorNodeDetails(xorNode));
|
|
67
|
+
parser_1.XorNodeUtils.assertIsIdentifier(xorNode);
|
|
68
|
+
if (parser_1.XorNodeUtils.isContextXor(xorNode)) {
|
|
69
|
+
trace.exit({ ["Result" /* Result */]: undefined });
|
|
70
|
+
return powerquery_parser_1.ResultUtils.boxOk(undefined);
|
|
71
|
+
}
|
|
72
|
+
const identifier = xorNode.node;
|
|
73
|
+
let identifierLiteral;
|
|
74
|
+
let isIdentifierRecurisve;
|
|
75
|
+
switch (identifier.kind) {
|
|
76
|
+
case "Identifier" /* Identifier */:
|
|
77
|
+
identifierLiteral = identifier.literal;
|
|
78
|
+
isIdentifierRecurisve = false;
|
|
79
|
+
break;
|
|
80
|
+
case "IdentifierExpression" /* IdentifierExpression */:
|
|
81
|
+
identifierLiteral = identifier.identifier.literal;
|
|
82
|
+
isIdentifierRecurisve = identifier.maybeInclusiveConstant !== undefined;
|
|
83
|
+
break;
|
|
84
|
+
default:
|
|
85
|
+
throw powerquery_parser_1.Assert.isNever(identifier);
|
|
86
|
+
}
|
|
87
|
+
const triedNodeScope = yield assertGetOrCreateNodeScope(settings, nodeIdMapCollection, xorNode.node.id, scopeById);
|
|
88
|
+
if (powerquery_parser_1.ResultUtils.isError(triedNodeScope)) {
|
|
89
|
+
trace.exit({ ["Result" /* Result */]: triedNodeScope.kind });
|
|
90
|
+
return triedNodeScope;
|
|
91
|
+
}
|
|
92
|
+
const nodeScope = triedNodeScope.value;
|
|
93
|
+
const maybeScopeItem = nodeScope.get(identifierLiteral);
|
|
94
|
+
if (
|
|
95
|
+
// If the identifier couldn't be found in the generated scope,
|
|
96
|
+
// then either the scope generation is incorrect or it's an external identifier.
|
|
97
|
+
(maybeScopeItem === null || maybeScopeItem === void 0 ? void 0 : maybeScopeItem.isRecursive) !== isIdentifierRecurisve) {
|
|
98
|
+
trace.exit({ ["Result" /* Result */]: undefined });
|
|
99
|
+
return powerquery_parser_1.ResultUtils.boxOk(undefined);
|
|
100
|
+
}
|
|
101
|
+
const scopeItem = maybeScopeItem;
|
|
102
|
+
let maybeNextXorNode;
|
|
103
|
+
switch (scopeItem.kind) {
|
|
104
|
+
case "Each" /* Each */:
|
|
105
|
+
case "Parameter" /* Parameter */:
|
|
106
|
+
case "Undefined" /* Undefined */:
|
|
107
|
+
break;
|
|
108
|
+
case "LetVariable" /* LetVariable */:
|
|
109
|
+
case "RecordField" /* RecordField */:
|
|
110
|
+
maybeNextXorNode = scopeItem.maybeValue;
|
|
111
|
+
break;
|
|
112
|
+
case "SectionMember" /* SectionMember */:
|
|
113
|
+
maybeNextXorNode = scopeItem.maybeValue;
|
|
114
|
+
break;
|
|
115
|
+
default:
|
|
116
|
+
throw powerquery_parser_1.Assert.isNever(scopeItem);
|
|
117
|
+
}
|
|
118
|
+
let result;
|
|
119
|
+
if (maybeNextXorNode === undefined) {
|
|
120
|
+
result = Promise.resolve(powerquery_parser_1.ResultUtils.boxOk(xorNode));
|
|
121
|
+
}
|
|
122
|
+
else if (parser_1.XorNodeUtils.isContextXor(maybeNextXorNode) ||
|
|
123
|
+
(maybeNextXorNode.node.kind !== "Identifier" /* Identifier */ &&
|
|
124
|
+
maybeNextXorNode.node.kind !== "IdentifierExpression" /* IdentifierExpression */)) {
|
|
125
|
+
result = Promise.resolve(powerquery_parser_1.ResultUtils.boxOk(xorNode));
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
result = maybeDereferencedIdentifier(settings, nodeIdMapCollection, maybeNextXorNode, scopeById);
|
|
129
|
+
}
|
|
130
|
+
trace.exit();
|
|
131
|
+
return result;
|
|
132
|
+
});
|
|
148
133
|
}
|
|
149
134
|
exports.maybeDereferencedIdentifier = maybeDereferencedIdentifier;
|
|
150
135
|
function inspectScope(settings, nodeIdMapCollection, ancestry,
|
|
151
136
|
// scopeById may get mutated by adding new entries.
|
|
152
137
|
scopeById) {
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
138
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
139
|
+
const trace = settings.traceManager.entry("Scope" /* Scope */, inspectScope.name);
|
|
140
|
+
const rootId = ancestry[0].node.id;
|
|
141
|
+
// A scope for the given ancestry has already been generated.
|
|
142
|
+
const maybeCached = scopeById.get(rootId);
|
|
143
|
+
if (maybeCached !== undefined) {
|
|
144
|
+
trace.exit();
|
|
145
|
+
return scopeById;
|
|
146
|
+
}
|
|
147
|
+
// Store the delta between the given scope and what's found in a temporary map.
|
|
148
|
+
// This will prevent mutation in the given map if an error is thrown.
|
|
149
|
+
const scopeChanges = new Map();
|
|
150
|
+
const state = {
|
|
151
|
+
traceManager: settings.traceManager,
|
|
152
|
+
givenScope: scopeById,
|
|
153
|
+
deltaScope: scopeChanges,
|
|
154
|
+
ancestry,
|
|
155
|
+
nodeIdMapCollection,
|
|
156
|
+
ancestryIndex: 0,
|
|
157
|
+
};
|
|
158
|
+
// Build up the scope through a top-down inspection.
|
|
159
|
+
const numNodes = ancestry.length;
|
|
160
|
+
for (let ancestryIndex = numNodes - 1; ancestryIndex >= 0; ancestryIndex -= 1) {
|
|
161
|
+
state.ancestryIndex = ancestryIndex;
|
|
162
|
+
const xorNode = ancestry[ancestryIndex];
|
|
163
|
+
// eslint-disable-next-line no-await-in-loop
|
|
164
|
+
yield inspectNode(state, xorNode);
|
|
165
|
+
}
|
|
158
166
|
trace.exit();
|
|
159
|
-
return
|
|
160
|
-
}
|
|
161
|
-
// Store the delta between the given scope and what's found in a temporary map.
|
|
162
|
-
// This will prevent mutation in the given map if an error is thrown.
|
|
163
|
-
var scopeChanges = new Map();
|
|
164
|
-
var state = {
|
|
165
|
-
traceManager: settings.traceManager,
|
|
166
|
-
givenScope: scopeById,
|
|
167
|
-
deltaScope: scopeChanges,
|
|
168
|
-
ancestry: ancestry,
|
|
169
|
-
nodeIdMapCollection: nodeIdMapCollection,
|
|
170
|
-
ancestryIndex: 0,
|
|
171
|
-
};
|
|
172
|
-
// Build up the scope through a top-down inspection.
|
|
173
|
-
var numNodes = ancestry.length;
|
|
174
|
-
for (var ancestryIndex = numNodes - 1; ancestryIndex >= 0; ancestryIndex -= 1) {
|
|
175
|
-
state.ancestryIndex = ancestryIndex;
|
|
176
|
-
var xorNode = ancestry[ancestryIndex];
|
|
177
|
-
inspectNode(state, xorNode);
|
|
178
|
-
}
|
|
179
|
-
trace.exit();
|
|
180
|
-
return state.deltaScope;
|
|
167
|
+
return state.deltaScope;
|
|
168
|
+
});
|
|
181
169
|
}
|
|
170
|
+
// eslint-disable-next-line require-await
|
|
182
171
|
function inspectNode(state, xorNode) {
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
172
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
173
|
+
const trace = state.traceManager.entry("Scope" /* Scope */, inspectNode.name, __1.TraceUtils.createXorNodeDetails(xorNode));
|
|
174
|
+
switch (xorNode.node.kind) {
|
|
175
|
+
case "EachExpression" /* EachExpression */:
|
|
176
|
+
inspectEachExpression(state, xorNode);
|
|
177
|
+
break;
|
|
178
|
+
case "FunctionExpression" /* FunctionExpression */:
|
|
179
|
+
inspectFunctionExpression(state, xorNode);
|
|
180
|
+
break;
|
|
181
|
+
case "LetExpression" /* LetExpression */:
|
|
182
|
+
inspectLetExpression(state, xorNode);
|
|
183
|
+
break;
|
|
184
|
+
case "RecordExpression" /* RecordExpression */:
|
|
185
|
+
case "RecordLiteral" /* RecordLiteral */:
|
|
186
|
+
inspectRecordExpressionOrRecordLiteral(state, xorNode);
|
|
187
|
+
break;
|
|
188
|
+
case "Section" /* Section */:
|
|
189
|
+
inspectSection(state, xorNode);
|
|
190
|
+
break;
|
|
191
|
+
default:
|
|
192
|
+
localGetOrCreateNodeScope(state, xorNode.node.id, undefined);
|
|
193
|
+
}
|
|
194
|
+
trace.exit();
|
|
195
|
+
});
|
|
205
196
|
}
|
|
206
197
|
function inspectEachExpression(state, eachExpr) {
|
|
207
198
|
parser_1.XorNodeUtils.assertIsNodeKind(eachExpr, "EachExpression" /* EachExpression */);
|
|
@@ -220,9 +211,9 @@ function inspectEachExpression(state, eachExpr) {
|
|
|
220
211
|
function inspectFunctionExpression(state, fnExpr) {
|
|
221
212
|
parser_1.XorNodeUtils.assertIsNodeKind(fnExpr, "FunctionExpression" /* FunctionExpression */);
|
|
222
213
|
// Propegates the parent's scope.
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
214
|
+
const nodeScope = localGetOrCreateNodeScope(state, fnExpr.node.id, undefined);
|
|
215
|
+
const pseudoType = (0, pseudoFunctionExpressionType_1.pseudoFunctionExpressionType)(state.nodeIdMapCollection, fnExpr);
|
|
216
|
+
const newEntries = pseudoType.parameters.map((parameter) => [
|
|
226
217
|
parameter.name.literal,
|
|
227
218
|
{
|
|
228
219
|
kind: "Parameter" /* Parameter */,
|
|
@@ -235,177 +226,132 @@ function inspectFunctionExpression(state, fnExpr) {
|
|
|
235
226
|
? language_1.TypeUtils.maybePrimitiveTypeConstantKindFromTypeKind(parameter.maybeType)
|
|
236
227
|
: undefined,
|
|
237
228
|
},
|
|
238
|
-
]
|
|
229
|
+
]);
|
|
239
230
|
expandChildScope(state, fnExpr, [3], newEntries, nodeScope);
|
|
240
231
|
}
|
|
241
232
|
function inspectLetExpression(state, letExpr) {
|
|
242
233
|
parser_1.XorNodeUtils.assertIsNodeKind(letExpr, "LetExpression" /* LetExpression */);
|
|
243
234
|
// Propegates the parent's scope.
|
|
244
|
-
|
|
245
|
-
|
|
235
|
+
const nodeScope = localGetOrCreateNodeScope(state, letExpr.node.id, undefined);
|
|
236
|
+
const keyValuePairs = parser_1.NodeIdMapIterator.iterLetExpression(state.nodeIdMapCollection, letExpr);
|
|
246
237
|
inspectKeyValuePairs(state, nodeScope, keyValuePairs, createLetVariableScopeItem);
|
|
247
238
|
// Places the assignments from the 'let' into LetExpression.expression
|
|
248
|
-
|
|
239
|
+
const newEntries = scopeItemsFromKeyValuePairs(keyValuePairs, -1, createLetVariableScopeItem);
|
|
249
240
|
expandChildScope(state, letExpr, [3], newEntries, nodeScope);
|
|
250
241
|
}
|
|
251
242
|
function inspectRecordExpressionOrRecordLiteral(state, record) {
|
|
252
243
|
parser_1.XorNodeUtils.assertIsRecord(record);
|
|
253
244
|
// Propegates the parent's scope.
|
|
254
|
-
|
|
255
|
-
|
|
245
|
+
const nodeScope = localGetOrCreateNodeScope(state, record.node.id, undefined);
|
|
246
|
+
const keyValuePairs = parser_1.NodeIdMapIterator.iterRecord(state.nodeIdMapCollection, record);
|
|
256
247
|
inspectKeyValuePairs(state, nodeScope, keyValuePairs, createRecordMemberScopeItem);
|
|
257
248
|
}
|
|
258
249
|
function inspectSection(state, section) {
|
|
259
|
-
var e_1, _a;
|
|
260
250
|
parser_1.XorNodeUtils.assertIsNodeKind(section, "Section" /* Section */);
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
if (kvp.maybeValue === undefined) {
|
|
266
|
-
continue;
|
|
267
|
-
}
|
|
268
|
-
var newScopeItems = scopeItemsFromKeyValuePairs(keyValuePairs, kvp.key.id, createSectionMemberScopeItem);
|
|
269
|
-
if (newScopeItems.length !== 0) {
|
|
270
|
-
expandScope(state, kvp.maybeValue, newScopeItems, new Map());
|
|
271
|
-
}
|
|
251
|
+
const keyValuePairs = parser_1.NodeIdMapIterator.iterSection(state.nodeIdMapCollection, section);
|
|
252
|
+
for (const kvp of keyValuePairs) {
|
|
253
|
+
if (kvp.maybeValue === undefined) {
|
|
254
|
+
continue;
|
|
272
255
|
}
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
try {
|
|
277
|
-
if (keyValuePairs_1_1 && !keyValuePairs_1_1.done && (_a = keyValuePairs_1.return)) _a.call(keyValuePairs_1);
|
|
256
|
+
const newScopeItems = scopeItemsFromKeyValuePairs(keyValuePairs, kvp.key.id, createSectionMemberScopeItem);
|
|
257
|
+
if (newScopeItems.length !== 0) {
|
|
258
|
+
expandScope(state, kvp.maybeValue, newScopeItems, new Map());
|
|
278
259
|
}
|
|
279
|
-
finally { if (e_1) throw e_1.error; }
|
|
280
260
|
}
|
|
281
261
|
}
|
|
282
262
|
// Expands the scope on the value part of the key value pair.
|
|
283
263
|
function inspectKeyValuePairs(state, parentScope, keyValuePairs, createFn) {
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
var kvp = keyValuePairs_2_1.value;
|
|
288
|
-
if (kvp.maybeValue === undefined) {
|
|
289
|
-
continue;
|
|
290
|
-
}
|
|
291
|
-
var newScopeItems = scopeItemsFromKeyValuePairs(keyValuePairs, kvp.key.id, createFn);
|
|
292
|
-
if (newScopeItems.length !== 0) {
|
|
293
|
-
expandScope(state, kvp.maybeValue, newScopeItems, parentScope);
|
|
294
|
-
}
|
|
264
|
+
for (const kvp of keyValuePairs) {
|
|
265
|
+
if (kvp.maybeValue === undefined) {
|
|
266
|
+
continue;
|
|
295
267
|
}
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
try {
|
|
300
|
-
if (keyValuePairs_2_1 && !keyValuePairs_2_1.done && (_a = keyValuePairs_2.return)) _a.call(keyValuePairs_2);
|
|
268
|
+
const newScopeItems = scopeItemsFromKeyValuePairs(keyValuePairs, kvp.key.id, createFn);
|
|
269
|
+
if (newScopeItems.length !== 0) {
|
|
270
|
+
expandScope(state, kvp.maybeValue, newScopeItems, parentScope);
|
|
301
271
|
}
|
|
302
|
-
finally { if (e_2) throw e_2.error; }
|
|
303
272
|
}
|
|
304
273
|
}
|
|
305
274
|
function expandScope(state, xorNode, newEntries, maybeDefaultScope) {
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
for (var newEntries_1 = __values(newEntries), newEntries_1_1 = newEntries_1.next(); !newEntries_1_1.done; newEntries_1_1 = newEntries_1.next()) {
|
|
310
|
-
var _b = __read(newEntries_1_1.value, 2), key = _b[0], value = _b[1];
|
|
311
|
-
nodeScope.set(value.isRecursive ? "@".concat(key) : key, value);
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
|
-
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
315
|
-
finally {
|
|
316
|
-
try {
|
|
317
|
-
if (newEntries_1_1 && !newEntries_1_1.done && (_a = newEntries_1.return)) _a.call(newEntries_1);
|
|
318
|
-
}
|
|
319
|
-
finally { if (e_3) throw e_3.error; }
|
|
275
|
+
const nodeScope = localGetOrCreateNodeScope(state, xorNode.node.id, maybeDefaultScope);
|
|
276
|
+
for (const [key, value] of newEntries) {
|
|
277
|
+
nodeScope.set(value.isRecursive ? `@${key}` : key, value);
|
|
320
278
|
}
|
|
321
279
|
}
|
|
322
280
|
function expandChildScope(state, parent, childAttributeIds, newEntries, maybeDefaultScope) {
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
var maybeChild = parser_1.NodeIdMapUtils.maybeNthChild(nodeIdMapCollection, parentId, attributeId);
|
|
331
|
-
if (maybeChild !== undefined) {
|
|
332
|
-
expandScope(state, maybeChild, newEntries, maybeDefaultScope);
|
|
333
|
-
}
|
|
334
|
-
}
|
|
335
|
-
}
|
|
336
|
-
catch (e_4_1) { e_4 = { error: e_4_1 }; }
|
|
337
|
-
finally {
|
|
338
|
-
try {
|
|
339
|
-
if (childAttributeIds_1_1 && !childAttributeIds_1_1.done && (_a = childAttributeIds_1.return)) _a.call(childAttributeIds_1);
|
|
281
|
+
const nodeIdMapCollection = state.nodeIdMapCollection;
|
|
282
|
+
const parentId = parent.node.id;
|
|
283
|
+
// TODO: optimize this
|
|
284
|
+
for (const attributeId of childAttributeIds) {
|
|
285
|
+
const maybeChild = parser_1.NodeIdMapUtils.maybeNthChild(nodeIdMapCollection, parentId, attributeId);
|
|
286
|
+
if (maybeChild !== undefined) {
|
|
287
|
+
expandScope(state, maybeChild, newEntries, maybeDefaultScope);
|
|
340
288
|
}
|
|
341
|
-
finally { if (e_4) throw e_4.error; }
|
|
342
289
|
}
|
|
343
290
|
}
|
|
344
291
|
// Any operation done on a scope should first invoke `scopeFor` for data integrity.
|
|
345
292
|
function localGetOrCreateNodeScope(state, nodeId, maybeDefaultScope) {
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
nodeId: nodeId,
|
|
293
|
+
const trace = state.traceManager.entry("Scope" /* Scope */, localGetOrCreateNodeScope.name, {
|
|
294
|
+
nodeId,
|
|
349
295
|
});
|
|
350
296
|
// If scopeFor has already been called then there should be a nodeId in the deltaScope.
|
|
351
|
-
|
|
297
|
+
const maybeDeltaScope = state.deltaScope.get(nodeId);
|
|
352
298
|
if (maybeDeltaScope !== undefined) {
|
|
353
|
-
trace.exit(
|
|
299
|
+
trace.exit({ ["Result" /* Result */]: "deltaScope cache hit" });
|
|
354
300
|
return maybeDeltaScope;
|
|
355
301
|
}
|
|
356
302
|
// If given a scope with an existing value then assume it's valid.
|
|
357
303
|
// Cache and return.
|
|
358
|
-
|
|
304
|
+
const maybeGivenScope = state.givenScope.get(nodeId);
|
|
359
305
|
if (maybeGivenScope !== undefined) {
|
|
360
|
-
|
|
306
|
+
const shallowCopy = new Map(maybeGivenScope.entries());
|
|
361
307
|
state.deltaScope.set(nodeId, shallowCopy);
|
|
362
|
-
trace.exit(
|
|
308
|
+
trace.exit({ ["Result" /* Result */]: "givenScope cache hit" });
|
|
363
309
|
return shallowCopy;
|
|
364
310
|
}
|
|
365
311
|
if (maybeDefaultScope !== undefined) {
|
|
366
|
-
|
|
312
|
+
const shallowCopy = new Map(maybeDefaultScope.entries());
|
|
367
313
|
state.deltaScope.set(nodeId, shallowCopy);
|
|
368
|
-
trace.exit(
|
|
314
|
+
trace.exit({ ["Result" /* Result */]: "defaultScope entry" });
|
|
369
315
|
return shallowCopy;
|
|
370
316
|
}
|
|
371
317
|
// Default to a parent's scope if the node has a parent.
|
|
372
|
-
|
|
318
|
+
const maybeParent = parser_1.NodeIdMapUtils.maybeParentXor(state.nodeIdMapCollection, nodeId);
|
|
373
319
|
if (maybeParent !== undefined) {
|
|
374
|
-
|
|
375
|
-
|
|
320
|
+
const parentNodeId = maybeParent.node.id;
|
|
321
|
+
const maybeParentDeltaScope = state.deltaScope.get(parentNodeId);
|
|
376
322
|
if (maybeParentDeltaScope !== undefined) {
|
|
377
|
-
|
|
323
|
+
const shallowCopy = new Map(maybeParentDeltaScope.entries());
|
|
378
324
|
state.deltaScope.set(nodeId, shallowCopy);
|
|
379
|
-
trace.exit(
|
|
325
|
+
trace.exit({ ["Result" /* Result */]: "parent deltaScope hit" });
|
|
380
326
|
return shallowCopy;
|
|
381
327
|
}
|
|
382
|
-
|
|
328
|
+
const maybeParentGivenScope = state.givenScope.get(parentNodeId);
|
|
383
329
|
if (maybeParentGivenScope !== undefined) {
|
|
384
|
-
|
|
330
|
+
const shallowCopy = new Map(maybeParentGivenScope.entries());
|
|
385
331
|
state.deltaScope.set(nodeId, shallowCopy);
|
|
386
|
-
trace.exit(
|
|
332
|
+
trace.exit({ ["Result" /* Result */]: "parent givenScope hit" });
|
|
387
333
|
return shallowCopy;
|
|
388
334
|
}
|
|
389
335
|
}
|
|
390
336
|
// The node has no parent or it hasn't been visited.
|
|
391
|
-
|
|
337
|
+
const newScope = new Map();
|
|
392
338
|
state.deltaScope.set(nodeId, newScope);
|
|
393
|
-
trace.exit(
|
|
339
|
+
trace.exit({ ["Result" /* Result */]: "set new entry" });
|
|
394
340
|
return newScope;
|
|
395
341
|
}
|
|
396
342
|
function scopeItemsFromKeyValuePairs(keyValuePairs, ancestorKeyNodeId, createFn) {
|
|
397
343
|
return keyValuePairs
|
|
398
|
-
.filter(
|
|
399
|
-
.map(
|
|
344
|
+
.filter((keyValuePair) => keyValuePair.maybeValue !== undefined)
|
|
345
|
+
.map((keyValuePair) => [
|
|
400
346
|
keyValuePair.keyLiteral,
|
|
401
347
|
createFn(keyValuePair, ancestorKeyNodeId === keyValuePair.key.id),
|
|
402
|
-
]
|
|
348
|
+
]);
|
|
403
349
|
}
|
|
404
350
|
function createSectionMemberScopeItem(keyValuePair, isRecursive) {
|
|
405
351
|
return {
|
|
406
352
|
kind: "SectionMember" /* SectionMember */,
|
|
407
353
|
id: keyValuePair.source.node.id,
|
|
408
|
-
isRecursive
|
|
354
|
+
isRecursive,
|
|
409
355
|
key: keyValuePair.key,
|
|
410
356
|
maybeValue: keyValuePair.maybeValue,
|
|
411
357
|
};
|
|
@@ -414,7 +360,7 @@ function createLetVariableScopeItem(keyValuePair, isRecursive) {
|
|
|
414
360
|
return {
|
|
415
361
|
kind: "LetVariable" /* LetVariable */,
|
|
416
362
|
id: keyValuePair.source.node.id,
|
|
417
|
-
isRecursive
|
|
363
|
+
isRecursive,
|
|
418
364
|
key: keyValuePair.key,
|
|
419
365
|
maybeValue: keyValuePair.maybeValue,
|
|
420
366
|
};
|
|
@@ -423,7 +369,7 @@ function createRecordMemberScopeItem(keyValuePair, isRecursive) {
|
|
|
423
369
|
return {
|
|
424
370
|
kind: "RecordField" /* RecordField */,
|
|
425
371
|
id: keyValuePair.source.node.id,
|
|
426
|
-
isRecursive
|
|
372
|
+
isRecursive,
|
|
427
373
|
key: keyValuePair.key,
|
|
428
374
|
maybeValue: keyValuePair.maybeValue,
|
|
429
375
|
};
|