Chromium Code Reviews| Index: pkg/analysis_services/lib/src/correction/fix.dart |
| diff --git a/pkg/analysis_services/lib/src/correction/fix.dart b/pkg/analysis_services/lib/src/correction/fix.dart |
| index 9d463ed0d12e0f9b858202ad1cf90b36c9f0f71b..5a1a057547826e1b604779cdf32c19d8add960b5 100644 |
| --- a/pkg/analysis_services/lib/src/correction/fix.dart |
| +++ b/pkg/analysis_services/lib/src/correction/fix.dart |
| @@ -1029,7 +1029,10 @@ class FixProcessor { |
| if (_mayBeTypeIdentifier(node)) { |
| String name = (node as SimpleIdentifier).name; |
| _ClosestElementFinder finder = |
| - new _ClosestElementFinder(name, (Element element) => element is ClassElement); |
| + new _ClosestElementFinder( |
| + name, |
| + (Element element) => element is ClassElement, |
| + 5); |
| // find closest element |
| { |
| // elements of this library |
| @@ -1045,7 +1048,7 @@ class FixProcessor { |
| } |
| } |
| // if we have close enough element, suggest to use it |
| - if (finder != null && finder._distance < 5) { |
| + if (finder._element != null) { |
|
Paul Berry
2014/07/25 19:53:26
I think this introduces an unintentional off-by-on
scheglov
2014/07/25 21:18:24
Done.
|
| String closestName = finder._element.name; |
| _addReplaceEdit(rf.rangeNode(node), closestName); |
| // add proposal |
| @@ -1107,7 +1110,8 @@ class FixProcessor { |
| _ClosestElementFinder finder = |
| new _ClosestElementFinder( |
| name, |
| - (Element element) => element is FunctionElement); |
| + (Element element) => element is FunctionElement, |
| + 5); |
| // this library |
| for (CompilationUnitElement unit in unitLibraryElement.units) { |
| finder._updateList(unit.functions); |
| @@ -1120,9 +1124,8 @@ class FixProcessor { |
| } |
| } |
| // if we have close enough element, suggest to use it |
| - String closestName = null; |
| - if (finder != null && finder._distance < 5) { |
| - closestName = finder._element.name; |
| + if (finder._element != null) { |
| + String closestName = finder._element.name; |
| _addReplaceEdit(rf.rangeNode(node), closestName); |
| _addFix(FixKind.CHANGE_TO, [closestName]); |
| } |
| @@ -1247,9 +1250,10 @@ class FixProcessor { |
| MethodInvocation invocation = node.parent as MethodInvocation; |
| String name = (node as SimpleIdentifier).name; |
| _ClosestElementFinder finder = |
| - new _ClosestElementFinder(name, (Element element) { |
| - return element is MethodElement && !element.isOperator; |
| - }); |
| + new _ClosestElementFinder( |
| + name, |
| + (Element element) => element is MethodElement && !element.isOperator, |
| + 5); |
| // unqualified invocation |
| Expression target = invocation.realTarget; |
| if (target == null) { |
| @@ -1267,9 +1271,8 @@ class FixProcessor { |
| } |
| } |
| // if we have close enough element, suggest to use it |
| - String closestName = null; |
| - if (finder != null && finder._distance < 5) { |
| - closestName = finder._element.name; |
| + if (finder._element != null) { |
| + String closestName = finder._element.name; |
| _addReplaceEdit(rf.rangeNode(node), closestName); |
| _addFix(FixKind.CHANGE_TO, [closestName]); |
| } |
| @@ -1923,13 +1926,13 @@ class _ClosestElementFinder { |
| final Predicate<Element> _predicate; |
| Element _element = null; |
| - int _distance = 1 << 10; |
| + int _distance; |
| - _ClosestElementFinder(this._targetName, this._predicate); |
| + _ClosestElementFinder(this._targetName, this._predicate, this._distance); |
| void _update(Element element) { |
| if (_predicate(element)) { |
| - int memberDistance = getLevenshteinDistance(element.name, _targetName); |
| + int memberDistance = levenshtein(element.name, _targetName, _distance); |
| if (memberDistance < _distance) { |
| _element = element; |
| _distance = memberDistance; |