mirror of
https://github.com/dart-lang/sdk
synced 2024-07-20 09:27:03 +00:00
linter: Move two top-level functions to be shared extensions
Cq-Include-Trybots: luci.dart.try:flutter-analyze-try,analyzer-win-release-try,pkg-win-release-try Change-Id: I4a9dc49c6593af899de07787fd77bc0bc9d4a6d8 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/372184 Reviewed-by: Phil Quitslund <pquitslund@google.com> Auto-Submit: Sam Rawlins <srawlins@google.com> Commit-Queue: Phil Quitslund <pquitslund@google.com>
This commit is contained in:
parent
fbf0b08568
commit
4babb9deb1
|
@ -130,19 +130,6 @@ Element? getWriteOrReadElement(SimpleIdentifier node) {
|
|||
bool hasConstantError(Expression node) =>
|
||||
node.computeConstantValue().errors.isNotEmpty;
|
||||
|
||||
/// Returns `true` if this [node] is the child of a private compilation unit
|
||||
/// member.
|
||||
bool inPrivateMember(AstNode node) {
|
||||
var parent = node.parent;
|
||||
if (parent is NamedCompilationUnitMember) {
|
||||
return isPrivate(parent.name);
|
||||
}
|
||||
if (parent is ExtensionDeclaration) {
|
||||
return parent.name == null || isPrivate(parent.name);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/// Returns `true` if this element is the `==` method declaration.
|
||||
bool isEquals(ClassMember element) =>
|
||||
element is MethodDeclaration && element.name.lexeme == '==';
|
||||
|
@ -193,10 +180,6 @@ bool isKeyWord(String id) => Keyword.keywords.containsKey(id);
|
|||
/// Returns `true` if the given [ClassMember] is a method.
|
||||
bool isMethod(ClassMember m) => m is MethodDeclaration;
|
||||
|
||||
/// Check if the given identifier has a private name.
|
||||
bool isPrivate(Token? name) =>
|
||||
name != null ? Identifier.isPrivateName(name.lexeme) : false;
|
||||
|
||||
/// Returns `true` if the given [ClassMember] is a public method.
|
||||
bool isPublicMethod(ClassMember m) {
|
||||
var declaredElement = m.declaredElement;
|
||||
|
|
|
@ -29,6 +29,16 @@ class EnumLikeClassDescription {
|
|||
extension AstNodeExtension on AstNode {
|
||||
Iterable<AstNode> get childNodes => childEntities.whereType<AstNode>();
|
||||
|
||||
/// Whether this is the child of a private compilation unit member.
|
||||
bool get inPrivateMember {
|
||||
var parent = this.parent;
|
||||
return switch (parent) {
|
||||
NamedCompilationUnitMember() => parent.name.isPrivate,
|
||||
ExtensionDeclaration() => parent.name == null || parent.name.isPrivate,
|
||||
_ => false,
|
||||
};
|
||||
}
|
||||
|
||||
bool get isAugmentation {
|
||||
var self = this;
|
||||
return switch (self) {
|
||||
|
@ -644,6 +654,12 @@ extension StringExtension on String {
|
|||
|
||||
extension TokenExtension on Token? {
|
||||
bool get isFinal => this?.keyword == Keyword.FINAL;
|
||||
|
||||
/// Whether the given identifier has a private name.
|
||||
bool get isPrivate {
|
||||
var self = this;
|
||||
return self != null ? Identifier.isPrivateName(self.lexeme) : false;
|
||||
}
|
||||
}
|
||||
|
||||
extension TokenTypeExtension on TokenType {
|
||||
|
|
|
@ -9,7 +9,6 @@ import 'package:analyzer/dart/element/element.dart';
|
|||
import 'package:analyzer/dart/element/type.dart';
|
||||
|
||||
import '../analyzer.dart';
|
||||
import '../ast.dart';
|
||||
import '../extensions.dart';
|
||||
import '../util/flutter_utils.dart';
|
||||
|
||||
|
@ -129,7 +128,7 @@ class _Visitor extends SimpleAstVisitor {
|
|||
}
|
||||
|
||||
bool skipForDiagnostic({Element? element, DartType? type, Token? name}) =>
|
||||
isPrivate(name) || _isOverridingMember(element) || isWidgetProperty(type);
|
||||
name.isPrivate || _isOverridingMember(element) || isWidgetProperty(type);
|
||||
|
||||
@override
|
||||
void visitClassDeclaration(ClassDeclaration node) {
|
||||
|
|
|
@ -132,7 +132,7 @@ class _Visitor extends SimpleAstVisitor {
|
|||
|
||||
// Identify getter/setter pairs.
|
||||
for (var member in members) {
|
||||
if (member is MethodDeclaration && !isPrivate(member.name)) {
|
||||
if (member is MethodDeclaration && !member.name.isPrivate) {
|
||||
if (member.isGetter) {
|
||||
getters[member.name.lexeme] = member;
|
||||
} else if (member.isSetter) {
|
||||
|
@ -176,7 +176,7 @@ class _Visitor extends SimpleAstVisitor {
|
|||
|
||||
@override
|
||||
void visitClassTypeAlias(ClassTypeAlias node) {
|
||||
if (!isPrivate(node.name)) {
|
||||
if (!node.name.isPrivate) {
|
||||
check(node);
|
||||
}
|
||||
}
|
||||
|
@ -195,7 +195,7 @@ class _Visitor extends SimpleAstVisitor {
|
|||
for (var member in node.declarations) {
|
||||
if (member is FunctionDeclaration) {
|
||||
var name = member.name;
|
||||
if (!isPrivate(name) && name.lexeme != 'main') {
|
||||
if (!name.isPrivate && name.lexeme != 'main') {
|
||||
if (member.isGetter) {
|
||||
getters[member.name.lexeme] = member;
|
||||
} else if (member.isSetter) {
|
||||
|
@ -231,7 +231,7 @@ class _Visitor extends SimpleAstVisitor {
|
|||
|
||||
@override
|
||||
void visitConstructorDeclaration(ConstructorDeclaration node) {
|
||||
if (inPrivateMember(node) || isPrivate(node.name)) return;
|
||||
if (node.inPrivateMember || node.name.isPrivate) return;
|
||||
var parent = node.parent;
|
||||
if (parent is EnumDeclaration) return;
|
||||
if (parent != null && parent.isEffectivelyPrivate) return;
|
||||
|
@ -244,14 +244,14 @@ class _Visitor extends SimpleAstVisitor {
|
|||
// TODO(pq): update this to be called from the parent (like with visitMembers)
|
||||
if (node.isInternal) return;
|
||||
|
||||
if (!inPrivateMember(node) && !isPrivate(node.name)) {
|
||||
if (!node.inPrivateMember && !node.name.isPrivate) {
|
||||
check(node);
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void visitEnumDeclaration(EnumDeclaration node) {
|
||||
if (isPrivate(node.name)) return;
|
||||
if (node.name.isPrivate) return;
|
||||
if (node.isInternal) return;
|
||||
|
||||
check(node);
|
||||
|
@ -260,7 +260,7 @@ class _Visitor extends SimpleAstVisitor {
|
|||
|
||||
@override
|
||||
void visitExtensionDeclaration(ExtensionDeclaration node) {
|
||||
if (node.name == null || isPrivate(node.name)) return;
|
||||
if (node.name == null || node.name.isPrivate) return;
|
||||
if (node.isInternal) return;
|
||||
|
||||
check(node);
|
||||
|
@ -278,11 +278,11 @@ class _Visitor extends SimpleAstVisitor {
|
|||
void visitFieldDeclaration(FieldDeclaration node) {
|
||||
// TODO(pq): update this to be called from the parent (like with visitMembers)
|
||||
if (node.isInternal) return;
|
||||
if (inPrivateMember(node)) return;
|
||||
if (node.inPrivateMember) return;
|
||||
if (node.isInvalidExtensionTypeField) return;
|
||||
|
||||
for (var field in node.fields.variables) {
|
||||
if (!isPrivate(field.name)) {
|
||||
if (!field.name.isPrivate) {
|
||||
check(field);
|
||||
}
|
||||
}
|
||||
|
@ -290,14 +290,14 @@ class _Visitor extends SimpleAstVisitor {
|
|||
|
||||
@override
|
||||
void visitFunctionTypeAlias(FunctionTypeAlias node) {
|
||||
if (!isPrivate(node.name)) {
|
||||
if (!node.name.isPrivate) {
|
||||
check(node);
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void visitGenericTypeAlias(GenericTypeAlias node) {
|
||||
if (!isPrivate(node.name)) {
|
||||
if (!node.name.isPrivate) {
|
||||
check(node);
|
||||
}
|
||||
}
|
||||
|
@ -310,15 +310,15 @@ class _Visitor extends SimpleAstVisitor {
|
|||
|
||||
@override
|
||||
void visitTopLevelVariableDeclaration(TopLevelVariableDeclaration node) {
|
||||
for (var decl in node.variables.variables) {
|
||||
if (!isPrivate(decl.name)) {
|
||||
check(decl);
|
||||
for (var variable in node.variables.variables) {
|
||||
if (!variable.name.isPrivate) {
|
||||
check(variable);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void _visitMembers(Declaration node, Token name, List<ClassMember> members) {
|
||||
if (isPrivate(name)) return;
|
||||
if (name.isPrivate) return;
|
||||
|
||||
check(node);
|
||||
checkMethods(members);
|
||||
|
|
|
@ -7,7 +7,6 @@ import 'package:analyzer/dart/ast/visitor.dart';
|
|||
import 'package:analyzer/dart/element/type.dart';
|
||||
|
||||
import '../analyzer.dart';
|
||||
import '../ast.dart';
|
||||
import '../extensions.dart';
|
||||
import '../util/ascii_utils.dart';
|
||||
|
||||
|
@ -95,7 +94,7 @@ class _Visitor extends SimpleAstVisitor<void> {
|
|||
void visitFunctionDeclaration(FunctionDeclaration node) {
|
||||
if (node.isAugmentation) return;
|
||||
|
||||
if (!isPrivate(node.name) &&
|
||||
if (!node.name.isPrivate &&
|
||||
// Only report on top-level functions, not those declared within the
|
||||
// scope of another function.
|
||||
node.parent is CompilationUnit) {
|
||||
|
@ -109,7 +108,7 @@ class _Visitor extends SimpleAstVisitor<void> {
|
|||
|
||||
@override
|
||||
void visitFunctionTypeAlias(FunctionTypeAlias node) {
|
||||
if (!isPrivate(node.name)) {
|
||||
if (!node.name.isPrivate) {
|
||||
if (node.returnType == null) {
|
||||
rule.reportLintForToken(node.name);
|
||||
} else {
|
||||
|
@ -122,7 +121,7 @@ class _Visitor extends SimpleAstVisitor<void> {
|
|||
void visitMethodDeclaration(MethodDeclaration node) {
|
||||
if (node.isAugmentation) return;
|
||||
|
||||
if (!isPrivate(node.name)) {
|
||||
if (!node.name.isPrivate) {
|
||||
if (node.returnType == null && !node.isSetter) {
|
||||
rule.reportLintForToken(node.name);
|
||||
} else {
|
||||
|
@ -165,7 +164,7 @@ class _VisitorHelper extends RecursiveAstVisitor {
|
|||
|
||||
@override
|
||||
void visitVariableDeclaration(VariableDeclaration node) {
|
||||
if (!isPrivate(node.name) &&
|
||||
if (!node.name.isPrivate &&
|
||||
!node.isConst &&
|
||||
!(node.isFinal && hasInferredType(node))) {
|
||||
rule.reportLintForToken(node.name);
|
||||
|
|
Loading…
Reference in a new issue