Skip to content

Commit 38ac87f

Browse files
scheglovCommit Queue
authored andcommitted
Elements. Pull implementations out of ConstructorElementMixin, leave only declarations.
ConstructorMember uses baseElement to implement, as every other method. Change-Id: I3d6e5f16e83e6c601691cfdd0c254b861ffd9a68 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/435960 Reviewed-by: Paul Berry <[email protected]> Commit-Queue: Konstantin Shcheglov <[email protected]>
1 parent 1dc17b9 commit 38ac87f

File tree

2 files changed

+29
-17
lines changed

2 files changed

+29
-17
lines changed

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

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -922,28 +922,13 @@ mixin ConstructorElementMixin
922922

923923
/// Whether the constructor can be used as a default constructor - unnamed,
924924
/// and has no required parameters.
925-
bool get isDefaultConstructor {
926-
// unnamed
927-
if (name2 != 'new') {
928-
return false;
929-
}
930-
// no required parameters
931-
for (var parameter in parameters) {
932-
if (parameter.isRequired) {
933-
return false;
934-
}
935-
}
936-
// OK, can be used as default constructor
937-
return true;
938-
}
925+
bool get isDefaultConstructor;
939926

940927
/// Whether the constructor represents a factory constructor.
941928
bool get isFactory;
942929

943930
/// Whether the constructor represents a generative constructor.
944-
bool get isGenerative {
945-
return !isFactory;
946-
}
931+
bool get isGenerative;
947932

948933
@override
949934
LibraryElementImpl get library2;
@@ -1066,6 +1051,22 @@ class ConstructorFragmentImpl extends ExecutableFragmentImpl
10661051
setModifier(Modifier.CONST, isConst);
10671052
}
10681053

1054+
@override
1055+
bool get isDefaultConstructor {
1056+
// unnamed
1057+
if (name2 != 'new') {
1058+
return false;
1059+
}
1060+
// no required parameters
1061+
for (var parameter in parameters) {
1062+
if (parameter.isRequired) {
1063+
return false;
1064+
}
1065+
}
1066+
// OK, can be used as default constructor
1067+
return true;
1068+
}
1069+
10691070
@override
10701071
bool get isFactory {
10711072
return hasModifier(Modifier.FACTORY);
@@ -1076,6 +1077,11 @@ class ConstructorFragmentImpl extends ExecutableFragmentImpl
10761077
setModifier(Modifier.FACTORY, isFactory);
10771078
}
10781079

1080+
@override
1081+
bool get isGenerative {
1082+
return !isFactory;
1083+
}
1084+
10791085
@override
10801086
ElementKind get kind => ElementKind.CONSTRUCTOR;
10811087

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,15 @@ class ConstructorMember extends ExecutableMember
6767
@override
6868
bool get isConstantEvaluated => declaration.isConstantEvaluated;
6969

70+
@override
71+
bool get isDefaultConstructor => baseElement.isConst;
72+
7073
@override
7174
bool get isFactory => declaration.isFactory;
7275

76+
@override
77+
bool get isGenerative => baseElement.isGenerative;
78+
7379
@override
7480
LibraryElementImpl get library2 {
7581
return _declaration.library!;

0 commit comments

Comments
 (0)