From 814fbec6b5f7a26fbbd353152798897dba152179 Mon Sep 17 00:00:00 2001 From: Sam Rawlins Date: Mon, 3 Feb 2025 13:07:25 -0800 Subject: [PATCH] Migrate TypeParameter and Warnings element model (#3983) --- .../templates.runtime_renderers.dart | 40 ++++++++++++++++++- lib/src/model/model_element.dart | 3 +- lib/src/model/type_parameter.dart | 37 ++++++++--------- lib/src/warnings.dart | 3 +- 4 files changed, 60 insertions(+), 23 deletions(-) diff --git a/lib/src/generator/templates.runtime_renderers.dart b/lib/src/generator/templates.runtime_renderers.dart index 1ce4f37432..9788ff8a7f 100644 --- a/lib/src/generator/templates.runtime_renderers.dart +++ b/lib/src/generator/templates.runtime_renderers.dart @@ -20353,7 +20353,7 @@ class _Renderer_Package extends RendererBase { } } -String renderIndex(PackageTemplateData context, Template template) { +String renderError(PackageTemplateData context, Template template) { var buffer = StringBuffer(); _render_PackageTemplateData(context, template.ast, template, buffer); return buffer.toString(); @@ -20716,7 +20716,7 @@ String renderSearchPage(PackageTemplateData context, Template template) { return buffer.toString(); } -String renderError(PackageTemplateData context, Template template) { +String renderIndex(PackageTemplateData context, Template template) { var buffer = StringBuffer(); _render_PackageTemplateData(context, template.ast, template, buffer); return buffer.toString(); @@ -24609,6 +24609,34 @@ class _Renderer_TypeParameter extends RendererBase { ); }, ), + 'element2': Property( + getValue: (CT_ c) => c.element2, + renderVariable: + (CT_ c, Property self, List remainingNames) => + self.renderSimpleVariable( + c, + remainingNames, + 'TypeParameterElement2', + ), + + isNullValue: (CT_ c) => false, + + renderValue: ( + CT_ c, + RendererBase r, + List ast, + StringSink sink, + ) { + renderSimple( + c.element2, + ast, + r.template, + sink, + parent: r, + getters: _invisibleGetters['TypeParameterElement2']!, + ); + }, + ), 'enclosingElement': Property( getValue: (CT_ c) => c.enclosingElement, renderVariable: ( @@ -27051,6 +27079,14 @@ const _invisibleGetters = { 'name', 'runtimeType', }, + 'TypeParameterElement2': { + 'baseElement', + 'bound', + 'firstFragment', + 'fragments', + 'hashCode', + 'runtimeType', + }, 'int': { 'bitLength', 'hashCode', diff --git a/lib/src/model/model_element.dart b/lib/src/model/model_element.dart index eaba6ddfda..8e2336a53e 100644 --- a/lib/src/model/model_element.dart +++ b/lib/src/model/model_element.dart @@ -352,7 +352,8 @@ abstract class ModelElement enclosingContainer: enclosingContainer, originalMember: originalMember, ), - TypeParameterElement() => TypeParameter(e, library, packageGraph), + TypeParameterElement() => + TypeParameter(e.asElement2, library, packageGraph), _ => throw UnimplementedError('Unknown type ${e.runtimeType}'), }; } diff --git a/lib/src/model/type_parameter.dart b/lib/src/model/type_parameter.dart index cec86566d0..6b391785a5 100644 --- a/lib/src/model/type_parameter.dart +++ b/lib/src/model/type_parameter.dart @@ -2,9 +2,10 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -// ignore_for_file: analyzer_use_new_elements - import 'package:analyzer/dart/element/element.dart'; +import 'package:analyzer/dart/element/element2.dart'; +// ignore: implementation_imports +import 'package:analyzer/src/dart/element/element.dart'; import 'package:dartdoc/src/element_type.dart'; import 'package:dartdoc/src/model/comment_referable.dart'; import 'package:dartdoc/src/model/kind.dart'; @@ -12,13 +13,18 @@ import 'package:dartdoc/src/model/model.dart'; class TypeParameter extends ModelElement with HasNoPage { @override - final TypeParameterElement element; + // ignore: analyzer_use_new_elements + TypeParameterElement get element => + (element2 as TypeParameterElementImpl2).firstFragment; + + @override + final TypeParameterElement2 element2; - TypeParameter(this.element, super.library, super.packageGraph); + TypeParameter(this.element2, super.library, super.packageGraph); @override ModelElement get enclosingElement => - getModelFor(element.enclosingElement3!, library); + getModelFor2(element2.enclosingElement2!, library); /// [TypeParameter]s don't have documentation pages, and don't link to the /// element on which they are declared. @@ -31,7 +37,7 @@ class TypeParameter extends ModelElement with HasNoPage { Kind get kind => Kind.typeParameter; ElementType? get boundType { - var bound = element.bound; + var bound = element2.bound; return bound == null ? null : getTypeFor(bound, library); } @@ -39,19 +45,14 @@ class TypeParameter extends ModelElement with HasNoPage { bool get hasParameters => false; @override - String get name => element.bound != null - ? '${element.name} extends ${boundType!.nameWithGenerics}' - : element.name; - - String? _linkedName; + String get name => element2.bound != null + ? '${element2.name3} extends ${boundType!.nameWithGenerics}' + : element2.name3!; @override - String get linkedName { - _linkedName ??= element.bound != null - ? '${element.name} extends ${boundType!.linkedName}' - : element.name; - return _linkedName!; - } + String get linkedName => element2.bound != null + ? '${element2.name3} extends ${boundType!.linkedName}' + : element2.name3!; @override late final Map referenceChildren = () { @@ -64,7 +65,7 @@ class TypeParameter extends ModelElement with HasNoPage { Iterable get referenceParents => [enclosingElement]; @override - String get referenceName => element.name; + String get referenceName => element2.name3!; } /// A mixin for [ModelElement]s which have type parameters. diff --git a/lib/src/warnings.dart b/lib/src/warnings.dart index 0ad8e251d2..616f46d0db 100644 --- a/lib/src/warnings.dart +++ b/lib/src/warnings.dart @@ -2,8 +2,6 @@ // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. -// ignore_for_file: analyzer_use_new_elements - import 'dart:io'; import 'dart:math' as math; @@ -98,6 +96,7 @@ List> createPackageWarningOptions( /// Something that package warnings can be reported on. Optionally associated /// with an analyzer [element]. mixin Warnable implements CommentReferable, Documentable, Locatable { + // ignore: analyzer_use_new_elements Element? get element; Element2? get element2;