Skip to content

Commit 98f326b

Browse files
nex3jathak
andauthored
Convert visitor classes to mixins (#1784)
Co-authored-by: Jennifer Thakar <jathak@google.com>
1 parent 7695332 commit 98f326b

File tree

12 files changed

+30
-40
lines changed

12 files changed

+30
-40
lines changed

lib/src/ast/css/node.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ abstract class CssParentNode extends CssNode {
6262
}
6363

6464
/// The visitor used to implement [CssNode.isInvisible]
65-
class _IsInvisibleVisitor extends EveryCssVisitor {
65+
class _IsInvisibleVisitor with EveryCssVisitor {
6666
/// Whether to consider selectors with bogus combinators invisible.
6767
final bool includeBogus;
6868

lib/src/ast/sass/statement/mixin_rule.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ class MixinRule extends CallableDeclaration implements SassDeclaration {
5050

5151
/// A visitor for determining whether a [MixinRule] recursively contains a
5252
/// [ContentRule].
53-
class _HasContentVisitor extends StatementSearchVisitor<bool> {
53+
class _HasContentVisitor with StatementSearchVisitor<bool> {
5454
const _HasContentVisitor();
5555

5656
bool visitContentRule(_) => true;

lib/src/ast/selector.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ abstract class Selector {
9898
}
9999

100100
/// The visitor used to implement [Selector.isInvisible].
101-
class _IsInvisibleVisitor extends AnySelectorVisitor {
101+
class _IsInvisibleVisitor with AnySelectorVisitor {
102102
/// Whether to consider selectors with bogus combinators invisible.
103103
final bool includeBogus;
104104

@@ -128,7 +128,7 @@ class _IsInvisibleVisitor extends AnySelectorVisitor {
128128
}
129129

130130
/// The visitor used to implement [Selector.isBogus].
131-
class _IsBogusVisitor extends AnySelectorVisitor {
131+
class _IsBogusVisitor with AnySelectorVisitor {
132132
/// Whether to consider selectors with leading combinators as bogus.
133133
final bool includeLeadingCombinator;
134134

@@ -159,7 +159,7 @@ class _IsBogusVisitor extends AnySelectorVisitor {
159159
}
160160

161161
/// The visitor used to implement [Selector.isUseless]
162-
class _IsUselessVisitor extends AnySelectorVisitor {
162+
class _IsUselessVisitor with AnySelectorVisitor {
163163
const _IsUselessVisitor();
164164

165165
bool visitComplexSelector(ComplexSelector complex) =>

lib/src/visitor/any_selector.dart

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,7 @@ import 'interface/selector.dart';
1212
///
1313
/// Each method returns `false` by default.
1414
@internal
15-
abstract class AnySelectorVisitor implements SelectorVisitor<bool> {
16-
const AnySelectorVisitor();
17-
15+
mixin AnySelectorVisitor implements SelectorVisitor<bool> {
1816
bool visitComplexSelector(ComplexSelector complex) => complex.components
1917
.any((component) => visitCompoundSelector(component.selector));
2018

lib/src/visitor/every_css.dart

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,7 @@ import 'interface/css.dart';
1212
///
1313
/// Each method returns `false` by default.
1414
@internal
15-
abstract class EveryCssVisitor implements CssVisitor<bool> {
16-
const EveryCssVisitor();
17-
15+
mixin EveryCssVisitor implements CssVisitor<bool> {
1816
bool visitCssAtRule(CssAtRule node) =>
1917
node.children.every((child) => child.accept(this));
2018
bool visitCssComment(CssComment node) => false;

lib/src/visitor/find_dependencies.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ Tuple2<List<Uri>, List<Uri>> findDependencies(Stylesheet stylesheet) =>
1919

2020
/// A visitor that traverses a stylesheet and records, all `@import`, `@use`,
2121
/// and `@forward` rules (excluding built-in modules) it contains.
22-
class _FindDependenciesVisitor extends RecursiveStatementVisitor {
22+
class _FindDependenciesVisitor with RecursiveStatementVisitor {
2323
final _usesAndForwards = <Uri>[];
2424
final _imports = <Uri>[];
2525

lib/src/visitor/recursive_ast.dart

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,8 @@ import 'recursive_statement.dart';
2020
/// * [visitInterpolation]
2121
///
2222
/// {@category Visitor}
23-
abstract class RecursiveAstVisitor extends RecursiveStatementVisitor
23+
mixin RecursiveAstVisitor on RecursiveStatementVisitor
2424
implements ExpressionVisitor<void> {
25-
const RecursiveAstVisitor();
26-
2725
void visitAtRootRule(AtRootRule node) {
2826
node.query.andThen(visitInterpolation);
2927
super.visitAtRootRule(node);

lib/src/visitor/recursive_selector.dart

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,7 @@ import 'interface/selector.dart';
99
/// A visitor that recursively traverses each component of a Selector AST.
1010
///
1111
/// {@category Visitor}
12-
abstract class RecursiveSelectorVisitor implements SelectorVisitor<void> {
13-
const RecursiveSelectorVisitor();
14-
12+
mixin RecursiveSelectorVisitor implements SelectorVisitor<void> {
1513
void visitAttributeSelector(AttributeSelector attribute) {}
1614
void visitClassSelector(ClassSelector klass) {}
1715
void visitIDSelector(IDSelector id) {}

lib/src/visitor/recursive_statement.dart

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,7 @@ import 'interface/statement.dart';
1818
/// * [visitChildren]
1919
///
2020
/// {@category Visitor}
21-
abstract class RecursiveStatementVisitor implements StatementVisitor<void> {
22-
const RecursiveStatementVisitor();
23-
21+
mixin RecursiveStatementVisitor implements StatementVisitor<void> {
2422
void visitAtRootRule(AtRootRule node) {
2523
visitChildren(node.children);
2624
}

lib/src/visitor/statement_search.dart

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,7 @@ import 'recursive_statement.dart';
1818
/// This supports the same additional methods as [RecursiveStatementVisitor].
1919
///
2020
/// {@category Visitor}
21-
abstract class StatementSearchVisitor<T> implements StatementVisitor<T?> {
22-
const StatementSearchVisitor();
23-
21+
mixin StatementSearchVisitor<T> implements StatementVisitor<T?> {
2422
T? visitAtRootRule(AtRootRule node) => visitChildren(node.children);
2523

2624
T? visitAtRule(AtRule node) => node.children.andThen(visitChildren);

0 commit comments

Comments
 (0)