Skip to content

Commit 9366e01

Browse files
authored
Elements. Migrate lib/src/model/accessor.dart (#3984)
1 parent 814fbec commit 9366e01

File tree

4 files changed

+37
-29
lines changed

4 files changed

+37
-29
lines changed

lib/src/model/accessor.dart

+27-24
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
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:convert';
86

97
import 'package:analyzer/dart/element/element.dart';
@@ -24,10 +22,11 @@ import 'package:dartdoc/src/warnings.dart';
2422
/// Getters and setters.
2523
class Accessor extends ModelElement {
2624
@override
27-
final PropertyAccessorElement element;
25+
// ignore: analyzer_use_new_elements
26+
PropertyAccessorElement get element => element2.asElement;
2827

2928
@override
30-
PropertyAccessorElement2 get element2 => element.asElement2;
29+
final PropertyAccessorElement2 element2;
3130

3231
/// The combo ([Field] or [TopLevelVariable]) containing this accessor.
3332
///
@@ -37,11 +36,11 @@ class Accessor extends ModelElement {
3736
// initialized by code inside this library.
3837
late final GetterSetterCombo enclosingCombo;
3938

40-
Accessor(this.element, super.library, super.packageGraph,
39+
Accessor(this.element2, super.library, super.packageGraph,
4140
{ExecutableMember? super.originalMember});
4241

4342
@override
44-
CharacterLocation? get characterLocation => element.isSynthetic
43+
CharacterLocation? get characterLocation => element2.isSynthetic
4544
? enclosingCombo.characterLocation
4645
: super.characterLocation;
4746

@@ -50,19 +49,19 @@ class Accessor extends ModelElement {
5049
super.originalMember as ExecutableMember?;
5150

5251
late final Callable modelType =
53-
getTypeFor((originalMember ?? element).type, library) as Callable;
52+
getTypeFor((originalMember ?? element2).type, library) as Callable;
5453

55-
bool get isSynthetic => element.isSynthetic;
54+
bool get isSynthetic => element2.isSynthetic;
5655

5756
/// The [enclosingCombo] where this element was defined.
5857
late final GetterSetterCombo definingCombo =
59-
getModelForElement(element.variable2!) as GetterSetterCombo;
58+
getModelForElement2(element2.variable3!) as GetterSetterCombo;
6059

6160
String get _sourceCode {
6261
if (!isSynthetic) {
6362
return super.sourceCode;
6463
}
65-
var modelNode = packageGraph.getModelNodeFor(definingCombo.element);
64+
var modelNode = packageGraph.getModelNodeFor2(definingCombo.element2);
6665
return modelNode == null
6766
? ''
6867
: const HtmlEscape().convert(modelNode.sourceCode);
@@ -108,7 +107,7 @@ class Accessor extends ModelElement {
108107
@override
109108
bool get hasDocumentationComment => isSynthetic
110109
? _hasSyntheticDocumentationComment
111-
: element.documentationComment != null;
110+
: element2.documentationComment != null;
112111

113112
@override
114113
void warn(
@@ -124,10 +123,10 @@ class Accessor extends ModelElement {
124123
}
125124

126125
@override
127-
ModelElement get enclosingElement => switch (element.enclosingElement3) {
128-
CompilationUnitElement enclosingCompilationUnit =>
129-
getModelForElement(enclosingCompilationUnit.library),
130-
_ => getModelFor(element.enclosingElement3, library)
126+
ModelElement get enclosingElement => switch (element2.enclosingElement2) {
127+
LibraryFragment enclosingCompilationUnit =>
128+
getModelForElement2(enclosingCompilationUnit.element),
129+
_ => getModelFor2(element2.enclosingElement2!, library)
131130
};
132131

133132
@override
@@ -154,9 +153,9 @@ class Accessor extends ModelElement {
154153
@override
155154
String? get href => enclosingCombo.href;
156155

157-
bool get isGetter => element.isGetter;
156+
bool get isGetter => element2 is GetterElement;
158157

159-
bool get isSetter => element.isSetter;
158+
bool get isSetter => element2 is SetterElement;
160159

161160
@override
162161
Kind get kind => Kind.accessor;
@@ -214,24 +213,28 @@ class ContainerAccessor extends Accessor with ContainerMember, Inheritable {
214213
@override
215214
ContainerAccessor? get overriddenElement {
216215
assert(packageGraph.allLibrariesAdded);
217-
final parent = element.enclosingElement3;
218-
if (parent is! InterfaceElement) {
216+
final parent = element2.enclosingElement2;
217+
if (parent is! InterfaceElement2) {
219218
return null;
220219
}
221220
for (final supertype in parent.allSupertypes) {
222221
var accessor = isGetter
223-
? supertype.getGetter(element.name)?.declaration
224-
: supertype.getSetter(element.name)?.declaration;
222+
? supertype.getters
223+
.firstWhereOrNull((e) => e.lookupName == element2.lookupName)
224+
?.baseElement
225+
: supertype.setters
226+
.firstWhereOrNull((e) => e.lookupName == element2.lookupName)
227+
?.baseElement;
225228
if (accessor == null) {
226229
continue;
227230
}
228231
final parentContainer =
229-
getModelForElement(supertype.element) as InheritingContainer;
232+
getModelForElement2(supertype.element3) as InheritingContainer;
230233
final possibleFields =
231234
parentContainer.declaredFields.where((f) => !f.isStatic);
232-
final fieldName = accessor.name.replaceFirst('=', '');
235+
final fieldName = accessor.lookupName?.replaceFirst('=', '');
233236
final foundField =
234-
possibleFields.firstWhereOrNull((f) => f.element.name == fieldName);
237+
possibleFields.firstWhereOrNull((f) => f.element2.name3 == fieldName);
235238
if (foundField == null) {
236239
continue;
237240
}

lib/src/model/extension_type.dart

+4-2
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,13 @@ class ExtensionType extends InheritingContainer with Constructable {
5353
ContainerAccessor? getter, setter;
5454
final fieldGetter = field.getter;
5555
if (fieldGetter != null) {
56-
getter = ContainerAccessor(fieldGetter, library, packageGraph, this);
56+
getter = ContainerAccessor(
57+
fieldGetter.asElement2, library, packageGraph, this);
5758
}
5859
final fieldSetter = field.setter;
5960
if (fieldSetter != null) {
60-
setter = ContainerAccessor(fieldSetter, library, packageGraph, this);
61+
setter = ContainerAccessor(
62+
fieldSetter.asElement2, library, packageGraph, this);
6163
}
6264
return getModelForPropertyInducingElement(field, library,
6365
getter: getter, setter: setter) as Field;

lib/src/model/model_element.dart

+3-3
Original file line numberDiff line numberDiff line change
@@ -370,15 +370,15 @@ abstract class ModelElement
370370
if (e.enclosingElement3 is ExtensionElement ||
371371
e.enclosingElement3 is InterfaceElement) {
372372
if (enclosingContainer == null || enclosingContainer is Extension) {
373-
return ContainerAccessor(e, library, packageGraph, enclosingContainer);
373+
return ContainerAccessor(e.asElement2, library, packageGraph, enclosingContainer);
374374
}
375375

376376
return ContainerAccessor.inherited(
377-
e, library, packageGraph, enclosingContainer,
377+
e.asElement2, library, packageGraph, enclosingContainer,
378378
originalMember: originalMember as ExecutableMember?);
379379
}
380380

381-
return Accessor(e, library, packageGraph);
381+
return Accessor(e.asElement2, library, packageGraph);
382382
}
383383

384384
/// The model element enclosing this one.

lib/src/model/package_graph.dart

+3
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,9 @@ class PackageGraph with CommentReferable, Nameable {
311311

312312
ModelNode? getModelNodeFor(Element element) => _modelNodes[element];
313313

314+
ModelNode? getModelNodeFor2(Element2 element2) =>
315+
_modelNodes[element2.asElement];
316+
314317
/// It is safe to cache values derived from the [_implementers] table if this
315318
/// is true.
316319
bool allImplementersAdded = false;

0 commit comments

Comments
 (0)