Revert "Revert "Audit hashCode overrides outside of packages/flutter (#85370)" (#85451)" (#85567)
This reverts commit 2be0d57fa25423ffcba5a07d22ef9386a89dcf4c.
diff --git a/packages/flutter_tools/lib/src/asset.dart b/packages/flutter_tools/lib/src/asset.dart
index 4d88be9..09717f7 100644
--- a/packages/flutter_tools/lib/src/asset.dart
+++ b/packages/flutter_tools/lib/src/asset.dart
@@ -911,11 +911,7 @@
}
@override
- int get hashCode {
- return baseDir.hashCode
- ^ relativeUri.hashCode
- ^ entryUri.hashCode;
- }
+ int get hashCode => Object.hash(baseDir, relativeUri, entryUri.hashCode);
}
// Given an assets directory like this:
diff --git a/packages/flutter_tools/lib/src/base/fingerprint.dart b/packages/flutter_tools/lib/src/base/fingerprint.dart
index ad8a8da..194f857 100644
--- a/packages/flutter_tools/lib/src/base/fingerprint.dart
+++ b/packages/flutter_tools/lib/src/base/fingerprint.dart
@@ -128,10 +128,7 @@
}
@override
- // Ignore map entries here to avoid becoming inconsistent with equals
- // due to differences in map entry order. This is a really bad hash
- // function and should eventually be deprecated and removed.
- int get hashCode => _checksums.length.hashCode;
+ int get hashCode => Object.hash(Object.hashAllUnordered(_checksums.keys), Object.hashAllUnordered(_checksums.values));
@override
String toString() => '{checksums: $_checksums}';
diff --git a/packages/flutter_tools/lib/src/base/version.dart b/packages/flutter_tools/lib/src/base/version.dart
index 4192f26..8989599 100644
--- a/packages/flutter_tools/lib/src/base/version.dart
+++ b/packages/flutter_tools/lib/src/base/version.dart
@@ -98,7 +98,7 @@
}
@override
- int get hashCode => major ^ minor ^ patch;
+ int get hashCode => Object.hash(major, minor, patch);
bool operator <(Version other) => compareTo(other) < 0;
bool operator >(Version other) => compareTo(other) > 0;
diff --git a/packages/flutter_tools/lib/src/doctor_validator.dart b/packages/flutter_tools/lib/src/doctor_validator.dart
index d5488c0..f8ddc25 100644
--- a/packages/flutter_tools/lib/src/doctor_validator.dart
+++ b/packages/flutter_tools/lib/src/doctor_validator.dart
@@ -278,7 +278,7 @@
}
@override
- int get hashCode => type.hashCode ^ message.hashCode ^ contextUrl.hashCode;
+ int get hashCode => Object.hash(type, message, contextUrl);
}
class NoIdeValidator extends DoctorValidator {
diff --git a/packages/flutter_tools/lib/src/ios/xcodeproj.dart b/packages/flutter_tools/lib/src/ios/xcodeproj.dart
index 78b2cc0..5e48bf9 100644
--- a/packages/flutter_tools/lib/src/ios/xcodeproj.dart
+++ b/packages/flutter_tools/lib/src/ios/xcodeproj.dart
@@ -302,7 +302,7 @@
final EnvironmentType environmentType;
@override
- int get hashCode => scheme.hashCode ^ configuration.hashCode ^ environmentType.hashCode;
+ int get hashCode => Object.hash(scheme, configuration, environmentType);
@override
bool operator ==(Object other) {
diff --git a/packages/flutter_tools/lib/src/localizations/localizations_utils.dart b/packages/flutter_tools/lib/src/localizations/localizations_utils.dart
index 04fcca4..fd435e7 100644
--- a/packages/flutter_tools/lib/src/localizations/localizations_utils.dart
+++ b/packages/flutter_tools/lib/src/localizations/localizations_utils.dart
@@ -129,9 +129,7 @@
}
@override
- int get hashCode {
- return originalString.hashCode;
- }
+ int get hashCode => originalString.hashCode;
@override
String toString() {
diff --git a/packages/flutter_tools/lib/src/reporting/custom_dimensions.dart b/packages/flutter_tools/lib/src/reporting/custom_dimensions.dart
index f710eb6..6fbd116 100644
--- a/packages/flutter_tools/lib/src/reporting/custom_dimensions.dart
+++ b/packages/flutter_tools/lib/src/reporting/custom_dimensions.dart
@@ -326,12 +326,7 @@
}
@override
- int get hashCode =>
- toMap()
- .values
- .where((String element) => element != null)
- .fold(Object().hashCode,
- (int value, String element) => value ^ element.hashCode);
+ int get hashCode => Object.hashAll(toMap().values);
}
/// List of all fields used in CustomDimensions.
diff --git a/packages/flutter_tools/lib/src/reporting/usage.dart b/packages/flutter_tools/lib/src/reporting/usage.dart
index d822c7d..303ca50 100644
--- a/packages/flutter_tools/lib/src/reporting/usage.dart
+++ b/packages/flutter_tools/lib/src/reporting/usage.dart
@@ -486,7 +486,7 @@
}
@override
- int get hashCode => command.hashCode ^ parameters.hashCode;
+ int get hashCode => Object.hash(command, parameters);
@override
String toString() => 'TestUsageCommand($command, parameters:$parameters)';
@@ -514,11 +514,7 @@
}
@override
- int get hashCode => category.hashCode ^
- parameter.hashCode ^
- label.hashCode ^
- value.hashCode ^
- parameters.hashCode;
+ int get hashCode => Object.hash(category, parameter, label, value, parameters);
@override
String toString() => 'TestUsageEvent($category, $parameter, label:$label, value:$value, parameters:$parameters)';
@@ -544,10 +540,7 @@
}
@override
- int get hashCode => category.hashCode ^
- variableName.hashCode ^
- duration.hashCode ^
- label.hashCode;
+ int get hashCode => Object.hash(category, variableName, duration, label);
@override
String toString() => 'TestTimingEvent($category, $variableName, $duration, label:$label)';
diff --git a/packages/flutter_tools/lib/src/vscode/vscode.dart b/packages/flutter_tools/lib/src/vscode/vscode.dart
index 1a48053..8553722 100644
--- a/packages/flutter_tools/lib/src/vscode/vscode.dart
+++ b/packages/flutter_tools/lib/src/vscode/vscode.dart
@@ -326,5 +326,5 @@
@override
// Lowest bit is for isInsiders boolean.
- int get hashCode => installPath.hashCode ^ extensionsFolder.hashCode ^ edition.hashCode;
+ int get hashCode => Object.hash(installPath, extensionsFolder, edition);
}