@@ -1017,33 +1017,49 @@ class _Element2Writer extends _AbstractElementWriter {
10171017 'typeParameters' , e, e.typeParameters2, _writeTypeParameterElement);
10181018 _writeMacroDiagnostics (e);
10191019
1020- if (e is InterfaceElement2 ) {
1021- var supertype = e. supertype;
1022- if (supertype != null &&
1023- ( supertype.element.name != 'Object' || e.mixins.isNotEmpty)) {
1024- _writeType ( 'supertype' , supertype);
1020+ void writeSupertype ( InterfaceElement2 e ) {
1021+ if (e. supertype case var supertype? ) {
1022+ if (supertype.element.name != 'Object' || e.mixins.isNotEmpty) {
1023+ _writeType ( ' supertype' , supertype);
1024+ }
10251025 }
10261026 }
10271027
1028- if (e is ExtensionTypeElement2 ) {
1029- // _elementPrinter.writeNamedElement('representation', e.representation2);
1030- // _elementPrinter.writeNamedElement(
1031- // 'primaryConstructor', e.primaryConstructor2);
1032- _elementPrinter.writeNamedType ('typeErasure' , e.typeErasure);
1033- }
1034-
1035- if (e is MixinElement2 ) {
1036- _elementPrinter.writeTypeList (
1037- 'superclassConstraints' ,
1038- e.superclassConstraints,
1039- );
1028+ switch (e) {
1029+ case ClassElement2 ():
1030+ writeSupertype (e);
1031+ _elementPrinter.writeTypeList ('mixins' , e.mixins);
1032+ _elementPrinter.writeTypeList ('interfaces' , e.interfaces);
1033+ case EnumElement2 ():
1034+ writeSupertype (e);
1035+ _elementPrinter.writeTypeList ('mixins' , e.mixins);
1036+ _elementPrinter.writeTypeList ('interfaces' , e.interfaces);
1037+ case ExtensionElement2 ():
1038+ break ;
1039+ case ExtensionTypeElement2 ():
1040+ expect (e.supertype, isNull);
1041+ _elementPrinter.writelnNamedElement2 (
1042+ 'representation' ,
1043+ e.representation2,
1044+ );
1045+ _elementPrinter.writelnNamedElement2 (
1046+ 'primaryConstructor' ,
1047+ e.primaryConstructor2,
1048+ );
1049+ _elementPrinter.writeNamedType ('typeErasure' , e.typeErasure);
1050+ _elementPrinter.writeTypeList ('interfaces' , e.interfaces);
1051+ case MixinElement2 ():
1052+ expect (e.supertype, isNull);
1053+ _elementPrinter.writeTypeList (
1054+ 'superclassConstraints' ,
1055+ e.superclassConstraints,
1056+ );
1057+ expect (e.mixins, isEmpty);
1058+ _elementPrinter.writeTypeList ('interfaces' , e.interfaces);
1059+ default :
1060+ throw UnimplementedError ('${e .runtimeType }' );
10401061 }
10411062
1042- // TODO(brianwilkerson): Add a `writeTypeList2` that will use the new API
1043- // version of the elements of type parameters.
1044- // _elementPrinter.writeTypeList('mixins', e.mixins);
1045- // _elementPrinter.writeTypeList('interfaces', e.interfaces);
1046-
10471063 if (configuration.withAllSupertypes && e is InterfaceElement2 ) {
10481064 var sorted = e.allSupertypes.sortedBy ((t) => t.element.name);
10491065 _elementPrinter.writeTypeList ('allSupertypes' , sorted);
0 commit comments