Skip to content

Elements. Remove 'element' from ModelElement #3990

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Feb 6, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
830 changes: 5 additions & 825 deletions lib/src/generator/templates.runtime_renderers.dart

Large diffs are not rendered by default.

6 changes: 0 additions & 6 deletions lib/src/model/accessor.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,10 @@

import 'dart:convert';

import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/element2.dart';
import 'package:analyzer/source/line_info.dart';
// ignore: implementation_imports
import 'package:analyzer/src/dart/element/member.dart' show ExecutableMember;
// ignore: implementation_imports
import 'package:analyzer/src/utilities/extensions/element.dart';
import 'package:collection/collection.dart' show IterableExtension;
import 'package:dartdoc/src/element_type.dart';
import 'package:dartdoc/src/model/comment_referable.dart';
Expand All @@ -21,9 +18,6 @@ import 'package:dartdoc/src/warnings.dart';

/// Getters and setters.
class Accessor extends ModelElement {
@override
// ignore: analyzer_use_new_elements
PropertyAccessorElement get element => element2.asElement;

@override
final PropertyAccessorElement2 element2;
Expand Down
14 changes: 7 additions & 7 deletions lib/src/model/canonicalization.dart
Original file line number Diff line number Diff line change
Expand Up @@ -70,9 +70,9 @@ Library? canonicalLibraryCandidate(ModelElement modelElement) {
/// considers this element to be primarily 'from', and therefore, canonical.
/// Still warn if the heuristic isn't very confident.
final class _Canonicalization {
final ModelElement _element;
final ModelElement _modelElement;

_Canonicalization(this._element);
_Canonicalization(this._modelElement);

/// Append an encoded form of the given [component] to the given [buffer].
void _encode(StringBuffer buffer, String component) {
Expand Down Expand Up @@ -122,15 +122,15 @@ final class _Canonicalization {
return buffer.toString();
}

/// Calculates a candidate for the canonical library of [_element], among [libraries].
/// Calculates a candidate for the canonical library of [_modelElement], among [libraries].
Library canonicalLibraryCandidate(Iterable<Library> libraries) {
var locationPieces = _getElementLocation(_element.element2)
var locationPieces = _getElementLocation(_modelElement.element2)
.split(_locationSplitter)
.where((s) => s.isNotEmpty)
.toSet();
var scoredCandidates = libraries
.map((library) => _scoreElementWithLibrary(
library, _element.fullyQualifiedName, locationPieces))
library, _modelElement.fullyQualifiedName, locationPieces))
.toList(growable: false)
..sort();

Expand All @@ -141,11 +141,11 @@ final class _Canonicalization {
var confidence = highestScore - secondHighestScore;
final canonicalLibrary = librariesByScore.last;

if (confidence < _element.config.ambiguousReexportScorerMinConfidence) {
if (confidence < _modelElement.config.ambiguousReexportScorerMinConfidence) {
var libraryNames = librariesByScore.map((l) => l.name);
var message = '$libraryNames -> ${canonicalLibrary.name} '
'(confidence ${confidence.toStringAsPrecision(4)})';
_element.warn(PackageWarning.ambiguousReexport,
_modelElement.warn(PackageWarning.ambiguousReexport,
message: message, extendedDebug: scoredCandidates.map((s) => '$s'));
}

Expand Down
4 changes: 0 additions & 4 deletions lib/src/model/category.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,7 @@
// 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';
import 'package:analyzer/file_system/file_system.dart';
import 'package:dartdoc/src/dartdoc_options.dart';
Expand Down Expand Up @@ -80,8 +78,6 @@ class Category
}
}

@override
Element? get element => null;

@override
Element2? get element2 => null;
Expand Down
5 changes: 0 additions & 5 deletions lib/src/model/class.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,7 @@
// 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.

import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/element2.dart';
// ignore: implementation_imports
import 'package:analyzer/src/utilities/extensions/element.dart';
import 'package:dartdoc/src/model/kind.dart';
import 'package:dartdoc/src/model/model.dart';

Expand All @@ -18,8 +15,6 @@ import 'package:dartdoc/src/model/model.dart';
/// **inherited**: Filtered getters giving only inherited children.
class Class extends InheritingContainer with Constructable, MixedInTypes {
@override
// ignore: analyzer_use_new_elements
ClassElement get element => element2.asElement;

@override
final ClassElement2 element2;
Expand Down
11 changes: 3 additions & 8 deletions lib/src/model/constructor.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +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.

import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/element2.dart';
import 'package:analyzer/source/line_info.dart';
// ignore: implementation_imports
import 'package:analyzer/src/dart/element/element.dart';
// ignore: implementation_imports
import 'package:analyzer/src/utilities/extensions/element.dart';
import 'package:dartdoc/src/element_type.dart';
import 'package:dartdoc/src/model/comment_referable.dart';
import 'package:dartdoc/src/model/kind.dart';
Expand All @@ -17,8 +14,6 @@ import 'package:dartdoc/src/model_utils.dart';

class Constructor extends ModelElement with ContainerMember, TypeParameters {
@override
// ignore: analyzer_use_new_elements
ConstructorElement get element => element2.asElement;

@override
final ConstructorElement2 element2;
Expand Down Expand Up @@ -140,11 +135,11 @@ class Constructor extends ModelElement with ContainerMember, TypeParameters {
};

var parameterElements = parameters.map((parameter) {
var element = dereferenceParameter(parameter.element2);
return element == null ? parameter : getModelForElement2(element);
var e = dereferenceParameter(parameter.element2);
return e == null ? parameter : getModelForElement2(e);
});
return {
for (var element in parameterElements) element.referenceName: element,
for (var e in parameterElements) e.referenceName: e,
for (var tp in typeParameters) tp.referenceName: tp,
};
}();
Expand Down
7 changes: 0 additions & 7 deletions lib/src/model/container.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,8 @@
// 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.

import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/element2.dart';
import 'package:analyzer/dart/element/scope.dart';
// ignore: implementation_imports
import 'package:analyzer/src/utilities/extensions/element.dart';
import 'package:dartdoc/src/model/comment_referable.dart';
import 'package:dartdoc/src/model/model.dart';
import 'package:dartdoc/src/model_utils.dart' as model_utils;
Expand Down Expand Up @@ -34,10 +31,6 @@ abstract class Container extends ModelElement
with Categorization, TypeParameters {
Container(super.library, super.packageGraph);

@override
// ignore: analyzer_use_new_elements
Element get element => element2.asElement!;

@override
Element2 get element2;

Expand Down
22 changes: 11 additions & 11 deletions lib/src/model/documentation.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ import 'package:dartdoc/src/warnings.dart';
import 'package:markdown/markdown.dart' as md;

class Documentation {
final Warnable _element;
final Warnable _warnable;

Documentation.forElement(this._element);
Documentation.forElement(this._warnable);

/// The documentation text, rendered with the appropriate
/// [DocumentationRenderer].
Expand Down Expand Up @@ -38,10 +38,10 @@ class Documentation {
// set one. We have this awkward check to make sure we set both fields if
// we'll need both fields.
assert(
_element.isCanonical,
"generating docs for non-canonical element: '$_element' "
"('${_element.runtimeType}', ${_element.hashCode}), representing "
"'${_element.element2}'",
_warnable.isCanonical,
"generating docs for non-canonical element: '$_warnable' "
"('${_warnable.runtimeType}', ${_warnable.hashCode}), representing "
"'${_warnable.element2}'",
);
return _asHtml;
}
Expand All @@ -55,7 +55,7 @@ class Documentation {
if (_hasOneLinerBeenRendered || _hasHtmlBeenRendered) {
return _asOneLiner;
}
_renderDocumentation(storeFullText: _element.isCanonical);
_renderDocumentation(storeFullText: _warnable.isCanonical);
_hasOneLinerBeenRendered = true;
return _asOneLiner;
}
Expand All @@ -65,7 +65,7 @@ class Documentation {

var renderResult = _renderer.render(parseResult,
processFullDocs: storeFullText,
sanitizeHtml: _element.config.sanitizeHtml);
sanitizeHtml: _warnable.config.sanitizeHtml);

if (storeFullText) {
_asHtml = renderResult.asHtml;
Expand All @@ -74,12 +74,12 @@ class Documentation {
}

List<md.Node> _parseDocumentation({required bool processFullText}) {
final text = _element.documentation;
final text = _warnable.documentation;
if (text == null || text.isEmpty) {
return const [];
}
showWarningsForGenericsOutsideSquareBracketsBlocks(text, _element);
var document = MarkdownDocument.withElementLinkResolver(_element);
showWarningsForGenericsOutsideSquareBracketsBlocks(text, _warnable);
var document = MarkdownDocument.withElementLinkResolver(_warnable);
return document.parseMarkdownText(text, processFullText: processFullText);
}

Expand Down
4 changes: 2 additions & 2 deletions lib/src/model/documentation_comment.dart
Original file line number Diff line number Diff line change
Expand Up @@ -720,8 +720,8 @@ mixin DocumentationComment
firstOfPair.add(results[i]);
}
}
for (var element in firstOfPair) {
final result = element.group(2)!.trim();
for (var e in firstOfPair) {
final result = e.group(2)!.trim();
if (result.isEmpty) {
warn(PackageWarning.missingCodeBlockLanguage,
message:
Expand Down
8 changes: 1 addition & 7 deletions lib/src/model/dynamic.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,14 @@
// 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.

import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/element2.dart';
// ignore: implementation_imports
import 'package:analyzer/src/utilities/extensions/element.dart';
import 'package:dartdoc/src/element_type.dart';
import 'package:dartdoc/src/model/comment_referable.dart';
import 'package:dartdoc/src/model/kind.dart';
import 'package:dartdoc/src/model/model.dart';

class Dynamic extends ModelElement with HasNoPage {
@override
// ignore: analyzer_use_new_elements
Element get element => element2.asElement!;


@override
final Element2 element2;

Expand Down
10 changes: 2 additions & 8 deletions lib/src/model/enum.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,14 @@
// BSD-style license that can be found in the LICENSE file.

import 'package:analyzer/dart/analysis/features.dart';
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/element2.dart';
// ignore: implementation_imports
import 'package:analyzer/src/utilities/extensions/element.dart';
import 'package:dartdoc/src/model/kind.dart';
import 'package:dartdoc/src/model/model.dart';
import 'package:dartdoc/src/model_utils.dart' as model_utils;
import 'package:meta/meta.dart';

class Enum extends InheritingContainer with Constructable, MixedInTypes {
@override
// ignore: analyzer_use_new_elements
EnumElement get element => element2.asElement;


@override
final EnumElement2 element2;

Expand Down Expand Up @@ -89,7 +83,7 @@ class EnumField extends Field {

EnumField.forConstant(this.index, FieldElement2 element, Library library,
PackageGraph packageGraph, Accessor? getter)
: super.element2(
: super(
element, library, packageGraph, getter as ContainerAccessor?, null);

@override
Expand Down
3 changes: 0 additions & 3 deletions lib/src/model/extension.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

// ignore_for_file: analyzer_use_new_elements

import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/element2.dart';
import 'package:analyzer/dart/element/nullability_suffix.dart';
import 'package:analyzer/dart/element/type.dart';
Expand All @@ -20,8 +19,6 @@ import 'package:meta/meta.dart';
/// Static extension on a given type, containing methods (including getters,
/// setters, operators).
class Extension extends Container {
@override
ExtensionElement get element => element2.asElement;

@override
final ExtensionElement2 element2;
Expand Down
21 changes: 7 additions & 14 deletions lib/src/model/extension_type.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,27 +2,20 @@
// 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/utilities/extensions/element.dart';
import 'package:dartdoc/src/element_type.dart';
import 'package:dartdoc/src/model/comment_referable.dart';
import 'package:dartdoc/src/model/kind.dart';
import 'package:dartdoc/src/model/model.dart';
import 'package:meta/meta.dart';

class ExtensionType extends InheritingContainer with Constructable {
@override
ExtensionTypeElement get element => element2.asElement;

@override
final ExtensionTypeElement2 element2;

late final ElementType representationType =
getTypeFor(element.representation.type, library);
getTypeFor(element2.representation2.type, library);

ExtensionType(this.element2, super.library, super.packageGraph);

Expand All @@ -48,19 +41,19 @@ class ExtensionType extends InheritingContainer with Constructable {
bool get isSealed => false;

@override
late final List<Field> declaredFields = element.fields.map((field) {
late final List<Field> declaredFields = element2.fields2.map((field) {
ContainerAccessor? getter, setter;
final fieldGetter = field.getter;
final fieldGetter = field.getter2;
if (fieldGetter != null) {
getter = ContainerAccessor(
fieldGetter.asElement2, library, packageGraph, this);
fieldGetter, library, packageGraph, this);
}
final fieldSetter = field.setter;
final fieldSetter = field.setter2;
if (fieldSetter != null) {
setter = ContainerAccessor(
fieldSetter.asElement2, library, packageGraph, this);
fieldSetter, library, packageGraph, this);
}
return getModelForPropertyInducingElement(field, library,
return getModelForPropertyInducingElement2(field, library,
getter: getter, setter: setter) as Field;
}).toList(growable: false);

Expand Down
Loading