@@ -820,12 +820,6 @@ abstract class KernelImpactRegistryMixin implements ImpactRegistry {
820820
821821 @override
822822 void registerSwitchStatementNode (ir.SwitchStatement node) {
823- // TODO(32557): Remove this when issue 32557 is fixed.
824- ir.TreeNode firstCase;
825- DartType firstCaseType;
826- DiagnosticMessage error;
827- List <DiagnosticMessage > infos = < DiagnosticMessage > [];
828-
829823 bool overridesEquals (InterfaceType type) {
830824 if (type == commonElements.symbolImplementationType) {
831825 // Treat symbol constants as if Symbol doesn't override `==`.
@@ -850,50 +844,23 @@ abstract class KernelImpactRegistryMixin implements ImpactRegistry {
850844 ConstantValue value =
851845 elementMap.getConstantValue (staticTypeContext, expression);
852846 DartType type = value.getType (elementMap.commonElements);
853- if (firstCaseType == null ) {
854- firstCase = expression;
855- firstCaseType = type;
856-
857- // We only report the bad type on the first class element. All others
858- // get a "type differs" error.
859- if (type == commonElements.doubleType) {
860- reporter.reportErrorMessage (
861- computeSourceSpanFromTreeNode (expression),
862- MessageKind .SWITCH_CASE_VALUE_OVERRIDES_EQUALS ,
863- {'type' : "double" });
864- } else if (type == commonElements.functionType) {
865- reporter.reportErrorMessage (computeSourceSpanFromTreeNode (node),
866- MessageKind .SWITCH_CASE_FORBIDDEN , {'type' : "Function" });
867- } else if (value.isObject &&
868- type != commonElements.typeLiteralType &&
869- overridesEquals (type)) {
870- reporter.reportErrorMessage (
871- computeSourceSpanFromTreeNode (firstCase),
872- MessageKind .SWITCH_CASE_VALUE_OVERRIDES_EQUALS ,
873- {'type' : typeToString (type)});
874- }
875- } else {
876- if (type != firstCaseType) {
877- if (error == null ) {
878- error = reporter.createMessage (
879- computeSourceSpanFromTreeNode (node),
880- MessageKind .SWITCH_CASE_TYPES_NOT_EQUAL ,
881- {'type' : typeToString (firstCaseType)});
882- infos.add (reporter.createMessage (
883- computeSourceSpanFromTreeNode (firstCase),
884- MessageKind .SWITCH_CASE_TYPES_NOT_EQUAL_CASE ,
885- {'type' : typeToString (firstCaseType)}));
886- }
887- infos.add (reporter.createMessage (
888- computeSourceSpanFromTreeNode (expression),
889- MessageKind .SWITCH_CASE_TYPES_NOT_EQUAL_CASE ,
890- {'type' : typeToString (type)}));
891- }
847+ if (type == commonElements.doubleType) {
848+ reporter.reportErrorMessage (
849+ computeSourceSpanFromTreeNode (expression),
850+ MessageKind .SWITCH_CASE_VALUE_OVERRIDES_EQUALS ,
851+ {'type' : "double" });
852+ } else if (type == commonElements.functionType) {
853+ reporter.reportErrorMessage (computeSourceSpanFromTreeNode (node),
854+ MessageKind .SWITCH_CASE_FORBIDDEN , {'type' : "Function" });
855+ } else if (value.isObject &&
856+ type != commonElements.typeLiteralType &&
857+ overridesEquals (type)) {
858+ reporter.reportErrorMessage (
859+ computeSourceSpanFromTreeNode (expression),
860+ MessageKind .SWITCH_CASE_VALUE_OVERRIDES_EQUALS ,
861+ {'type' : typeToString (type)});
892862 }
893863 }
894864 }
895- if (error != null ) {
896- reporter.reportError (error, infos);
897- }
898865 }
899866}
0 commit comments