allow one member abstracts implementing interfaces (#2028)
* allow one member abstracts implementing interfaces
* ws
* + mixins
diff --git a/lib/src/rules/one_member_abstracts.dart b/lib/src/rules/one_member_abstracts.dart
index bc1fafe..a97caf5 100644
--- a/lib/src/rules/one_member_abstracts.dart
+++ b/lib/src/rules/one_member_abstracts.dart
@@ -59,6 +59,12 @@
@override
void visitClassDeclaration(ClassDeclaration node) {
+ if (node.declaredElement.interfaces.isNotEmpty) {
+ return;
+ }
+ if (node.declaredElement.mixins.isNotEmpty) {
+ return;
+ }
if (node.isAbstract &&
node.extendsClause == null &&
node.members.length == 1) {
diff --git a/test/rules/one_member_abstracts.dart b/test/rules/one_member_abstracts.dart
index ec65b42..8b8ec9a 100644
--- a/test/rules/one_member_abstracts.dart
+++ b/test/rules/one_member_abstracts.dart
@@ -27,3 +27,21 @@
abstract class Config {
String get datasetId; //OK -- Issue #64
}
+
+/// https://github.com/dart-lang/linter/issues/1826
+abstract class FooBarable {
+ void foo();
+ void bar();
+}
+
+abstract class Bazable implements FooBarable {
+ void baz(); // OK
+}
+
+mixin M {
+ void m();
+}
+
+abstract class Bazable2 with M {
+ void baz(); // OK
+}