Skip to content

Commit f7a44cd

Browse files
authored
Compare DefinedElementTypes as equivalent with their forwarded element (#2706)
* It 'works' but no tests for new functionality yet * dartfmt * add tests for type parameters, handle more constructor parameter edge cases * dartfmt rebuild * remove debugging * correct isEquivalentTo to handle element type forwarding * This was never correct, delete hrefs for type parameters * Correct a problem with inherited docs * Remember, we need both * add a fully qualified name for DefinedElementType so that the comparison messages are more useful * Remove commented out code block
1 parent feab6a9 commit f7a44cd

File tree

3 files changed

+32
-0
lines changed

3 files changed

+32
-0
lines changed

lib/src/element_type.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -297,6 +297,9 @@ abstract class DefinedElementType extends ElementType {
297297
@override
298298
String get name => type.element.name;
299299

300+
@override
301+
String get fullyQualifiedName => modelElement.fullyQualifiedName;
302+
300303
bool get isParameterType => (type is TypeParameterType);
301304

302305
/// This type is a public type if the underlying, canonical element is public.

lib/src/generator/templates.runtime_renderers.dart

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4157,6 +4157,26 @@ class _Renderer_DefinedElementType extends RendererBase<DefinedElementType> {
41574157
parent: r, getters: _invisibleGetters['Element']);
41584158
},
41594159
),
4160+
'fullyQualifiedName': Property(
4161+
getValue: (CT_ c) => c.fullyQualifiedName,
4162+
renderVariable:
4163+
(CT_ c, Property<CT_> self, List<String> remainingNames) {
4164+
if (remainingNames.isEmpty) {
4165+
return self.getValue(c).toString();
4166+
}
4167+
var name = remainingNames.first;
4168+
var nextProperty =
4169+
_Renderer_String.propertyMap().getValue(name);
4170+
return nextProperty.renderVariable(self.getValue(c),
4171+
nextProperty, [...remainingNames.skip(1)]);
4172+
},
4173+
isNullValue: (CT_ c) => c.fullyQualifiedName == null,
4174+
renderValue: (CT_ c, RendererBase<CT_> r,
4175+
List<MustachioNode> ast, StringSink sink) {
4176+
_render_String(c.fullyQualifiedName, ast, r.template, sink,
4177+
parent: r);
4178+
},
4179+
),
41604180
'instantiatedType': Property(
41614181
getValue: (CT_ c) => c.instantiatedType,
41624182
renderVariable: (CT_ c, Property<CT_> self,

lib/src/matching_link_result.dart

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
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+
import 'package:dartdoc/src/element_type.dart';
56
import 'package:dartdoc/src/model/comment_referable.dart';
67
import 'package:dartdoc/src/model/model.dart';
78
import 'package:dartdoc/src/quiver.dart';
@@ -26,6 +27,14 @@ class MatchingLinkResult {
2627
var compareThis = commentReferable;
2728
var compareOther = other.commentReferable;
2829

30+
if (compareThis is DefinedElementType) {
31+
compareThis = (compareThis as DefinedElementType).modelElement;
32+
}
33+
34+
if (compareOther is DefinedElementType) {
35+
compareOther = (compareOther as DefinedElementType).modelElement;
36+
}
37+
2938
if (compareThis is Accessor) {
3039
compareThis = (compareThis as Accessor).enclosingCombo;
3140
}

0 commit comments

Comments
 (0)