From 38ac87f64dff8bc7ee88839f59b3a6793ab8a744 Mon Sep 17 00:00:00 2001 From: Konstantin Shcheglov Date: Fri, 20 Jun 2025 10:10:00 -0700 Subject: [PATCH] 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 Commit-Queue: Konstantin Shcheglov --- .../lib/src/dart/element/element.dart | 40 +++++++++++-------- pkg/analyzer/lib/src/dart/element/member.dart | 6 +++ 2 files changed, 29 insertions(+), 17 deletions(-) diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart index b0633751bff..e30926fa819 100644 --- a/pkg/analyzer/lib/src/dart/element/element.dart +++ b/pkg/analyzer/lib/src/dart/element/element.dart @@ -922,28 +922,13 @@ mixin ConstructorElementMixin /// Whether the constructor can be used as a default constructor - unnamed, /// and has no required parameters. - bool get isDefaultConstructor { - // unnamed - if (name2 != 'new') { - return false; - } - // no required parameters - for (var parameter in parameters) { - if (parameter.isRequired) { - return false; - } - } - // OK, can be used as default constructor - return true; - } + bool get isDefaultConstructor; /// Whether the constructor represents a factory constructor. bool get isFactory; /// Whether the constructor represents a generative constructor. - bool get isGenerative { - return !isFactory; - } + bool get isGenerative; @override LibraryElementImpl get library2; @@ -1066,6 +1051,22 @@ class ConstructorFragmentImpl extends ExecutableFragmentImpl setModifier(Modifier.CONST, isConst); } + @override + bool get isDefaultConstructor { + // unnamed + if (name2 != 'new') { + return false; + } + // no required parameters + for (var parameter in parameters) { + if (parameter.isRequired) { + return false; + } + } + // OK, can be used as default constructor + return true; + } + @override bool get isFactory { return hasModifier(Modifier.FACTORY); @@ -1076,6 +1077,11 @@ class ConstructorFragmentImpl extends ExecutableFragmentImpl setModifier(Modifier.FACTORY, isFactory); } + @override + bool get isGenerative { + return !isFactory; + } + @override ElementKind get kind => ElementKind.CONSTRUCTOR; diff --git a/pkg/analyzer/lib/src/dart/element/member.dart b/pkg/analyzer/lib/src/dart/element/member.dart index 2211075daa4..e4578ea8e2d 100644 --- a/pkg/analyzer/lib/src/dart/element/member.dart +++ b/pkg/analyzer/lib/src/dart/element/member.dart @@ -67,9 +67,15 @@ class ConstructorMember extends ExecutableMember @override bool get isConstantEvaluated => declaration.isConstantEvaluated; + @override + bool get isDefaultConstructor => baseElement.isConst; + @override bool get isFactory => declaration.isFactory; + @override + bool get isGenerative => baseElement.isGenerative; + @override LibraryElementImpl get library2 { return _declaration.library!;