| Index: pkg/analyzer/lib/src/generated/resolver.dart
|
| diff --git a/pkg/analyzer/lib/src/generated/resolver.dart b/pkg/analyzer/lib/src/generated/resolver.dart
|
| index 4a26effe6665c9b4ad48226946404a6a2de92b77..afeac824e31052b60c620d4ec51c3c2d70a27e25 100644
|
| --- a/pkg/analyzer/lib/src/generated/resolver.dart
|
| +++ b/pkg/analyzer/lib/src/generated/resolver.dart
|
| @@ -15320,7 +15320,7 @@ class _UnusedElementsVerifier extends RecursiveElementVisitor {
|
|
|
| @override
|
| visitLocalVariableElement(LocalVariableElement element) {
|
| - if (!_isUsedElement(element)) {
|
| + if (!_isUsedElement(element) && !_isNamedUnderscore(element)) {
|
| HintCode errorCode;
|
| if (_usedElements.isCatchException(element)) {
|
| errorCode = HintCode.UNUSED_CATCH_CLAUSE;
|
| @@ -15355,6 +15355,19 @@ class _UnusedElementsVerifier extends RecursiveElementVisitor {
|
| super.visitPropertyAccessorElement(element);
|
| }
|
|
|
| + bool _isNamedUnderscore(LocalVariableElement element) {
|
| + String name = element.name;
|
| + if (name != null) {
|
| + for (int index = name.length - 1; index >= 0; --index) {
|
| + if (name.codeUnitAt(index) != 0x5F) { // 0x5F => '_'
|
| + return false;
|
| + }
|
| + }
|
| + return true;
|
| + }
|
| + return false;
|
| + }
|
| +
|
| bool _isReadMember(Element element) {
|
| if (element.isPublic) {
|
| return true;
|
|
|