Skip to content

Commit 75d1fd7

Browse files
authored
Elements. Remove 'element' from ModelElement (#3990)
* Elements. Remove 'element' from ModelElement * Fix test failure
1 parent 03a5ecc commit 75d1fd7

30 files changed

+139
-1105
lines changed

lib/src/generator/templates.runtime_renderers.dart

+5-825
Large diffs are not rendered by default.

lib/src/model/accessor.dart

-6
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,10 @@
44

55
import 'dart:convert';
66

7-
import 'package:analyzer/dart/element/element.dart';
87
import 'package:analyzer/dart/element/element2.dart';
98
import 'package:analyzer/source/line_info.dart';
109
// ignore: implementation_imports
1110
import 'package:analyzer/src/dart/element/member.dart' show ExecutableMember;
12-
// ignore: implementation_imports
13-
import 'package:analyzer/src/utilities/extensions/element.dart';
1411
import 'package:collection/collection.dart' show IterableExtension;
1512
import 'package:dartdoc/src/element_type.dart';
1613
import 'package:dartdoc/src/model/comment_referable.dart';
@@ -21,9 +18,6 @@ import 'package:dartdoc/src/warnings.dart';
2118

2219
/// Getters and setters.
2320
class Accessor extends ModelElement {
24-
@override
25-
// ignore: analyzer_use_new_elements
26-
PropertyAccessorElement get element => element2.asElement;
2721

2822
@override
2923
final PropertyAccessorElement2 element2;

lib/src/model/canonicalization.dart

+7-7
Original file line numberDiff line numberDiff line change
@@ -70,9 +70,9 @@ Library? canonicalLibraryCandidate(ModelElement modelElement) {
7070
/// considers this element to be primarily 'from', and therefore, canonical.
7171
/// Still warn if the heuristic isn't very confident.
7272
final class _Canonicalization {
73-
final ModelElement _element;
73+
final ModelElement _modelElement;
7474

75-
_Canonicalization(this._element);
75+
_Canonicalization(this._modelElement);
7676

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

125-
/// Calculates a candidate for the canonical library of [_element], among [libraries].
125+
/// Calculates a candidate for the canonical library of [_modelElement], among [libraries].
126126
Library canonicalLibraryCandidate(Iterable<Library> libraries) {
127-
var locationPieces = _getElementLocation(_element.element2)
127+
var locationPieces = _getElementLocation(_modelElement.element2)
128128
.split(_locationSplitter)
129129
.where((s) => s.isNotEmpty)
130130
.toSet();
131131
var scoredCandidates = libraries
132132
.map((library) => _scoreElementWithLibrary(
133-
library, _element.fullyQualifiedName, locationPieces))
133+
library, _modelElement.fullyQualifiedName, locationPieces))
134134
.toList(growable: false)
135135
..sort();
136136

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

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

lib/src/model/category.dart

-4
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,7 @@
22
// for details. All rights reserved. Use of this source code is governed by a
33
// BSD-style license that can be found in the LICENSE file.
44

5-
// ignore_for_file: analyzer_use_new_elements
65

7-
import 'package:analyzer/dart/element/element.dart';
86
import 'package:analyzer/dart/element/element2.dart';
97
import 'package:analyzer/file_system/file_system.dart';
108
import 'package:dartdoc/src/dartdoc_options.dart';
@@ -80,8 +78,6 @@ class Category
8078
}
8179
}
8280

83-
@override
84-
Element? get element => null;
8581

8682
@override
8783
Element2? get element2 => null;

lib/src/model/class.dart

-5
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,7 @@
22
// for details. All rights reserved. Use of this source code is governed by a
33
// BSD-style license that can be found in the LICENSE file.
44

5-
import 'package:analyzer/dart/element/element.dart';
65
import 'package:analyzer/dart/element/element2.dart';
7-
// ignore: implementation_imports
8-
import 'package:analyzer/src/utilities/extensions/element.dart';
96
import 'package:dartdoc/src/model/kind.dart';
107
import 'package:dartdoc/src/model/model.dart';
118

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

2419
@override
2520
final ClassElement2 element2;

lib/src/model/constructor.dart

+3-8
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,10 @@
22
// for details. All rights reserved. Use of this source code is governed by a
33
// BSD-style license that can be found in the LICENSE file.
44

5-
import 'package:analyzer/dart/element/element.dart';
65
import 'package:analyzer/dart/element/element2.dart';
76
import 'package:analyzer/source/line_info.dart';
87
// ignore: implementation_imports
98
import 'package:analyzer/src/dart/element/element.dart';
10-
// ignore: implementation_imports
11-
import 'package:analyzer/src/utilities/extensions/element.dart';
129
import 'package:dartdoc/src/element_type.dart';
1310
import 'package:dartdoc/src/model/comment_referable.dart';
1411
import 'package:dartdoc/src/model/kind.dart';
@@ -17,8 +14,6 @@ import 'package:dartdoc/src/model_utils.dart';
1714

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

2318
@override
2419
final ConstructorElement2 element2;
@@ -140,11 +135,11 @@ class Constructor extends ModelElement with ContainerMember, TypeParameters {
140135
};
141136

142137
var parameterElements = parameters.map((parameter) {
143-
var element = dereferenceParameter(parameter.element2);
144-
return element == null ? parameter : getModelForElement2(element);
138+
var e = dereferenceParameter(parameter.element2);
139+
return e == null ? parameter : getModelForElement2(e);
145140
});
146141
return {
147-
for (var element in parameterElements) element.referenceName: element,
142+
for (var e in parameterElements) e.referenceName: e,
148143
for (var tp in typeParameters) tp.referenceName: tp,
149144
};
150145
}();

lib/src/model/container.dart

-7
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,8 @@
22
// for details. All rights reserved. Use of this source code is governed by a
33
// BSD-style license that can be found in the LICENSE file.
44

5-
import 'package:analyzer/dart/element/element.dart';
65
import 'package:analyzer/dart/element/element2.dart';
76
import 'package:analyzer/dart/element/scope.dart';
8-
// ignore: implementation_imports
9-
import 'package:analyzer/src/utilities/extensions/element.dart';
107
import 'package:dartdoc/src/model/comment_referable.dart';
118
import 'package:dartdoc/src/model/model.dart';
129
import 'package:dartdoc/src/model_utils.dart' as model_utils;
@@ -34,10 +31,6 @@ abstract class Container extends ModelElement
3431
with Categorization, TypeParameters {
3532
Container(super.library, super.packageGraph);
3633

37-
@override
38-
// ignore: analyzer_use_new_elements
39-
Element get element => element2.asElement!;
40-
4134
@override
4235
Element2 get element2;
4336

lib/src/model/documentation.dart

+11-11
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ import 'package:dartdoc/src/warnings.dart';
88
import 'package:markdown/markdown.dart' as md;
99

1010
class Documentation {
11-
final Warnable _element;
11+
final Warnable _warnable;
1212

13-
Documentation.forElement(this._element);
13+
Documentation.forElement(this._warnable);
1414

1515
/// The documentation text, rendered with the appropriate
1616
/// [DocumentationRenderer].
@@ -38,10 +38,10 @@ class Documentation {
3838
// set one. We have this awkward check to make sure we set both fields if
3939
// we'll need both fields.
4040
assert(
41-
_element.isCanonical,
42-
"generating docs for non-canonical element: '$_element' "
43-
"('${_element.runtimeType}', ${_element.hashCode}), representing "
44-
"'${_element.element2}'",
41+
_warnable.isCanonical,
42+
"generating docs for non-canonical element: '$_warnable' "
43+
"('${_warnable.runtimeType}', ${_warnable.hashCode}), representing "
44+
"'${_warnable.element2}'",
4545
);
4646
return _asHtml;
4747
}
@@ -55,7 +55,7 @@ class Documentation {
5555
if (_hasOneLinerBeenRendered || _hasHtmlBeenRendered) {
5656
return _asOneLiner;
5757
}
58-
_renderDocumentation(storeFullText: _element.isCanonical);
58+
_renderDocumentation(storeFullText: _warnable.isCanonical);
5959
_hasOneLinerBeenRendered = true;
6060
return _asOneLiner;
6161
}
@@ -65,7 +65,7 @@ class Documentation {
6565

6666
var renderResult = _renderer.render(parseResult,
6767
processFullDocs: storeFullText,
68-
sanitizeHtml: _element.config.sanitizeHtml);
68+
sanitizeHtml: _warnable.config.sanitizeHtml);
6969

7070
if (storeFullText) {
7171
_asHtml = renderResult.asHtml;
@@ -74,12 +74,12 @@ class Documentation {
7474
}
7575

7676
List<md.Node> _parseDocumentation({required bool processFullText}) {
77-
final text = _element.documentation;
77+
final text = _warnable.documentation;
7878
if (text == null || text.isEmpty) {
7979
return const [];
8080
}
81-
showWarningsForGenericsOutsideSquareBracketsBlocks(text, _element);
82-
var document = MarkdownDocument.withElementLinkResolver(_element);
81+
showWarningsForGenericsOutsideSquareBracketsBlocks(text, _warnable);
82+
var document = MarkdownDocument.withElementLinkResolver(_warnable);
8383
return document.parseMarkdownText(text, processFullText: processFullText);
8484
}
8585

lib/src/model/documentation_comment.dart

+2-2
Original file line numberDiff line numberDiff line change
@@ -720,8 +720,8 @@ mixin DocumentationComment
720720
firstOfPair.add(results[i]);
721721
}
722722
}
723-
for (var element in firstOfPair) {
724-
final result = element.group(2)!.trim();
723+
for (var e in firstOfPair) {
724+
final result = e.group(2)!.trim();
725725
if (result.isEmpty) {
726726
warn(PackageWarning.missingCodeBlockLanguage,
727727
message:

lib/src/model/dynamic.dart

+1-7
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,14 @@
22
// for details. All rights reserved. Use of this source code is governed by a
33
// BSD-style license that can be found in the LICENSE file.
44

5-
import 'package:analyzer/dart/element/element.dart';
65
import 'package:analyzer/dart/element/element2.dart';
7-
// ignore: implementation_imports
8-
import 'package:analyzer/src/utilities/extensions/element.dart';
96
import 'package:dartdoc/src/element_type.dart';
107
import 'package:dartdoc/src/model/comment_referable.dart';
118
import 'package:dartdoc/src/model/kind.dart';
129
import 'package:dartdoc/src/model/model.dart';
1310

1411
class Dynamic extends ModelElement with HasNoPage {
15-
@override
16-
// ignore: analyzer_use_new_elements
17-
Element get element => element2.asElement!;
18-
12+
1913
@override
2014
final Element2 element2;
2115

lib/src/model/enum.dart

+2-8
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,14 @@
33
// BSD-style license that can be found in the LICENSE file.
44

55
import 'package:analyzer/dart/analysis/features.dart';
6-
import 'package:analyzer/dart/element/element.dart';
76
import 'package:analyzer/dart/element/element2.dart';
8-
// ignore: implementation_imports
9-
import 'package:analyzer/src/utilities/extensions/element.dart';
107
import 'package:dartdoc/src/model/kind.dart';
118
import 'package:dartdoc/src/model/model.dart';
129
import 'package:dartdoc/src/model_utils.dart' as model_utils;
1310
import 'package:meta/meta.dart';
1411

1512
class Enum extends InheritingContainer with Constructable, MixedInTypes {
16-
@override
17-
// ignore: analyzer_use_new_elements
18-
EnumElement get element => element2.asElement;
19-
13+
2014
@override
2115
final EnumElement2 element2;
2216

@@ -89,7 +83,7 @@ class EnumField extends Field {
8983

9084
EnumField.forConstant(this.index, FieldElement2 element, Library library,
9185
PackageGraph packageGraph, Accessor? getter)
92-
: super.element2(
86+
: super(
9387
element, library, packageGraph, getter as ContainerAccessor?, null);
9488

9589
@override

lib/src/model/extension.dart

-3
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
// ignore_for_file: analyzer_use_new_elements
66

7-
import 'package:analyzer/dart/element/element.dart';
87
import 'package:analyzer/dart/element/element2.dart';
98
import 'package:analyzer/dart/element/nullability_suffix.dart';
109
import 'package:analyzer/dart/element/type.dart';
@@ -20,8 +19,6 @@ import 'package:meta/meta.dart';
2019
/// Static extension on a given type, containing methods (including getters,
2120
/// setters, operators).
2221
class Extension extends Container {
23-
@override
24-
ExtensionElement get element => element2.asElement;
2522

2623
@override
2724
final ExtensionElement2 element2;

lib/src/model/extension_type.dart

+7-14
Original file line numberDiff line numberDiff line change
@@ -2,27 +2,20 @@
22
// for details. All rights reserved. Use of this source code is governed by a
33
// BSD-style license that can be found in the LICENSE file.
44

5-
// ignore_for_file: analyzer_use_new_elements
6-
7-
import 'package:analyzer/dart/element/element.dart';
85
import 'package:analyzer/dart/element/element2.dart';
9-
// ignore: implementation_imports
10-
import 'package:analyzer/src/utilities/extensions/element.dart';
116
import 'package:dartdoc/src/element_type.dart';
127
import 'package:dartdoc/src/model/comment_referable.dart';
138
import 'package:dartdoc/src/model/kind.dart';
149
import 'package:dartdoc/src/model/model.dart';
1510
import 'package:meta/meta.dart';
1611

1712
class ExtensionType extends InheritingContainer with Constructable {
18-
@override
19-
ExtensionTypeElement get element => element2.asElement;
2013

2114
@override
2215
final ExtensionTypeElement2 element2;
2316

2417
late final ElementType representationType =
25-
getTypeFor(element.representation.type, library);
18+
getTypeFor(element2.representation2.type, library);
2619

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

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

5043
@override
51-
late final List<Field> declaredFields = element.fields.map((field) {
44+
late final List<Field> declaredFields = element2.fields2.map((field) {
5245
ContainerAccessor? getter, setter;
53-
final fieldGetter = field.getter;
46+
final fieldGetter = field.getter2;
5447
if (fieldGetter != null) {
5548
getter = ContainerAccessor(
56-
fieldGetter.asElement2, library, packageGraph, this);
49+
fieldGetter, library, packageGraph, this);
5750
}
58-
final fieldSetter = field.setter;
51+
final fieldSetter = field.setter2;
5952
if (fieldSetter != null) {
6053
setter = ContainerAccessor(
61-
fieldSetter.asElement2, library, packageGraph, this);
54+
fieldSetter, library, packageGraph, this);
6255
}
63-
return getModelForPropertyInducingElement(field, library,
56+
return getModelForPropertyInducingElement2(field, library,
6457
getter: getter, setter: setter) as Field;
6558
}).toList(growable: false);
6659

0 commit comments

Comments
 (0)