Favour exact-match spelling suggestions

Previously, the first match that was close enough was returned as the
spelling suggestion. Now, if there is a candidate that differs only by
case, it will always be the suggestion.
This commit is contained in:
Nathan Shively-Sanders 2017-06-05 11:17:44 -07:00
parent ccc60c8b3b
commit 1d8f57e7b3
4 changed files with 53 additions and 1 deletions

View File

@ -14522,6 +14522,7 @@ namespace ts {
const maximumLengthDifference = Math.min(3, name.length * 0.34);
let bestDistance = Number.MAX_VALUE;
let bestCandidate = undefined;
let justCheckExactMatches = false;
if (name.length > 30) {
return undefined;
}
@ -14534,6 +14535,9 @@ namespace ts {
if (candidateName === name) {
return candidate;
}
if (justCheckExactMatches) {
continue;
}
if (candidateName.length < 3 ||
name.length < 3 ||
candidateName === "eval" ||
@ -14549,7 +14553,8 @@ namespace ts {
continue;
}
if (distance < 3) {
return candidate;
justCheckExactMatches = true;
bestCandidate = candidate;
}
else if (distance < bestDistance) {
bestDistance = distance;

View File

@ -0,0 +1,16 @@
tests/cases/compiler/exactSpellingSuggestion.ts(9,4): error TS2551: Property 'bit_2' does not exist on type 'typeof U8'. Did you mean 'BIT_2'?
==== tests/cases/compiler/exactSpellingSuggestion.ts (1 errors) ====
// Fixes #16245 -- always suggest the exact match, even when
// other options are very close
enum U8 {
BIT_0 = 1 << 0,
BIT_1 = 1 << 1,
BIT_2 = 1 << 2
}
U8.bit_2
~~~~~
!!! error TS2551: Property 'bit_2' does not exist on type 'typeof U8'. Did you mean 'BIT_2'?

View File

@ -0,0 +1,22 @@
//// [exactSpellingSuggestion.ts]
// Fixes #16245 -- always suggest the exact match, even when
// other options are very close
enum U8 {
BIT_0 = 1 << 0,
BIT_1 = 1 << 1,
BIT_2 = 1 << 2
}
U8.bit_2
//// [exactSpellingSuggestion.js]
// Fixes #16245 -- always suggest the exact match, even when
// other options are very close
var U8;
(function (U8) {
U8[U8["BIT_0"] = 1] = "BIT_0";
U8[U8["BIT_1"] = 2] = "BIT_1";
U8[U8["BIT_2"] = 4] = "BIT_2";
})(U8 || (U8 = {}));
U8.bit_2;

View File

@ -0,0 +1,9 @@
// Fixes #16245 -- always suggest the exact match, even when
// other options are very close
enum U8 {
BIT_0 = 1 << 0,
BIT_1 = 1 << 1,
BIT_2 = 1 << 2
}
U8.bit_2