@microsoft/powerquery-language-services 0.3.21 → 0.3.22
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.
|
@@ -14,6 +14,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
14
14
|
exports.validateUnknownIdentifiers = void 0;
|
|
15
15
|
const powerquery_parser_1 = require("@microsoft/powerquery-parser");
|
|
16
16
|
const vscode_languageserver_types_1 = require("vscode-languageserver-types");
|
|
17
|
+
const parser_1 = require("@microsoft/powerquery-parser/lib/powerquery-parser/parser");
|
|
17
18
|
const __1 = require("..");
|
|
18
19
|
const localization_1 = require("../localization");
|
|
19
20
|
const jaroWinkler_1 = require("../jaroWinkler");
|
|
@@ -26,13 +27,23 @@ function validateUnknownIdentifiers(validationSettings, nodeIdMapCollection, typ
|
|
|
26
27
|
const updatedSettings = Object.assign(Object.assign({}, validationSettings), { maybeInitialCorrelationId: trace.id });
|
|
27
28
|
// Grab all identifiers in the value context.
|
|
28
29
|
const identifierValues = findIdentifierValues(nodeIdMapCollection);
|
|
29
|
-
// Create a zipped collection of [
|
|
30
|
+
// Create a zipped collection of: [
|
|
31
|
+
// value identifier,
|
|
32
|
+
// value identifier expression | undefined (if it exists),
|
|
33
|
+
// TriedNodeScope for the value identifier
|
|
34
|
+
// ]
|
|
30
35
|
const identifiersAndTriedNodeScopes = yield powerquery_parser_1.ArrayUtils.mapAsync(identifierValues, (identifier) => __awaiter(this, void 0, void 0, function* () {
|
|
31
36
|
return [
|
|
32
37
|
identifier,
|
|
38
|
+
parser_1.NodeIdMapUtils.maybeParentAstChecked(nodeIdMapCollection, identifier.id, "IdentifierExpression" /* IdentifierExpression */),
|
|
33
39
|
yield __1.Inspection.tryNodeScope(updatedSettings, nodeIdMapCollection, identifier.id, typeCache.scopeById),
|
|
34
40
|
];
|
|
35
41
|
}));
|
|
42
|
+
// Creates a zipped collection of: [
|
|
43
|
+
// unknown identifier | unknown identifier expression,
|
|
44
|
+
// unknown identifier literal,
|
|
45
|
+
// Jaro Winkler suggestion for the unknown literal if above a certain score threshold,
|
|
46
|
+
// ]
|
|
36
47
|
const unknownIdentifiers = findUnknownIdentifiers(validationSettings, identifiersAndTriedNodeScopes, trace.id);
|
|
37
48
|
const result = unknownIdentifiersToDiagnostics(updatedSettings, unknownIdentifiers);
|
|
38
49
|
trace.exit();
|
|
@@ -61,20 +72,23 @@ function findUnknownIdentifiers(validationSettings, identifiersAndTriedNodeScope
|
|
|
61
72
|
const unknownIdentifiers = [];
|
|
62
73
|
const numIdentifiers = identifiersAndTriedNodeScopes.length;
|
|
63
74
|
for (let index = 0; index < numIdentifiers; index += 1) {
|
|
64
|
-
const [identifier, triedNodeScope] = identifiersAndTriedNodeScopes[index];
|
|
75
|
+
const [identifier, maybeIdentifierExpression, triedNodeScope] = identifiersAndTriedNodeScopes[index];
|
|
65
76
|
if (powerquery_parser_1.ResultUtils.isError(triedNodeScope)) {
|
|
66
77
|
continue;
|
|
67
78
|
}
|
|
68
79
|
const nodeScope = triedNodeScope.value;
|
|
69
|
-
|
|
70
|
-
|
|
80
|
+
const literal = maybeIdentifierExpression && maybeIdentifierExpression.maybeInclusiveConstant !== undefined
|
|
81
|
+
? `@${identifier.literal}`
|
|
82
|
+
: identifier.literal;
|
|
83
|
+
if (!nodeScope.has(literal) && !validationSettings.library.libraryDefinitions.has(literal)) {
|
|
71
84
|
const knownIdentifiers = [
|
|
72
85
|
...nodeScope.keys(),
|
|
73
86
|
...validationSettings.library.libraryDefinitions.keys(),
|
|
74
87
|
];
|
|
75
|
-
const [jaroWinklerScore, suggestion] = (0, jaroWinkler_1.calculateJaroWinklers)(
|
|
88
|
+
const [jaroWinklerScore, suggestion] = (0, jaroWinkler_1.calculateJaroWinklers)(literal, knownIdentifiers);
|
|
76
89
|
unknownIdentifiers.push([
|
|
77
|
-
identifier,
|
|
90
|
+
maybeIdentifierExpression !== null && maybeIdentifierExpression !== void 0 ? maybeIdentifierExpression : identifier,
|
|
91
|
+
literal,
|
|
78
92
|
jaroWinklerScore > JaroWinklerSuggestionThreshold ? suggestion : undefined,
|
|
79
93
|
]);
|
|
80
94
|
}
|
|
@@ -84,9 +98,9 @@ function findUnknownIdentifiers(validationSettings, identifiersAndTriedNodeScope
|
|
|
84
98
|
}
|
|
85
99
|
function unknownIdentifiersToDiagnostics(validationSettings, unknownIdentifiers) {
|
|
86
100
|
const templates = localization_1.LocalizationUtils.getLocalizationTemplates(validationSettings.locale);
|
|
87
|
-
return unknownIdentifiers.map(([identifier, maybeSuggestion]) => ({
|
|
101
|
+
return unknownIdentifiers.map(([identifier, literal, maybeSuggestion]) => ({
|
|
88
102
|
code: diagnosticErrorCode_1.DiagnosticErrorCode.UnknownIdentifier,
|
|
89
|
-
message: localization_1.Localization.error_validation_unknownIdentifier(templates,
|
|
103
|
+
message: localization_1.Localization.error_validation_unknownIdentifier(templates, literal, maybeSuggestion),
|
|
90
104
|
range: __1.PositionUtils.createRangeFromTokenRange(identifier.tokenRange),
|
|
91
105
|
severity: vscode_languageserver_types_1.DiagnosticSeverity.Error,
|
|
92
106
|
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;
|
|
1
|
+
{"version":3,"file":"validateUnknownIdentifiers.js","sourceRoot":"","sources":["../../../src/powerquery-language-services/validate/validateUnknownIdentifiers.ts"],"names":[],"mappings":"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"}
|