@microsoft/powerquery-language-services 0.3.38 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/powerquery-language-services/analysis/analysis.d.ts +17 -8
- package/lib/powerquery-language-services/analysis/analysisBase.d.ts +41 -26
- package/lib/powerquery-language-services/analysis/analysisBase.js +524 -173
- package/lib/powerquery-language-services/analysis/analysisBase.js.map +1 -1
- package/lib/powerquery-language-services/analysis/analysisSettings.d.ts +8 -11
- package/lib/powerquery-language-services/analysis/analysisUtils.d.ts +1 -2
- package/lib/powerquery-language-services/analysis/analysisUtils.js +20 -2
- package/lib/powerquery-language-services/analysis/analysisUtils.js.map +1 -1
- package/lib/powerquery-language-services/analysis/documentAnalysis.d.ts +4 -6
- package/lib/powerquery-language-services/analysis/documentAnalysis.js +4 -11
- package/lib/powerquery-language-services/analysis/documentAnalysis.js.map +1 -1
- package/lib/powerquery-language-services/analysis/memoizedAnalysis.d.ts +18 -0
- package/lib/powerquery-language-services/analysis/memoizedAnalysis.js +66 -0
- package/lib/powerquery-language-services/analysis/memoizedAnalysis.js.map +1 -0
- package/lib/powerquery-language-services/formatter.d.ts +1 -1
- package/lib/powerquery-language-services/formatter.js +2 -4
- package/lib/powerquery-language-services/formatter.js.map +1 -1
- package/lib/powerquery-language-services/index.d.ts +0 -1
- package/lib/powerquery-language-services/index.js +0 -1
- package/lib/powerquery-language-services/index.js.map +1 -1
- package/lib/powerquery-language-services/inspection/activeNode/activeNode.d.ts +5 -5
- package/lib/powerquery-language-services/inspection/activeNode/activeNodeUtils.d.ts +5 -5
- package/lib/powerquery-language-services/inspection/activeNode/activeNodeUtils.js +78 -83
- package/lib/powerquery-language-services/inspection/activeNode/activeNodeUtils.js.map +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteFieldAccess.d.ts +2 -2
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteFieldAccess.js +37 -40
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteFieldAccess.js.map +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteItem/autocompleteItemUtils.d.ts +7 -7
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteItem/autocompleteItemUtils.js +17 -17
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteItem/autocompleteItemUtils.js.map +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeyword.d.ts +3 -3
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeyword.js +43 -43
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeyword.js.map +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordDefault.js +7 -7
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordDefault.js.map +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordErrorHandlingExpression.js +7 -7
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordErrorHandlingExpression.js.map +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordIdentifierPairedExpression.js +4 -4
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordIdentifierPairedExpression.js.map +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordLetExpression.js +24 -17
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordLetExpression.js.map +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordListExpression.js +4 -4
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordListExpression.js.map +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordSectionMember.js +9 -9
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordSectionMember.js.map +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordTrailingText.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordTrailingText.js +5 -5
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/autocompleteKeywordTrailingText.js.map +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/common.js +4 -4
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/common.js.map +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteKeyword/commonTypes.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteLanguageConstant.d.ts +2 -2
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteLanguageConstant.js +21 -26
- package/lib/powerquery-language-services/inspection/autocomplete/autocompleteLanguageConstant.js.map +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/autocompletePrimitiveType.d.ts +2 -2
- package/lib/powerquery-language-services/inspection/autocomplete/autocompletePrimitiveType.js +21 -21
- package/lib/powerquery-language-services/inspection/autocomplete/autocompletePrimitiveType.js.map +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/commonTypes.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/autocomplete/task.d.ts +2 -2
- package/lib/powerquery-language-services/inspection/autocomplete/task.js +12 -12
- package/lib/powerquery-language-services/inspection/autocomplete/task.js.map +1 -1
- package/lib/powerquery-language-services/inspection/commonTypes.d.ts +2 -2
- package/lib/powerquery-language-services/inspection/deferenceIdentifier.js +12 -13
- package/lib/powerquery-language-services/inspection/deferenceIdentifier.js.map +1 -1
- package/lib/powerquery-language-services/inspection/expectedType.d.ts +3 -3
- package/lib/powerquery-language-services/inspection/expectedType.js +8 -8
- package/lib/powerquery-language-services/inspection/expectedType.js.map +1 -1
- package/lib/powerquery-language-services/inspection/invokeExpression/common.d.ts +2 -2
- package/lib/powerquery-language-services/inspection/invokeExpression/currentInvokeExpression.d.ts +2 -2
- package/lib/powerquery-language-services/inspection/invokeExpression/currentInvokeExpression.js +24 -24
- package/lib/powerquery-language-services/inspection/invokeExpression/currentInvokeExpression.js.map +1 -1
- package/lib/powerquery-language-services/inspection/invokeExpression/invokeExpression.js +17 -18
- package/lib/powerquery-language-services/inspection/invokeExpression/invokeExpression.js.map +1 -1
- package/lib/powerquery-language-services/inspection/pseudoFunctionExpressionType.js +20 -22
- package/lib/powerquery-language-services/inspection/pseudoFunctionExpressionType.js.map +1 -1
- package/lib/powerquery-language-services/inspection/scope/scope.d.ts +2 -2
- package/lib/powerquery-language-services/inspection/scope/scopeInspection.js +47 -45
- package/lib/powerquery-language-services/inspection/scope/scopeInspection.js.map +1 -1
- package/lib/powerquery-language-services/inspection/scope/scopeUtils.d.ts +7 -7
- package/lib/powerquery-language-services/inspection/scope/scopeUtils.js +15 -15
- package/lib/powerquery-language-services/inspection/scope/scopeUtils.js.map +1 -1
- package/lib/powerquery-language-services/inspection/task.d.ts +4 -4
- package/lib/powerquery-language-services/inspection/task.js +17 -18
- package/lib/powerquery-language-services/inspection/task.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/common.d.ts +7 -7
- package/lib/powerquery-language-services/inspection/type/inspectType/common.js +56 -59
- package/lib/powerquery-language-services/inspection/type/inspectType/common.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/examineFieldSpecificationList.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/examineFieldSpecificationList.js +4 -5
- package/lib/powerquery-language-services/inspection/type/inspectType/examineFieldSpecificationList.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeEachExpression.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeEachExpression.js +4 -4
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeEachExpression.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeErrorHandlingExpression.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeErrorHandlingExpression.js +14 -12
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeErrorHandlingExpression.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/common.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/common.js +13 -13
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/common.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/inspectTypeFieldProjection.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/inspectTypeFieldProjection.js +9 -9
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/inspectTypeFieldProjection.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/inspectTypeFieldSelector.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/inspectTypeFieldSelector.js +13 -14
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeField/inspectTypeFieldSelector.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFieldSpecification.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFieldSpecification.js +6 -6
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFieldSpecification.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFunctionExpression.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFunctionExpression.js +8 -8
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFunctionExpression.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFunctionType.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFunctionType.js +9 -9
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeFunctionType.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeIdentifier.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeIdentifier.js +5 -5
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeIdentifier.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeIdentifierExpression.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeIdentifierExpression.js +5 -5
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeIdentifierExpression.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeIfExpression.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeIfExpression.js +4 -4
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeIfExpression.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeInvokeExpression.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeInvokeExpression.js +18 -18
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeInvokeExpression.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeList.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeList.js +4 -4
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeList.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeListType.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeListType.js +7 -7
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeListType.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeLiteralExpression.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeLiteralExpression.js +2 -2
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeLiteralExpression.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeNullCoalescingExpression.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeNullCoalescingExpression.js +10 -10
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeNullCoalescingExpression.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeParameter.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeParameter.js +6 -6
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeParameter.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypePrimitiveType.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypePrimitiveType.js +3 -3
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypePrimitiveType.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRangeExpression.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRangeExpression.js +10 -10
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRangeExpression.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRecord.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRecord.js +7 -6
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRecord.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRecordType.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRecordType.js +6 -6
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRecordType.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRecursivePrimaryExpression.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRecursivePrimaryExpression.js +10 -10
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeRecursivePrimaryExpression.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeTBinOpExpression.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeTBinOpExpression.js +35 -41
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeTBinOpExpression.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeTableType.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeTableType.js +9 -9
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeTableType.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeUnaryExpression.d.ts +1 -1
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeUnaryExpression.js +10 -12
- package/lib/powerquery-language-services/inspection/type/inspectType/inspectTypeUnaryExpression.js.map +1 -1
- package/lib/powerquery-language-services/inspection/type/task.js +5 -5
- package/lib/powerquery-language-services/inspection/type/task.js.map +1 -1
- package/lib/powerquery-language-services/inspectionSettings.d.ts +1 -1
- package/lib/powerquery-language-services/inspectionUtils.d.ts +3 -6
- package/lib/powerquery-language-services/inspectionUtils.js +20 -75
- package/lib/powerquery-language-services/inspectionUtils.js.map +1 -1
- package/lib/powerquery-language-services/library/library.d.ts +1 -1
- package/lib/powerquery-language-services/library/libraryUtils.d.ts +9 -9
- package/lib/powerquery-language-services/library/libraryUtils.js +21 -21
- package/lib/powerquery-language-services/library/libraryUtils.js.map +1 -1
- package/lib/powerquery-language-services/localization/localization.d.ts +3 -3
- package/lib/powerquery-language-services/localization/localization.js +9 -9
- package/lib/powerquery-language-services/localization/localization.js.map +1 -1
- package/lib/powerquery-language-services/positionUtils.js +16 -17
- package/lib/powerquery-language-services/positionUtils.js.map +1 -1
- package/lib/powerquery-language-services/providers/commonTypes.d.ts +41 -13
- package/lib/powerquery-language-services/providers/index.d.ts +2 -2
- package/lib/powerquery-language-services/providers/index.js +4 -4
- package/lib/powerquery-language-services/providers/index.js.map +1 -1
- package/lib/powerquery-language-services/providers/languageCompletionItemProvider.d.ts +4 -4
- package/lib/powerquery-language-services/providers/languageCompletionItemProvider.js +22 -19
- package/lib/powerquery-language-services/providers/languageCompletionItemProvider.js.map +1 -1
- package/lib/powerquery-language-services/providers/libraryProvider.d.ts +17 -0
- package/lib/powerquery-language-services/providers/libraryProvider.js +129 -0
- package/lib/powerquery-language-services/providers/libraryProvider.js.map +1 -0
- package/lib/powerquery-language-services/providers/localDocumentProvider/foldingRanges.d.ts +4 -0
- package/lib/powerquery-language-services/providers/localDocumentProvider/foldingRanges.js +51 -0
- package/lib/powerquery-language-services/providers/localDocumentProvider/foldingRanges.js.map +1 -0
- package/lib/powerquery-language-services/providers/localDocumentProvider/localDocumentProvider.d.ts +18 -19
- package/lib/powerquery-language-services/providers/localDocumentProvider/localDocumentProvider.js +131 -116
- package/lib/powerquery-language-services/providers/localDocumentProvider/localDocumentProvider.js.map +1 -1
- package/lib/powerquery-language-services/providers/localDocumentProvider/partialSemanticToken.js +112 -124
- package/lib/powerquery-language-services/providers/localDocumentProvider/partialSemanticToken.js.map +1 -1
- package/lib/powerquery-language-services/providers/nullSymbolProvider.d.ts +11 -8
- package/lib/powerquery-language-services/providers/nullSymbolProvider.js +12 -5
- package/lib/powerquery-language-services/providers/nullSymbolProvider.js.map +1 -1
- package/lib/powerquery-language-services/traceUtils.d.ts +1 -1
- package/lib/powerquery-language-services/traceUtils.js +1 -1
- package/lib/powerquery-language-services/traceUtils.js.map +1 -1
- package/lib/powerquery-language-services/validate/validate.d.ts +2 -2
- package/lib/powerquery-language-services/validate/validate.js +19 -20
- package/lib/powerquery-language-services/validate/validate.js.map +1 -1
- package/lib/powerquery-language-services/validate/validateDuplicateIdentifiers.d.ts +2 -1
- package/lib/powerquery-language-services/validate/validateDuplicateIdentifiers.js +24 -54
- package/lib/powerquery-language-services/validate/validateDuplicateIdentifiers.js.map +1 -1
- package/lib/powerquery-language-services/validate/validateFunctionExpression.js +6 -6
- package/lib/powerquery-language-services/validate/validateFunctionExpression.js.map +1 -1
- package/lib/powerquery-language-services/validate/validateInvokeExpression.d.ts +1 -1
- package/lib/powerquery-language-services/validate/validateInvokeExpression.js +23 -23
- package/lib/powerquery-language-services/validate/validateInvokeExpression.js.map +1 -1
- package/lib/powerquery-language-services/validate/validateParse.d.ts +4 -0
- package/lib/powerquery-language-services/validate/validateParse.js +74 -0
- package/lib/powerquery-language-services/validate/validateParse.js.map +1 -0
- package/lib/powerquery-language-services/validate/validateUnknownIdentifiers.js +19 -15
- package/lib/powerquery-language-services/validate/validateUnknownIdentifiers.js.map +1 -1
- package/lib/powerquery-language-services/workspaceCache/workspaceCache.d.ts +2 -2
- package/lib/powerquery-language-services/workspaceCache/workspaceCacheUtils.js +31 -31
- package/lib/powerquery-language-services/workspaceCache/workspaceCacheUtils.js.map +1 -1
- package/package.json +3 -3
- package/lib/powerquery-language-services/documentSymbols.d.ts +0 -3
- package/lib/powerquery-language-services/documentSymbols.js +0 -100
- package/lib/powerquery-language-services/documentSymbols.js.map +0 -1
- package/lib/powerquery-language-services/providers/librarySymbolProvider.d.ts +0 -15
- package/lib/powerquery-language-services/providers/librarySymbolProvider.js +0 -117
- package/lib/powerquery-language-services/providers/librarySymbolProvider.js.map +0 -1
- package/lib/powerquery-language-services/validate/validateLexAndParse.d.ts +0 -4
- package/lib/powerquery-language-services/validate/validateLexAndParse.js +0 -130
- package/lib/powerquery-language-services/validate/validateLexAndParse.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { TextDocument } from "vscode-languageserver-textdocument";
|
|
2
|
-
import {
|
|
2
|
+
import { AnalysisSettings } from "../analysis";
|
|
3
3
|
import type { ValidationResult } from "./validationResult";
|
|
4
4
|
import type { ValidationSettings } from "./validationSettings";
|
|
5
|
-
export declare function validate(textDocument: TextDocument,
|
|
5
|
+
export declare function validate(textDocument: TextDocument, analysisSettings: AnalysisSettings, validationSettings: ValidationSettings): Promise<ValidationResult>;
|
|
@@ -12,20 +12,20 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
12
12
|
};
|
|
13
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
14
|
exports.validate = void 0;
|
|
15
|
-
const
|
|
16
|
-
const inspection_1 = require("../inspection");
|
|
15
|
+
const analysis_1 = require("../analysis");
|
|
17
16
|
const validateDuplicateIdentifiers_1 = require("./validateDuplicateIdentifiers");
|
|
18
17
|
const validateFunctionExpression_1 = require("./validateFunctionExpression");
|
|
19
18
|
const validateInvokeExpression_1 = require("./validateInvokeExpression");
|
|
20
|
-
const
|
|
19
|
+
const validateParse_1 = require("./validateParse");
|
|
21
20
|
const validateUnknownIdentifiers_1 = require("./validateUnknownIdentifiers");
|
|
22
|
-
|
|
23
|
-
function validate(textDocument, validationSettings, typeCache = inspection_1.TypeCacheUtils.createEmptyCache()) {
|
|
21
|
+
function validate(textDocument, analysisSettings, validationSettings) {
|
|
24
22
|
return __awaiter(this, void 0, void 0, function* () {
|
|
25
|
-
const trace = validationSettings.traceManager.entry("Validation" /* Validation */, validate.name, validationSettings.
|
|
26
|
-
const updatedSettings = Object.assign(Object.assign({}, validationSettings), {
|
|
27
|
-
const
|
|
28
|
-
|
|
23
|
+
const trace = validationSettings.traceManager.entry("Validation" /* Validation */, validate.name, validationSettings.initialCorrelationId);
|
|
24
|
+
const updatedSettings = Object.assign(Object.assign({}, validationSettings), { initialCorrelationId: trace.id });
|
|
25
|
+
const analysis = analysis_1.AnalysisUtils.createAnalysis(textDocument, analysisSettings);
|
|
26
|
+
const parseState = yield analysis.getParseState();
|
|
27
|
+
const parseError = yield analysis.getParseError();
|
|
28
|
+
if (parseState === undefined) {
|
|
29
29
|
trace.exit();
|
|
30
30
|
return {
|
|
31
31
|
diagnostics: [],
|
|
@@ -35,32 +35,31 @@ function validate(textDocument, validationSettings, typeCache = inspection_1.Typ
|
|
|
35
35
|
let functionExpressionDiagnostics;
|
|
36
36
|
let invokeExpressionDiagnostics;
|
|
37
37
|
let unknownIdentifiersDiagnostics;
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
invokeExpressionDiagnostics = yield (0, validateInvokeExpression_1.validateInvokeExpression)(validationSettings, maybeNodeIdMapCollection, workspaceCache_1.WorkspaceCacheUtils.getTypeCache(textDocument, validationSettings.isWorkspaceCacheAllowed));
|
|
38
|
+
const nodeIdMapCollection = parseState.contextState.nodeIdMapCollection;
|
|
39
|
+
const typeCache = analysis.getTypeCache();
|
|
40
|
+
if (validationSettings.checkInvokeExpressions && nodeIdMapCollection) {
|
|
41
|
+
functionExpressionDiagnostics = (0, validateFunctionExpression_1.validateFunctionExpression)(validationSettings, nodeIdMapCollection);
|
|
42
|
+
invokeExpressionDiagnostics = yield (0, validateInvokeExpression_1.validateInvokeExpression)(validationSettings, nodeIdMapCollection, typeCache);
|
|
44
43
|
}
|
|
45
44
|
else {
|
|
46
45
|
functionExpressionDiagnostics = [];
|
|
47
46
|
invokeExpressionDiagnostics = [];
|
|
48
47
|
}
|
|
49
|
-
if (validationSettings.checkUnknownIdentifiers &&
|
|
50
|
-
unknownIdentifiersDiagnostics = yield (0, validateUnknownIdentifiers_1.validateUnknownIdentifiers)(validationSettings,
|
|
48
|
+
if (validationSettings.checkUnknownIdentifiers && nodeIdMapCollection) {
|
|
49
|
+
unknownIdentifiersDiagnostics = yield (0, validateUnknownIdentifiers_1.validateUnknownIdentifiers)(validationSettings, nodeIdMapCollection, typeCache);
|
|
51
50
|
}
|
|
52
51
|
else {
|
|
53
52
|
unknownIdentifiersDiagnostics = [];
|
|
54
53
|
}
|
|
55
54
|
const result = {
|
|
56
55
|
diagnostics: [
|
|
57
|
-
...(
|
|
58
|
-
...(yield (0,
|
|
56
|
+
...(0, validateDuplicateIdentifiers_1.validateDuplicateIdentifiers)(textDocument, nodeIdMapCollection, updatedSettings),
|
|
57
|
+
...(yield (0, validateParse_1.validateParse)(parseError, updatedSettings)),
|
|
59
58
|
...functionExpressionDiagnostics,
|
|
60
59
|
...invokeExpressionDiagnostics,
|
|
61
60
|
...unknownIdentifiersDiagnostics,
|
|
62
61
|
],
|
|
63
|
-
hasSyntaxError:
|
|
62
|
+
hasSyntaxError: Boolean(yield analysis.getParseError()),
|
|
64
63
|
};
|
|
65
64
|
trace.exit();
|
|
66
65
|
return result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/powerquery-language-services/validate/validate.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/powerquery-language-services/validate/validate.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;;;;;;;;;AAOlC,0CAAwE;AAExE,iFAA8E;AAC9E,6EAA0E;AAC1E,yEAAsE;AACtE,mDAAgD;AAChD,6EAA0E;AAK1E,SAAsB,QAAQ,CAC1B,YAA0B,EAC1B,gBAAkC,EAClC,kBAAsC;;QAEtC,MAAM,KAAK,GAAU,kBAAkB,CAAC,YAAY,CAAC,KAAK,gCAEtD,QAAQ,CAAC,IAAI,EACb,kBAAkB,CAAC,oBAAoB,CAC1C,CAAC;QAEF,MAAM,eAAe,mCACd,kBAAkB,KACrB,oBAAoB,EAAE,KAAK,CAAC,EAAE,GACjC,CAAC;QAEF,MAAM,QAAQ,GAAa,wBAAa,CAAC,cAAc,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;QACxF,MAAM,UAAU,GAA2B,MAAM,QAAQ,CAAC,aAAa,EAAE,CAAC;QAC1E,MAAM,UAAU,GAAsC,MAAM,QAAQ,CAAC,aAAa,EAAE,CAAC;QAErF,IAAI,UAAU,KAAK,SAAS,EAAE;YAC1B,KAAK,CAAC,IAAI,EAAE,CAAC;YAEb,OAAO;gBACH,WAAW,EAAE,EAAE;gBACf,cAAc,EAAE,KAAK;aACxB,CAAC;SACL;QAED,IAAI,6BAA2C,CAAC;QAChD,IAAI,2BAAyC,CAAC;QAC9C,IAAI,6BAA2C,CAAC;QAEhD,MAAM,mBAAmB,GAAyB,UAAU,CAAC,YAAY,CAAC,mBAAmB,CAAC;QAC9F,MAAM,SAAS,GAAc,QAAQ,CAAC,YAAY,EAAE,CAAC;QAErD,IAAI,kBAAkB,CAAC,sBAAsB,IAAI,mBAAmB,EAAE;YAClE,6BAA6B,GAAG,IAAA,uDAA0B,EAAC,kBAAkB,EAAE,mBAAmB,CAAC,CAAC;YAEpG,2BAA2B,GAAG,MAAM,IAAA,mDAAwB,EACxD,kBAAkB,EAClB,mBAAmB,EACnB,SAAS,CACZ,CAAC;SACL;aAAM;YACH,6BAA6B,GAAG,EAAE,CAAC;YACnC,2BAA2B,GAAG,EAAE,CAAC;SACpC;QAED,IAAI,kBAAkB,CAAC,uBAAuB,IAAI,mBAAmB,EAAE;YACnE,6BAA6B,GAAG,MAAM,IAAA,uDAA0B,EAC5D,kBAAkB,EAClB,mBAAmB,EACnB,SAAS,CACZ,CAAC;SACL;aAAM;YACH,6BAA6B,GAAG,EAAE,CAAC;SACtC;QAED,MAAM,MAAM,GAAqB;YAC7B,WAAW,EAAE;gBACT,GAAG,IAAA,2DAA4B,EAAC,YAAY,EAAE,mBAAmB,EAAE,eAAe,CAAC;gBACnF,GAAG,CAAC,MAAM,IAAA,6BAAa,EAAC,UAAU,EAAE,eAAe,CAAC,CAAC;gBACrD,GAAG,6BAA6B;gBAChC,GAAG,2BAA2B;gBAC9B,GAAG,6BAA6B;aACnC;YACD,cAAc,EAAE,OAAO,CAAC,MAAM,QAAQ,CAAC,aAAa,EAAE,CAAC;SAC1D,CAAC;QAEF,KAAK,CAAC,IAAI,EAAE,CAAC;QAEb,OAAO,MAAM,CAAC;IAClB,CAAC;CAAA;AAzED,4BAyEC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Diagnostic } from "vscode-languageserver-types";
|
|
2
|
+
import { NodeIdMap } from "@microsoft/powerquery-parser/lib/powerquery-parser/parser";
|
|
2
3
|
import { TextDocument } from "vscode-languageserver-textdocument";
|
|
3
4
|
import { ValidationSettings } from "./validationSettings";
|
|
4
|
-
export declare function validateDuplicateIdentifiers(textDocument: TextDocument, validationSettings: ValidationSettings):
|
|
5
|
+
export declare function validateDuplicateIdentifiers(textDocument: TextDocument, nodeIdMapCollection: NodeIdMap.Collection, validationSettings: ValidationSettings): ReadonlyArray<Diagnostic>;
|
|
@@ -1,15 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
// Copyright (c) Microsoft Corporation.
|
|
3
3
|
// Licensed under the MIT license.
|
|
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
|
-
});
|
|
12
|
-
};
|
|
13
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
5
|
exports.validateDuplicateIdentifiers = void 0;
|
|
15
6
|
const PQP = require("@microsoft/powerquery-parser");
|
|
@@ -18,43 +9,22 @@ const parser_1 = require("@microsoft/powerquery-parser/lib/powerquery-parser/par
|
|
|
18
9
|
const localization_1 = require("../localization");
|
|
19
10
|
const diagnosticErrorCode_1 = require("../diagnosticErrorCode");
|
|
20
11
|
const __1 = require("..");
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
const updatedSettings = Object.assign(Object.assign({}, validationSettings), { maybeInitialCorrelationId: trace.id });
|
|
26
|
-
if (!updatedSettings.checkForDuplicateIdentifiers) {
|
|
27
|
-
trace.exit();
|
|
28
|
-
return [];
|
|
29
|
-
}
|
|
30
|
-
const maybeParsePromise = yield workspaceCache_1.WorkspaceCacheUtils.getOrCreateParsePromise(textDocument, updatedSettings, updatedSettings.isWorkspaceCacheAllowed);
|
|
31
|
-
if (maybeParsePromise === undefined) {
|
|
32
|
-
trace.exit();
|
|
33
|
-
return [];
|
|
34
|
-
}
|
|
35
|
-
const triedParse = maybeParsePromise;
|
|
36
|
-
let maybeNodeIdMapCollection;
|
|
37
|
-
if (PQP.TaskUtils.isParseStageOk(triedParse)) {
|
|
38
|
-
maybeNodeIdMapCollection = triedParse.nodeIdMapCollection;
|
|
39
|
-
}
|
|
40
|
-
else if (PQP.TaskUtils.isParseStageParseError(triedParse)) {
|
|
41
|
-
maybeNodeIdMapCollection = triedParse.nodeIdMapCollection;
|
|
42
|
-
}
|
|
43
|
-
if (maybeNodeIdMapCollection === undefined) {
|
|
44
|
-
trace.exit();
|
|
45
|
-
return [];
|
|
46
|
-
}
|
|
47
|
-
const documentUri = textDocument.uri;
|
|
48
|
-
const nodeIdMapCollection = maybeNodeIdMapCollection;
|
|
49
|
-
const result = [
|
|
50
|
-
...validateDuplicateIdentifiersForLetExpresion(documentUri, nodeIdMapCollection, updatedSettings, trace.id),
|
|
51
|
-
...validateDuplicateIdentifiersForRecord(documentUri, nodeIdMapCollection, updatedSettings, trace.id),
|
|
52
|
-
...validateDuplicateIdentifiersForRecordType(documentUri, nodeIdMapCollection, updatedSettings, trace.id),
|
|
53
|
-
...validateDuplicateIdentifiersForSection(documentUri, nodeIdMapCollection, updatedSettings, trace.id),
|
|
54
|
-
];
|
|
12
|
+
function validateDuplicateIdentifiers(textDocument, nodeIdMapCollection, validationSettings) {
|
|
13
|
+
const trace = validationSettings.traceManager.entry("Validation" /* Validation */, validateDuplicateIdentifiers.name, validationSettings.initialCorrelationId);
|
|
14
|
+
const updatedSettings = Object.assign(Object.assign({}, validationSettings), { initialCorrelationId: trace.id });
|
|
15
|
+
if (!updatedSettings.checkForDuplicateIdentifiers) {
|
|
55
16
|
trace.exit();
|
|
56
|
-
return
|
|
57
|
-
}
|
|
17
|
+
return [];
|
|
18
|
+
}
|
|
19
|
+
const documentUri = textDocument.uri;
|
|
20
|
+
const result = [
|
|
21
|
+
...validateDuplicateIdentifiersForLetExpresion(documentUri, nodeIdMapCollection, updatedSettings, trace.id),
|
|
22
|
+
...validateDuplicateIdentifiersForRecord(documentUri, nodeIdMapCollection, updatedSettings, trace.id),
|
|
23
|
+
...validateDuplicateIdentifiersForRecordType(documentUri, nodeIdMapCollection, updatedSettings, trace.id),
|
|
24
|
+
...validateDuplicateIdentifiersForSection(documentUri, nodeIdMapCollection, updatedSettings, trace.id),
|
|
25
|
+
];
|
|
26
|
+
trace.exit();
|
|
27
|
+
return result;
|
|
58
28
|
}
|
|
59
29
|
exports.validateDuplicateIdentifiers = validateDuplicateIdentifiers;
|
|
60
30
|
function validateDuplicateIdentifiersForLetExpresion(documentUri, nodeIdMapCollection, validationSettings, correlationId) {
|
|
@@ -96,9 +66,9 @@ function validateDuplicateIdentifiersForSection(documentUri, nodeIdMapCollection
|
|
|
96
66
|
}
|
|
97
67
|
// Generalized logic for iterating over some collection and their children, essentially by doing:
|
|
98
68
|
// for node in nodeIds:
|
|
99
|
-
// for childOfNode in
|
|
69
|
+
// for childOfNode in iterNodeFactory(node):
|
|
100
70
|
// ...
|
|
101
|
-
function validateDuplicateIdentifiersForKeyValuePair(documentUri, nodeIdMapCollection, nodeIdCollections,
|
|
71
|
+
function validateDuplicateIdentifiersForKeyValuePair(documentUri, nodeIdMapCollection, nodeIdCollections, iterNodeFactory, validationSettings, correlationId) {
|
|
102
72
|
const numIds = nodeIdCollections.reduce((partial, set) => partial + set.size, 0);
|
|
103
73
|
const trace = validationSettings.traceManager.entry("Validation" /* Validation */, validateDuplicateIdentifiersForKeyValuePair.name, correlationId, { numIds });
|
|
104
74
|
if (!numIds) {
|
|
@@ -110,15 +80,15 @@ function validateDuplicateIdentifiersForKeyValuePair(documentUri, nodeIdMapColle
|
|
|
110
80
|
const node = parser_1.NodeIdMapUtils.assertGetXor(nodeIdMapCollection, nodeId);
|
|
111
81
|
const duplicateFieldsByKey = new Map();
|
|
112
82
|
const knownFieldByKey = new Map();
|
|
113
|
-
for (const field of
|
|
83
|
+
for (const field of iterNodeFactory(nodeIdMapCollection, node)) {
|
|
114
84
|
const keyLiteral = field.normalizedKeyLiteral;
|
|
115
|
-
const
|
|
116
|
-
const
|
|
117
|
-
if (
|
|
118
|
-
|
|
85
|
+
const duplicateFields = duplicateFieldsByKey.get(keyLiteral);
|
|
86
|
+
const knownFeld = knownFieldByKey.get(keyLiteral);
|
|
87
|
+
if (duplicateFields) {
|
|
88
|
+
duplicateFields.push(field);
|
|
119
89
|
}
|
|
120
|
-
else if (
|
|
121
|
-
duplicateFieldsByKey.set(keyLiteral, [field,
|
|
90
|
+
else if (knownFeld) {
|
|
91
|
+
duplicateFieldsByKey.set(keyLiteral, [field, knownFeld]);
|
|
122
92
|
}
|
|
123
93
|
else {
|
|
124
94
|
knownFieldByKey.set(keyLiteral, field);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateDuplicateIdentifiers.js","sourceRoot":"","sources":["../../../src/powerquery-language-services/validate/validateDuplicateIdentifiers.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC
|
|
1
|
+
{"version":3,"file":"validateDuplicateIdentifiers.js","sourceRoot":"","sources":["../../../src/powerquery-language-services/validate/validateDuplicateIdentifiers.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,17 +11,17 @@ const __1 = require("..");
|
|
|
11
11
|
// Check for repeat parameter names for FunctionExpressions.
|
|
12
12
|
function validateFunctionExpression(validationSettings, nodeIdMapCollection) {
|
|
13
13
|
var _a;
|
|
14
|
-
const trace = validationSettings.traceManager.entry("Validation" /* Validation */, validateFunctionExpression.name, validationSettings.
|
|
15
|
-
const updatedSettings = Object.assign(Object.assign({}, validationSettings), {
|
|
16
|
-
const
|
|
17
|
-
if (
|
|
14
|
+
const trace = validationSettings.traceManager.entry("Validation" /* Validation */, validateFunctionExpression.name, validationSettings.initialCorrelationId);
|
|
15
|
+
const updatedSettings = Object.assign(Object.assign({}, validationSettings), { initialCorrelationId: trace.id });
|
|
16
|
+
const fnExpressionIds = nodeIdMapCollection.idsByNodeKind.get("FunctionExpression" /* FunctionExpression */);
|
|
17
|
+
if (fnExpressionIds === undefined) {
|
|
18
18
|
trace.exit();
|
|
19
19
|
return [];
|
|
20
20
|
}
|
|
21
21
|
const diagnostics = [];
|
|
22
|
-
for (const nodeId of
|
|
22
|
+
for (const nodeId of fnExpressionIds) {
|
|
23
23
|
diagnostics.push(validateNoDuplicateParameter(updatedSettings, nodeIdMapCollection, nodeId));
|
|
24
|
-
(_a = updatedSettings.
|
|
24
|
+
(_a = updatedSettings.cancellationToken) === null || _a === void 0 ? void 0 : _a.throwIfCancelled();
|
|
25
25
|
}
|
|
26
26
|
trace.exit();
|
|
27
27
|
return diagnostics.flat();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateFunctionExpression.js","sourceRoot":"","sources":["../../../src/powerquery-language-services/validate/validateFunctionExpression.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,6EAA6E;AAC7E,sFAKmE;AAKnE,kDAAkE;AAClE,gEAA6D;AAE7D,0BAAmC;AAInC,4DAA4D;AAC5D,SAAgB,0BAA0B,CACtC,kBAAsC,EACtC,mBAAyC;;IAEzC,MAAM,KAAK,GAAU,kBAAkB,CAAC,YAAY,CAAC,KAAK,gCAEtD,0BAA0B,CAAC,IAAI,EAC/B,kBAAkB,CAAC,
|
|
1
|
+
{"version":3,"file":"validateFunctionExpression.js","sourceRoot":"","sources":["../../../src/powerquery-language-services/validate/validateFunctionExpression.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,6EAA6E;AAC7E,sFAKmE;AAKnE,kDAAkE;AAClE,gEAA6D;AAE7D,0BAAmC;AAInC,4DAA4D;AAC5D,SAAgB,0BAA0B,CACtC,kBAAsC,EACtC,mBAAyC;;IAEzC,MAAM,KAAK,GAAU,kBAAkB,CAAC,YAAY,CAAC,KAAK,gCAEtD,0BAA0B,CAAC,IAAI,EAC/B,kBAAkB,CAAC,oBAAoB,CAC1C,CAAC;IAEF,MAAM,eAAe,mCACd,kBAAkB,KACrB,oBAAoB,EAAE,KAAK,CAAC,EAAE,GACjC,CAAC;IAEF,MAAM,eAAe,GAA4B,mBAAmB,CAAC,aAAa,CAAC,GAAG,+CAErF,CAAC;IAEF,IAAI,eAAe,KAAK,SAAS,EAAE;QAC/B,KAAK,CAAC,IAAI,EAAE,CAAC;QAEb,OAAO,EAAE,CAAC;KACb;IAED,MAAM,WAAW,GAAmB,EAAE,CAAC;IAEvC,KAAK,MAAM,MAAM,IAAI,eAAe,EAAE;QAClC,WAAW,CAAC,IAAI,CAAC,4BAA4B,CAAC,eAAe,EAAE,mBAAmB,EAAE,MAAM,CAAC,CAAC,CAAC;QAC7F,MAAA,eAAe,CAAC,iBAAiB,0CAAE,gBAAgB,EAAE,CAAC;KACzD;IAED,KAAK,CAAC,IAAI,EAAE,CAAC;IAEb,OAAO,WAAW,CAAC,IAAI,EAAE,CAAC;AAC9B,CAAC;AAnCD,gEAmCC;AAED,SAAS,4BAA4B,CACjC,kBAAsC,EACtC,mBAAyC,EACzC,cAAsB;;IAEtB,MAAM,YAAY,GAAa,uBAAc,CAAC,mBAAmB,CAC7D,mBAAmB,EACnB,cAAc,gDAEjB,CAAC;IAEF,MAAM,cAAc,GAAkC,IAAI,GAAG,EAAE,CAAC;IAEhE,KAAK,MAAM,SAAS,IAAI,0BAAiB,CAAC,oCAAoC,CAAC,mBAAmB,EAAE,YAAY,CAAC,EAAE;QAC/G,MAAM,aAAa,GAAqB,MAAA,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,mCAAI,EAAE,CAAC;QACpF,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9B,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;KACxD;IAED,MAAM,WAAW,GAAiB,EAAE,CAAC;IAErC,KAAK,MAAM,CAAC,iBAAiB,EAAE,KAAK,CAAC,IAAI,cAAc,EAAE;QACrD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAClB,WAAW,CAAC,IAAI,CACZ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,UAA0B,EAAE,EAAE;gBACxC,MAAM,cAAc,GAAU,iBAAa,CAAC,yBAAyB,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;gBAE7F,OAAO,yCAAyC,CAC5C,kBAAkB,EAClB,cAAc,EACd,iBAAiB,CACpB,CAAC;YACN,CAAC,CAAC,CACL,CAAC;SACL;KACJ;IAED,OAAO,WAAW,CAAC;AACvB,CAAC;AAED,SAAS,yCAAyC,CAC9C,kBAAsC,EACtC,qBAA4B,EAC5B,aAAqB;IAErB,MAAM,SAAS,GAA2B,gCAAiB,CAAC,wBAAwB,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAEhH,OAAO;QACH,IAAI,EAAE,yCAAmB,CAAC,mBAAmB;QAC7C,OAAO,EAAE,2BAAY,CAAC,qCAAqC,CAAC,SAAS,EAAE,aAAa,CAAC;QACrF,KAAK,EAAE,qBAAqB;QAC5B,QAAQ,EAAE,gDAAkB,CAAC,KAAK;QAClC,MAAM,EAAE,kBAAkB,CAAC,MAAM;KACpC,CAAC;AACN,CAAC"}
|
|
@@ -2,4 +2,4 @@ import { Diagnostic } from "vscode-languageserver-types";
|
|
|
2
2
|
import { NodeIdMap } from "@microsoft/powerquery-parser/lib/powerquery-parser/parser";
|
|
3
3
|
import { Inspection } from "..";
|
|
4
4
|
import { ValidationSettings } from "./validationSettings";
|
|
5
|
-
export declare function validateInvokeExpression(validationSettings: ValidationSettings, nodeIdMapCollection: NodeIdMap.Collection,
|
|
5
|
+
export declare function validateInvokeExpression(validationSettings: ValidationSettings, nodeIdMapCollection: NodeIdMap.Collection, typeCache?: Inspection.TypeCache): Promise<Diagnostic[]>;
|
|
@@ -19,18 +19,18 @@ const parser_1 = require("@microsoft/powerquery-parser/lib/powerquery-parser/par
|
|
|
19
19
|
const __1 = require("..");
|
|
20
20
|
const localization_1 = require("../localization");
|
|
21
21
|
const diagnosticErrorCode_1 = require("../diagnosticErrorCode");
|
|
22
|
-
function validateInvokeExpression(validationSettings, nodeIdMapCollection,
|
|
22
|
+
function validateInvokeExpression(validationSettings, nodeIdMapCollection, typeCache) {
|
|
23
23
|
return __awaiter(this, void 0, void 0, function* () {
|
|
24
|
-
const trace = validationSettings.traceManager.entry("Validation" /* Validation */, validateInvokeExpression.name, validationSettings.
|
|
25
|
-
const updatedSettings = Object.assign(Object.assign({}, validationSettings), {
|
|
26
|
-
const
|
|
27
|
-
if (
|
|
24
|
+
const trace = validationSettings.traceManager.entry("Validation" /* Validation */, validateInvokeExpression.name, validationSettings.initialCorrelationId);
|
|
25
|
+
const updatedSettings = Object.assign(Object.assign({}, validationSettings), { initialCorrelationId: trace.id });
|
|
26
|
+
const invokeExpressionIds = nodeIdMapCollection.idsByNodeKind.get("InvokeExpression" /* InvokeExpression */);
|
|
27
|
+
if (invokeExpressionIds === undefined) {
|
|
28
28
|
trace.exit();
|
|
29
29
|
return [];
|
|
30
30
|
}
|
|
31
31
|
const inspectionTasks = [];
|
|
32
|
-
for (const nodeId of
|
|
33
|
-
inspectionTasks.push(__1.Inspection.tryInvokeExpression(updatedSettings, nodeIdMapCollection, nodeId,
|
|
32
|
+
for (const nodeId of invokeExpressionIds) {
|
|
33
|
+
inspectionTasks.push(__1.Inspection.tryInvokeExpression(updatedSettings, nodeIdMapCollection, nodeId, typeCache));
|
|
34
34
|
}
|
|
35
35
|
const inspections = yield Promise.all(inspectionTasks);
|
|
36
36
|
const diagnosticTasks = [];
|
|
@@ -52,15 +52,15 @@ exports.validateInvokeExpression = validateInvokeExpression;
|
|
|
52
52
|
function invokeExpressionToDiagnostics(validationSettings, nodeIdMapCollection, inspected) {
|
|
53
53
|
return __awaiter(this, void 0, void 0, function* () {
|
|
54
54
|
const result = [];
|
|
55
|
-
if (inspected.
|
|
56
|
-
const invokeExpressionArguments = inspected.
|
|
57
|
-
const givenArguments = inspected.
|
|
55
|
+
if (inspected.arguments !== undefined) {
|
|
56
|
+
const invokeExpressionArguments = inspected.arguments;
|
|
57
|
+
const givenArguments = inspected.arguments.givenArguments;
|
|
58
58
|
const invokeExpressionRange = powerquery_parser_1.Assert.asDefined(yield __1.PositionUtils.createRangeFromXorNode(nodeIdMapCollection, inspected.invokeExpressionXorNode), "expected at least one leaf node under InvokeExpression");
|
|
59
|
-
const
|
|
59
|
+
const functionName = parser_1.NodeIdMapUtils.invokeExpressionIdentifierLiteral(nodeIdMapCollection, inspected.invokeExpressionXorNode.node.id);
|
|
60
60
|
for (const [argIndex, mismatch] of invokeExpressionArguments.typeChecked.invalid.entries()) {
|
|
61
61
|
// eslint-disable-next-line no-await-in-loop
|
|
62
|
-
const
|
|
63
|
-
result.push(createDiagnosticForArgumentMismatch(validationSettings, mismatch,
|
|
62
|
+
const givenArgRange = yield __1.PositionUtils.createRangeFromXorNode(nodeIdMapCollection, givenArguments[argIndex]);
|
|
63
|
+
result.push(createDiagnosticForArgumentMismatch(validationSettings, mismatch, functionName, invokeExpressionRange, givenArgRange));
|
|
64
64
|
}
|
|
65
65
|
const numGivenArguments = invokeExpressionArguments.givenArguments.length;
|
|
66
66
|
if (numGivenArguments < invokeExpressionArguments.numMinExpectedArguments ||
|
|
@@ -81,22 +81,22 @@ function createDiagnosticForArgumentNumberMismatch(validationSettings, invokeExp
|
|
|
81
81
|
source: validationSettings.source,
|
|
82
82
|
};
|
|
83
83
|
}
|
|
84
|
-
function createDiagnosticForArgumentMismatch(validationSettings, mismatch,
|
|
84
|
+
function createDiagnosticForArgumentMismatch(validationSettings, mismatch, functionName, invokeExpressionRange, givenArgRange) {
|
|
85
85
|
var _a;
|
|
86
86
|
let range;
|
|
87
87
|
let message;
|
|
88
88
|
const parameter = mismatch.expected;
|
|
89
89
|
const argName = parameter.nameLiteral;
|
|
90
|
-
const expected = language_1.TypeUtils.nameOfTypeKind((_a = parameter.
|
|
90
|
+
const expected = language_1.TypeUtils.nameOfTypeKind((_a = parameter.type) !== null && _a !== void 0 ? _a : language_1.Type.AnyInstance.kind);
|
|
91
91
|
// An argument containing at least one leaf node was given.
|
|
92
|
-
if (
|
|
92
|
+
if (givenArgRange) {
|
|
93
93
|
const actual = language_1.TypeUtils.nameOfTypeKind(powerquery_parser_1.Assert.asDefined(mismatch.actual).kind);
|
|
94
|
-
range =
|
|
95
|
-
message = createTypeMismatchMessage(validationSettings.locale,
|
|
94
|
+
range = givenArgRange;
|
|
95
|
+
message = createTypeMismatchMessage(validationSettings.locale, functionName, argName, expected, actual);
|
|
96
96
|
}
|
|
97
97
|
else {
|
|
98
98
|
range = invokeExpressionRange;
|
|
99
|
-
message = createMissingMandatoryMessage(validationSettings.locale,
|
|
99
|
+
message = createMissingMandatoryMessage(validationSettings.locale, functionName, argName);
|
|
100
100
|
}
|
|
101
101
|
return {
|
|
102
102
|
code: diagnosticErrorCode_1.DiagnosticErrorCode.InvokeArgumentTypeMismatch,
|
|
@@ -106,12 +106,12 @@ function createDiagnosticForArgumentMismatch(validationSettings, mismatch, maybe
|
|
|
106
106
|
source: validationSettings.source,
|
|
107
107
|
};
|
|
108
108
|
}
|
|
109
|
-
function createMissingMandatoryMessage(locale,
|
|
109
|
+
function createMissingMandatoryMessage(locale, functionName, argName) {
|
|
110
110
|
const templates = localization_1.LocalizationUtils.getLocalizationTemplates(locale);
|
|
111
|
-
return localization_1.Localization.error_validation_invokeExpression_missingMandatory(templates,
|
|
111
|
+
return localization_1.Localization.error_validation_invokeExpression_missingMandatory(templates, functionName, argName);
|
|
112
112
|
}
|
|
113
|
-
function createTypeMismatchMessage(locale,
|
|
113
|
+
function createTypeMismatchMessage(locale, functionName, argName, expected, actual) {
|
|
114
114
|
const templates = localization_1.LocalizationUtils.getLocalizationTemplates(locale);
|
|
115
|
-
return localization_1.Localization.error_validation_invokeExpression_typeMismatch(templates,
|
|
115
|
+
return localization_1.Localization.error_validation_invokeExpression_typeMismatch(templates, functionName, argName, expected, actual);
|
|
116
116
|
}
|
|
117
117
|
//# sourceMappingURL=validateInvokeExpression.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateInvokeExpression.js","sourceRoot":"","sources":["../../../src/powerquery-language-services/validate/validateInvokeExpression.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;;;;;;;;;AAElC,oEAAmE;AACnE,0FAAmG;AACnG,6EAA6E;AAC7E,sFAAgH;AAIhH,0BAA+C;AAC/C,kDAAkE;AAClE,gEAA6D;AAK7D,SAAsB,wBAAwB,CAC1C,kBAAsC,EACtC,mBAAyC,EACzC,
|
|
1
|
+
{"version":3,"file":"validateInvokeExpression.js","sourceRoot":"","sources":["../../../src/powerquery-language-services/validate/validateInvokeExpression.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { Diagnostic } from "vscode-languageserver-types";
|
|
2
|
+
import { ParseError } from "@microsoft/powerquery-parser/lib/powerquery-parser/parser";
|
|
3
|
+
import { ValidationSettings } from "./validationSettings";
|
|
4
|
+
export declare function validateParse(parseError: ParseError.ParseError | undefined, validationSettings: ValidationSettings): Promise<Diagnostic[]>;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) Microsoft Corporation.
|
|
3
|
+
// Licensed under the MIT license.
|
|
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
|
+
});
|
|
12
|
+
};
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.validateParse = void 0;
|
|
15
|
+
const PQP = require("@microsoft/powerquery-parser");
|
|
16
|
+
const vscode_languageserver_types_1 = require("vscode-languageserver-types");
|
|
17
|
+
const parser_1 = require("@microsoft/powerquery-parser/lib/powerquery-parser/parser");
|
|
18
|
+
const diagnosticErrorCode_1 = require("../diagnosticErrorCode");
|
|
19
|
+
function validateParse(parseError, validationSettings) {
|
|
20
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
21
|
+
if (parseError === undefined || !parser_1.ParseError.isParseError(parseError)) {
|
|
22
|
+
return [];
|
|
23
|
+
}
|
|
24
|
+
const innerError = parseError.innerError;
|
|
25
|
+
const errorToken = PQP.Parser.ParseError.tokenFrom(innerError);
|
|
26
|
+
const message = parseError.message;
|
|
27
|
+
const parseContextState = parseError.state.contextState;
|
|
28
|
+
let range;
|
|
29
|
+
if (errorToken !== undefined) {
|
|
30
|
+
range = {
|
|
31
|
+
start: {
|
|
32
|
+
line: errorToken.positionStart.lineNumber,
|
|
33
|
+
character: errorToken.positionStart.lineCodeUnit,
|
|
34
|
+
},
|
|
35
|
+
end: {
|
|
36
|
+
line: errorToken.positionEnd.lineNumber,
|
|
37
|
+
character: errorToken.positionEnd.lineCodeUnit,
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
const root = parseContextState.root;
|
|
43
|
+
if (root === undefined) {
|
|
44
|
+
return [];
|
|
45
|
+
}
|
|
46
|
+
const leaf = yield parser_1.NodeIdMapUtils.rightMostLeaf(parseError.state.contextState.nodeIdMapCollection, root.id);
|
|
47
|
+
if (leaf === undefined) {
|
|
48
|
+
return [];
|
|
49
|
+
}
|
|
50
|
+
const leafTokenRange = leaf.tokenRange;
|
|
51
|
+
range = {
|
|
52
|
+
start: {
|
|
53
|
+
line: leafTokenRange.positionStart.lineNumber,
|
|
54
|
+
character: leafTokenRange.positionStart.lineCodeUnit,
|
|
55
|
+
},
|
|
56
|
+
end: {
|
|
57
|
+
line: leafTokenRange.positionEnd.lineNumber,
|
|
58
|
+
character: leafTokenRange.positionEnd.lineCodeUnit,
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
return [
|
|
63
|
+
{
|
|
64
|
+
code: diagnosticErrorCode_1.DiagnosticErrorCode.ParseError,
|
|
65
|
+
message,
|
|
66
|
+
range,
|
|
67
|
+
severity: vscode_languageserver_types_1.DiagnosticSeverity.Error,
|
|
68
|
+
source: validationSettings === null || validationSettings === void 0 ? void 0 : validationSettings.source,
|
|
69
|
+
},
|
|
70
|
+
];
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
exports.validateParse = validateParse;
|
|
74
|
+
//# sourceMappingURL=validateParse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validateParse.js","sourceRoot":"","sources":["../../../src/powerquery-language-services/validate/validateParse.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;;;;;;;;;AAElC,oDAAoD;AACpD,6EAAoF;AACpF,sFAAqH;AAGrH,gEAA6D;AAG7D,SAAsB,aAAa,CAC/B,UAA6C,EAC7C,kBAAsC;;QAEtC,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,mBAAU,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE;YAClE,OAAO,EAAE,CAAC;SACb;QAED,MAAM,UAAU,GAAgC,UAAU,CAAC,UAAU,CAAC;QACtE,MAAM,UAAU,GAAyC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACrG,MAAM,OAAO,GAAW,UAAU,CAAC,OAAO,CAAC;QAC3C,MAAM,iBAAiB,GAAkC,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC;QAEvF,IAAI,KAAY,CAAC;QAEjB,IAAI,UAAU,KAAK,SAAS,EAAE;YAC1B,KAAK,GAAG;gBACJ,KAAK,EAAE;oBACH,IAAI,EAAE,UAAU,CAAC,aAAa,CAAC,UAAU;oBACzC,SAAS,EAAE,UAAU,CAAC,aAAa,CAAC,YAAY;iBACnD;gBACD,GAAG,EAAE;oBACD,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,UAAU;oBACvC,SAAS,EAAE,UAAU,CAAC,WAAW,CAAC,YAAY;iBACjD;aACJ,CAAC;SACL;aAAM;YACH,MAAM,IAAI,GAAmC,iBAAiB,CAAC,IAAI,CAAC;YAEpE,IAAI,IAAI,KAAK,SAAS,EAAE;gBACpB,OAAO,EAAE,CAAC;aACb;YAED,MAAM,IAAI,GAA0B,MAAM,uBAAc,CAAC,aAAa,CAClE,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,mBAAmB,EACjD,IAAI,CAAC,EAAE,CACV,CAAC;YAEF,IAAI,IAAI,KAAK,SAAS,EAAE;gBACpB,OAAO,EAAE,CAAC;aACb;YAED,MAAM,cAAc,GAAkC,IAAI,CAAC,UAAU,CAAC;YAEtE,KAAK,GAAG;gBACJ,KAAK,EAAE;oBACH,IAAI,EAAE,cAAc,CAAC,aAAa,CAAC,UAAU;oBAC7C,SAAS,EAAE,cAAc,CAAC,aAAa,CAAC,YAAY;iBACvD;gBACD,GAAG,EAAE;oBACD,IAAI,EAAE,cAAc,CAAC,WAAW,CAAC,UAAU;oBAC3C,SAAS,EAAE,cAAc,CAAC,WAAW,CAAC,YAAY;iBACrD;aACJ,CAAC;SACL;QAED,OAAO;YACH;gBACI,IAAI,EAAE,yCAAmB,CAAC,UAAU;gBACpC,OAAO;gBACP,KAAK;gBACL,QAAQ,EAAE,gDAAkB,CAAC,KAAK;gBAClC,MAAM,EAAE,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,MAAM;aACrC;SACJ,CAAC;IACN,CAAC;CAAA;AAjED,sCAiEC"}
|
|
@@ -21,18 +21,18 @@ const jaroWinkler_1 = require("../jaroWinkler");
|
|
|
21
21
|
const diagnosticErrorCode_1 = require("../diagnosticErrorCode");
|
|
22
22
|
function validateUnknownIdentifiers(validationSettings, nodeIdMapCollection, typeCache) {
|
|
23
23
|
return __awaiter(this, void 0, void 0, function* () {
|
|
24
|
-
const trace = validationSettings.traceManager.entry("Validation" /* Validation */, validateUnknownIdentifiers.name, validationSettings.
|
|
25
|
-
const updatedSettings = Object.assign(Object.assign({}, validationSettings), {
|
|
24
|
+
const trace = validationSettings.traceManager.entry("Validation" /* Validation */, validateUnknownIdentifiers.name, validationSettings.initialCorrelationId);
|
|
25
|
+
const updatedSettings = Object.assign(Object.assign({}, validationSettings), { initialCorrelationId: trace.id });
|
|
26
26
|
// Grab all identifiers in the given context.
|
|
27
27
|
const identifierValues = findIdentifierAsts(nodeIdMapCollection);
|
|
28
28
|
// For each identifier create a Promise<TriedScope>, then await on all.
|
|
29
29
|
const identifiersWithNodeScope = yield powerquery_parser_1.ArrayUtils.mapAsync(identifierValues, (identifier) => __awaiter(this, void 0, void 0, function* () {
|
|
30
|
-
const
|
|
31
|
-
const literal =
|
|
30
|
+
const identifierExpression = parser_1.NodeIdMapUtils.parentAstChecked(nodeIdMapCollection, identifier.id, "IdentifierExpression" /* IdentifierExpression */);
|
|
31
|
+
const literal = identifierExpression && identifierExpression.inclusiveConstant !== undefined
|
|
32
32
|
? `@${identifier.literal}`
|
|
33
33
|
: identifier.literal;
|
|
34
34
|
return {
|
|
35
|
-
identifier:
|
|
35
|
+
identifier: identifierExpression !== null && identifierExpression !== void 0 ? identifierExpression : identifier,
|
|
36
36
|
literal,
|
|
37
37
|
triedNodeScope: yield __1.Inspection.tryNodeScope(updatedSettings, nodeIdMapCollection, identifier.id, typeCache.scopeById),
|
|
38
38
|
};
|
|
@@ -47,17 +47,16 @@ exports.validateUnknownIdentifiers = validateUnknownIdentifiers;
|
|
|
47
47
|
// For context, "Tbl.AsdC" has a score of ~0.59 against "Table.AddColumn"
|
|
48
48
|
const JaroWinklerSuggestionThreshold = 0.9;
|
|
49
49
|
function findIdentifierAsts(nodeIdMapCollection) {
|
|
50
|
-
const
|
|
51
|
-
if (
|
|
50
|
+
const identifiers = nodeIdMapCollection.idsByNodeKind.get("Identifier" /* Identifier */);
|
|
51
|
+
if (identifiers === undefined) {
|
|
52
52
|
return [];
|
|
53
53
|
}
|
|
54
54
|
const astNodeById = nodeIdMapCollection.astNodeById;
|
|
55
55
|
const result = [];
|
|
56
|
-
for (const identifierId of
|
|
57
|
-
const
|
|
58
|
-
if (
|
|
59
|
-
|
|
60
|
-
result.push(maybeIdentifier);
|
|
56
|
+
for (const identifierId of identifiers.values()) {
|
|
57
|
+
const identifier = astNodeById.get(identifierId);
|
|
58
|
+
if (identifier !== undefined && identifier.identifierContextKind === "Value" /* Value */) {
|
|
59
|
+
result.push(identifier);
|
|
61
60
|
}
|
|
62
61
|
}
|
|
63
62
|
return result;
|
|
@@ -74,7 +73,12 @@ function findUnknownIdentifiers(validationSettings, identifiersWithNodeScope, co
|
|
|
74
73
|
const literal = identifierWithNodeScope.literal;
|
|
75
74
|
if (!nodeScope.has(literal) &&
|
|
76
75
|
!(literal[0] === "@" && nodeScope.has(literal.slice(1))) &&
|
|
77
|
-
!validationSettings.library.libraryDefinitions.has(literal)
|
|
76
|
+
!validationSettings.library.libraryDefinitions.has(literal) &&
|
|
77
|
+
// even no external type found
|
|
78
|
+
!validationSettings.library.externalTypeResolver({
|
|
79
|
+
kind: "Value" /* Value */,
|
|
80
|
+
identifierLiteral: literal,
|
|
81
|
+
})) {
|
|
78
82
|
const knownIdentifiers = [
|
|
79
83
|
...nodeScope.keys(),
|
|
80
84
|
...validationSettings.library.libraryDefinitions.keys(),
|
|
@@ -83,7 +87,7 @@ function findUnknownIdentifiers(validationSettings, identifiersWithNodeScope, co
|
|
|
83
87
|
unknownIdentifiers.push({
|
|
84
88
|
identifier,
|
|
85
89
|
literal,
|
|
86
|
-
|
|
90
|
+
suggestion: jaroWinklerScore > JaroWinklerSuggestionThreshold ? suggestion : undefined,
|
|
87
91
|
});
|
|
88
92
|
}
|
|
89
93
|
}
|
|
@@ -94,7 +98,7 @@ function unknownIdentifiersToDiagnostics(validationSettings, unknownIdentifiers)
|
|
|
94
98
|
const templates = localization_1.LocalizationUtils.getLocalizationTemplates(validationSettings.locale);
|
|
95
99
|
return unknownIdentifiers.map((unknownIdentifier) => ({
|
|
96
100
|
code: diagnosticErrorCode_1.DiagnosticErrorCode.UnknownIdentifier,
|
|
97
|
-
message: localization_1.Localization.error_validation_unknownIdentifier(templates, unknownIdentifier.literal, unknownIdentifier.
|
|
101
|
+
message: localization_1.Localization.error_validation_unknownIdentifier(templates, unknownIdentifier.literal, unknownIdentifier.suggestion),
|
|
98
102
|
range: __1.PositionUtils.createRangeFromTokenRange(unknownIdentifier.identifier.tokenRange),
|
|
99
103
|
severity: vscode_languageserver_types_1.DiagnosticSeverity.Error,
|
|
100
104
|
source: validationSettings.source,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateUnknownIdentifiers.js","sourceRoot":"","sources":["../../../src/powerquery-language-services/validate/validateUnknownIdentifiers.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;;;;;;;;;AAElC,oEAAuE;AACvE,6EAA6E;AAC7E,sFAAsG;AAItG,0BAA+C;AAC/C,kDAAkE;AAClE,gDAAuD;AACvD,gEAA6D;
|
|
1
|
+
{"version":3,"file":"validateUnknownIdentifiers.js","sourceRoot":"","sources":["../../../src/powerquery-language-services/validate/validateUnknownIdentifiers.ts"],"names":[],"mappings":"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"}
|