diff --git a/lib/src/element_type.dart b/lib/src/element_type.dart index 02a4f4a6a7..6251f93873 100644 --- a/lib/src/element_type.dart +++ b/lib/src/element_type.dart @@ -283,25 +283,21 @@ abstract class DefinedElementType extends ElementType { f as ParameterizedType, library, packageGraph, modelElement); } - Element get element => modelElement.element; - @override String get name => type.documentableElement!.name!; @override String get fullyQualifiedName => modelElement.fullyQualifiedName; - bool get isParameterType => type is TypeParameterType; - /// Whether the underlying, canonical element is public. /// /// This avoids discarding the resolved type information as canonicalization /// would ordinarily do. @override bool get isPublic { - var canonicalClass = modelElement.packageGraph - .findCanonicalModelElementFor(modelElement.element) ?? - modelElement; + var canonicalClass = + packageGraph.findCanonicalModelElementFor(modelElement.element) ?? + modelElement; return canonicalClass.isPublic; } @@ -360,7 +356,7 @@ abstract class DefinedElementType extends ElementType { @internal @override CommentReferable get definingCommentReferable => - modelBuilder.fromElement(element); + modelBuilder.fromElement(modelElement.element); } /// Any callable [ElementType] will mix-in this class, whether anonymous or not, diff --git a/lib/src/generator/templates.runtime_renderers.dart b/lib/src/generator/templates.runtime_renderers.dart index b54de46051..dccea51ec6 100644 --- a/lib/src/generator/templates.runtime_renderers.dart +++ b/lib/src/generator/templates.runtime_renderers.dart @@ -3753,18 +3753,6 @@ class _Renderer_DefinedElementType extends RendererBase { CT_, () => { ..._Renderer_ElementType.propertyMap(), - 'element': Property( - getValue: (CT_ c) => c.element, - renderVariable: (CT_ c, Property self, - List remainingNames) => - self.renderSimpleVariable(c, remainingNames, 'Element'), - isNullValue: (CT_ c) => false, - renderValue: (CT_ c, RendererBase r, - List ast, StringSink sink) { - renderSimple(c.element, ast, r.template, sink, - parent: r, getters: _invisibleGetters['Element']!); - }, - ), 'fullyQualifiedName': Property( getValue: (CT_ c) => c.fullyQualifiedName, renderVariable: @@ -3799,13 +3787,6 @@ class _Renderer_DefinedElementType extends RendererBase { parent: r, getters: _invisibleGetters['DartType']!); }, ), - 'isParameterType': Property( - getValue: (CT_ c) => c.isParameterType, - renderVariable: (CT_ c, Property self, - List remainingNames) => - self.renderSimpleVariable(c, remainingNames, 'bool'), - getBool: (CT_ c) => c.isParameterType == true, - ), 'isPublic': Property( getValue: (CT_ c) => c.isPublic, renderVariable: (CT_ c, Property self, diff --git a/lib/src/model/inheriting_container.dart b/lib/src/model/inheriting_container.dart index 5300dee6c1..1a7613f968 100644 --- a/lib/src/model/inheriting_container.dart +++ b/lib/src/model/inheriting_container.dart @@ -361,18 +361,19 @@ abstract class InheritingContainer extends Container while (parent != null) { typeChain.add(parent); final parentType = parent.type; - if (parentType is InterfaceType) { - // Avoid adding [Object] to the [superChain] ([_supertype] already has - // this check). - if (parentType.superclass?.superclass == null) { - break; - } else { - parent = modelBuilder.typeFrom(parentType.superclass!, library) - as DefinedElementType?; - } - } else { - parent = (parent.modelElement as Class).supertype; + if (parentType is! InterfaceType) { + throw StateError('ancestor of $this is $parent with model element ' + '${parent.modelElement}'); + } + + var superclass = parentType.superclass; + // Avoid adding [Object] to the [superChain] ([_supertype] already has + // this check). + if (superclass == null || superclass.superclass == null) { + break; } + parent = + modelBuilder.typeFrom(superclass, library) as DefinedElementType?; } return typeChain; }