Skip to content

Commit f0d2276

Browse files
authored
Elements. Migrate to element2 (#3978)
1 parent af0c885 commit f0d2276

File tree

7 files changed

+89
-76
lines changed

7 files changed

+89
-76
lines changed

lib/src/generator/templates.runtime_renderers.dart

Lines changed: 53 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -17944,14 +17944,14 @@ class _Renderer_ModelFunction extends RendererBase<ModelFunction> {
1794417944
() => {
1794517945
..._Renderer_ModelFunctionTyped.propertyMap<CT_>(),
1794617946
..._Renderer_Categorization.propertyMap<CT_>(),
17947-
'element': Property(
17948-
getValue: (CT_ c) => c.element,
17947+
'element2': Property(
17948+
getValue: (CT_ c) => c.element2,
1794917949
renderVariable:
1795017950
(CT_ c, Property<CT_> self, List<String> remainingNames) =>
1795117951
self.renderSimpleVariable(
1795217952
c,
1795317953
remainingNames,
17954-
'FunctionElement',
17954+
'TopLevelFunctionElement',
1795517955
),
1795617956

1795717957
isNullValue: (CT_ c) => false,
@@ -17963,12 +17963,12 @@ class _Renderer_ModelFunction extends RendererBase<ModelFunction> {
1796317963
StringSink sink,
1796417964
) {
1796517965
renderSimple(
17966-
c.element,
17966+
c.element2,
1796717967
ast,
1796817968
r.template,
1796917969
sink,
1797017970
parent: r,
17971-
getters: _invisibleGetters['FunctionElement']!,
17971+
getters: _invisibleGetters['TopLevelFunctionElement']!,
1797217972
);
1797317973
},
1797417974
),
@@ -18165,6 +18165,34 @@ class _Renderer_ModelFunctionTyped extends RendererBase<ModelFunctionTyped> {
1816518165
);
1816618166
},
1816718167
),
18168+
'element2': Property(
18169+
getValue: (CT_ c) => c.element2,
18170+
renderVariable:
18171+
(CT_ c, Property<CT_> self, List<String> remainingNames) =>
18172+
self.renderSimpleVariable(
18173+
c,
18174+
remainingNames,
18175+
'FunctionTypedElement2',
18176+
),
18177+
18178+
isNullValue: (CT_ c) => false,
18179+
18180+
renderValue: (
18181+
CT_ c,
18182+
RendererBase<CT_> r,
18183+
List<MustachioNode> ast,
18184+
StringSink sink,
18185+
) {
18186+
renderSimple(
18187+
c.element2,
18188+
ast,
18189+
r.template,
18190+
sink,
18191+
parent: r,
18192+
getters: _invisibleGetters['FunctionTypedElement2']!,
18193+
);
18194+
},
18195+
),
1816818196
'enclosingElement': Property(
1816918197
getValue: (CT_ c) => c.enclosingElement,
1817018198
renderVariable: (
@@ -20571,13 +20599,13 @@ class _Renderer_PackageTemplateData extends RendererBase<PackageTemplateData> {
2057120599
}
2057220600
}
2057320601

20574-
String renderError(PackageTemplateData context, Template template) {
20602+
String renderSearchPage(PackageTemplateData context, Template template) {
2057520603
var buffer = StringBuffer();
2057620604
_render_PackageTemplateData(context, template.ast, template, buffer);
2057720605
return buffer.toString();
2057820606
}
2057920607

20580-
String renderSearchPage(PackageTemplateData context, Template template) {
20608+
String renderError(PackageTemplateData context, Template template) {
2058120609
var buffer = StringBuffer();
2058220610
_render_PackageTemplateData(context, template.ast, template, buffer);
2058320611
return buffer.toString();
@@ -21656,30 +21684,6 @@ class _Renderer_SourceCode extends RendererBase<SourceCode> {
2165621684
);
2165721685
},
2165821686
),
21659-
'element': Property(
21660-
getValue: (CT_ c) => c.element,
21661-
renderVariable:
21662-
(CT_ c, Property<CT_> self, List<String> remainingNames) =>
21663-
self.renderSimpleVariable(c, remainingNames, 'Element'),
21664-
21665-
isNullValue: (CT_ c) => c.element == null,
21666-
21667-
renderValue: (
21668-
CT_ c,
21669-
RendererBase<CT_> r,
21670-
List<MustachioNode> ast,
21671-
StringSink sink,
21672-
) {
21673-
renderSimple(
21674-
c.element,
21675-
ast,
21676-
r.template,
21677-
sink,
21678-
parent: r,
21679-
getters: _invisibleGetters['Element']!,
21680-
);
21681-
},
21682-
),
2168321687
'hasSourceCode': Property(
2168421688
getValue: (CT_ c) => c.hasSourceCode,
2168521689
renderVariable:
@@ -26407,14 +26411,6 @@ const _invisibleGetters = {
2640726411
'runtimeType',
2640826412
'typeParameters2',
2640926413
},
26410-
'FunctionElement': {
26411-
'augmentation',
26412-
'augmentationTarget',
26413-
'hashCode',
26414-
'isDartCoreIdentical',
26415-
'isEntryPoint',
26416-
'runtimeType',
26417-
},
2641826414
'FunctionType': {
2641926415
'element',
2642026416
'formalParameters',
@@ -26438,6 +26434,15 @@ const _invisibleGetters = {
2643826434
'runtimeType',
2643926435
'type',
2644026436
},
26437+
'FunctionTypedElement2': {
26438+
'firstFragment',
26439+
'formalParameters',
26440+
'fragments',
26441+
'hashCode',
26442+
'returnType',
26443+
'runtimeType',
26444+
'type',
26445+
},
2644126446
'GetterSetterCombo': {
2644226447
'allAccessors',
2644326448
'annotations',
@@ -26875,6 +26880,15 @@ const _invisibleGetters = {
2687526880
'toolVersion',
2687626881
'useBaseHref',
2687726882
},
26883+
'TopLevelFunctionElement': {
26884+
'baseElement',
26885+
'firstFragment',
26886+
'fragments',
26887+
'hashCode',
26888+
'isDartCoreIdentical',
26889+
'isEntryPoint',
26890+
'runtimeType',
26891+
},
2687826892
'TopLevelVariableElement': {
2687926893
'augmentation',
2688026894
'augmentationTarget',

lib/src/model/container_member.dart

Lines changed: 1 addition & 3 deletions
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 'package:dartdoc/src/model/attribute.dart';
86
import 'package:dartdoc/src/model/model.dart';
97
import 'package:meta/meta.dart';
@@ -31,7 +29,7 @@ mixin ContainerMember on ModelElement {
3129
@protected
3230
@visibleForTesting
3331
late final Container definingEnclosingContainer =
34-
getModelForElement(element.enclosingElement3!) as Container;
32+
getModelForElement2(element2.enclosingElement2!) as Container;
3533

3634
@override
3735
Set<Attribute> get attributes => {

lib/src/model/dynamic.dart

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,28 @@
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 'package:analyzer/dart/element/element.dart';
6+
import 'package:analyzer/dart/element/element2.dart';
7+
// ignore: implementation_imports
8+
import 'package:analyzer/src/utilities/extensions/element.dart';
89
import 'package:dartdoc/src/element_type.dart';
910
import 'package:dartdoc/src/model/comment_referable.dart';
1011
import 'package:dartdoc/src/model/kind.dart';
1112
import 'package:dartdoc/src/model/model.dart';
1213

1314
class Dynamic extends ModelElement with HasNoPage {
1415
@override
15-
final Element element;
16+
// ignore: analyzer_use_new_elements
17+
Element get element => element2.asElement!;
18+
19+
@override
20+
final Element2 element2;
1621

17-
Dynamic(this.element, PackageGraph packageGraph)
22+
Dynamic(this.element2, PackageGraph packageGraph)
1823
: super(Library.sentinel, packageGraph);
1924

2025
UndefinedElementType get modelType =>
21-
throw UnimplementedError('(${element.runtimeType}) $element');
26+
throw UnimplementedError('(${element2.runtimeType}) $element2');
2227

2328
/// `dynamic` is not a real object, and so we can't document it, so there
2429
/// can be nothing canonical for it.

lib/src/model/locatable.dart

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +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-
7-
import 'package:analyzer/dart/element/element.dart' show Element;
85
import 'package:dartdoc/src/model/model.dart';
96

107
/// Something that can be located for warning purposes.
@@ -26,8 +23,7 @@ mixin Locatable {
2623

2724
String? get href;
2825

29-
/// A string indicating the URI of this Locatable, usually derived from
30-
/// [Element.location].
26+
/// A string indicating the URI of this Locatable.
3127
String get location;
3228

3329
/// Whether this is the "canonical" copy of an element.

lib/src/model/model_element.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ abstract class ModelElement
248248

249249
if (e.kind == ElementKind.DYNAMIC) {
250250
return packageGraph.allConstructedModelElements[key] =
251-
Dynamic(e, packageGraph);
251+
Dynamic(e.asElement2!, packageGraph);
252252
}
253253
if (e.kind == ElementKind.NEVER) {
254254
return packageGraph.allConstructedModelElements[key] =
@@ -312,10 +312,10 @@ abstract class ModelElement
312312
ClassElement() => Class(e, library, packageGraph),
313313
ExtensionElement() => Extension(e.asElement2, library, packageGraph),
314314
ExtensionTypeElement() => ExtensionType(e, library, packageGraph),
315-
FunctionElement() => ModelFunction(e, library, packageGraph),
315+
FunctionElement() => ModelFunction(e.asElement2 as TopLevelFunctionElement, library, packageGraph),
316316
ConstructorElement() => Constructor(e, library, packageGraph),
317317
GenericFunctionTypeElement() =>
318-
ModelFunctionTypedef(e, library, packageGraph),
318+
ModelFunctionTypedef(e.asElement2 as FunctionTypedElement2, library, packageGraph),
319319
TypeAliasElement(aliasedType: FunctionType()) =>
320320
FunctionTypedef(e.asElement2, library, packageGraph),
321321
TypeAliasElement()

lib/src/model/model_function.dart

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,50 +2,55 @@
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 'package:analyzer/dart/element/element.dart';
6+
import 'package:analyzer/dart/element/element2.dart';
7+
// ignore: implementation_imports
8+
import 'package:analyzer/src/utilities/extensions/element.dart';
89
import 'package:dartdoc/src/element_type.dart';
910
import 'package:dartdoc/src/model/comment_referable.dart';
1011
import 'package:dartdoc/src/model/kind.dart';
1112
import 'package:dartdoc/src/model/model.dart';
1213

13-
/// A [ModelElement] for a [FunctionElement] that isn't part of a type definition.
14+
/// A [ModelElement] for a [TopLevelFunctionElement] that isn't part of a type definition.
1415
class ModelFunction extends ModelFunctionTyped with Categorization {
1516
ModelFunction(
16-
FunctionElement super.element, super.library, super.packageGraph);
17+
TopLevelFunctionElement super.element2, super.library, super.packageGraph);
1718

18-
bool get isStatic => element.isStatic;
19+
bool get isStatic => element2.isStatic;
1920

2021
@override
21-
String get name => element.name;
22+
String get name => element2.name3 ?? '';
2223

2324
@override
24-
FunctionElement get element => super.element as FunctionElement;
25+
TopLevelFunctionElement get element2 => super.element2 as TopLevelFunctionElement;
2526

26-
bool get isAsynchronous => element.isAsynchronous;
27+
bool get isAsynchronous => element2.firstFragment.isAsynchronous;
2728
}
2829

29-
/// A [ModelElement] for a [FunctionTypedElement] that is part of an
30+
/// A [ModelElement] for a [FunctionTypedElement2] that is part of an
3031
/// explicit typedef.
3132
class ModelFunctionTypedef extends ModelFunctionTyped {
32-
ModelFunctionTypedef(super.element, super.library, super.packageGraph);
33+
ModelFunctionTypedef(super.element2, super.library, super.packageGraph);
3334

3435
@override
35-
String get name => element.enclosingElement3!.name!;
36+
String get name => element2.enclosingElement2!.name3!;
3637
}
3738

3839
class ModelFunctionTyped extends ModelElement with TypeParameters {
3940
@override
40-
final FunctionTypedElement element;
41+
// ignore: analyzer_use_new_elements
42+
FunctionTypedElement get element => element2.asElement as FunctionTypedElement;
43+
44+
@override
45+
final FunctionTypedElement2 element2;
4146

4247
@override
4348
late final List<TypeParameter> typeParameters = [
44-
for (var p in element.typeParameters)
45-
getModelFor(p, library) as TypeParameter,
49+
for (var p in element2.typeParameters2)
50+
getModelFor2(p, library) as TypeParameter,
4651
];
4752

48-
ModelFunctionTyped(this.element, super.library, super.packageGraph);
53+
ModelFunctionTyped(this.element2, super.library, super.packageGraph);
4954

5055
@override
5156
Library get enclosingElement => library;
@@ -83,7 +88,7 @@ class ModelFunctionTyped extends ModelElement with TypeParameters {
8388
@override
8489
Iterable<CommentReferable> get referenceParents => [library];
8590

86-
late final Callable modelType = getTypeFor(element.type, library) as Callable;
91+
late final Callable modelType = getTypeFor(element2.type, library) as Callable;
8792

8893
// For use in templates.
8994
bool get isProvidedByExtension => false;

lib/src/model/source_code_mixin.dart

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +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-
7-
import 'package:analyzer/dart/element/element.dart';
85
import 'package:analyzer/source/line_info.dart';
96
import 'package:dartdoc/src/model/model.dart';
107

@@ -13,8 +10,6 @@ mixin SourceCode implements Documentable {
1310

1411
CharacterLocation? get characterLocation;
1512

16-
Element? get element;
17-
1813
bool get hasSourceCode => config.includeSource && sourceCode.isNotEmpty;
1914

2015
Library? get library;

0 commit comments

Comments
 (0)