Skip to content

Commit 39c85ac

Browse files
srawlinsCommit Queue
authored andcommitted
analyzer: Count unused local functions in Element2.isWildcardVariable
I think this was just overlooked. While prefixes and local functions are not variables by any stretch, the feature name is "wildcard variables" so there you have it. This change allows us to remove some stale code in linter. Change-Id: I1fffe0a53042d3ba20208463b3587e8ad78a9424 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/416880 Commit-Queue: Samuel Rawlins <[email protected]> Reviewed-by: Phil Quitslund <[email protected]> Reviewed-by: Konstantin Shcheglov <[email protected]>
1 parent 4169209 commit 39c85ac

File tree

2 files changed

+9
-15
lines changed

2 files changed

+9
-15
lines changed

pkg/analyzer/lib/src/dart/element/extensions.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,8 @@ extension Element2Extension on Element2 {
7979
/// Whether this element is a wildcard variable.
8080
bool get isWildcardVariable {
8181
return name3 == '_' &&
82-
(this is LocalVariableElement2 ||
82+
(this is LocalFunctionElement ||
83+
this is LocalVariableElement2 ||
8384
this is PrefixElement2 ||
8485
this is TypeParameterElement2 ||
8586
(this is FormalParameterElement &&

pkg/analyzer/lib/src/error/unused_local_elements_verifier.dart

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import 'package:analyzer/src/dart/ast/ast.dart';
1515
import 'package:analyzer/src/dart/ast/extensions.dart';
1616
import 'package:analyzer/src/dart/element/element.dart'
1717
show JoinPatternVariableElementImpl2, MetadataImpl;
18+
import 'package:analyzer/src/dart/element/extensions.dart';
1819
import 'package:analyzer/src/dart/element/inheritance_manager3.dart';
1920
import 'package:analyzer/src/dart/element/member.dart' show ExecutableMember;
2021
import 'package:analyzer/src/dart/element/type.dart';
@@ -783,21 +784,13 @@ class UnusedLocalElementsVerifier extends RecursiveAstVisitor<void> {
783784

784785
/// Returns whether the name of [element] should be treated as a wildcard.
785786
bool _isNamedWildcard(LocalElement2 element) {
786-
// TODO(pq): ask the element once implemented.
787-
var name = element.name3;
788-
if (name == null) return false;
789-
790-
var length = name.length;
791-
if (length > 1 && _wildCardVariablesEnabled) return false;
792-
793-
for (int index = length - 1; index >= 0; --index) {
794-
if (name.codeUnitAt(index) != 0x5F) {
795-
// 0x5F => '_'
796-
return false;
797-
}
787+
if (_wildCardVariablesEnabled) {
788+
return element.isWildcardVariable;
789+
} else {
790+
var name = element.name3;
791+
if (name == null) return false;
792+
return name.codeUnits.every((e) => e == 0x5F /* '_' */);
798793
}
799-
800-
return true;
801794
}
802795

803796
bool _isPrivateClassOrExtension(Element2 element) =>

0 commit comments

Comments
 (0)