@@ -459,7 +459,6 @@ class Class extends ModelElement implements EnclosedElement {
459
459
..addAll (constructors)
460
460
..addAll (staticMethods)
461
461
..addAll (staticProperties)
462
- ..addAll (allInstanceMethods)
463
462
..addAll (_typeParameters);
464
463
}
465
464
return _allModelElements.toList ();
@@ -694,7 +693,7 @@ class Class extends ModelElement implements EnclosedElement {
694
693
List <Field > get instanceProperties {
695
694
if (_instanceFields != null ) return _instanceFields;
696
695
_instanceFields = _allFields
697
- .where ((f) => ! f.isStatic && ! f.isInherited)
696
+ .where ((f) => ! f.isStatic && ! f.isInherited && ! f.isConst )
698
697
.toList (growable: false )
699
698
..sort (byName);
700
699
@@ -1073,36 +1072,14 @@ abstract class EnclosedElement {
1073
1072
}
1074
1073
1075
1074
class Enum extends Class {
1076
- List <EnumField > _enumFields;
1077
-
1078
1075
Enum (ClassElement element, Library library) : super (element, library);
1079
1076
1080
- @override
1081
- List <EnumField > get constants {
1082
- if (_enumFields != null ) return _enumFields;
1083
-
1084
- // This is a hack to give 'values' an index of -1 and all other fields
1085
- // their expected indices. https://github.com/dart-lang/dartdoc/issues/1176
1086
- var index = - 1 ;
1087
-
1088
- _enumFields = [];
1089
- for (FieldElement f in _cls.fields.where ((f) => f.isConst)) {
1090
- // Enums do not have inheritance.
1091
- Accessor accessor = new ModelElement .from (f.getter, library);
1092
- EnumField enumField =
1093
- new ModelElement .from (f, library, index: index++ , getter: accessor);
1094
- if (enumField.isPublic) _enumFields.add (enumField);
1095
- }
1096
- _enumFields.sort (byName);
1097
-
1098
- return _enumFields;
1099
- }
1100
-
1101
1077
@override
1102
1078
List <EnumField > get instanceProperties {
1103
1079
return super
1104
1080
.instanceProperties
1105
- .map ((Field p) => new ModelElement .from (p.element, p.library))
1081
+ .map ((Field p) => new ModelElement .from (p.element, p.library,
1082
+ getter: p.getter, setter: p.setter))
1106
1083
.toList (growable: false );
1107
1084
}
1108
1085
@@ -2150,13 +2127,8 @@ abstract class ModelElement extends Nameable
2150
2127
// parameter when given a null.
2151
2128
/// Do not construct any ModelElements unless they are from this constructor.
2152
2129
/// Specify enclosingClass only if this is to be an inherited object.
2153
- /// Specify index only if this is to be an EnumField.forConstant.
2154
2130
factory ModelElement .from (Element e, Library library,
2155
- {Class enclosingClass, int index, Accessor getter, Accessor setter}) {
2156
- // We don't need index in this key because it isn't a disambiguator.
2157
- // It isn't a disambiguator because EnumFields are not inherited, ever.
2158
- // TODO(jcollins-g): cleanup class hierarchy so that EnumFields aren't
2159
- // Inheritable, somehow?
2131
+ {Class enclosingClass, Accessor getter, Accessor setter}) {
2160
2132
if (e is Member ) {
2161
2133
e = Package .getBasestElement (e);
2162
2134
}
@@ -2193,21 +2165,18 @@ abstract class ModelElement extends Nameable
2193
2165
newModelElement = new Typedef (e, library);
2194
2166
}
2195
2167
if (e is FieldElement ) {
2168
+ assert (getter != null || setter != null );
2196
2169
if (enclosingClass == null ) {
2197
- if (index != null ) {
2198
- assert (getter != null );
2199
- newModelElement =
2200
- new EnumField .forConstant (index, e, library, getter);
2170
+ if (e.isEnumConstant) {
2171
+ int index = e.computeConstantValue ().getField ('index' ).toIntValue ();
2172
+ newModelElement = new EnumField .forConstant (index, e, library, getter);
2173
+ } else if (e.enclosingElement.isEnum) {
2174
+ newModelElement = new EnumField (e, library, getter, setter);
2201
2175
} else {
2202
- if (e.enclosingElement.isEnum) {
2203
- newModelElement = new EnumField (e, library, getter, setter);
2204
- } else {
2205
- assert (getter != null || setter != null );
2206
- newModelElement = new Field (e, library, getter, setter);
2207
- }
2176
+ newModelElement = new Field (e, library, getter, setter);
2208
2177
}
2209
2178
} else {
2210
- assert (getter != null || setter != null );
2179
+ // EnumFields can't be inherited, so this case is simpler.
2211
2180
newModelElement =
2212
2181
new Field .inherited (e, enclosingClass, library, getter, setter);
2213
2182
}
0 commit comments