Elements. Remove ClassOrMixinFragmentImpl.
It had very little functionality, and I believe modifiers management
can be improved, in which case it will become more an issue than a
solution.
Change-Id: If6f404d6cb1ca8e6a04ebaa79451d1553b1edfff
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/440066
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart
index 172a89a..fe01783 100644
--- a/pkg/analyzer/lib/src/dart/element/element.dart
+++ b/pkg/analyzer/lib/src/dart/element/element.dart
@@ -553,8 +553,7 @@
}
/// An [InterfaceFragmentImpl] which is a class.
-class ClassFragmentImpl extends ClassOrMixinFragmentImpl
- implements ClassFragment {
+class ClassFragmentImpl extends InterfaceFragmentImpl implements ClassFragment {
@override
late final ClassElementImpl element;
@@ -582,11 +581,14 @@
setModifier(Modifier.ABSTRACT, isAbstract);
}
- @override
bool get isBase {
return hasModifier(Modifier.BASE);
}
+ set isBase(bool isBase) {
+ setModifier(Modifier.BASE, isBase);
+ }
+
bool get isConstructable => !isSealed && !isAbstract;
bool get isDartCoreEnum {
@@ -674,23 +676,6 @@
}
}
-abstract class ClassOrMixinFragmentImpl extends InterfaceFragmentImpl {
- /// Initialize a newly created class element to have the given [name] at the
- /// given [offset] in the file that contains the declaration of this element.
- ClassOrMixinFragmentImpl({
- required super.name,
- required super.firstTokenOffset,
- });
-
- bool get isBase {
- return hasModifier(Modifier.BASE);
- }
-
- set isBase(bool isBase) {
- setModifier(Modifier.BASE, isBase);
- }
-}
-
class ConstantInitializerImpl implements ConstantInitializer {
@override
final VariableFragmentImpl fragment;
@@ -7746,8 +7731,7 @@
}
/// A [ClassFragmentImpl] representing a mixin declaration.
-class MixinFragmentImpl extends ClassOrMixinFragmentImpl
- implements MixinFragment {
+class MixinFragmentImpl extends InterfaceFragmentImpl implements MixinFragment {
@override
late final MixinElementImpl element;
@@ -7762,11 +7746,14 @@
/// given [offset] in the file that contains the declaration of this element.
MixinFragmentImpl({required super.name, required super.firstTokenOffset});
- @override
bool get isBase {
return hasModifier(Modifier.BASE);
}
+ set isBase(bool isBase) {
+ setModifier(Modifier.BASE, isBase);
+ }
+
@override
List<InterfaceTypeImpl> get mixins => const [];
diff --git a/pkg/analyzer/lib/src/summary2/instance_member_inferrer.dart b/pkg/analyzer/lib/src/summary2/instance_member_inferrer.dart
index 396bb0e..e4ba18d 100644
--- a/pkg/analyzer/lib/src/summary2/instance_member_inferrer.dart
+++ b/pkg/analyzer/lib/src/summary2/instance_member_inferrer.dart
@@ -791,20 +791,31 @@
extension on InterfaceFragmentImpl {
bool get isBase {
- var self = this;
- if (self is ClassOrMixinFragmentImpl) return self.isBase;
- return false;
+ switch (this) {
+ case ClassFragmentImpl self:
+ return self.isBase;
+ case MixinFragmentImpl self:
+ return self.isBase;
+ default:
+ return false;
+ }
}
bool get isFinal {
- var self = this;
- if (self is ClassFragmentImpl) return self.isFinal;
- return false;
+ switch (this) {
+ case ClassFragmentImpl self:
+ return self.isFinal;
+ default:
+ return false;
+ }
}
bool get isInterface {
- var self = this;
- if (self is ClassFragmentImpl) return self.isInterface;
- return false;
+ switch (this) {
+ case ClassFragmentImpl self:
+ return self.isInterface;
+ default:
+ return false;
+ }
}
}