[analyzer] Optimize UsedLocalElements.merge().

See b/235079681 (analyzer is slow with many part file).

1. Pre-compute UsedLocalElements.merge() before calling '_computeHints()' on each part files.
2. Optimize HashSet insertion:
   Remove implementation of ParameterMember.hashCode.
   This implementation was not linked to a corresponding '.==' override.
   So, while not wrong, it did cause many collisions not resulting in equality.

Change-Id: I060d62e9e81a7d9b2183306106a16c27a5cbeffe
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/250520
Commit-Queue: Emmanuel Pellereau <emmanuelp@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
diff --git a/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart b/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart
index dc66628..3289cec 100644
--- a/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart
@@ -261,12 +261,14 @@
           usedImportedElements.add(visitor.usedElements);
         }
       }
+      UsedLocalElements usedElements =
+          UsedLocalElements.merge(usedLocalElements);
       units.forEach((file, unit) {
         _computeHints(
           file,
           unit,
           usedImportedElements: usedImportedElements,
-          usedLocalElements: usedLocalElements,
+          usedElements: usedElements,
         );
       });
     }
@@ -314,7 +316,7 @@
     FileState file,
     CompilationUnit unit, {
     required List<UsedImportedElements> usedImportedElements,
-    required List<UsedLocalElements> usedLocalElements,
+    required UsedLocalElements usedElements,
   }) {
     AnalysisErrorListener errorListener = _getErrorListener(file);
     ErrorReporter errorReporter = _getErrorReporter(file);
@@ -371,8 +373,6 @@
 
     // Unused local elements.
     {
-      UsedLocalElements usedElements =
-          UsedLocalElements.merge(usedLocalElements);
       UnusedLocalElementsVerifier visitor = UnusedLocalElementsVerifier(
           errorListener, usedElements, _inheritance, _libraryElement);
       unit.accept(visitor);
diff --git a/pkg/analyzer/lib/src/dart/element/member.dart b/pkg/analyzer/lib/src/dart/element/member.dart
index 07c1d2a..2455528 100644
--- a/pkg/analyzer/lib/src/dart/element/member.dart
+++ b/pkg/analyzer/lib/src/dart/element/member.dart
@@ -852,9 +852,6 @@
   bool get hasDefaultValue => declaration.hasDefaultValue;
 
   @override
-  int get hashCode => declaration.hashCode;
-
-  @override
   bool get isCovariant => declaration.isCovariant;
 
   @override