2
2
// for details. All rights reserved. Use of this source code is governed by a
3
3
// BSD-style license that can be found in the LICENSE file.
4
4
5
- // ignore_for_file: analyzer_use_new_elements
6
-
7
5
import 'package:analyzer/dart/element/element.dart' ;
6
+ import 'package:analyzer/dart/element/element2.dart' ;
8
7
import 'package:analyzer/source/line_info.dart' ;
9
8
import 'package:dartdoc/src/element_type.dart' ;
10
9
import 'package:dartdoc/src/model/comment_referable.dart' ;
@@ -14,13 +13,19 @@ import 'package:dartdoc/src/model_utils.dart';
14
13
15
14
class Constructor extends ModelElement with ContainerMember , TypeParameters {
16
15
@override
17
- final ConstructorElement element;
16
+ // ignore: analyzer_use_new_elements
17
+ ConstructorElement get element =>
18
+ // ignore: analyzer_use_new_elements
19
+ element2.firstFragment as ConstructorElement ;
20
+
21
+ @override
22
+ final ConstructorElement2 element2;
18
23
19
- Constructor (this .element , super .library, super .packageGraph);
24
+ Constructor (this .element2 , super .library, super .packageGraph);
20
25
21
26
@override
22
27
CharacterLocation ? get characterLocation {
23
- if (element .isSynthetic) {
28
+ if (element2 .isSynthetic) {
24
29
// Make warnings for a synthetic constructor refer to somewhere reasonable
25
30
// since a synthetic constructor has no definition independent of the
26
31
// parent class.
@@ -33,11 +38,11 @@ class Constructor extends ModelElement with ContainerMember, TypeParameters {
33
38
bool get isPublic {
34
39
if (! super .isPublic) return false ;
35
40
if (element2.hasPrivateName) return false ;
36
- var class_ = element.enclosingElement3 ;
41
+ var class_ = element2.enclosingElement2 ;
37
42
// Enums cannot be explicitly constructed or extended.
38
- if (class_ is EnumElement ) return false ;
39
- if (class_ is ClassElement ) {
40
- if (element .isFactory) return true ;
43
+ if (class_ is EnumElement2 ) return false ;
44
+ if (class_ is ClassElement2 ) {
45
+ if (element2 .isFactory) return true ;
41
46
if (class_.isSealed ||
42
47
(class_.isAbstract && class_.isFinal) ||
43
48
(class_.isAbstract && class_.isInterface)) {
@@ -56,7 +61,12 @@ class Constructor extends ModelElement with ContainerMember, TypeParameters {
56
61
57
62
@override
58
63
Container get enclosingElement =>
59
- getModelFor (element.enclosingElement3, library) as Container ;
64
+ getModelFor2 (element2.enclosingElement2, library) as Container ;
65
+
66
+ @override
67
+ String get fileName =>
68
+ // TODO(srawlins): It would be great to use `new.html` as the file name.
69
+ isUnnamedConstructor ? '${enclosingElement .name }.html' : '$name .html' ;
60
70
61
71
@override
62
72
String get aboveSidebarPath => enclosingElement.sidebarPath;
@@ -71,47 +81,40 @@ class Constructor extends ModelElement with ContainerMember, TypeParameters {
71
81
}
72
82
73
83
@override
74
- String get fullyQualifiedName {
75
- if (isUnnamedConstructor) return super .fullyQualifiedName;
76
- return '${library .name }.$name ' ;
77
- }
84
+ String get fullyQualifiedName => '${library .name }.$name ' ;
78
85
79
86
@override
80
- bool get isConst => element .isConst;
87
+ bool get isConst => element2 .isConst;
81
88
82
- bool get isUnnamedConstructor => name == enclosingElement.name ;
89
+ bool get isUnnamedConstructor => element2.name3 == 'new' ;
83
90
84
- bool get isFactory => element .isFactory;
91
+ bool get isFactory => element2 .isFactory;
85
92
86
93
@override
87
94
Kind get kind => Kind .constructor;
88
95
89
- late final Callable modelType = getTypeFor (element.type, library) as Callable ;
96
+ late final Callable modelType =
97
+ getTypeFor (element2.type, library) as Callable ;
90
98
91
99
@override
92
- String get name {
93
- // TODO(jcollins-g): After the old lookup code is retired, rationalize
94
- // [name] around the conventions used in referenceChildren and replace
95
- // code there and elsewhere with simple references to the name.
96
- var constructorName = element.name;
97
- if (constructorName.isEmpty) {
98
- return enclosingElement.name;
99
- }
100
- return '${enclosingElement .name }.$constructorName ' ;
101
- }
100
+ String get name =>
101
+ // TODO(jcollins-g): After the old lookup code is retired, rationalize
102
+ // [name] around the conventions used in referenceChildren and replace
103
+ // code there and elsewhere with simple references to the name.
104
+ '${enclosingElement .name }.${element2 .name3 }' ;
102
105
103
106
@override
104
107
String get nameWithGenerics {
105
- var constructorName = element.name ;
106
- if (constructorName.isEmpty ) {
108
+ var constructorName = element2.name3 ! ;
109
+ if (constructorName == 'new' ) {
107
110
return '${enclosingElement .name }$genericParameters ' ;
108
111
}
109
112
return '${enclosingElement .name }$genericParameters .$constructorName ' ;
110
113
}
111
114
112
115
String ? get shortName {
113
116
if (name.contains ('.' )) {
114
- return name.substring (element.enclosingElement3.name .length + 1 );
117
+ return name.substring (element2.enclosingElement2.name3 ! .length + 1 );
115
118
} else {
116
119
return name;
117
120
}
@@ -120,17 +123,17 @@ class Constructor extends ModelElement with ContainerMember, TypeParameters {
120
123
@override
121
124
late final Map <String , CommentReferable > referenceChildren = () {
122
125
// Find the element that [parameter] is _really_ referring to.
123
- Element ? dereferenceParameter (ParameterElement ? parameter) =>
126
+ Element2 ? dereferenceParameter (FormalParameterElement ? parameter) =>
124
127
switch (parameter) {
125
- FieldFormalParameterElement () => parameter.field ,
126
- SuperFormalParameterElement () =>
127
- dereferenceParameter (parameter.superConstructorParameter ),
128
+ FieldFormalParameterElement2 () => parameter.field2 ,
129
+ SuperFormalParameterElement2 () =>
130
+ dereferenceParameter (parameter.superConstructorParameter2 ),
128
131
_ => parameter
129
132
};
130
133
131
134
var parameterElements = parameters.map ((parameter) {
132
- var element = dereferenceParameter (parameter.element );
133
- return element == null ? parameter : getModelForElement (element);
135
+ var element = dereferenceParameter (parameter.element2 );
136
+ return element == null ? parameter : getModelForElement2 (element);
134
137
});
135
138
return {
136
139
for (var element in parameterElements) element.referenceName: element,
@@ -140,5 +143,5 @@ class Constructor extends ModelElement with ContainerMember, TypeParameters {
140
143
141
144
@override
142
145
String get referenceName =>
143
- isUnnamedConstructor ? enclosingElement.name : element.name ;
146
+ isUnnamedConstructor ? enclosingElement.name : element2.name3 ! ;
144
147
}
0 commit comments