diff --git a/lib/src/generator/templates.runtime_renderers.dart b/lib/src/generator/templates.runtime_renderers.dart index 9788ff8a7f..fcf499fab9 100644 --- a/lib/src/generator/templates.runtime_renderers.dart +++ b/lib/src/generator/templates.runtime_renderers.dart @@ -14411,7 +14411,7 @@ class _Renderer_LibraryContainer extends RendererBase { } } -String renderLibraryRedirect(LibraryTemplateData context, Template template) { +String renderLibrary(LibraryTemplateData context, Template template) { var buffer = StringBuffer(); _render_LibraryTemplateData(context, template.ast, template, buffer); return buffer.toString(); @@ -14657,7 +14657,7 @@ class _Renderer_LibraryTemplateData extends RendererBase { } } -String renderLibrary(LibraryTemplateData context, Template template) { +String renderLibraryRedirect(LibraryTemplateData context, Template template) { var buffer = StringBuffer(); _render_LibraryTemplateData(context, template.ast, template, buffer); return buffer.toString(); @@ -24179,6 +24179,34 @@ class _Renderer_TopLevelVariable extends RendererBase { ); }, ), + 'element2': Property( + getValue: (CT_ c) => c.element2, + renderVariable: + (CT_ c, Property self, List remainingNames) => + self.renderSimpleVariable( + c, + remainingNames, + 'TopLevelVariableElement2', + ), + + isNullValue: (CT_ c) => false, + + renderValue: ( + CT_ c, + RendererBase r, + List ast, + StringSink sink, + ) { + renderSimple( + c.element2, + ast, + r.template, + sink, + parent: r, + getters: _invisibleGetters['TopLevelVariableElement2']!, + ); + }, + ), 'enclosingElement': Property( getValue: (CT_ c) => c.enclosingElement, renderVariable: ( @@ -27053,6 +27081,14 @@ const _invisibleGetters = { 'isExternal', 'runtimeType', }, + 'TopLevelVariableElement2': { + 'baseElement', + 'firstFragment', + 'fragments', + 'hashCode', + 'isExternal', + 'runtimeType', + }, 'TypeAliasElement': { 'aliasedElement', 'aliasedType', diff --git a/lib/src/model/getter_setter_combo.dart b/lib/src/model/getter_setter_combo.dart index bfe3ac9495..ace35bb0b3 100644 --- a/lib/src/model/getter_setter_combo.dart +++ b/lib/src/model/getter_setter_combo.dart @@ -2,21 +2,26 @@ // 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:convert'; import 'package:analyzer/dart/ast/ast.dart' show Expression, InstanceCreationExpression; +import 'package:analyzer/dart/element/element2.dart' show Annotatable; import 'package:analyzer/source/line_info.dart'; // ignore: implementation_imports import 'package:analyzer/src/dart/element/element.dart' show ConstVariableElement; import 'package:dartdoc/src/element_type.dart'; +import 'package:dartdoc/src/model/accessor.dart'; import 'package:dartdoc/src/model/annotation.dart'; import 'package:dartdoc/src/model/attribute.dart'; +import 'package:dartdoc/src/model/class.dart'; import 'package:dartdoc/src/model/comment_referable.dart'; -import 'package:dartdoc/src/model/model.dart'; +import 'package:dartdoc/src/model/constructor.dart'; +import 'package:dartdoc/src/model/documentation_comment.dart'; +import 'package:dartdoc/src/model/enum.dart'; +import 'package:dartdoc/src/model/model_element.dart'; +import 'package:dartdoc/src/model/parameter.dart'; import 'package:dartdoc/src/utils.dart'; import 'package:meta/meta.dart'; @@ -73,16 +78,16 @@ mixin GetterSetterCombo on ModelElement { bool get hasConstantValueForDisplay => false; late final Expression? _constantInitializer = - (element as ConstVariableElement).constantInitializer; + (element2.firstFragment as ConstVariableElement).constantInitializer; String linkifyConstantValue(String original) { if (_constantInitializer is! InstanceCreationExpression) return original; var constructorName = _constantInitializer.constructorName.toString(); - var staticElement = _constantInitializer.constructorName.staticElement; - if (staticElement == null) return original; + var element = _constantInitializer.constructorName.element; + if (element == null) return original; - var target = getModelForElement(staticElement) as Constructor; + var target = getModelForElement2(element) as Constructor; var enclosingElement = target.enclosingElement; if (enclosingElement is! Class) return original; @@ -108,10 +113,10 @@ mixin GetterSetterCombo on ModelElement { // explicit setters/getters will be handled by those objects, but // if a warning comes up for an enclosing synthetic field we have to // put it somewhere. So pick an accessor. - if (element.isSynthetic) { + if (element2.isSynthetic) { if (hasExplicitGetter) return getter!.characterLocation; if (hasExplicitSetter) return setter!.characterLocation; - assert(false, 'Field and accessors can not all be synthetic: $element'); + assert(false, 'Field and accessors can not all be synthetic: $element2'); } return super.characterLocation; } @@ -137,9 +142,9 @@ mixin GetterSetterCombo on ModelElement { initializerString = 'const $initializerString'; - var isImplicitConstructorCall = _constantInitializer - .constructorName.staticElement?.isDefaultConstructor ?? - false; + var isImplicitConstructorCall = + _constantInitializer.constructorName.element?.isDefaultConstructor ?? + false; if (isImplicitConstructorCall) { // For an enum value with an implicit constructor call (like // `enum E { one, two; }`), `constantInitializer.toString()` does not @@ -206,13 +211,13 @@ mixin GetterSetterCombo on ModelElement { @override late final String documentationComment = _getterSetterDocumentationComment.isEmpty - ? element.documentationComment ?? '' + ? (element2 as Annotatable).documentationComment ?? '' : _getterSetterDocumentationComment; @override bool get hasDocumentationComment => _getterSetterDocumentationComment.isNotEmpty || - element.documentationComment != null; + (element2 as Annotatable).documentationComment != null; /// Derives a documentation comment for the combo by copying documentation /// from the [getter] and/or [setter]. diff --git a/lib/src/model/model_element.dart b/lib/src/model/model_element.dart index 8e2336a53e..dba421bcf6 100644 --- a/lib/src/model/model_element.dart +++ b/lib/src/model/model_element.dart @@ -151,7 +151,7 @@ abstract class ModelElement if (e is TopLevelVariableElement) { assert(getter != null || setter != null); newModelElement = - TopLevelVariable(e, library, packageGraph, getter, setter); + TopLevelVariable(e.asElement2, library, packageGraph, getter, setter); } else if (e is FieldElement) { if (enclosingContainer is Extension) { newModelElement = Field(e, library, packageGraph, diff --git a/lib/src/model/top_level_variable.dart b/lib/src/model/top_level_variable.dart index 8d8eadf07b..6a62893bf2 100644 --- a/lib/src/model/top_level_variable.dart +++ b/lib/src/model/top_level_variable.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/model/attribute.dart'; import 'package:dartdoc/src/model/comment_referable.dart'; import 'package:dartdoc/src/model/kind.dart'; @@ -14,15 +15,21 @@ import 'package:dartdoc/src/model/model.dart'; class TopLevelVariable extends ModelElement with GetterSetterCombo, Categorization { @override - final TopLevelVariableElement element; + // ignore: analyzer_use_new_elements + TopLevelVariableElement get element => + // ignore: analyzer_use_new_elements + (element2.firstFragment as TopLevelVariableElementImpl).declaration; + + @override + final TopLevelVariableElement2 element2; @override final Accessor? getter; @override final Accessor? setter; - TopLevelVariable(this.element, super.library, super.packageGraph, this.getter, - this.setter) { + TopLevelVariable(this.element2, super.library, super.packageGraph, + this.getter, this.setter) { getter?.enclosingCombo = this; setter?.enclosingCombo = this; } @@ -59,18 +66,18 @@ class TopLevelVariable extends ModelElement } @override - bool get isConst => element.isConst; + bool get isConst => element2.isConst; @override bool get isFinal { /// isFinal returns true for the variable even if it has an explicit getter /// (which means we should not document it as "final"). if (hasExplicitGetter) return false; - return element.isFinal; + return element2.isFinal; } @override - bool get isLate => isFinal && element.isLate; + bool get isLate => isFinal && element2.isLate; // For use in templates. bool get isProvidedByExtension => false;