diff --git a/lib/src/model/enum.dart b/lib/src/model/enum.dart index bb9259a19a..8423136c2c 100644 --- a/lib/src/model/enum.dart +++ b/lib/src/model/enum.dart @@ -6,13 +6,13 @@ import 'package:analyzer/dart/element/element.dart'; import 'package:dartdoc/src/model/model.dart'; import 'package:dartdoc/src/render/enum_field_renderer.dart'; +import 'package:dartdoc/src/special_elements.dart'; -class Enum extends InheritingContainer { +class Enum extends InheritingContainer with TypeImplementing { Enum(ClassElement element, Library library, PackageGraph packageGraph) : super(element, library, packageGraph); List _inheritanceChain; - @override List get inheritanceChain { if (_inheritanceChain == null) { @@ -23,6 +23,12 @@ class Enum extends InheritingContainer { in superChain.map((e) => (e.modelElement as InheritingContainer))) { _inheritanceChain.addAll(c.inheritanceChain); } + + _inheritanceChain.addAll(interfaces.expand( + (e) => (e.modelElement as InheritingContainer).inheritanceChain)); + + assert(_inheritanceChain + .contains(packageGraph.specialClasses[SpecialClass.enumClass])); } return _inheritanceChain.toList(growable: false); } diff --git a/lib/src/special_elements.dart b/lib/src/special_elements.dart index 67b45197b4..73842d6647 100644 --- a/lib/src/special_elements.dart +++ b/lib/src/special_elements.dart @@ -23,6 +23,9 @@ enum SpecialClass { /// From dart:core, pragma pragma, + + /// From dart:core, Enum + enumClass, } /// A declaration of a special [Class] and how to find it. @@ -70,6 +73,8 @@ class _SpecialClassDefinition { const Map _specialClassDefinitions = { 'Object': _SpecialClassDefinition( SpecialClass.object, 'Object', 'dart.core', 'dart:core'), + 'Enum': _SpecialClassDefinition( + SpecialClass.enumClass, 'Enum', 'dart.core', 'dart:core'), 'Interceptor': _SpecialClassDefinition(SpecialClass.interceptor, 'Interceptor', '_interceptors', 'dart:_interceptors', required: false), diff --git a/testing/sky_engine/sdk/core.dart b/testing/sky_engine/sdk/core.dart index f53c9aace5..d095997b31 100644 --- a/testing/sky_engine/sdk/core.dart +++ b/testing/sky_engine/sdk/core.dart @@ -57,6 +57,12 @@ abstract class Map extends Object { class Null extends Object {} +abstract class Enum { + int get index; + + String get _name; +} + abstract class num implements Comparable { num operator %(num other); num operator *(num other);