Skip to content

Commit 7b9d11a

Browse files
scheglovCommit Queue
authored andcommitted
Elements. Write mixins / interfaces / etc of InstanceElement2.
Change-Id: I402d76450bb06a74580292777dae4514c2685e75 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/393580 Reviewed-by: Phil Quitslund <[email protected]> Commit-Queue: Konstantin Shcheglov <[email protected]>
1 parent 6bb1b9c commit 7b9d11a

16 files changed

+684
-24
lines changed

pkg/analyzer/test/src/summary/element_text.dart

Lines changed: 38 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)