Skip to content

Commit

Permalink
Migrate TypeParameter and Warnings element model (#3983)
Browse files Browse the repository at this point in the history
  • Loading branch information
srawlins authored Feb 3, 2025
1 parent 237cd35 commit 814fbec
Show file tree
Hide file tree
Showing 4 changed files with 60 additions and 23 deletions.
40 changes: 38 additions & 2 deletions lib/src/generator/templates.runtime_renderers.dart
Original file line number Diff line number Diff line change
Expand Up @@ -20353,7 +20353,7 @@ class _Renderer_Package extends RendererBase<Package> {
}
}

String renderIndex(PackageTemplateData context, Template template) {
String renderError(PackageTemplateData context, Template template) {
var buffer = StringBuffer();
_render_PackageTemplateData(context, template.ast, template, buffer);
return buffer.toString();
Expand Down Expand Up @@ -20716,7 +20716,7 @@ String renderSearchPage(PackageTemplateData context, Template template) {
return buffer.toString();
}

String renderError(PackageTemplateData context, Template template) {
String renderIndex(PackageTemplateData context, Template template) {
var buffer = StringBuffer();
_render_PackageTemplateData(context, template.ast, template, buffer);
return buffer.toString();
Expand Down Expand Up @@ -24609,6 +24609,34 @@ class _Renderer_TypeParameter extends RendererBase<TypeParameter> {
);
},
),
'element2': Property(
getValue: (CT_ c) => c.element2,
renderVariable:
(CT_ c, Property<CT_> self, List<String> remainingNames) =>
self.renderSimpleVariable(
c,
remainingNames,
'TypeParameterElement2',
),

isNullValue: (CT_ c) => false,

renderValue: (
CT_ c,
RendererBase<CT_> r,
List<MustachioNode> ast,
StringSink sink,
) {
renderSimple(
c.element2,
ast,
r.template,
sink,
parent: r,
getters: _invisibleGetters['TypeParameterElement2']!,
);
},
),
'enclosingElement': Property(
getValue: (CT_ c) => c.enclosingElement,
renderVariable: (
Expand Down Expand Up @@ -27051,6 +27079,14 @@ const _invisibleGetters = {
'name',
'runtimeType',
},
'TypeParameterElement2': {
'baseElement',
'bound',
'firstFragment',
'fragments',
'hashCode',
'runtimeType',
},
'int': {
'bitLength',
'hashCode',
Expand Down
3 changes: 2 additions & 1 deletion lib/src/model/model_element.dart
Original file line number Diff line number Diff line change
Expand Up @@ -352,7 +352,8 @@ abstract class ModelElement
enclosingContainer: enclosingContainer,
originalMember: originalMember,
),
TypeParameterElement() => TypeParameter(e, library, packageGraph),
TypeParameterElement() =>
TypeParameter(e.asElement2, library, packageGraph),
_ => throw UnimplementedError('Unknown type ${e.runtimeType}'),
};
}
Expand Down
37 changes: 19 additions & 18 deletions lib/src/model/type_parameter.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,29 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

// ignore_for_file: analyzer_use_new_elements

import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/element2.dart';
// ignore: implementation_imports
import 'package:analyzer/src/dart/element/element.dart';
import 'package:dartdoc/src/element_type.dart';
import 'package:dartdoc/src/model/comment_referable.dart';
import 'package:dartdoc/src/model/kind.dart';
import 'package:dartdoc/src/model/model.dart';

class TypeParameter extends ModelElement with HasNoPage {
@override
final TypeParameterElement element;
// ignore: analyzer_use_new_elements
TypeParameterElement get element =>
(element2 as TypeParameterElementImpl2).firstFragment;

@override
final TypeParameterElement2 element2;

TypeParameter(this.element, super.library, super.packageGraph);
TypeParameter(this.element2, super.library, super.packageGraph);

@override
ModelElement get enclosingElement =>
getModelFor(element.enclosingElement3!, library);
getModelFor2(element2.enclosingElement2!, library);

/// [TypeParameter]s don't have documentation pages, and don't link to the
/// element on which they are declared.
Expand All @@ -31,27 +37,22 @@ class TypeParameter extends ModelElement with HasNoPage {
Kind get kind => Kind.typeParameter;

ElementType? get boundType {
var bound = element.bound;
var bound = element2.bound;
return bound == null ? null : getTypeFor(bound, library);
}

@override
bool get hasParameters => false;

@override
String get name => element.bound != null
? '${element.name} extends ${boundType!.nameWithGenerics}'
: element.name;

String? _linkedName;
String get name => element2.bound != null
? '${element2.name3} extends ${boundType!.nameWithGenerics}'
: element2.name3!;

@override
String get linkedName {
_linkedName ??= element.bound != null
? '${element.name} extends ${boundType!.linkedName}'
: element.name;
return _linkedName!;
}
String get linkedName => element2.bound != null
? '${element2.name3} extends ${boundType!.linkedName}'
: element2.name3!;

@override
late final Map<String, CommentReferable> referenceChildren = () {
Expand All @@ -64,7 +65,7 @@ class TypeParameter extends ModelElement with HasNoPage {
Iterable<CommentReferable> get referenceParents => [enclosingElement];

@override
String get referenceName => element.name;
String get referenceName => element2.name3!;
}

/// A mixin for [ModelElement]s which have type parameters.
Expand Down
3 changes: 1 addition & 2 deletions lib/src/warnings.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

// ignore_for_file: analyzer_use_new_elements

import 'dart:io';
import 'dart:math' as math;

Expand Down Expand Up @@ -98,6 +96,7 @@ List<DartdocOption<Object?>> createPackageWarningOptions(
/// Something that package warnings can be reported on. Optionally associated
/// with an analyzer [element].
mixin Warnable implements CommentReferable, Documentable, Locatable {
// ignore: analyzer_use_new_elements
Element? get element;

Element2? get element2;
Expand Down

0 comments on commit 814fbec

Please sign in to comment.