Skip to content

Commit 98a199f

Browse files
authored
Element model migration: migrate model_utils.dart (#3973)
Also we add an element2 to Warnable which should facilitate a lot of migrations in the future.
1 parent 114c006 commit 98a199f

17 files changed

+126
-42
lines changed

lib/src/generator/templates.runtime_renderers.dart

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1688,6 +1688,34 @@ class _Renderer_Category extends RendererBase<Category> {
16881688
);
16891689
},
16901690
),
1691+
'element2': Property(
1692+
getValue: (CT_ c) => c.element2,
1693+
renderVariable:
1694+
(CT_ c, Property<CT_> self, List<String> remainingNames) =>
1695+
self.renderSimpleVariable(
1696+
c,
1697+
remainingNames,
1698+
'Element2',
1699+
),
1700+
1701+
isNullValue: (CT_ c) => c.element2 == null,
1702+
1703+
renderValue: (
1704+
CT_ c,
1705+
RendererBase<CT_> r,
1706+
List<MustachioNode> ast,
1707+
StringSink sink,
1708+
) {
1709+
renderSimple(
1710+
c.element2,
1711+
ast,
1712+
r.template,
1713+
sink,
1714+
parent: r,
1715+
getters: _invisibleGetters['Element2']!,
1716+
);
1717+
},
1718+
),
16911719
'enclosingName': Property(
16921720
getValue: (CT_ c) => c.enclosingName,
16931721
renderVariable: (
@@ -19199,6 +19227,34 @@ class _Renderer_Package extends RendererBase<Package> {
1919919227
);
1920019228
},
1920119229
),
19230+
'element2': Property(
19231+
getValue: (CT_ c) => c.element2,
19232+
renderVariable:
19233+
(CT_ c, Property<CT_> self, List<String> remainingNames) =>
19234+
self.renderSimpleVariable(
19235+
c,
19236+
remainingNames,
19237+
'Element2',
19238+
),
19239+
19240+
isNullValue: (CT_ c) => c.element2 == null,
19241+
19242+
renderValue: (
19243+
CT_ c,
19244+
RendererBase<CT_> r,
19245+
List<MustachioNode> ast,
19246+
StringSink sink,
19247+
) {
19248+
renderSimple(
19249+
c.element2,
19250+
ast,
19251+
r.template,
19252+
sink,
19253+
parent: r,
19254+
getters: _invisibleGetters['Element2']!,
19255+
);
19256+
},
19257+
),
1920219258
'enclosingName': Property(
1920319259
getValue: (CT_ c) => c.enclosingName,
1920419260
renderVariable: (
@@ -25594,6 +25650,34 @@ class _Renderer_Warnable extends RendererBase<Warnable> {
2559425650
);
2559525651
},
2559625652
),
25653+
'element2': Property(
25654+
getValue: (CT_ c) => c.element2,
25655+
renderVariable:
25656+
(CT_ c, Property<CT_> self, List<String> remainingNames) =>
25657+
self.renderSimpleVariable(
25658+
c,
25659+
remainingNames,
25660+
'Element2',
25661+
),
25662+
25663+
isNullValue: (CT_ c) => c.element2 == null,
25664+
25665+
renderValue: (
25666+
CT_ c,
25667+
RendererBase<CT_> r,
25668+
List<MustachioNode> ast,
25669+
StringSink sink,
25670+
) {
25671+
renderSimple(
25672+
c.element2,
25673+
ast,
25674+
r.template,
25675+
sink,
25676+
parent: r,
25677+
getters: _invisibleGetters['Element2']!,
25678+
);
25679+
},
25680+
),
2559725681
},
2559825682
)
2559925683
as Map<String, Property<CT_>>;

lib/src/model/category.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
// ignore_for_file: analyzer_use_new_elements
66

77
import 'package:analyzer/dart/element/element.dart';
8+
import 'package:analyzer/dart/element/element2.dart';
89
import 'package:analyzer/file_system/file_system.dart';
910
import 'package:dartdoc/src/dartdoc_options.dart';
1011
import 'package:dartdoc/src/model/comment_referable.dart';
@@ -82,6 +83,9 @@ class Category
8283
@override
8384
Element? get element => null;
8485

86+
@override
87+
Element2? get element2 => null;
88+
8589
@override
8690
String get name => _categoryDefinition.displayName;
8791

lib/src/model/constructor.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ class Constructor extends ModelElement with ContainerMember, TypeParameters {
3232
@override
3333
bool get isPublic {
3434
if (!super.isPublic) return false;
35-
if (element.hasPrivateName) return false;
35+
if (element2.hasPrivateName) return false;
3636
var class_ = element.enclosingElement3;
3737
// Enums cannot be explicitly constructed or extended.
3838
if (class_ is EnumElement) return false;

lib/src/model/library.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ class Library extends ModelElement
3030
final LibraryElement element;
3131

3232
@override
33-
LibraryElement2 get element2 => element.asElement2;
33+
LibraryElement2 get element2 => element.asElement2;
3434

3535
/// The set of [Element]s declared directly in this library.
3636
final Set<Element> _localElements;
@@ -315,8 +315,8 @@ class Library extends ModelElement
315315
String get packageName => packageMeta?.name ?? '';
316316

317317
/// The real packageMeta, as opposed to the package we are documenting with.
318-
late final PackageMeta? packageMeta =
319-
packageGraph.packageMetaProvider.fromElement(element.asElement2, config.sdkDir);
318+
late final PackageMeta? packageMeta = packageGraph.packageMetaProvider
319+
.fromElement(element.asElement2, config.sdkDir);
320320

321321
late final List<Class> classesAndExceptions = [
322322
..._localElementsOfType<ClassElement, Class>(),

lib/src/model/model_element.dart

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -312,7 +312,8 @@ abstract class ModelElement
312312
TypeAliasElement(aliasedType: FunctionType()) =>
313313
FunctionTypedef(e, library, packageGraph),
314314
TypeAliasElement()
315-
when e.aliasedType.documentableElement2.asElement is InterfaceElement =>
315+
when e.aliasedType.documentableElement2.asElement
316+
is InterfaceElement =>
316317
ClassTypedef(e, library, packageGraph),
317318
TypeAliasElement() => GeneralizedTypedef(e, library, packageGraph),
318319
MethodElement(isOperator: true) when enclosingContainer == null =>
@@ -438,7 +439,7 @@ abstract class ModelElement
438439
}
439440
}
440441

441-
return !element.hasPrivateName && !hasNodoc;
442+
return !element2.hasPrivateName && !hasNodoc;
442443
}();
443444

444445
@override
@@ -508,7 +509,7 @@ abstract class ModelElement
508509
/// A public, documented library which exports this [ModelElement], ideally in
509510
/// [library]'s package.
510511
late final Library? canonicalLibrary = () {
511-
if (element.hasPrivateName) {
512+
if (element2.hasPrivateName) {
512513
// Privately named elements can never have a canonical library.
513514
return null;
514515
}
@@ -558,6 +559,7 @@ abstract class ModelElement
558559
@override
559560
Element get element;
560561

562+
@override
561563
Element2 get element2 => element.asElement2!;
562564

563565
@override

lib/src/model/nameable.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ mixin Nameable {
6969
enclosingContainer: enclosingContainer,
7070
);
7171

72-
/// Returns the [ModelElement] for [element], instantiating it if needed.
72+
/// Returns the [ModelElement] for [element], instantiating it if needed.
7373
///
7474
/// A convenience method for [ModelElement.for_], see its documentation.
7575
ModelElement getModelFor2(
@@ -91,7 +91,7 @@ mixin Nameable {
9191
ModelElement getModelForElement(Element element) =>
9292
ModelElement.forElement(element, packageGraph);
9393

94-
/// Returns the [ModelElement] for [element], instantiating it if needed.
94+
/// Returns the [ModelElement] for [element], instantiating it if needed.
9595
///
9696
/// A convenience method for [ModelElement.forElement], see its
9797
/// documentation.

lib/src/model/package.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
// ignore_for_file: analyzer_use_new_elements
66

77
import 'package:analyzer/dart/element/element.dart';
8+
import 'package:analyzer/dart/element/element2.dart';
89
import 'package:dartdoc/src/dartdoc_options.dart';
910
import 'package:dartdoc/src/io_utils.dart';
1011
import 'package:dartdoc/src/model/comment_referable.dart';
@@ -378,6 +379,9 @@ class Package extends LibraryContainer
378379
@override
379380
Element? get element => null;
380381

382+
@override
383+
Element2? get element2 => null;
384+
381385
@override
382386
List<String> get containerOrder => config.packageOrder;
383387

lib/src/model_utils.dart

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,9 @@
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-
75
import 'dart:io' show Platform;
86

9-
import 'package:analyzer/dart/element/element.dart';
7+
import 'package:analyzer/dart/element/element2.dart';
108
import 'package:dartdoc/src/failure.dart';
119
import 'package:dartdoc/src/model/model.dart';
1210
import 'package:glob/glob.dart';
@@ -54,9 +52,9 @@ Iterable<T> filterHasCanonical<T extends ModelElement>(
5452
return maybeHasCanonicalItems.where((me) => me.canonicalModelElement != null);
5553
}
5654

57-
extension ElementExtension on Element {
55+
extension ElementExtension on Element2 {
5856
bool get hasPrivateName {
59-
final name = this.name;
57+
final name = name3;
6058
if (name == null) return false;
6159

6260
if (name.startsWith('_')) {
@@ -67,8 +65,8 @@ extension ElementExtension on Element {
6765

6866
// GenericFunctionTypeElements have the name we care about in the enclosing
6967
// element.
70-
if (self is GenericFunctionTypeElement) {
71-
var enclosingElementName = self.enclosingElement3?.name;
68+
if (self is GenericFunctionTypeElement2) {
69+
var enclosingElementName = self.enclosingElement2?.name3;
7270
if (enclosingElementName != null &&
7371
enclosingElementName.startsWith('_')) {
7472
return true;

lib/src/type_utils.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import 'package:analyzer/dart/element/element2.dart';
66
import 'package:analyzer/dart/element/type.dart';
77

88
extension DartTypeExtension on DartType {
9-
109
/// The static element associataed with this type, where documentable, and
1110
/// `null` otherwise.
1211
///

lib/src/warnings.dart

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,6 @@ import 'dart:math' as math;
1010
import 'package:analyzer/dart/element/element.dart';
1111
import 'package:analyzer/dart/element/element2.dart';
1212
import 'package:analyzer/file_system/file_system.dart';
13-
// ignore: implementation_imports
14-
import 'package:analyzer/src/utilities/extensions/element.dart';
1513
import 'package:collection/collection.dart';
1614
import 'package:dartdoc/src/dartdoc_options.dart';
1715
import 'package:dartdoc/src/logging.dart';
@@ -102,6 +100,8 @@ List<DartdocOption<Object?>> createPackageWarningOptions(
102100
mixin Warnable implements CommentReferable, Documentable, Locatable {
103101
Element? get element;
104102

103+
Element2? get element2;
104+
105105
void warn(
106106
PackageWarning kind, {
107107
String? message,
@@ -481,7 +481,7 @@ class PackageWarningOptions {
481481
}
482482

483483
class PackageWarningCounter {
484-
final Map<Element?, Map<PackageWarning, Set<String>>> _countedWarnings = {};
484+
final Map<Element2?, Map<PackageWarning, Set<String>>> _countedWarnings = {};
485485
final _items = <Jsonable>[];
486486
final _displayedWarningCounts = <PackageWarning, int>{};
487487
final PackageGraph packageGraph;
@@ -496,17 +496,10 @@ class PackageWarningCounter {
496496
/// The total amount of warnings this package has experienced.
497497
int get warningCount => _warningCount;
498498

499-
/// An unmodifiable map view of all counted warnings related by their element,
500-
/// warning type, and message.
501-
UnmodifiableMapView<Element?, Map<PackageWarning, Set<String>>>
502-
get countedWarnings => UnmodifiableMapView(_countedWarnings);
503-
504499
/// An unmodifiable map view of all counted warnings related by their element,
505500
/// warning type, and message.
506501
UnmodifiableMapView<Element2?, Map<PackageWarning, Set<String>>>
507-
get countedWarnings2 => UnmodifiableMapView(_countedWarnings.map((key,
508-
value) =>
509-
MapEntry(key?.asElement2, value)));
502+
get countedWarnings => UnmodifiableMapView(_countedWarnings);
510503

511504
PackageWarningCounter(this.packageGraph);
512505

@@ -558,7 +551,7 @@ class PackageWarningCounter {
558551
if (element == null) {
559552
return false;
560553
}
561-
final warning = _countedWarnings[element.element];
554+
final warning = _countedWarnings[element.element2];
562555
if (warning != null) {
563556
final messages = warning[kind];
564557
return messages != null &&
@@ -587,7 +580,7 @@ class PackageWarningCounter {
587580
}
588581
var elementName = element == null ? '<global>' : element.fullyQualifiedName;
589582
_countedWarnings
590-
.putIfAbsent(element?.element, () => {})
583+
.putIfAbsent(element?.element2, () => {})
591584
.putIfAbsent(kind, () => {})
592585
.add(message);
593586
_writeWarning(

0 commit comments

Comments
 (0)