@@ -451,9 +451,6 @@ class BundleWriter {
451451 _resolutionSink._writeTypeList (fragment.superclassConstraints);
452452 _resolutionSink._writeTypeList (fragment.interfaces);
453453
454- var element = fragment.element;
455- _resolutionSink._writeTypeList (element.superclassConstraints);
456-
457454 _writeList (
458455 fragment.fields.where ((e) => ! e.isSynthetic).toList (),
459456 _writeFieldElement,
@@ -698,33 +695,46 @@ class ResolutionSink extends _SummaryDataWriter {
698695 required _BundleWriterReferences references,
699696 }) : _references = references;
700697
701- // TODO(scheglov): Triage places where we write elements.
702- // Some of then cannot be members, e.g. type names.
703698 void writeElement (Element ? element) {
704699 switch (element) {
705- case PrefixElementImpl2 ():
706- writeEnum (ElementKind2 .importPrefix);
707- var reference = element.reference;
700+ case null :
701+ writeEnum (ElementTag .null_);
702+ case DynamicElementImpl2 ():
703+ writeEnum (ElementTag .dynamic_);
704+ case NeverElementImpl2 ():
705+ writeEnum (ElementTag .never_);
706+ case MultiplyDefinedElementImpl2 ():
707+ writeEnum (ElementTag .multiplyDefined);
708+ case Member element:
709+ writeEnum (ElementTag .memberWithTypeArguments);
710+
711+ var baseElement = element.baseElement;
712+ writeElement (baseElement);
713+
714+ var typeArguments = _enclosingClassTypeArguments (
715+ baseElement,
716+ element.substitution.map,
717+ );
718+ _writeTypeList (typeArguments);
719+ // TODO(scheglov): give reference to each element below
720+ case ConstructorElementImpl2 ():
721+ case FieldElementImpl2 ():
722+ case FormalParameterElementImpl ():
723+ case GetterElementImpl ():
724+ case MethodElementImpl2 ():
725+ case SetterElementImpl ():
726+ case TypeParameterElementImpl2 ():
727+ // TODO(scheglov): eventually stop using fragments here.
728+ writeEnum (ElementTag .viaFragment);
729+ writeByte (Tag .RawElement );
730+ _writeElement (element);
731+ case ElementImpl2 ():
732+ writeEnum (ElementTag .elementImpl);
733+ var reference = element.reference! ;
708734 var referenceIndex = _references._indexOfReference (reference);
709735 writeUInt30 (referenceIndex);
710736 default :
711- // TODO(scheglov): eventually stop using fragments here.
712- writeEnum (ElementKind2 .other);
713- if (element case Member element) {
714- var baseElement = element.baseElement;
715-
716- var typeArguments = _enclosingClassTypeArguments (
717- baseElement,
718- element.substitution.map,
719- );
720-
721- writeByte (Tag .MemberWithTypeArguments );
722- _writeElement (baseElement);
723- _writeTypeList (typeArguments);
724- } else {
725- writeByte (Tag .RawElement );
726- _writeElement (element);
727- }
737+ throw StateError ('${element .runtimeType }' );
728738 }
729739 }
730740
0 commit comments