Skip to content

Commit 954aa12

Browse files
scheglovCommit Queue
authored andcommitted
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 <[email protected]> Commit-Queue: Konstantin Shcheglov <[email protected]> Reviewed-by: Brian Wilkerson <[email protected]>
1 parent 5e057f9 commit 954aa12

File tree

2 files changed

+30
-32
lines changed

2 files changed

+30
-32
lines changed

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

Lines changed: 10 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -553,8 +553,7 @@ class ClassElementImpl extends InterfaceElementImpl implements ClassElement {
553553
}
554554

555555
/// An [InterfaceFragmentImpl] which is a class.
556-
class ClassFragmentImpl extends ClassOrMixinFragmentImpl
557-
implements ClassFragment {
556+
class ClassFragmentImpl extends InterfaceFragmentImpl implements ClassFragment {
558557
@override
559558
late final ClassElementImpl element;
560559

@@ -582,11 +581,14 @@ class ClassFragmentImpl extends ClassOrMixinFragmentImpl
582581
setModifier(Modifier.ABSTRACT, isAbstract);
583582
}
584583

585-
@override
586584
bool get isBase {
587585
return hasModifier(Modifier.BASE);
588586
}
589587

588+
set isBase(bool isBase) {
589+
setModifier(Modifier.BASE, isBase);
590+
}
591+
590592
bool get isConstructable => !isSealed && !isAbstract;
591593

592594
bool get isDartCoreEnum {
@@ -674,23 +676,6 @@ class ClassFragmentImpl extends ClassOrMixinFragmentImpl
674676
}
675677
}
676678

677-
abstract class ClassOrMixinFragmentImpl extends InterfaceFragmentImpl {
678-
/// Initialize a newly created class element to have the given [name] at the
679-
/// given [offset] in the file that contains the declaration of this element.
680-
ClassOrMixinFragmentImpl({
681-
required super.name,
682-
required super.firstTokenOffset,
683-
});
684-
685-
bool get isBase {
686-
return hasModifier(Modifier.BASE);
687-
}
688-
689-
set isBase(bool isBase) {
690-
setModifier(Modifier.BASE, isBase);
691-
}
692-
}
693-
694679
class ConstantInitializerImpl implements ConstantInitializer {
695680
@override
696681
final VariableFragmentImpl fragment;
@@ -7746,8 +7731,7 @@ class MixinElementImpl extends InterfaceElementImpl implements MixinElement {
77467731
}
77477732

77487733
/// A [ClassFragmentImpl] representing a mixin declaration.
7749-
class MixinFragmentImpl extends ClassOrMixinFragmentImpl
7750-
implements MixinFragment {
7734+
class MixinFragmentImpl extends InterfaceFragmentImpl implements MixinFragment {
77517735
@override
77527736
late final MixinElementImpl element;
77537737

@@ -7762,11 +7746,14 @@ class MixinFragmentImpl extends ClassOrMixinFragmentImpl
77627746
/// given [offset] in the file that contains the declaration of this element.
77637747
MixinFragmentImpl({required super.name, required super.firstTokenOffset});
77647748

7765-
@override
77667749
bool get isBase {
77677750
return hasModifier(Modifier.BASE);
77687751
}
77697752

7753+
set isBase(bool isBase) {
7754+
setModifier(Modifier.BASE, isBase);
7755+
}
7756+
77707757
@override
77717758
List<InterfaceTypeImpl> get mixins => const [];
77727759

pkg/analyzer/lib/src/summary2/instance_member_inferrer.dart

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -791,20 +791,31 @@ class _CycleException implements Exception {}
791791

792792
extension on InterfaceFragmentImpl {
793793
bool get isBase {
794-
var self = this;
795-
if (self is ClassOrMixinFragmentImpl) return self.isBase;
796-
return false;
794+
switch (this) {
795+
case ClassFragmentImpl self:
796+
return self.isBase;
797+
case MixinFragmentImpl self:
798+
return self.isBase;
799+
default:
800+
return false;
801+
}
797802
}
798803

799804
bool get isFinal {
800-
var self = this;
801-
if (self is ClassFragmentImpl) return self.isFinal;
802-
return false;
805+
switch (this) {
806+
case ClassFragmentImpl self:
807+
return self.isFinal;
808+
default:
809+
return false;
810+
}
803811
}
804812

805813
bool get isInterface {
806-
var self = this;
807-
if (self is ClassFragmentImpl) return self.isInterface;
808-
return false;
814+
switch (this) {
815+
case ClassFragmentImpl self:
816+
return self.isInterface;
817+
default:
818+
return false;
819+
}
809820
}
810821
}

0 commit comments

Comments
 (0)