From 842ed5606cc70adbaca4b77c95aa08715048b844 Mon Sep 17 00:00:00 2001 From: Fedor Shcheglov Date: Fri, 20 Jun 2025 14:36:32 -0700 Subject: [PATCH] Deprecate/rename primaryConstructor2 and representation2 from ExtensionTypeElement. Change-Id: I3699157f4b8d640449e2dba307d2bf587b243e60 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/435900 Reviewed-by: Konstantin Shcheglov Commit-Queue: Konstantin Shcheglov Reviewed-by: Brian Wilkerson Reviewed-by: Paul Berry --- .../src/lsp/handlers/handler_definition.dart | 2 +- .../completion/dart/declaration_helper.dart | 2 +- pkg/analyzer/CHANGELOG.md | 4 +++ pkg/analyzer/api.txt | 12 ++++++--- pkg/analyzer/lib/dart/element/element.dart | 17 +++++++++++++ .../lib/src/dart/constant/evaluation.dart | 2 +- .../lib/src/dart/element/element.dart | 25 +++++++++++++++---- pkg/analyzer/lib/src/dart/element/type.dart | 2 +- .../error/getter_setter_types_verifier.dart | 2 +- .../lib/src/summary2/library_builder.dart | 2 +- .../test/src/summary/element_text.dart | 4 +-- ...d_runtime_check_with_js_interop_types.dart | 2 +- ...efer_const_constructors_in_immutables.dart | 2 +- 13 files changed, 59 insertions(+), 19 deletions(-) diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_definition.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_definition.dart index 45a778a4233..ffb3c5783f6 100644 --- a/pkg/analysis_server/lib/src/lsp/handlers/handler_definition.dart +++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_definition.dart @@ -227,7 +227,7 @@ class DefinitionHandler // which is not what the user expects. if (codeFragment.element.enclosingElement case ExtensionTypeElement enclosingElement - when enclosingElement.primaryConstructor2 == codeFragment.element) { + when enclosingElement.primaryConstructor == codeFragment.element) { codeFragment = codeFragment.enclosingFragment; } diff --git a/pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart b/pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart index d2f2a01d2dd..475c969c018 100644 --- a/pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart +++ b/pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart @@ -1419,7 +1419,7 @@ class DeclarationHelper { if (element != null) { if (!mustBeType) { _addMembersOfEnclosingInstance(element); - var fieldElement = element.representation2; + var fieldElement = element.representation; _suggestField(field: fieldElement); } _suggestTypeParameters(element.typeParameters2); diff --git a/pkg/analyzer/CHANGELOG.md b/pkg/analyzer/CHANGELOG.md index 515cee70350..49a8d7d86a1 100644 --- a/pkg/analyzer/CHANGELOG.md +++ b/pkg/analyzer/CHANGELOG.md @@ -48,6 +48,10 @@ * Deprecate `JoinPatternVariableElement.variables2`, use `variables` instead. * Deprecate `Annotatable.metadata2`, use `metadata` instead. * Deprecate `Element.nonSynthetic2`, use `nonSynthetic` instead. +* Deprecate `ExtensionTypeElement.primaryConstructor2`, use `primaryConstructor` instead. +* Deprecate `ExtensionTypeElement.representation2`, use `representation` instead. +* Deprecate `ExtensionTypeFragment.primaryConstructor2`, use `primaryConstructor` instead. +* Deprecate `ExtensionTypeFragment.representation2`, use `representation` instead. ## 7.4.1 * Restore `InstanceElement.augmented` getter. diff --git a/pkg/analyzer/api.txt b/pkg/analyzer/api.txt index 217abf3207c..7d39317f2b5 100644 --- a/pkg/analyzer/api.txt +++ b/pkg/analyzer/api.txt @@ -3540,16 +3540,20 @@ package:analyzer/dart/element/element.dart: new (constructor: ExtensionTypeElement Function()) firstFragment (getter: ExtensionTypeFragment) fragments (getter: List) - primaryConstructor2 (getter: ConstructorElement) - representation2 (getter: FieldElement) + primaryConstructor (getter: ConstructorElement) + primaryConstructor2 (getter: ConstructorElement, deprecated) + representation (getter: FieldElement) + representation2 (getter: FieldElement, deprecated) typeErasure (getter: DartType) ExtensionTypeFragment (class extends Object implements InterfaceFragment): new (constructor: ExtensionTypeFragment Function()) element (getter: ExtensionTypeElement) nextFragment (getter: ExtensionTypeFragment?) previousFragment (getter: ExtensionTypeFragment?) - primaryConstructor2 (getter: ConstructorFragment) - representation2 (getter: FieldFragment) + primaryConstructor (getter: ConstructorFragment) + primaryConstructor2 (getter: ConstructorFragment, deprecated) + representation (getter: FieldFragment) + representation2 (getter: FieldFragment, deprecated) FieldElement (class extends Object implements PropertyInducingElement): new (constructor: FieldElement Function()) baseElement (getter: FieldElement) diff --git a/pkg/analyzer/lib/dart/element/element.dart b/pkg/analyzer/lib/dart/element/element.dart index bf16778318c..8629c9afb88 100644 --- a/pkg/analyzer/lib/dart/element/element.dart +++ b/pkg/analyzer/lib/dart/element/element.dart @@ -1306,9 +1306,17 @@ abstract class ExtensionTypeElement implements InterfaceElement { List get fragments; /// The primary constructor of this extension. + ConstructorElement get primaryConstructor; + + /// The primary constructor of this extension. + @Deprecated('Use primaryConstructor instead') ConstructorElement get primaryConstructor2; /// The representation of this extension. + FieldElement get representation; + + /// The representation of this extension. + @Deprecated('Use representation instead') FieldElement get representation2; /// The extension type erasure, obtained by recursively replacing every @@ -1331,9 +1339,18 @@ abstract class ExtensionTypeFragment implements InterfaceFragment { @override ExtensionTypeFragment? get previousFragment; + /// The primary constructor of this extension. + ConstructorFragment get primaryConstructor; + + /// The primary constructor of this extension. + @Deprecated('Use primaryConstructor instead') ConstructorFragment get primaryConstructor2; /// The representation of this extension. + FieldFragment get representation; + + /// The representation of this extension. + @Deprecated('Use representation instead') FieldFragment get representation2; } diff --git a/pkg/analyzer/lib/src/dart/constant/evaluation.dart b/pkg/analyzer/lib/src/dart/constant/evaluation.dart index 0abffebe604..59abb4f555c 100644 --- a/pkg/analyzer/lib/src/dart/constant/evaluation.dart +++ b/pkg/analyzer/lib/src/dart/constant/evaluation.dart @@ -2990,7 +2990,7 @@ class _InstanceCreationEvaluator { var definingType = this.definingType; if (definingType.element3 case ExtensionTypeElement element) { - var representation = _fieldMap[element.representation2.name3]; + var representation = _fieldMap[element.representation.name3]; if (representation != null) { return representation; } diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart index f9e76e93d35..a5f2aa55907 100644 --- a/pkg/analyzer/lib/src/dart/element/element.dart +++ b/pkg/analyzer/lib/src/dart/element/element.dart @@ -2810,13 +2810,25 @@ class ExtensionTypeElementImpl extends InterfaceElementImpl } @override - ConstructorElement get primaryConstructor2 { + ConstructorElement get primaryConstructor { return firstFragment.primaryConstructor.element; } + @Deprecated('Use primaryConstructor instead') + @override + ConstructorElement get primaryConstructor2 { + return primaryConstructor; + } + + @override + FieldElementImpl get representation { + return firstFragment.representation.element; + } + + @Deprecated('Use representation instead') @override FieldElementImpl get representation2 { - return firstFragment.representation.element; + return representation; } @override @@ -2863,20 +2875,23 @@ class ExtensionTypeFragmentImpl extends InterfaceFragmentImpl ExtensionTypeFragmentImpl? get previousFragment => super.previousFragment as ExtensionTypeFragmentImpl?; + @override ConstructorFragmentImpl get primaryConstructor { return constructors.first; } + @Deprecated('Use primaryConstructor instead') @override - ConstructorFragment get primaryConstructor2 => - primaryConstructor as ConstructorFragment; + ConstructorFragmentImpl get primaryConstructor2 => primaryConstructor; + @override FieldFragmentImpl get representation { return fields.first; } + @Deprecated('Use representation instead') @override - FieldFragment get representation2 => representation as FieldFragment; + FieldFragmentImpl get representation2 => representation; void addFragment(ExtensionTypeFragmentImpl fragment) { fragment.augmentedInternal = element; diff --git a/pkg/analyzer/lib/src/dart/element/type.dart b/pkg/analyzer/lib/src/dart/element/type.dart index 363aeed706b..a221fe3ed9d 100644 --- a/pkg/analyzer/lib/src/dart/element/type.dart +++ b/pkg/analyzer/lib/src/dart/element/type.dart @@ -789,7 +789,7 @@ class InterfaceTypeImpl extends TypeImpl implements InterfaceType { TypeImpl? get representationType { if (element3 case ExtensionTypeElement element) { var substitution = Substitution.fromInterfaceType(this); - var representationType = element.representation2.type; + var representationType = element.representation.type; return substitution.substituteType(representationType); } return null; diff --git a/pkg/analyzer/lib/src/error/getter_setter_types_verifier.dart b/pkg/analyzer/lib/src/error/getter_setter_types_verifier.dart index 947f28c631e..17d8cede0ff 100644 --- a/pkg/analyzer/lib/src/error/getter_setter_types_verifier.dart +++ b/pkg/analyzer/lib/src/error/getter_setter_types_verifier.dart @@ -73,7 +73,7 @@ class GetterSetterTypesVerifier { Element errorElement; if (getter.enclosingElement == element) { if (element is ExtensionTypeElementImpl && - element.representation2.getter2 == getter) { + element.representation.getter2 == getter) { errorElement = setter; } else { errorElement = getter; diff --git a/pkg/analyzer/lib/src/summary2/library_builder.dart b/pkg/analyzer/lib/src/summary2/library_builder.dart index 95b59e30817..b19ab8564d4 100644 --- a/pkg/analyzer/lib/src/summary2/library_builder.dart +++ b/pkg/analyzer/lib/src/summary2/library_builder.dart @@ -891,7 +891,7 @@ class _FieldPromotability // Private representation fields of extension types are always promotable. // They also don't affect promotability of any other fields. for (var extensionType in element.extensionTypes) { - var representation = extensionType.representation2; + var representation = extensionType.representation; var representationName = representation.name3; if (representationName != null) { if (representationName.startsWith('_')) { diff --git a/pkg/analyzer/test/src/summary/element_text.dart b/pkg/analyzer/test/src/summary/element_text.dart index 5430eb8d451..dcbbb5c233f 100644 --- a/pkg/analyzer/test/src/summary/element_text.dart +++ b/pkg/analyzer/test/src/summary/element_text.dart @@ -1130,11 +1130,11 @@ class _Element2Writer extends _AbstractElementWriter { expect(e.supertype, isNull); _elementPrinter.writeNamedElement2( 'representation', - e.representation2, + e.representation, ); _elementPrinter.writeNamedElement2( 'primaryConstructor', - e.primaryConstructor2, + e.primaryConstructor, ); _elementPrinter.writeNamedType('typeErasure', e.typeErasure); _elementPrinter.writeTypeList('interfaces', e.interfaces); diff --git a/pkg/linter/lib/src/rules/invalid_runtime_check_with_js_interop_types.dart b/pkg/linter/lib/src/rules/invalid_runtime_check_with_js_interop_types.dart index a513646acd4..416537aad9e 100644 --- a/pkg/linter/lib/src/rules/invalid_runtime_check_with_js_interop_types.dart +++ b/pkg/linter/lib/src/rules/invalid_runtime_check_with_js_interop_types.dart @@ -52,7 +52,7 @@ bool _isJsInteropType(DartType type, _InteropTypeKind kind) { if (dartJsInteropTypeKind && element.isFromLibrary(_dartJsInteropUri)) { return true; } else if (userJsInteropTypeKind) { - var representationType = element.representation2.type; + var representationType = element.representation.type; return _isJsInteropType( representationType, _InteropTypeKind.dartJsInteropType, diff --git a/pkg/linter/lib/src/rules/prefer_const_constructors_in_immutables.dart b/pkg/linter/lib/src/rules/prefer_const_constructors_in_immutables.dart index 7ebc6eb5ffb..e6a5dfb996a 100644 --- a/pkg/linter/lib/src/rules/prefer_const_constructors_in_immutables.dart +++ b/pkg/linter/lib/src/rules/prefer_const_constructors_in_immutables.dart @@ -101,7 +101,7 @@ class _Visitor extends SimpleAstVisitor { } if (clazz is ExtensionTypeElement) { - return clazz.primaryConstructor2.isConst; + return clazz.primaryConstructor.isConst; } // Constructor with implicit `super()` call.