Skip to content

Commit 53aa4bc

Browse files
authored
Migrate element_type to nnbd (#2834)
1 parent 2a48c40 commit 53aa4bc

File tree

9 files changed

+188
-144
lines changed

9 files changed

+188
-144
lines changed

lib/src/element_type.dart

Lines changed: 96 additions & 103 deletions
Large diffs are not rendered by default.

lib/src/generator/templates.runtime_renderers.dart

Lines changed: 63 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1883,16 +1883,26 @@ class _Renderer_CommentReferable extends RendererBase<CommentReferable> {
18831883
_propertyMapCache.putIfAbsent(
18841884
CT_,
18851885
() => {
1886-
'element': Property(
1887-
getValue: (CT_ c) => c.element,
1888-
renderVariable: (CT_ c, Property<CT_> self,
1889-
List<String> remainingNames) =>
1890-
self.renderSimpleVariable(c, remainingNames, 'Element'),
1891-
isNullValue: (CT_ c) => c.element == null,
1886+
'definingCommentReferable': Property(
1887+
getValue: (CT_ c) => c.definingCommentReferable,
1888+
renderVariable:
1889+
(CT_ c, Property<CT_> self, List<String> remainingNames) {
1890+
if (remainingNames.isEmpty) {
1891+
return self.getValue(c).toString();
1892+
}
1893+
var name = remainingNames.first;
1894+
var nextProperty =
1895+
_Renderer_CommentReferable.propertyMap().getValue(name);
1896+
return nextProperty.renderVariable(self.getValue(c),
1897+
nextProperty, [...remainingNames.skip(1)]);
1898+
},
1899+
isNullValue: (CT_ c) => c.definingCommentReferable == null,
18921900
renderValue: (CT_ c, RendererBase<CT_> r,
18931901
List<MustachioNode> ast, StringSink sink) {
1894-
renderSimple(c.element, ast, r.template, sink,
1895-
parent: r, getters: _invisibleGetters['Element']);
1902+
renderSimple(
1903+
c.definingCommentReferable, ast, r.template, sink,
1904+
parent: r,
1905+
getters: _invisibleGetters['CommentReferable']);
18961906
},
18971907
),
18981908
'href': Property(
@@ -3556,6 +3566,28 @@ class _Renderer_DefinedElementType extends RendererBase<DefinedElementType> {
35563566
CT_,
35573567
() => {
35583568
..._Renderer_ElementType.propertyMap<CT_>(),
3569+
'definingCommentReferable': Property(
3570+
getValue: (CT_ c) => c.definingCommentReferable,
3571+
renderVariable:
3572+
(CT_ c, Property<CT_> self, List<String> remainingNames) {
3573+
if (remainingNames.isEmpty) {
3574+
return self.getValue(c).toString();
3575+
}
3576+
var name = remainingNames.first;
3577+
var nextProperty =
3578+
_Renderer_CommentReferable.propertyMap().getValue(name);
3579+
return nextProperty.renderVariable(self.getValue(c),
3580+
nextProperty, [...remainingNames.skip(1)]);
3581+
},
3582+
isNullValue: (CT_ c) => c.definingCommentReferable == null,
3583+
renderValue: (CT_ c, RendererBase<CT_> r,
3584+
List<MustachioNode> ast, StringSink sink) {
3585+
renderSimple(
3586+
c.definingCommentReferable, ast, r.template, sink,
3587+
parent: r,
3588+
getters: _invisibleGetters['CommentReferable']);
3589+
},
3590+
),
35593591
'element': Property(
35603592
getValue: (CT_ c) => c.element,
35613593
renderVariable: (CT_ c, Property<CT_> self,
@@ -9511,6 +9543,28 @@ class _Renderer_ModelElement extends RendererBase<ModelElement> {
95119543
getters: _invisibleGetters['DartdocOptionContext']);
95129544
},
95139545
),
9546+
'definingCommentReferable': Property(
9547+
getValue: (CT_ c) => c.definingCommentReferable,
9548+
renderVariable:
9549+
(CT_ c, Property<CT_> self, List<String> remainingNames) {
9550+
if (remainingNames.isEmpty) {
9551+
return self.getValue(c).toString();
9552+
}
9553+
var name = remainingNames.first;
9554+
var nextProperty =
9555+
_Renderer_CommentReferable.propertyMap().getValue(name);
9556+
return nextProperty.renderVariable(self.getValue(c),
9557+
nextProperty, [...remainingNames.skip(1)]);
9558+
},
9559+
isNullValue: (CT_ c) => c.definingCommentReferable == null,
9560+
renderValue: (CT_ c, RendererBase<CT_> r,
9561+
List<MustachioNode> ast, StringSink sink) {
9562+
renderSimple(
9563+
c.definingCommentReferable, ast, r.template, sink,
9564+
parent: r,
9565+
getters: _invisibleGetters['CommentReferable']);
9566+
},
9567+
),
95149568
'definingLibrary': Property(
95159569
getValue: (CT_ c) => c.definingLibrary,
95169570
renderVariable:
@@ -15177,7 +15231,7 @@ const _invisibleGetters = {
1517715231
'referenceGrandparentOverrides',
1517815232
'referenceName',
1517915233
'library',
15180-
'element'
15234+
'definingCommentReferable'
1518115235
},
1518215236
'CompilationUnitElement': {
1518315237
'hashCode',
@@ -15672,7 +15726,6 @@ const _invisibleGetters = {
1567215726
'sdk',
1567315727
'allLibrariesAdded',
1567415728
'name',
15675-
'element',
1567615729
'implementors',
1567715730
'documentedExtensions',
1567815731
'extensions',

lib/src/model/comment_referable.dart

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,9 @@ mixin CommentReferable implements Nameable, ModelBuilderInterface {
225225
// TODO(jcollins-g): Eliminate need for this in markdown_processor.
226226
Library? get library => null;
227227

228-
// TODO(jcollins-g): Eliminate need for this in markdown_processor.
229-
Element? get element;
228+
@internal
229+
230+
/// For testing / comparison only, get the comment referable from where this
231+
/// [ElementType] was defined. Override where an [Element] is available.
232+
CommentReferable get definingCommentReferable => this;
230233
}

lib/src/model/model_element.dart

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -996,4 +996,10 @@ abstract class ModelElement extends Canonicalization
996996

997997
return modelElementRenderer.renderLinkedName(this);
998998
}
999+
1000+
@internal
1001+
@override
1002+
CommentReferable get definingCommentReferable => element == null
1003+
? super.definingCommentReferable
1004+
: modelBuilder.fromElement(element);
9991005
}

lib/src/model/package_graph.dart

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,6 @@ class PackageGraph with CommentReferable, Nameable, ModelBuilder {
5454
@override
5555
String get name => null;
5656

57-
@override
58-
Element get element => null;
59-
6057
/// Call during initialization to add a library to this [PackageGraph].
6158
///
6259
/// Libraries added in this manner are assumed to be part of documented

lib/src/render/element_type_renderer.dart

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -182,14 +182,12 @@ class CallableElementTypeRendererHtml
182182
String renderNameWithGenerics(CallableElementType elementType) {
183183
var buf = StringBuffer();
184184
buf.write(elementType.name);
185-
if (elementType.typeArguments != null) {
186-
if (elementType.typeArguments.isNotEmpty &&
187-
!elementType.typeArguments.every((t) => t.name == 'dynamic')) {
188-
buf.write('&lt;');
189-
buf.writeAll(
190-
elementType.typeArguments.map((t) => t.nameWithGenerics), ', ');
191-
buf.write('>');
192-
}
185+
if (elementType.typeArguments.isNotEmpty &&
186+
!elementType.typeArguments.every((t) => t.name == 'dynamic')) {
187+
buf.write('&lt;');
188+
buf.writeAll(
189+
elementType.typeArguments.map((t) => t.nameWithGenerics), ', ');
190+
buf.write('>');
193191
}
194192
return wrapNullability(elementType, buf.toString());
195193
}
@@ -345,14 +343,12 @@ class CallableElementTypeRendererMd
345343
String renderNameWithGenerics(CallableElementType elementType) {
346344
var buf = StringBuffer();
347345
buf.write(elementType.name);
348-
if (elementType.typeArguments != null) {
349-
if (elementType.typeArguments.isNotEmpty &&
350-
!elementType.typeArguments.every((t) => t.name == 'dynamic')) {
351-
buf.write('&lt;');
352-
buf.writeAll(
353-
elementType.typeArguments.map((t) => t.nameWithGenerics), ', ');
354-
buf.write('>');
355-
}
346+
if (elementType.typeArguments.isNotEmpty &&
347+
!elementType.typeArguments.every((t) => t.name == 'dynamic')) {
348+
buf.write('&lt;');
349+
buf.writeAll(
350+
elementType.typeArguments.map((t) => t.nameWithGenerics), ', ');
351+
buf.write('>');
356352
}
357353
return wrapNullability(elementType, buf.toString());
358354
}

lib/src/warnings.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,6 @@ const Map<PackageWarning, PackageWarningDefinition> packageWarningDefinitions =
282282
/// Something that package warnings can be called on. Optionally associated
283283
/// with an analyzer [element].
284284
mixin Warnable implements Canonicalization, CommentReferable {
285-
@override
286285
Element? get element;
287286

288287
Warnable? get enclosingElement;

test/comment_referable/comment_referable_test.dart

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

77
library dartdoc.comment_reference_test;
88

9-
import 'package:analyzer/dart/element/element.dart';
109
import 'package:dartdoc/src/model/comment_referable.dart';
1110
import 'package:dartdoc/src/model/model_object_builder.dart';
1211
import 'package:dartdoc/src/model/nameable.dart';
@@ -34,9 +33,6 @@ abstract class Base extends Nameable with CommentReferable {
3433
referenceBy(value.split(_separator),
3534
allowTree: allowTree ?? (_) => true, filter: filter ?? (_) => true);
3635

37-
@override
38-
Element get element => throw UnimplementedError();
39-
4036
@override
4137
Iterable<CommentReferable> get referenceGrandparentOverrides => null;
4238
}

test/src/utils.dart

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -204,11 +204,12 @@ two:lib/
204204
/// as the original lookup code returns canonicalized results and the
205205
/// new lookup code is only guaranteed to return equivalent results.
206206
MatchingLinkResult definingLinkResult(MatchingLinkResult originalResult) {
207-
if (originalResult.commentReferable?.element != null) {
208-
return MatchingLinkResult(
209-
originalResult.commentReferable.modelBuilder
210-
.fromElement(originalResult.commentReferable.element),
211-
warn: originalResult.warn);
207+
var definingReferable =
208+
originalResult.commentReferable?.definingCommentReferable;
209+
210+
if (definingReferable != null &&
211+
definingReferable != originalResult.commentReferable) {
212+
return MatchingLinkResult(definingReferable, warn: originalResult.warn);
212213
}
213214
return originalResult;
214215
}

0 commit comments

Comments
 (0)