Skip to content

Commit a3ca4cf

Browse files
authored
Fix an enum-related assert in canonicalization (#2812)
* Allow magical accessors from nowhere if they are Enum related * intermediate * dartfmt * Add a stub Enum class since that's now in the required list
1 parent 0823f2f commit a3ca4cf

File tree

3 files changed

+19
-2
lines changed

3 files changed

+19
-2
lines changed

lib/src/model/enum.dart

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@
66
import 'package:analyzer/dart/element/element.dart';
77
import 'package:dartdoc/src/model/model.dart';
88
import 'package:dartdoc/src/render/enum_field_renderer.dart';
9+
import 'package:dartdoc/src/special_elements.dart';
910

10-
class Enum extends InheritingContainer {
11+
class Enum extends InheritingContainer with TypeImplementing {
1112
Enum(ClassElement element, Library library, PackageGraph packageGraph)
1213
: super(element, library, packageGraph);
1314

1415
List<InheritingContainer> _inheritanceChain;
15-
1616
@override
1717
List<InheritingContainer> get inheritanceChain {
1818
if (_inheritanceChain == null) {
@@ -23,6 +23,12 @@ class Enum extends InheritingContainer {
2323
in superChain.map((e) => (e.modelElement as InheritingContainer))) {
2424
_inheritanceChain.addAll(c.inheritanceChain);
2525
}
26+
27+
_inheritanceChain.addAll(interfaces.expand(
28+
(e) => (e.modelElement as InheritingContainer).inheritanceChain));
29+
30+
assert(_inheritanceChain
31+
.contains(packageGraph.specialClasses[SpecialClass.enumClass]));
2632
}
2733
return _inheritanceChain.toList(growable: false);
2834
}

lib/src/special_elements.dart

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ enum SpecialClass {
2323

2424
/// From dart:core, pragma
2525
pragma,
26+
27+
/// From dart:core, Enum
28+
enumClass,
2629
}
2730

2831
/// A declaration of a special [Class] and how to find it.
@@ -70,6 +73,8 @@ class _SpecialClassDefinition {
7073
const Map<String, _SpecialClassDefinition> _specialClassDefinitions = {
7174
'Object': _SpecialClassDefinition(
7275
SpecialClass.object, 'Object', 'dart.core', 'dart:core'),
76+
'Enum': _SpecialClassDefinition(
77+
SpecialClass.enumClass, 'Enum', 'dart.core', 'dart:core'),
7378
'Interceptor': _SpecialClassDefinition(SpecialClass.interceptor,
7479
'Interceptor', '_interceptors', 'dart:_interceptors',
7580
required: false),

testing/sky_engine/sdk/core.dart

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,12 @@ abstract class Map<K, V> extends Object {
5757

5858
class Null extends Object {}
5959

60+
abstract class Enum {
61+
int get index;
62+
63+
String get _name;
64+
}
65+
6066
abstract class num implements Comparable<num> {
6167
num operator %(num other);
6268
num operator *(num other);

0 commit comments

Comments
 (0)