analyzer: use Object.hash functions, deprecate JenkinsSmiHash

Also bump min SDK for pkg:analyzer

Towards https://github.com/dart-lang/sdk/issues/27698

Change-Id: Ic32c839c02f18afd99fdb98eb382540aae7da88a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/214126
Auto-Submit: Kevin Moore <kevmoo@google.com>
Commit-Queue: Kevin Moore <kevmoo@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
This commit is contained in:
Kevin Moore 2021-09-22 19:11:24 +00:00 committed by commit-bot@chromium.org
parent 31922b8c57
commit cb7c932f7b
25 changed files with 1902 additions and 3216 deletions

View file

@ -11,7 +11,7 @@
"constraint, update this by running tools/generate_package_config.dart." "constraint, update this by running tools/generate_package_config.dart."
], ],
"configVersion": 2, "configVersion": 2,
"generated": "2021-09-10T11:44:31.694550", "generated": "2021-09-21T21:00:34.058842",
"generator": "tools/generate_package_config.dart", "generator": "tools/generate_package_config.dart",
"packages": [ "packages": [
{ {
@ -82,7 +82,7 @@
"name": "analyzer", "name": "analyzer",
"rootUri": "../pkg/analyzer", "rootUri": "../pkg/analyzer",
"packageUri": "lib/", "packageUri": "lib/",
"languageVersion": "2.12" "languageVersion": "2.14"
}, },
{ {
"name": "analyzer_cli", "name": "analyzer_cli",
@ -476,7 +476,7 @@
"name": "nnbd_migration", "name": "nnbd_migration",
"rootUri": "../pkg/nnbd_migration", "rootUri": "../pkg/nnbd_migration",
"packageUri": "lib/", "packageUri": "lib/",
"languageVersion": "2.12" "languageVersion": "2.14"
}, },
{ {
"name": "oauth2", "name": "oauth2",

View file

@ -7,7 +7,6 @@ import 'dart:async';
import 'package:analysis_server/lsp_protocol/protocol_generated.dart'; import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
import 'package:analysis_server/src/lsp/json_parsing.dart'; import 'package:analysis_server/src/lsp/json_parsing.dart';
import 'package:analysis_server/src/protocol/protocol_internal.dart'; import 'package:analysis_server/src/protocol/protocol_internal.dart';
import 'package:analyzer/src/generated/utilities_general.dart';
const jsonRpcVersion = '2.0'; const jsonRpcVersion = '2.0';
@ -36,20 +35,15 @@ bool lspEquals(dynamic obj1, dynamic obj2) {
/// Returns an objects hash code, recursively combining hashes for items in /// Returns an objects hash code, recursively combining hashes for items in
/// Maps/Lists. /// Maps/Lists.
int lspHashCode(dynamic obj) { int lspHashCode(dynamic obj) {
var hash = 0;
if (obj is List) { if (obj is List) {
for (var element in obj) { return Object.hashAll(obj.map(lspHashCode));
hash = JenkinsSmiHash.combine(hash, lspHashCode(element));
}
} else if (obj is Map) { } else if (obj is Map) {
for (var key in obj.keys) { return Object.hashAll(obj.entries
hash = JenkinsSmiHash.combine(hash, lspHashCode(key)); .expand((element) => [element.key, element.value])
hash = JenkinsSmiHash.combine(hash, lspHashCode(obj[key])); .map(lspHashCode));
}
} else { } else {
hash = obj.hashCode; return obj.hashCode;
} }
return JenkinsSmiHash.finish(hash);
} }
Object? specToJson(Object? obj) { Object? specToJson(Object? obj) {

File diff suppressed because it is too large Load diff

View file

@ -39,3 +39,11 @@ dev_dependencies:
matcher: any matcher: any
pedantic: ^1.9.0 pedantic: ^1.9.0
test_reflective_loader: any test_reflective_loader: any
dependency_overrides:
_fe_analyzer_shared:
path: ../_fe_analyzer_shared
analyzer:
path: ../analyzer
meta:
path: ../meta

View file

@ -384,8 +384,6 @@ class CodegenProtocolVisitor extends DartCodegenVisitor with CodeGenerator {
writeln("import 'dart:convert' hide JsonDecoder;"); writeln("import 'dart:convert' hide JsonDecoder;");
writeln(); writeln();
if (isServer) { if (isServer) {
writeln(
"import 'package:analyzer/src/generated/utilities_general.dart';");
writeln("import 'package:$packageName/protocol/protocol.dart';"); writeln("import 'package:$packageName/protocol/protocol.dart';");
writeln( writeln(
"import 'package:$packageName/src/protocol/protocol_internal.dart';"); "import 'package:$packageName/src/protocol/protocol_internal.dart';");
@ -400,7 +398,6 @@ class CodegenProtocolVisitor extends DartCodegenVisitor with CodeGenerator {
"import 'package:$packageName/src/protocol/protocol_common.dart';"); "import 'package:$packageName/src/protocol/protocol_common.dart';");
writeln( writeln(
"import 'package:$packageName/src/protocol/protocol_internal.dart';"); "import 'package:$packageName/src/protocol/protocol_internal.dart';");
writeln("import 'package:$packageName/src/protocol/protocol_util.dart';");
} }
} }
@ -641,25 +638,33 @@ class CodegenProtocolVisitor extends DartCodegenVisitor with CodeGenerator {
/// Emit the hashCode getter for an object class. /// Emit the hashCode getter for an object class.
void emitObjectHashCode(TypeObject? type, String className) { void emitObjectHashCode(TypeObject? type, String className) {
writeln('@override'); writeln('@override');
writeln('int get hashCode {'); writeln('int get hashCode => ');
indent(() { indent(() {
if (type == null) { if (type == null) {
writeln('return ${className.hashCode};'); writeln(' ${className.hashCode}');
} else { } else {
writeln('var hash = 0;'); final items = type.fields.map((field) {
for (var field in type.fields) {
String valueToCombine;
if (field.value != null) { if (field.value != null) {
valueToCombine = field.value.hashCode.toString(); return field.value.hashCode.toString();
} else { } else {
valueToCombine = '${field.name}.hashCode'; return '${field.name}.hashCode';
} }
writeln('hash = JenkinsSmiHash.combine(hash, $valueToCombine);'); }).toList();
if (items.isEmpty) {
writeln('0');
} else if (items.length == 1) {
writeln(items.single);
} else {
writeln('Object.hash(');
for (var field in items) {
writeln('$field,');
}
writeln(')');
} }
writeln('return JenkinsSmiHash.finish(hash);');
} }
writeln(';');
}); });
writeln('}');
} }
/// If the class named [className] requires special constructors, emit them /// If the class named [className] requires special constructors, emit them

View file

@ -8,7 +8,6 @@
import 'dart:convert' hide JsonDecoder; import 'dart:convert' hide JsonDecoder;
import 'package:analysis_server_client/src/protocol/protocol_util.dart';
import 'package:analysis_server_client/src/protocol/protocol_base.dart'; import 'package:analysis_server_client/src/protocol/protocol_base.dart';
import 'package:analysis_server_client/src/protocol/protocol_internal.dart'; import 'package:analysis_server_client/src/protocol/protocol_internal.dart';
@ -66,12 +65,10 @@ class AddContentOverlay implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; 704418402,
hash = JenkinsSmiHash.combine(hash, 704418402); content.hashCode,
hash = JenkinsSmiHash.combine(hash, content.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// AnalysisError /// AnalysisError
@ -252,19 +249,17 @@ class AnalysisError implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; severity.hashCode,
hash = JenkinsSmiHash.combine(hash, severity.hashCode); type.hashCode,
hash = JenkinsSmiHash.combine(hash, type.hashCode); location.hashCode,
hash = JenkinsSmiHash.combine(hash, location.hashCode); message.hashCode,
hash = JenkinsSmiHash.combine(hash, message.hashCode); correction.hashCode,
hash = JenkinsSmiHash.combine(hash, correction.hashCode); code.hashCode,
hash = JenkinsSmiHash.combine(hash, code.hashCode); url.hashCode,
hash = JenkinsSmiHash.combine(hash, url.hashCode); contextMessages.hashCode,
hash = JenkinsSmiHash.combine(hash, contextMessages.hashCode); hasFix.hashCode,
hash = JenkinsSmiHash.combine(hash, hasFix.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// AnalysisErrorSeverity /// AnalysisErrorSeverity
@ -477,12 +472,10 @@ class ChangeContentOverlay implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; 873118866,
hash = JenkinsSmiHash.combine(hash, 873118866); edits.hashCode,
hash = JenkinsSmiHash.combine(hash, edits.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// CompletionSuggestion /// CompletionSuggestion
@ -918,33 +911,31 @@ class CompletionSuggestion implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hashAll([
var hash = 0; kind.hashCode,
hash = JenkinsSmiHash.combine(hash, kind.hashCode); relevance.hashCode,
hash = JenkinsSmiHash.combine(hash, relevance.hashCode); completion.hashCode,
hash = JenkinsSmiHash.combine(hash, completion.hashCode); displayText.hashCode,
hash = JenkinsSmiHash.combine(hash, displayText.hashCode); replacementOffset.hashCode,
hash = JenkinsSmiHash.combine(hash, replacementOffset.hashCode); replacementLength.hashCode,
hash = JenkinsSmiHash.combine(hash, replacementLength.hashCode); selectionOffset.hashCode,
hash = JenkinsSmiHash.combine(hash, selectionOffset.hashCode); selectionLength.hashCode,
hash = JenkinsSmiHash.combine(hash, selectionLength.hashCode); isDeprecated.hashCode,
hash = JenkinsSmiHash.combine(hash, isDeprecated.hashCode); isPotential.hashCode,
hash = JenkinsSmiHash.combine(hash, isPotential.hashCode); docSummary.hashCode,
hash = JenkinsSmiHash.combine(hash, docSummary.hashCode); docComplete.hashCode,
hash = JenkinsSmiHash.combine(hash, docComplete.hashCode); declaringType.hashCode,
hash = JenkinsSmiHash.combine(hash, declaringType.hashCode); defaultArgumentListString.hashCode,
hash = JenkinsSmiHash.combine(hash, defaultArgumentListString.hashCode); defaultArgumentListTextRanges.hashCode,
hash = JenkinsSmiHash.combine(hash, defaultArgumentListTextRanges.hashCode); element.hashCode,
hash = JenkinsSmiHash.combine(hash, element.hashCode); returnType.hashCode,
hash = JenkinsSmiHash.combine(hash, returnType.hashCode); parameterNames.hashCode,
hash = JenkinsSmiHash.combine(hash, parameterNames.hashCode); parameterTypes.hashCode,
hash = JenkinsSmiHash.combine(hash, parameterTypes.hashCode); requiredParameterCount.hashCode,
hash = JenkinsSmiHash.combine(hash, requiredParameterCount.hashCode); hasNamedParameters.hashCode,
hash = JenkinsSmiHash.combine(hash, hasNamedParameters.hashCode); parameterName.hashCode,
hash = JenkinsSmiHash.combine(hash, parameterName.hashCode); parameterType.hashCode,
hash = JenkinsSmiHash.combine(hash, parameterType.hashCode); ]);
return JenkinsSmiHash.finish(hash);
}
} }
/// CompletionSuggestionKind /// CompletionSuggestionKind
@ -1139,12 +1130,10 @@ class DiagnosticMessage implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; message.hashCode,
hash = JenkinsSmiHash.combine(hash, message.hashCode); location.hashCode,
hash = JenkinsSmiHash.combine(hash, location.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// Element /// Element
@ -1347,18 +1336,16 @@ class Element implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; kind.hashCode,
hash = JenkinsSmiHash.combine(hash, kind.hashCode); name.hashCode,
hash = JenkinsSmiHash.combine(hash, name.hashCode); location.hashCode,
hash = JenkinsSmiHash.combine(hash, location.hashCode); flags.hashCode,
hash = JenkinsSmiHash.combine(hash, flags.hashCode); parameters.hashCode,
hash = JenkinsSmiHash.combine(hash, parameters.hashCode); returnType.hashCode,
hash = JenkinsSmiHash.combine(hash, returnType.hashCode); typeParameters.hashCode,
hash = JenkinsSmiHash.combine(hash, typeParameters.hashCode); aliasedType.hashCode,
hash = JenkinsSmiHash.combine(hash, aliasedType.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// ElementKind /// ElementKind
@ -1753,13 +1740,11 @@ class FoldingRegion implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; kind.hashCode,
hash = JenkinsSmiHash.combine(hash, kind.hashCode); offset.hashCode,
hash = JenkinsSmiHash.combine(hash, offset.hashCode); length.hashCode,
hash = JenkinsSmiHash.combine(hash, length.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// HighlightRegion /// HighlightRegion
@ -1835,13 +1820,11 @@ class HighlightRegion implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; type.hashCode,
hash = JenkinsSmiHash.combine(hash, type.hashCode); offset.hashCode,
hash = JenkinsSmiHash.combine(hash, offset.hashCode); length.hashCode,
hash = JenkinsSmiHash.combine(hash, length.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// HighlightRegionType /// HighlightRegionType
@ -2545,15 +2528,13 @@ class KytheEntry implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; source.hashCode,
hash = JenkinsSmiHash.combine(hash, source.hashCode); kind.hashCode,
hash = JenkinsSmiHash.combine(hash, kind.hashCode); target.hashCode,
hash = JenkinsSmiHash.combine(hash, target.hashCode); fact.hashCode,
hash = JenkinsSmiHash.combine(hash, fact.hashCode); value.hashCode,
hash = JenkinsSmiHash.combine(hash, value.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// KytheVName /// KytheVName
@ -2659,15 +2640,13 @@ class KytheVName implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; signature.hashCode,
hash = JenkinsSmiHash.combine(hash, signature.hashCode); corpus.hashCode,
hash = JenkinsSmiHash.combine(hash, corpus.hashCode); root.hashCode,
hash = JenkinsSmiHash.combine(hash, root.hashCode); path.hashCode,
hash = JenkinsSmiHash.combine(hash, path.hashCode); language.hashCode,
hash = JenkinsSmiHash.combine(hash, language.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// LinkedEditGroup /// LinkedEditGroup
@ -2770,13 +2749,11 @@ class LinkedEditGroup implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; positions.hashCode,
hash = JenkinsSmiHash.combine(hash, positions.hashCode); length.hashCode,
hash = JenkinsSmiHash.combine(hash, length.hashCode); suggestions.hashCode,
hash = JenkinsSmiHash.combine(hash, suggestions.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// LinkedEditSuggestion /// LinkedEditSuggestion
@ -2839,12 +2816,10 @@ class LinkedEditSuggestion implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; value.hashCode,
hash = JenkinsSmiHash.combine(hash, value.hashCode); kind.hashCode,
hash = JenkinsSmiHash.combine(hash, kind.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// LinkedEditSuggestionKind /// LinkedEditSuggestionKind
@ -3043,17 +3018,15 @@ class Location implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; file.hashCode,
hash = JenkinsSmiHash.combine(hash, file.hashCode); offset.hashCode,
hash = JenkinsSmiHash.combine(hash, offset.hashCode); length.hashCode,
hash = JenkinsSmiHash.combine(hash, length.hashCode); startLine.hashCode,
hash = JenkinsSmiHash.combine(hash, startLine.hashCode); startColumn.hashCode,
hash = JenkinsSmiHash.combine(hash, startColumn.hashCode); endLine.hashCode,
hash = JenkinsSmiHash.combine(hash, endLine.hashCode); endColumn.hashCode,
hash = JenkinsSmiHash.combine(hash, endColumn.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// NavigationRegion /// NavigationRegion
@ -3131,13 +3104,11 @@ class NavigationRegion implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; offset.hashCode,
hash = JenkinsSmiHash.combine(hash, offset.hashCode); length.hashCode,
hash = JenkinsSmiHash.combine(hash, length.hashCode); targets.hashCode,
hash = JenkinsSmiHash.combine(hash, targets.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// NavigationTarget /// NavigationTarget
@ -3287,18 +3258,16 @@ class NavigationTarget implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; kind.hashCode,
hash = JenkinsSmiHash.combine(hash, kind.hashCode); fileIndex.hashCode,
hash = JenkinsSmiHash.combine(hash, fileIndex.hashCode); offset.hashCode,
hash = JenkinsSmiHash.combine(hash, offset.hashCode); length.hashCode,
hash = JenkinsSmiHash.combine(hash, length.hashCode); startLine.hashCode,
hash = JenkinsSmiHash.combine(hash, startLine.hashCode); startColumn.hashCode,
hash = JenkinsSmiHash.combine(hash, startColumn.hashCode); codeOffset.hashCode,
hash = JenkinsSmiHash.combine(hash, codeOffset.hashCode); codeLength.hashCode,
hash = JenkinsSmiHash.combine(hash, codeLength.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// Occurrences /// Occurrences
@ -3375,13 +3344,11 @@ class Occurrences implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; element.hashCode,
hash = JenkinsSmiHash.combine(hash, element.hashCode); offsets.hashCode,
hash = JenkinsSmiHash.combine(hash, offsets.hashCode); length.hashCode,
hash = JenkinsSmiHash.combine(hash, length.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// Outline /// Outline
@ -3509,16 +3476,14 @@ class Outline implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; element.hashCode,
hash = JenkinsSmiHash.combine(hash, element.hashCode); offset.hashCode,
hash = JenkinsSmiHash.combine(hash, offset.hashCode); length.hashCode,
hash = JenkinsSmiHash.combine(hash, length.hashCode); codeOffset.hashCode,
hash = JenkinsSmiHash.combine(hash, codeOffset.hashCode); codeLength.hashCode,
hash = JenkinsSmiHash.combine(hash, codeLength.hashCode); children.hashCode,
hash = JenkinsSmiHash.combine(hash, children.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// ParameterInfo /// ParameterInfo
@ -3609,14 +3574,12 @@ class ParameterInfo implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; kind.hashCode,
hash = JenkinsSmiHash.combine(hash, kind.hashCode); name.hashCode,
hash = JenkinsSmiHash.combine(hash, name.hashCode); type.hashCode,
hash = JenkinsSmiHash.combine(hash, type.hashCode); defaultValue.hashCode,
hash = JenkinsSmiHash.combine(hash, defaultValue.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// ParameterKind /// ParameterKind
@ -3748,12 +3711,10 @@ class Position implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; file.hashCode,
hash = JenkinsSmiHash.combine(hash, file.hashCode); offset.hashCode,
hash = JenkinsSmiHash.combine(hash, offset.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// RefactoringKind /// RefactoringKind
@ -3963,15 +3924,13 @@ class RefactoringMethodParameter implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; id.hashCode,
hash = JenkinsSmiHash.combine(hash, id.hashCode); kind.hashCode,
hash = JenkinsSmiHash.combine(hash, kind.hashCode); type.hashCode,
hash = JenkinsSmiHash.combine(hash, type.hashCode); name.hashCode,
hash = JenkinsSmiHash.combine(hash, name.hashCode); parameters.hashCode,
hash = JenkinsSmiHash.combine(hash, parameters.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// RefactoringMethodParameterKind /// RefactoringMethodParameterKind
@ -4111,13 +4070,11 @@ class RefactoringProblem implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; severity.hashCode,
hash = JenkinsSmiHash.combine(hash, severity.hashCode); message.hashCode,
hash = JenkinsSmiHash.combine(hash, message.hashCode); location.hashCode,
hash = JenkinsSmiHash.combine(hash, location.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// RefactoringProblemSeverity /// RefactoringProblemSeverity
@ -4248,11 +4205,7 @@ class RemoveContentOverlay implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => 114870849;
var hash = 0;
hash = JenkinsSmiHash.combine(hash, 114870849);
return JenkinsSmiHash.finish(hash);
}
} }
/// SourceChange /// SourceChange
@ -4397,15 +4350,13 @@ class SourceChange implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; message.hashCode,
hash = JenkinsSmiHash.combine(hash, message.hashCode); edits.hashCode,
hash = JenkinsSmiHash.combine(hash, edits.hashCode); linkedEditGroups.hashCode,
hash = JenkinsSmiHash.combine(hash, linkedEditGroups.hashCode); selection.hashCode,
hash = JenkinsSmiHash.combine(hash, selection.hashCode); id.hashCode,
hash = JenkinsSmiHash.combine(hash, id.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// SourceEdit /// SourceEdit
@ -4512,14 +4463,12 @@ class SourceEdit implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; offset.hashCode,
hash = JenkinsSmiHash.combine(hash, offset.hashCode); length.hashCode,
hash = JenkinsSmiHash.combine(hash, length.hashCode); replacement.hashCode,
hash = JenkinsSmiHash.combine(hash, replacement.hashCode); id.hashCode,
hash = JenkinsSmiHash.combine(hash, id.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// SourceFileEdit /// SourceFileEdit
@ -4610,11 +4559,9 @@ class SourceFileEdit implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; file.hashCode,
hash = JenkinsSmiHash.combine(hash, file.hashCode); fileStamp.hashCode,
hash = JenkinsSmiHash.combine(hash, fileStamp.hashCode); edits.hashCode,
hash = JenkinsSmiHash.combine(hash, edits.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }

View file

@ -2,7 +2,6 @@
// for details. All rights reserved. Use of this source code is governed by a // for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file. // BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/src/generated/utilities_general.dart';
import 'package:path/path.dart' as path; import 'package:path/path.dart' as path;
/// Information about the root directory associated with an analysis context. /// Information about the root directory associated with an analysis context.
@ -29,12 +28,7 @@ class ContextRoot {
ContextRoot(this.root, this.exclude, {required this.pathContext}); ContextRoot(this.root, this.exclude, {required this.pathContext});
@override @override
int get hashCode { int get hashCode => Object.hash(root, exclude);
int hash = 0;
hash = JenkinsSmiHash.combine(hash, root.hashCode);
hash = JenkinsSmiHash.combine(hash, exclude.hashCode);
return JenkinsSmiHash.finish(hash);
}
@override @override
bool operator ==(Object other) { bool operator ==(Object other) {

View file

@ -4,7 +4,6 @@
import 'dart:typed_data'; import 'dart:typed_data';
import 'package:analyzer/src/generated/utilities_general.dart';
import 'package:convert/convert.dart'; import 'package:convert/convert.dart';
/// The reference to a class member. /// The reference to a class member.
@ -23,7 +22,7 @@ class ClassMemberReference {
final int hashCode; final int hashCode;
ClassMemberReference(this.target, this.name) ClassMemberReference(this.target, this.name)
: hashCode = JenkinsSmiHash.hash2(target.hashCode, name.hashCode); : hashCode = Object.hash(target.hashCode, name.hashCode);
@override @override
bool operator ==(Object other) { bool operator ==(Object other) {
@ -121,7 +120,7 @@ class LibraryQualifiedName {
factory LibraryQualifiedName(Uri libraryUri, String name) { factory LibraryQualifiedName(Uri libraryUri, String name) {
var isPrivate = name.startsWith('_'); var isPrivate = name.startsWith('_');
var hashCode = JenkinsSmiHash.hash2(libraryUri.hashCode, name.hashCode); var hashCode = Object.hash(libraryUri.hashCode, name.hashCode);
return LibraryQualifiedName._internal( return LibraryQualifiedName._internal(
libraryUri, name, isPrivate, hashCode); libraryUri, name, isPrivate, hashCode);
} }

View file

@ -6,7 +6,6 @@ import 'dart:typed_data';
import 'package:analyzer/dart/analysis/features.dart'; import 'package:analyzer/dart/analysis/features.dart';
import 'package:analyzer/src/dart/analysis/experiments_impl.dart'; import 'package:analyzer/src/dart/analysis/experiments_impl.dart';
import 'package:analyzer/src/generated/utilities_general.dart';
import 'package:meta/meta.dart'; import 'package:meta/meta.dart';
import 'package:pub_semver/src/version.dart'; import 'package:pub_semver/src/version.dart';
@ -172,13 +171,7 @@ class ExperimentStatus with _CurrentState implements FeatureSet {
); );
@override @override
int get hashCode { int get hashCode => Object.hashAll(_flags);
int hash = 0;
for (var flag in _flags) {
hash = JenkinsSmiHash.combine(hash, flag.hashCode);
}
return JenkinsSmiHash.finish(hash);
}
@override @override
bool operator ==(Object other) { bool operator ==(Object other) {

View file

@ -13,7 +13,6 @@ import 'package:analyzer/error/error.dart';
import 'package:analyzer/src/dart/constant/has_type_parameter_reference.dart'; import 'package:analyzer/src/dart/constant/has_type_parameter_reference.dart';
import 'package:analyzer/src/dart/element/type_system.dart'; import 'package:analyzer/src/dart/element/type_system.dart';
import 'package:analyzer/src/error/codes.dart'; import 'package:analyzer/src/error/codes.dart';
import 'package:analyzer/src/generated/utilities_general.dart';
import 'package:meta/meta.dart'; import 'package:meta/meta.dart';
/// The state of an object representing a boolean value. /// The state of an object representing a boolean value.
@ -185,7 +184,7 @@ class DartObjectImpl implements DartObject {
Map<String, DartObjectImpl>? get fields => _state.fields; Map<String, DartObjectImpl>? get fields => _state.fields;
@override @override
int get hashCode => JenkinsSmiHash.hash2(type.hashCode, _state.hashCode); int get hashCode => Object.hash(type.hashCode, _state.hashCode);
@override @override
bool get hasKnownValue => !_state.isUnknown; bool get hasKnownValue => !_state.isUnknown;

View file

@ -42,7 +42,6 @@ import 'package:analyzer/src/generated/sdk.dart' show DartSdk;
import 'package:analyzer/src/generated/source.dart'; import 'package:analyzer/src/generated/source.dart';
import 'package:analyzer/src/generated/utilities_collection.dart'; import 'package:analyzer/src/generated/utilities_collection.dart';
import 'package:analyzer/src/generated/utilities_dart.dart'; import 'package:analyzer/src/generated/utilities_dart.dart';
import 'package:analyzer/src/generated/utilities_general.dart';
import 'package:analyzer/src/macro/impl/error.dart' as macro; import 'package:analyzer/src/macro/impl/error.dart' as macro;
import 'package:analyzer/src/summary2/ast_binary_tokens.dart'; import 'package:analyzer/src/summary2/ast_binary_tokens.dart';
import 'package:analyzer/src/summary2/bundle_reader.dart'; import 'package:analyzer/src/summary2/bundle_reader.dart';
@ -2735,14 +2734,7 @@ class ElementLocationImpl implements ElementLocation {
} }
@override @override
int get hashCode { int get hashCode => Object.hashAll(_components);
int result = 0;
for (int i = 0; i < _components.length; i++) {
String component = _components[i];
result = JenkinsSmiHash.combine(result, component.hashCode);
}
return result;
}
@override @override
bool operator ==(Object object) { bool operator ==(Object object) {

View file

@ -8,7 +8,6 @@ import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/dart/element/member.dart'; import 'package:analyzer/src/dart/element/member.dart';
import 'package:analyzer/src/dart/element/type_algebra.dart'; import 'package:analyzer/src/dart/element/type_algebra.dart';
import 'package:analyzer/src/dart/element/type_system.dart'; import 'package:analyzer/src/dart/element/type_system.dart';
import 'package:analyzer/src/generated/utilities_general.dart';
/// Failure because of there is no most specific signature in [candidates]. /// Failure because of there is no most specific signature in [candidates].
class CandidatesConflict extends Conflict { class CandidatesConflict extends Conflict {
@ -885,7 +884,7 @@ class Name {
factory Name(Uri? libraryUri, String name) { factory Name(Uri? libraryUri, String name) {
if (name.startsWith('_')) { if (name.startsWith('_')) {
var hashCode = JenkinsSmiHash.hash2(libraryUri.hashCode, name.hashCode); var hashCode = Object.hash(libraryUri.hashCode, name.hashCode);
return Name._internal(libraryUri, name, false, hashCode); return Name._internal(libraryUri, name, false, hashCode);
} else { } else {
return Name._internal(null, name, true, name.hashCode); return Name._internal(null, name, true, name.hashCode);

View file

@ -42,58 +42,6 @@ String? toLowerCase(Object? value) => value?.toString().toLowerCase();
/// null. /// null.
String? toUpperCase(Object? value) => value?.toString().toUpperCase(); String? toUpperCase(Object? value) => value?.toString().toUpperCase();
/// Jenkins hash function, optimized for small integers.
///
/// Static methods borrowed from sdk/lib/math/jenkins_smi_hash.dart. Non-static
/// methods are an enhancement for the "front_end" package.
///
/// Where performance is critical, use [hash2], [hash3], or [hash4], or the
/// pattern `finish(combine(combine(...combine(0, a), b)..., z))`, where a..z
/// are hash codes to be combined.
///
/// For ease of use, you may also use this pattern:
/// `(new JenkinsSmiHash()..add(a)..add(b)....add(z)).hashCode`, where a..z are
/// the sub-objects whose hashes should be combined. This pattern performs the
/// same operations as the performance critical variant, but allocates an extra
/// object.
class JenkinsSmiHash {
int _hash = 0;
/// Finalizes the hash and return the resulting hashcode.
@override
int get hashCode => finish(_hash);
/// Accumulates the object [o] into the hash.
void add(Object o) {
_hash = combine(_hash, o.hashCode);
}
/// Accumulates the hash code [value] into the running hash [hash].
static int combine(int hash, int value) {
hash = 0x1fffffff & (hash + value);
hash = 0x1fffffff & (hash + ((0x0007ffff & hash) << 10));
return hash ^ (hash >> 6);
}
/// Finalizes a running hash produced by [combine].
static int finish(int hash) {
hash = 0x1fffffff & (hash + ((0x03ffffff & hash) << 3));
hash = hash ^ (hash >> 11);
return 0x1fffffff & (hash + ((0x00003fff & hash) << 15));
}
/// Combines together two hash codes.
static int hash2(int a, int b) => finish(combine(combine(0, a), b));
/// Combines together three hash codes.
static int hash3(int a, int b, int c) =>
finish(combine(combine(combine(0, a), b), c));
/// Combines together four hash codes.
static int hash4(int a, int b, int c, int d) =>
finish(combine(combine(combine(combine(0, a), b), c), d));
}
/// A simple limited queue. /// A simple limited queue.
class LimitedQueue<E> extends ListQueue<E> { class LimitedQueue<E> extends ListQueue<E> {
final int limit; final int limit;

View file

@ -4,7 +4,7 @@ description: This package provides a library that performs static analysis of Da
homepage: https://github.com/dart-lang/sdk/tree/main/pkg/analyzer homepage: https://github.com/dart-lang/sdk/tree/main/pkg/analyzer
environment: environment:
sdk: '>=2.12.0 <3.0.0' sdk: '>=2.14.0 <3.0.0'
dependencies: dependencies:
_fe_analyzer_shared: ^26.0.0 _fe_analyzer_shared: ^26.0.0

View file

@ -8,7 +8,6 @@
import 'dart:convert' hide JsonDecoder; import 'dart:convert' hide JsonDecoder;
import 'package:analyzer/src/generated/utilities_general.dart';
import 'package:analyzer_plugin/protocol/protocol.dart'; import 'package:analyzer_plugin/protocol/protocol.dart';
import 'package:analyzer_plugin/src/protocol/protocol_internal.dart'; import 'package:analyzer_plugin/src/protocol/protocol_internal.dart';
@ -66,12 +65,10 @@ class AddContentOverlay implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; 704418402,
hash = JenkinsSmiHash.combine(hash, 704418402); content.hashCode,
hash = JenkinsSmiHash.combine(hash, content.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// AnalysisError /// AnalysisError
@ -252,19 +249,17 @@ class AnalysisError implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; severity.hashCode,
hash = JenkinsSmiHash.combine(hash, severity.hashCode); type.hashCode,
hash = JenkinsSmiHash.combine(hash, type.hashCode); location.hashCode,
hash = JenkinsSmiHash.combine(hash, location.hashCode); message.hashCode,
hash = JenkinsSmiHash.combine(hash, message.hashCode); correction.hashCode,
hash = JenkinsSmiHash.combine(hash, correction.hashCode); code.hashCode,
hash = JenkinsSmiHash.combine(hash, code.hashCode); url.hashCode,
hash = JenkinsSmiHash.combine(hash, url.hashCode); contextMessages.hashCode,
hash = JenkinsSmiHash.combine(hash, contextMessages.hashCode); hasFix.hashCode,
hash = JenkinsSmiHash.combine(hash, hasFix.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// AnalysisErrorSeverity /// AnalysisErrorSeverity
@ -477,12 +472,10 @@ class ChangeContentOverlay implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; 873118866,
hash = JenkinsSmiHash.combine(hash, 873118866); edits.hashCode,
hash = JenkinsSmiHash.combine(hash, edits.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// CompletionSuggestion /// CompletionSuggestion
@ -918,33 +911,31 @@ class CompletionSuggestion implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hashAll([
var hash = 0; kind.hashCode,
hash = JenkinsSmiHash.combine(hash, kind.hashCode); relevance.hashCode,
hash = JenkinsSmiHash.combine(hash, relevance.hashCode); completion.hashCode,
hash = JenkinsSmiHash.combine(hash, completion.hashCode); displayText.hashCode,
hash = JenkinsSmiHash.combine(hash, displayText.hashCode); replacementOffset.hashCode,
hash = JenkinsSmiHash.combine(hash, replacementOffset.hashCode); replacementLength.hashCode,
hash = JenkinsSmiHash.combine(hash, replacementLength.hashCode); selectionOffset.hashCode,
hash = JenkinsSmiHash.combine(hash, selectionOffset.hashCode); selectionLength.hashCode,
hash = JenkinsSmiHash.combine(hash, selectionLength.hashCode); isDeprecated.hashCode,
hash = JenkinsSmiHash.combine(hash, isDeprecated.hashCode); isPotential.hashCode,
hash = JenkinsSmiHash.combine(hash, isPotential.hashCode); docSummary.hashCode,
hash = JenkinsSmiHash.combine(hash, docSummary.hashCode); docComplete.hashCode,
hash = JenkinsSmiHash.combine(hash, docComplete.hashCode); declaringType.hashCode,
hash = JenkinsSmiHash.combine(hash, declaringType.hashCode); defaultArgumentListString.hashCode,
hash = JenkinsSmiHash.combine(hash, defaultArgumentListString.hashCode); defaultArgumentListTextRanges.hashCode,
hash = JenkinsSmiHash.combine(hash, defaultArgumentListTextRanges.hashCode); element.hashCode,
hash = JenkinsSmiHash.combine(hash, element.hashCode); returnType.hashCode,
hash = JenkinsSmiHash.combine(hash, returnType.hashCode); parameterNames.hashCode,
hash = JenkinsSmiHash.combine(hash, parameterNames.hashCode); parameterTypes.hashCode,
hash = JenkinsSmiHash.combine(hash, parameterTypes.hashCode); requiredParameterCount.hashCode,
hash = JenkinsSmiHash.combine(hash, requiredParameterCount.hashCode); hasNamedParameters.hashCode,
hash = JenkinsSmiHash.combine(hash, hasNamedParameters.hashCode); parameterName.hashCode,
hash = JenkinsSmiHash.combine(hash, parameterName.hashCode); parameterType.hashCode,
hash = JenkinsSmiHash.combine(hash, parameterType.hashCode); ]);
return JenkinsSmiHash.finish(hash);
}
} }
/// CompletionSuggestionKind /// CompletionSuggestionKind
@ -1139,12 +1130,10 @@ class DiagnosticMessage implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; message.hashCode,
hash = JenkinsSmiHash.combine(hash, message.hashCode); location.hashCode,
hash = JenkinsSmiHash.combine(hash, location.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// Element /// Element
@ -1347,18 +1336,16 @@ class Element implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; kind.hashCode,
hash = JenkinsSmiHash.combine(hash, kind.hashCode); name.hashCode,
hash = JenkinsSmiHash.combine(hash, name.hashCode); location.hashCode,
hash = JenkinsSmiHash.combine(hash, location.hashCode); flags.hashCode,
hash = JenkinsSmiHash.combine(hash, flags.hashCode); parameters.hashCode,
hash = JenkinsSmiHash.combine(hash, parameters.hashCode); returnType.hashCode,
hash = JenkinsSmiHash.combine(hash, returnType.hashCode); typeParameters.hashCode,
hash = JenkinsSmiHash.combine(hash, typeParameters.hashCode); aliasedType.hashCode,
hash = JenkinsSmiHash.combine(hash, aliasedType.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// ElementKind /// ElementKind
@ -1753,13 +1740,11 @@ class FoldingRegion implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; kind.hashCode,
hash = JenkinsSmiHash.combine(hash, kind.hashCode); offset.hashCode,
hash = JenkinsSmiHash.combine(hash, offset.hashCode); length.hashCode,
hash = JenkinsSmiHash.combine(hash, length.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// HighlightRegion /// HighlightRegion
@ -1835,13 +1820,11 @@ class HighlightRegion implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; type.hashCode,
hash = JenkinsSmiHash.combine(hash, type.hashCode); offset.hashCode,
hash = JenkinsSmiHash.combine(hash, offset.hashCode); length.hashCode,
hash = JenkinsSmiHash.combine(hash, length.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// HighlightRegionType /// HighlightRegionType
@ -2545,15 +2528,13 @@ class KytheEntry implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; source.hashCode,
hash = JenkinsSmiHash.combine(hash, source.hashCode); kind.hashCode,
hash = JenkinsSmiHash.combine(hash, kind.hashCode); target.hashCode,
hash = JenkinsSmiHash.combine(hash, target.hashCode); fact.hashCode,
hash = JenkinsSmiHash.combine(hash, fact.hashCode); value.hashCode,
hash = JenkinsSmiHash.combine(hash, value.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// KytheVName /// KytheVName
@ -2659,15 +2640,13 @@ class KytheVName implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; signature.hashCode,
hash = JenkinsSmiHash.combine(hash, signature.hashCode); corpus.hashCode,
hash = JenkinsSmiHash.combine(hash, corpus.hashCode); root.hashCode,
hash = JenkinsSmiHash.combine(hash, root.hashCode); path.hashCode,
hash = JenkinsSmiHash.combine(hash, path.hashCode); language.hashCode,
hash = JenkinsSmiHash.combine(hash, language.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// LinkedEditGroup /// LinkedEditGroup
@ -2770,13 +2749,11 @@ class LinkedEditGroup implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; positions.hashCode,
hash = JenkinsSmiHash.combine(hash, positions.hashCode); length.hashCode,
hash = JenkinsSmiHash.combine(hash, length.hashCode); suggestions.hashCode,
hash = JenkinsSmiHash.combine(hash, suggestions.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// LinkedEditSuggestion /// LinkedEditSuggestion
@ -2839,12 +2816,10 @@ class LinkedEditSuggestion implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; value.hashCode,
hash = JenkinsSmiHash.combine(hash, value.hashCode); kind.hashCode,
hash = JenkinsSmiHash.combine(hash, kind.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// LinkedEditSuggestionKind /// LinkedEditSuggestionKind
@ -3043,17 +3018,15 @@ class Location implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; file.hashCode,
hash = JenkinsSmiHash.combine(hash, file.hashCode); offset.hashCode,
hash = JenkinsSmiHash.combine(hash, offset.hashCode); length.hashCode,
hash = JenkinsSmiHash.combine(hash, length.hashCode); startLine.hashCode,
hash = JenkinsSmiHash.combine(hash, startLine.hashCode); startColumn.hashCode,
hash = JenkinsSmiHash.combine(hash, startColumn.hashCode); endLine.hashCode,
hash = JenkinsSmiHash.combine(hash, endLine.hashCode); endColumn.hashCode,
hash = JenkinsSmiHash.combine(hash, endColumn.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// NavigationRegion /// NavigationRegion
@ -3131,13 +3104,11 @@ class NavigationRegion implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; offset.hashCode,
hash = JenkinsSmiHash.combine(hash, offset.hashCode); length.hashCode,
hash = JenkinsSmiHash.combine(hash, length.hashCode); targets.hashCode,
hash = JenkinsSmiHash.combine(hash, targets.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// NavigationTarget /// NavigationTarget
@ -3287,18 +3258,16 @@ class NavigationTarget implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; kind.hashCode,
hash = JenkinsSmiHash.combine(hash, kind.hashCode); fileIndex.hashCode,
hash = JenkinsSmiHash.combine(hash, fileIndex.hashCode); offset.hashCode,
hash = JenkinsSmiHash.combine(hash, offset.hashCode); length.hashCode,
hash = JenkinsSmiHash.combine(hash, length.hashCode); startLine.hashCode,
hash = JenkinsSmiHash.combine(hash, startLine.hashCode); startColumn.hashCode,
hash = JenkinsSmiHash.combine(hash, startColumn.hashCode); codeOffset.hashCode,
hash = JenkinsSmiHash.combine(hash, codeOffset.hashCode); codeLength.hashCode,
hash = JenkinsSmiHash.combine(hash, codeLength.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// Occurrences /// Occurrences
@ -3375,13 +3344,11 @@ class Occurrences implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; element.hashCode,
hash = JenkinsSmiHash.combine(hash, element.hashCode); offsets.hashCode,
hash = JenkinsSmiHash.combine(hash, offsets.hashCode); length.hashCode,
hash = JenkinsSmiHash.combine(hash, length.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// Outline /// Outline
@ -3509,16 +3476,14 @@ class Outline implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; element.hashCode,
hash = JenkinsSmiHash.combine(hash, element.hashCode); offset.hashCode,
hash = JenkinsSmiHash.combine(hash, offset.hashCode); length.hashCode,
hash = JenkinsSmiHash.combine(hash, length.hashCode); codeOffset.hashCode,
hash = JenkinsSmiHash.combine(hash, codeOffset.hashCode); codeLength.hashCode,
hash = JenkinsSmiHash.combine(hash, codeLength.hashCode); children.hashCode,
hash = JenkinsSmiHash.combine(hash, children.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// ParameterInfo /// ParameterInfo
@ -3609,14 +3574,12 @@ class ParameterInfo implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; kind.hashCode,
hash = JenkinsSmiHash.combine(hash, kind.hashCode); name.hashCode,
hash = JenkinsSmiHash.combine(hash, name.hashCode); type.hashCode,
hash = JenkinsSmiHash.combine(hash, type.hashCode); defaultValue.hashCode,
hash = JenkinsSmiHash.combine(hash, defaultValue.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// ParameterKind /// ParameterKind
@ -3748,12 +3711,10 @@ class Position implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; file.hashCode,
hash = JenkinsSmiHash.combine(hash, file.hashCode); offset.hashCode,
hash = JenkinsSmiHash.combine(hash, offset.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// RefactoringKind /// RefactoringKind
@ -3963,15 +3924,13 @@ class RefactoringMethodParameter implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; id.hashCode,
hash = JenkinsSmiHash.combine(hash, id.hashCode); kind.hashCode,
hash = JenkinsSmiHash.combine(hash, kind.hashCode); type.hashCode,
hash = JenkinsSmiHash.combine(hash, type.hashCode); name.hashCode,
hash = JenkinsSmiHash.combine(hash, name.hashCode); parameters.hashCode,
hash = JenkinsSmiHash.combine(hash, parameters.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// RefactoringMethodParameterKind /// RefactoringMethodParameterKind
@ -4111,13 +4070,11 @@ class RefactoringProblem implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; severity.hashCode,
hash = JenkinsSmiHash.combine(hash, severity.hashCode); message.hashCode,
hash = JenkinsSmiHash.combine(hash, message.hashCode); location.hashCode,
hash = JenkinsSmiHash.combine(hash, location.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// RefactoringProblemSeverity /// RefactoringProblemSeverity
@ -4248,11 +4205,7 @@ class RemoveContentOverlay implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => 114870849;
var hash = 0;
hash = JenkinsSmiHash.combine(hash, 114870849);
return JenkinsSmiHash.finish(hash);
}
} }
/// SourceChange /// SourceChange
@ -4397,15 +4350,13 @@ class SourceChange implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; message.hashCode,
hash = JenkinsSmiHash.combine(hash, message.hashCode); edits.hashCode,
hash = JenkinsSmiHash.combine(hash, edits.hashCode); linkedEditGroups.hashCode,
hash = JenkinsSmiHash.combine(hash, linkedEditGroups.hashCode); selection.hashCode,
hash = JenkinsSmiHash.combine(hash, selection.hashCode); id.hashCode,
hash = JenkinsSmiHash.combine(hash, id.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// SourceEdit /// SourceEdit
@ -4512,14 +4463,12 @@ class SourceEdit implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; offset.hashCode,
hash = JenkinsSmiHash.combine(hash, offset.hashCode); length.hashCode,
hash = JenkinsSmiHash.combine(hash, length.hashCode); replacement.hashCode,
hash = JenkinsSmiHash.combine(hash, replacement.hashCode); id.hashCode,
hash = JenkinsSmiHash.combine(hash, id.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// SourceFileEdit /// SourceFileEdit
@ -4610,11 +4559,9 @@ class SourceFileEdit implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; file.hashCode,
hash = JenkinsSmiHash.combine(hash, file.hashCode); fileStamp.hashCode,
hash = JenkinsSmiHash.combine(hash, fileStamp.hashCode); edits.hashCode,
hash = JenkinsSmiHash.combine(hash, edits.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }

View file

@ -8,7 +8,6 @@
import 'dart:convert' hide JsonDecoder; import 'dart:convert' hide JsonDecoder;
import 'package:analyzer/src/generated/utilities_general.dart';
import 'package:analyzer_plugin/protocol/protocol.dart'; import 'package:analyzer_plugin/protocol/protocol.dart';
import 'package:analyzer_plugin/src/protocol/protocol_internal.dart'; import 'package:analyzer_plugin/src/protocol/protocol_internal.dart';
import 'package:analyzer_plugin/protocol/protocol_common.dart'; import 'package:analyzer_plugin/protocol/protocol_common.dart';
@ -81,12 +80,10 @@ class AnalysisErrorFixes implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; error.hashCode,
hash = JenkinsSmiHash.combine(hash, error.hashCode); fixes.hashCode,
hash = JenkinsSmiHash.combine(hash, fixes.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// analysis.errors params /// analysis.errors params
@ -164,12 +161,10 @@ class AnalysisErrorsParams implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; file.hashCode,
hash = JenkinsSmiHash.combine(hash, file.hashCode); errors.hashCode,
hash = JenkinsSmiHash.combine(hash, errors.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// analysis.folding params /// analysis.folding params
@ -247,12 +242,10 @@ class AnalysisFoldingParams implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; file.hashCode,
hash = JenkinsSmiHash.combine(hash, file.hashCode); regions.hashCode,
hash = JenkinsSmiHash.combine(hash, regions.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// analysis.getNavigation params /// analysis.getNavigation params
@ -340,13 +333,11 @@ class AnalysisGetNavigationParams implements RequestParams {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; file.hashCode,
hash = JenkinsSmiHash.combine(hash, file.hashCode); offset.hashCode,
hash = JenkinsSmiHash.combine(hash, offset.hashCode); length.hashCode,
hash = JenkinsSmiHash.combine(hash, length.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// analysis.getNavigation result /// analysis.getNavigation result
@ -449,13 +440,11 @@ class AnalysisGetNavigationResult implements ResponseResult {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; files.hashCode,
hash = JenkinsSmiHash.combine(hash, files.hashCode); targets.hashCode,
hash = JenkinsSmiHash.combine(hash, targets.hashCode); regions.hashCode,
hash = JenkinsSmiHash.combine(hash, regions.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// analysis.handleWatchEvents params /// analysis.handleWatchEvents params
@ -523,11 +512,7 @@ class AnalysisHandleWatchEventsParams implements RequestParams {
} }
@override @override
int get hashCode { int get hashCode => events.hashCode;
var hash = 0;
hash = JenkinsSmiHash.combine(hash, events.hashCode);
return JenkinsSmiHash.finish(hash);
}
} }
/// analysis.handleWatchEvents result /// analysis.handleWatchEvents result
@ -551,9 +536,7 @@ class AnalysisHandleWatchEventsResult implements ResponseResult {
} }
@override @override
int get hashCode { int get hashCode => 779767607;
return 779767607;
}
} }
/// analysis.highlights params /// analysis.highlights params
@ -631,12 +614,10 @@ class AnalysisHighlightsParams implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; file.hashCode,
hash = JenkinsSmiHash.combine(hash, file.hashCode); regions.hashCode,
hash = JenkinsSmiHash.combine(hash, regions.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// analysis.navigation params /// analysis.navigation params
@ -747,14 +728,12 @@ class AnalysisNavigationParams implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; file.hashCode,
hash = JenkinsSmiHash.combine(hash, file.hashCode); regions.hashCode,
hash = JenkinsSmiHash.combine(hash, regions.hashCode); targets.hashCode,
hash = JenkinsSmiHash.combine(hash, targets.hashCode); files.hashCode,
hash = JenkinsSmiHash.combine(hash, files.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// analysis.occurrences params /// analysis.occurrences params
@ -833,12 +812,10 @@ class AnalysisOccurrencesParams implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; file.hashCode,
hash = JenkinsSmiHash.combine(hash, file.hashCode); occurrences.hashCode,
hash = JenkinsSmiHash.combine(hash, occurrences.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// analysis.outline params /// analysis.outline params
@ -914,12 +891,10 @@ class AnalysisOutlineParams implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; file.hashCode,
hash = JenkinsSmiHash.combine(hash, file.hashCode); outline.hashCode,
hash = JenkinsSmiHash.combine(hash, outline.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// AnalysisService /// AnalysisService
@ -1056,11 +1031,7 @@ class AnalysisSetContextRootsParams implements RequestParams {
} }
@override @override
int get hashCode { int get hashCode => roots.hashCode;
var hash = 0;
hash = JenkinsSmiHash.combine(hash, roots.hashCode);
return JenkinsSmiHash.finish(hash);
}
} }
/// analysis.setContextRoots result /// analysis.setContextRoots result
@ -1084,9 +1055,7 @@ class AnalysisSetContextRootsResult implements ResponseResult {
} }
@override @override
int get hashCode { int get hashCode => 969645618;
return 969645618;
}
} }
/// analysis.setPriorityFiles params /// analysis.setPriorityFiles params
@ -1149,11 +1118,7 @@ class AnalysisSetPriorityFilesParams implements RequestParams {
} }
@override @override
int get hashCode { int get hashCode => files.hashCode;
var hash = 0;
hash = JenkinsSmiHash.combine(hash, files.hashCode);
return JenkinsSmiHash.finish(hash);
}
} }
/// analysis.setPriorityFiles result /// analysis.setPriorityFiles result
@ -1177,9 +1142,7 @@ class AnalysisSetPriorityFilesResult implements ResponseResult {
} }
@override @override
int get hashCode { int get hashCode => 330050055;
return 330050055;
}
} }
/// analysis.setSubscriptions params /// analysis.setSubscriptions params
@ -1252,11 +1215,7 @@ class AnalysisSetSubscriptionsParams implements RequestParams {
} }
@override @override
int get hashCode { int get hashCode => subscriptions.hashCode;
var hash = 0;
hash = JenkinsSmiHash.combine(hash, subscriptions.hashCode);
return JenkinsSmiHash.finish(hash);
}
} }
/// analysis.setSubscriptions result /// analysis.setSubscriptions result
@ -1280,9 +1239,7 @@ class AnalysisSetSubscriptionsResult implements ResponseResult {
} }
@override @override
int get hashCode { int get hashCode => 218088493;
return 218088493;
}
} }
/// analysis.updateContent params /// analysis.updateContent params
@ -1356,11 +1313,7 @@ class AnalysisUpdateContentParams implements RequestParams {
} }
@override @override
int get hashCode { int get hashCode => files.hashCode;
var hash = 0;
hash = JenkinsSmiHash.combine(hash, files.hashCode);
return JenkinsSmiHash.finish(hash);
}
} }
/// analysis.updateContent result /// analysis.updateContent result
@ -1384,9 +1337,7 @@ class AnalysisUpdateContentResult implements ResponseResult {
} }
@override @override
int get hashCode { int get hashCode => 468798730;
return 468798730;
}
} }
/// completion.getSuggestions params /// completion.getSuggestions params
@ -1459,12 +1410,10 @@ class CompletionGetSuggestionsParams implements RequestParams {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; file.hashCode,
hash = JenkinsSmiHash.combine(hash, file.hashCode); offset.hashCode,
hash = JenkinsSmiHash.combine(hash, offset.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// completion.getSuggestions result /// completion.getSuggestions result
@ -1572,13 +1521,11 @@ class CompletionGetSuggestionsResult implements ResponseResult {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; replacementOffset.hashCode,
hash = JenkinsSmiHash.combine(hash, replacementOffset.hashCode); replacementLength.hashCode,
hash = JenkinsSmiHash.combine(hash, replacementLength.hashCode); results.hashCode,
hash = JenkinsSmiHash.combine(hash, results.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// ContextRoot /// ContextRoot
@ -1659,13 +1606,11 @@ class ContextRoot implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; root.hashCode,
hash = JenkinsSmiHash.combine(hash, root.hashCode); exclude.hashCode,
hash = JenkinsSmiHash.combine(hash, exclude.hashCode); optionsFile.hashCode,
hash = JenkinsSmiHash.combine(hash, optionsFile.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// convertGetterToMethod feedback /// convertGetterToMethod feedback
@ -1682,9 +1627,7 @@ class ConvertGetterToMethodFeedback extends RefactoringFeedback
} }
@override @override
int get hashCode { int get hashCode => 616032599;
return 616032599;
}
} }
/// convertGetterToMethod options /// convertGetterToMethod options
@ -1701,9 +1644,7 @@ class ConvertGetterToMethodOptions extends RefactoringOptions
} }
@override @override
int get hashCode { int get hashCode => 488848400;
return 488848400;
}
} }
/// convertMethodToGetter feedback /// convertMethodToGetter feedback
@ -1720,9 +1661,7 @@ class ConvertMethodToGetterFeedback extends RefactoringFeedback
} }
@override @override
int get hashCode { int get hashCode => 165291526;
return 165291526;
}
} }
/// convertMethodToGetter options /// convertMethodToGetter options
@ -1739,9 +1678,7 @@ class ConvertMethodToGetterOptions extends RefactoringOptions
} }
@override @override
int get hashCode { int get hashCode => 27952290;
return 27952290;
}
} }
/// edit.getAssists params /// edit.getAssists params
@ -1826,13 +1763,11 @@ class EditGetAssistsParams implements RequestParams {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; file.hashCode,
hash = JenkinsSmiHash.combine(hash, file.hashCode); offset.hashCode,
hash = JenkinsSmiHash.combine(hash, offset.hashCode); length.hashCode,
hash = JenkinsSmiHash.combine(hash, length.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// edit.getAssists result /// edit.getAssists result
@ -1901,11 +1836,7 @@ class EditGetAssistsResult implements ResponseResult {
} }
@override @override
int get hashCode { int get hashCode => assists.hashCode;
var hash = 0;
hash = JenkinsSmiHash.combine(hash, assists.hashCode);
return JenkinsSmiHash.finish(hash);
}
} }
/// edit.getAvailableRefactorings params /// edit.getAvailableRefactorings params
@ -1991,13 +1922,11 @@ class EditGetAvailableRefactoringsParams implements RequestParams {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; file.hashCode,
hash = JenkinsSmiHash.combine(hash, file.hashCode); offset.hashCode,
hash = JenkinsSmiHash.combine(hash, offset.hashCode); length.hashCode,
hash = JenkinsSmiHash.combine(hash, length.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// edit.getAvailableRefactorings result /// edit.getAvailableRefactorings result
@ -2072,11 +2001,7 @@ class EditGetAvailableRefactoringsResult implements ResponseResult {
} }
@override @override
int get hashCode { int get hashCode => kinds.hashCode;
var hash = 0;
hash = JenkinsSmiHash.combine(hash, kinds.hashCode);
return JenkinsSmiHash.finish(hash);
}
} }
/// edit.getFixes params /// edit.getFixes params
@ -2148,12 +2073,10 @@ class EditGetFixesParams implements RequestParams {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; file.hashCode,
hash = JenkinsSmiHash.combine(hash, file.hashCode); offset.hashCode,
hash = JenkinsSmiHash.combine(hash, offset.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// edit.getFixes result /// edit.getFixes result
@ -2222,11 +2145,7 @@ class EditGetFixesResult implements ResponseResult {
} }
@override @override
int get hashCode { int get hashCode => fixes.hashCode;
var hash = 0;
hash = JenkinsSmiHash.combine(hash, fixes.hashCode);
return JenkinsSmiHash.finish(hash);
}
} }
/// edit.getRefactoring params /// edit.getRefactoring params
@ -2361,16 +2280,14 @@ class EditGetRefactoringParams implements RequestParams {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; kind.hashCode,
hash = JenkinsSmiHash.combine(hash, kind.hashCode); file.hashCode,
hash = JenkinsSmiHash.combine(hash, file.hashCode); offset.hashCode,
hash = JenkinsSmiHash.combine(hash, offset.hashCode); length.hashCode,
hash = JenkinsSmiHash.combine(hash, length.hashCode); validateOnly.hashCode,
hash = JenkinsSmiHash.combine(hash, validateOnly.hashCode); options.hashCode,
hash = JenkinsSmiHash.combine(hash, options.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// edit.getRefactoring result /// edit.getRefactoring result
@ -2542,16 +2459,14 @@ class EditGetRefactoringResult implements ResponseResult {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; initialProblems.hashCode,
hash = JenkinsSmiHash.combine(hash, initialProblems.hashCode); optionsProblems.hashCode,
hash = JenkinsSmiHash.combine(hash, optionsProblems.hashCode); finalProblems.hashCode,
hash = JenkinsSmiHash.combine(hash, finalProblems.hashCode); feedback.hashCode,
hash = JenkinsSmiHash.combine(hash, feedback.hashCode); change.hashCode,
hash = JenkinsSmiHash.combine(hash, change.hashCode); potentialEdits.hashCode,
hash = JenkinsSmiHash.combine(hash, potentialEdits.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// extractLocalVariable feedback /// extractLocalVariable feedback
@ -2673,15 +2588,13 @@ class ExtractLocalVariableFeedback extends RefactoringFeedback {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; coveringExpressionOffsets.hashCode,
hash = JenkinsSmiHash.combine(hash, coveringExpressionOffsets.hashCode); coveringExpressionLengths.hashCode,
hash = JenkinsSmiHash.combine(hash, coveringExpressionLengths.hashCode); names.hashCode,
hash = JenkinsSmiHash.combine(hash, names.hashCode); offsets.hashCode,
hash = JenkinsSmiHash.combine(hash, offsets.hashCode); lengths.hashCode,
hash = JenkinsSmiHash.combine(hash, lengths.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// extractLocalVariable options /// extractLocalVariable options
@ -2754,12 +2667,10 @@ class ExtractLocalVariableOptions extends RefactoringOptions {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; name.hashCode,
hash = JenkinsSmiHash.combine(hash, name.hashCode); extractAll.hashCode,
hash = JenkinsSmiHash.combine(hash, extractAll.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// extractMethod feedback /// extractMethod feedback
@ -2919,18 +2830,16 @@ class ExtractMethodFeedback extends RefactoringFeedback {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; offset.hashCode,
hash = JenkinsSmiHash.combine(hash, offset.hashCode); length.hashCode,
hash = JenkinsSmiHash.combine(hash, length.hashCode); returnType.hashCode,
hash = JenkinsSmiHash.combine(hash, returnType.hashCode); names.hashCode,
hash = JenkinsSmiHash.combine(hash, names.hashCode); canCreateGetter.hashCode,
hash = JenkinsSmiHash.combine(hash, canCreateGetter.hashCode); parameters.hashCode,
hash = JenkinsSmiHash.combine(hash, parameters.hashCode); offsets.hashCode,
hash = JenkinsSmiHash.combine(hash, offsets.hashCode); lengths.hashCode,
hash = JenkinsSmiHash.combine(hash, lengths.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// extractMethod options /// extractMethod options
@ -3063,15 +2972,13 @@ class ExtractMethodOptions extends RefactoringOptions {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; returnType.hashCode,
hash = JenkinsSmiHash.combine(hash, returnType.hashCode); createGetter.hashCode,
hash = JenkinsSmiHash.combine(hash, createGetter.hashCode); name.hashCode,
hash = JenkinsSmiHash.combine(hash, name.hashCode); parameters.hashCode,
hash = JenkinsSmiHash.combine(hash, parameters.hashCode); extractAll.hashCode,
hash = JenkinsSmiHash.combine(hash, extractAll.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// inlineLocalVariable feedback /// inlineLocalVariable feedback
@ -3135,12 +3042,10 @@ class InlineLocalVariableFeedback extends RefactoringFeedback {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; name.hashCode,
hash = JenkinsSmiHash.combine(hash, name.hashCode); occurrences.hashCode,
hash = JenkinsSmiHash.combine(hash, occurrences.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// inlineLocalVariable options /// inlineLocalVariable options
@ -3157,9 +3062,7 @@ class InlineLocalVariableOptions extends RefactoringOptions
} }
@override @override
int get hashCode { int get hashCode => 540364977;
return 540364977;
}
} }
/// inlineMethod feedback /// inlineMethod feedback
@ -3241,13 +3144,11 @@ class InlineMethodFeedback extends RefactoringFeedback {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; className.hashCode,
hash = JenkinsSmiHash.combine(hash, className.hashCode); methodName.hashCode,
hash = JenkinsSmiHash.combine(hash, methodName.hashCode); isDeclaration.hashCode,
hash = JenkinsSmiHash.combine(hash, isDeclaration.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// inlineMethod options /// inlineMethod options
@ -3319,12 +3220,10 @@ class InlineMethodOptions extends RefactoringOptions {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; deleteSource.hashCode,
hash = JenkinsSmiHash.combine(hash, deleteSource.hashCode); inlineAll.hashCode,
hash = JenkinsSmiHash.combine(hash, inlineAll.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// kythe.getKytheEntries params /// kythe.getKytheEntries params
@ -3387,11 +3286,7 @@ class KytheGetKytheEntriesParams implements RequestParams {
} }
@override @override
int get hashCode { int get hashCode => file.hashCode;
var hash = 0;
hash = JenkinsSmiHash.combine(hash, file.hashCode);
return JenkinsSmiHash.finish(hash);
}
} }
/// kythe.getKytheEntries result /// kythe.getKytheEntries result
@ -3477,12 +3372,10 @@ class KytheGetKytheEntriesResult implements ResponseResult {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; entries.hashCode,
hash = JenkinsSmiHash.combine(hash, entries.hashCode); files.hashCode,
hash = JenkinsSmiHash.combine(hash, files.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// moveFile feedback /// moveFile feedback
@ -3498,9 +3391,7 @@ class MoveFileFeedback extends RefactoringFeedback implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => 438975893;
return 438975893;
}
} }
/// moveFile options /// moveFile options
@ -3558,11 +3449,7 @@ class MoveFileOptions extends RefactoringOptions {
} }
@override @override
int get hashCode { int get hashCode => newFile.hashCode;
var hash = 0;
hash = JenkinsSmiHash.combine(hash, newFile.hashCode);
return JenkinsSmiHash.finish(hash);
}
} }
/// plugin.error params /// plugin.error params
@ -3653,13 +3540,11 @@ class PluginErrorParams implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; isFatal.hashCode,
hash = JenkinsSmiHash.combine(hash, isFatal.hashCode); message.hashCode,
hash = JenkinsSmiHash.combine(hash, message.hashCode); stackTrace.hashCode,
hash = JenkinsSmiHash.combine(hash, stackTrace.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// plugin.shutdown params /// plugin.shutdown params
@ -3683,9 +3568,7 @@ class PluginShutdownParams implements RequestParams {
} }
@override @override
int get hashCode { int get hashCode => 478064585;
return 478064585;
}
} }
/// plugin.shutdown result /// plugin.shutdown result
@ -3709,9 +3592,7 @@ class PluginShutdownResult implements ResponseResult {
} }
@override @override
int get hashCode { int get hashCode => 9389109;
return 9389109;
}
} }
/// plugin.versionCheck params /// plugin.versionCheck params
@ -3802,13 +3683,11 @@ class PluginVersionCheckParams implements RequestParams {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; byteStorePath.hashCode,
hash = JenkinsSmiHash.combine(hash, byteStorePath.hashCode); sdkPath.hashCode,
hash = JenkinsSmiHash.combine(hash, sdkPath.hashCode); version.hashCode,
hash = JenkinsSmiHash.combine(hash, version.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// plugin.versionCheck result /// plugin.versionCheck result
@ -3939,15 +3818,13 @@ class PluginVersionCheckResult implements ResponseResult {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; isCompatible.hashCode,
hash = JenkinsSmiHash.combine(hash, isCompatible.hashCode); name.hashCode,
hash = JenkinsSmiHash.combine(hash, name.hashCode); version.hashCode,
hash = JenkinsSmiHash.combine(hash, version.hashCode); contactInfo.hashCode,
hash = JenkinsSmiHash.combine(hash, contactInfo.hashCode); interestingFiles.hashCode,
hash = JenkinsSmiHash.combine(hash, interestingFiles.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// PrioritizedSourceChange /// PrioritizedSourceChange
@ -4012,12 +3889,10 @@ class PrioritizedSourceChange implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; priority.hashCode,
hash = JenkinsSmiHash.combine(hash, priority.hashCode); change.hashCode,
hash = JenkinsSmiHash.combine(hash, change.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// RefactoringFeedback /// RefactoringFeedback
@ -4053,10 +3928,7 @@ class RefactoringFeedback implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => 0;
var hash = 0;
return JenkinsSmiHash.finish(hash);
}
} }
/// RefactoringOptions /// RefactoringOptions
@ -4091,10 +3963,7 @@ class RefactoringOptions implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => 0;
var hash = 0;
return JenkinsSmiHash.finish(hash);
}
} }
/// rename feedback /// rename feedback
@ -4184,14 +4053,12 @@ class RenameFeedback extends RefactoringFeedback {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; offset.hashCode,
hash = JenkinsSmiHash.combine(hash, offset.hashCode); length.hashCode,
hash = JenkinsSmiHash.combine(hash, length.hashCode); elementKindName.hashCode,
hash = JenkinsSmiHash.combine(hash, elementKindName.hashCode); oldName.hashCode,
hash = JenkinsSmiHash.combine(hash, oldName.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// rename options /// rename options
@ -4249,11 +4116,7 @@ class RenameOptions extends RefactoringOptions {
} }
@override @override
int get hashCode { int get hashCode => newName.hashCode;
var hash = 0;
hash = JenkinsSmiHash.combine(hash, newName.hashCode);
return JenkinsSmiHash.finish(hash);
}
} }
/// RequestError /// RequestError
@ -4333,13 +4196,11 @@ class RequestError implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; code.hashCode,
hash = JenkinsSmiHash.combine(hash, code.hashCode); message.hashCode,
hash = JenkinsSmiHash.combine(hash, message.hashCode); stackTrace.hashCode,
hash = JenkinsSmiHash.combine(hash, stackTrace.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// RequestErrorCode /// RequestErrorCode
@ -4483,12 +4344,10 @@ class WatchEvent implements HasToJson {
} }
@override @override
int get hashCode { int get hashCode => Object.hash(
var hash = 0; type.hashCode,
hash = JenkinsSmiHash.combine(hash, type.hashCode); path.hashCode,
hash = JenkinsSmiHash.combine(hash, path.hashCode); );
return JenkinsSmiHash.finish(hash);
}
} }
/// WatchEventType /// WatchEventType

View file

@ -10,7 +10,6 @@ import 'package:analyzer/dart/analysis/session.dart';
import 'package:analyzer/exception/exception.dart'; import 'package:analyzer/exception/exception.dart';
import 'package:analyzer/file_system/file_system.dart'; import 'package:analyzer/file_system/file_system.dart';
import 'package:analyzer/src/generated/source.dart'; import 'package:analyzer/src/generated/source.dart';
import 'package:analyzer/src/generated/utilities_general.dart';
import 'package:analyzer_plugin/protocol/protocol_common.dart'; import 'package:analyzer_plugin/protocol/protocol_common.dart';
import 'package:analyzer_plugin/src/utilities/change_builder/change_builder_dart.dart'; import 'package:analyzer_plugin/src/utilities/change_builder/change_builder_dart.dart';
import 'package:analyzer_plugin/src/utilities/change_builder/change_builder_yaml.dart'; import 'package:analyzer_plugin/src/utilities/change_builder/change_builder_yaml.dart';
@ -71,23 +70,14 @@ class ChangeBuilderImpl implements ChangeBuilder {
// In addition, we should consider implementing our own hash function for // In addition, we should consider implementing our own hash function for
// file edits because the `hashCode` defined for them might not be // file edits because the `hashCode` defined for them might not be
// sufficient to detect all changes to the list of edits. // sufficient to detect all changes to the list of edits.
var hash = 0; return Object.hashAll([
for (var builder in _genericFileEditBuilders.values) { for (var builder in _genericFileEditBuilders.values)
if (builder.hasEdits) { if (builder.hasEdits) builder.fileEdit,
hash = JenkinsSmiHash.combine(hash, builder.fileEdit.hashCode); for (var builder in _dartFileEditBuilders.values)
} if (builder.hasEdits) builder.fileEdit,
} for (var builder in _yamlFileEditBuilders.values)
for (var builder in _dartFileEditBuilders.values) { if (builder.hasEdits) builder.fileEdit,
if (builder.hasEdits) { ]);
hash = JenkinsSmiHash.combine(hash, builder.fileEdit.hashCode);
}
}
for (var builder in _yamlFileEditBuilders.values) {
if (builder.hasEdits) {
hash = JenkinsSmiHash.combine(hash, builder.fileEdit.hashCode);
}
}
return JenkinsSmiHash.finish(hash);
} }
@override @override

View file

@ -368,7 +368,6 @@ class CodegenProtocolVisitor extends DartCodegenVisitor with CodeGenerator {
void emitImports() { void emitImports() {
writeln("import 'dart:convert' hide JsonDecoder;"); writeln("import 'dart:convert' hide JsonDecoder;");
writeln(); writeln();
writeln("import 'package:analyzer/src/generated/utilities_general.dart';");
writeln("import 'package:$packageName/protocol/protocol.dart';"); writeln("import 'package:$packageName/protocol/protocol.dart';");
writeln( writeln(
"import 'package:$packageName/src/protocol/protocol_internal.dart';"); "import 'package:$packageName/src/protocol/protocol_internal.dart';");
@ -614,25 +613,39 @@ class CodegenProtocolVisitor extends DartCodegenVisitor with CodeGenerator {
/// Emit the hashCode getter for an object class. /// Emit the hashCode getter for an object class.
void emitObjectHashCode(TypeObject? type, String className) { void emitObjectHashCode(TypeObject? type, String className) {
writeln('@override'); writeln('@override');
writeln('int get hashCode {'); writeln('int get hashCode => ');
indent(() { indent(() {
if (type == null) { if (type == null) {
writeln('return ${className.hashCode};'); writeln(' ${className.hashCode}');
} else { } else {
writeln('var hash = 0;'); final items = type.fields.map((field) {
for (var field in type.fields) {
String valueToCombine;
if (field.value != null) { if (field.value != null) {
valueToCombine = field.value.hashCode.toString(); return field.value.hashCode.toString();
} else { } else {
valueToCombine = '${field.name}.hashCode'; return '${field.name}.hashCode';
} }
writeln('hash = JenkinsSmiHash.combine(hash, $valueToCombine);'); }).toList();
if (items.isEmpty) {
writeln('0');
} else if (items.length == 1) {
writeln(items.single);
} else if (items.length <= 20) {
writeln('Object.hash(');
for (var field in items) {
writeln('$field,');
}
writeln(')');
} else {
writeln('Object.hashAll([');
for (var field in items) {
writeln('$field,');
}
writeln('])');
} }
writeln('return JenkinsSmiHash.finish(hash);');
} }
writeln(';');
}); });
writeln('}');
} }
/// If the class named [className] requires special constructors, emit them /// If the class named [className] requires special constructors, emit them

View file

@ -44,15 +44,11 @@ class CodegenCommonVisitor extends CodegenProtocolVisitor {
writeln("import 'dart:convert' hide JsonDecoder;"); writeln("import 'dart:convert' hide JsonDecoder;");
writeln(); writeln();
if (forClient) { if (forClient) {
writeln(
"import 'package:analysis_server_client/src/protocol/protocol_util.dart';");
writeln( writeln(
"import 'package:analysis_server_client/src/protocol/protocol_base.dart';"); "import 'package:analysis_server_client/src/protocol/protocol_base.dart';");
writeln( writeln(
"import 'package:analysis_server_client/src/protocol/protocol_internal.dart';"); "import 'package:analysis_server_client/src/protocol/protocol_internal.dart';");
} else { } else {
writeln(
"import 'package:analyzer/src/generated/utilities_general.dart';");
writeln("import 'package:$packageName/protocol/protocol.dart';"); writeln("import 'package:$packageName/protocol/protocol.dart';");
writeln( writeln(
"import 'package:$packageName/src/protocol/protocol_internal.dart';"); "import 'package:$packageName/src/protocol/protocol_internal.dart';");

View file

@ -2,8 +2,6 @@
// for details. All rights reserved. Use of this source code is governed by a // for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file. // BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/src/generated/utilities_general.dart';
/// Data structure representing a part of a type. When a fix has multiple /// Data structure representing a part of a type. When a fix has multiple
/// reasons (due to a complex type having different nullabilities at different /// reasons (due to a complex type having different nullabilities at different
/// locations), this data structure allows us to tell which part of the type /// locations), this data structure allows us to tell which part of the type
@ -53,7 +51,7 @@ class _FixReasonTarget_NamedParameter extends _FixReasonTarget_Part {
: super(inner); : super(inner);
@override @override
int get hashCode => JenkinsSmiHash.hash3(2, inner.hashCode, name.hashCode); int get hashCode => Object.hash(2, inner.hashCode, name.hashCode);
@override @override
bool operator ==(Object other) => bool operator ==(Object other) =>
@ -82,7 +80,7 @@ class _FixReasonTarget_PositionalParameter extends _FixReasonTarget_Part {
: super(inner); : super(inner);
@override @override
int get hashCode => JenkinsSmiHash.hash3(1, inner.hashCode, index); int get hashCode => Object.hash(1, inner.hashCode, index);
@override @override
bool operator ==(Object other) => bool operator ==(Object other) =>
@ -100,7 +98,7 @@ class _FixReasonTarget_ReturnType extends _FixReasonTarget_Part {
_FixReasonTarget_ReturnType(FixReasonTarget inner) : super(inner); _FixReasonTarget_ReturnType(FixReasonTarget inner) : super(inner);
@override @override
int get hashCode => JenkinsSmiHash.hash2(3, inner.hashCode); int get hashCode => Object.hash(3, inner.hashCode);
@override @override
bool operator ==(Object other) => bool operator ==(Object other) =>
@ -133,7 +131,7 @@ class _FixReasonTarget_TypeArgument extends _FixReasonTarget_Part {
: super(inner); : super(inner);
@override @override
int get hashCode => JenkinsSmiHash.hash3(5, inner.hashCode, index); int get hashCode => Object.hash(5, inner.hashCode, index);
@override @override
bool operator ==(Object other) => bool operator ==(Object other) =>
@ -164,7 +162,7 @@ class _FixReasonTarget_YieldedType extends _FixReasonTarget_Part {
_FixReasonTarget_YieldedType(FixReasonTarget inner) : super(inner); _FixReasonTarget_YieldedType(FixReasonTarget inner) : super(inner);
@override @override
int get hashCode => JenkinsSmiHash.hash2(4, inner.hashCode); int get hashCode => Object.hash(4, inner.hashCode);
@override @override
bool operator ==(Object other) => bool operator ==(Object other) =>

View file

@ -7,7 +7,6 @@ import 'dart:convert';
import 'package:analyzer/dart/analysis/results.dart'; import 'package:analyzer/dart/analysis/results.dart';
import 'package:analyzer/dart/ast/ast.dart'; import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/src/generated/source.dart'; import 'package:analyzer/src/generated/source.dart';
import 'package:analyzer/src/generated/utilities_general.dart';
import 'package:analyzer_plugin/protocol/protocol_common.dart'; import 'package:analyzer_plugin/protocol/protocol_common.dart';
import 'package:nnbd_migration/instrumentation.dart'; import 'package:nnbd_migration/instrumentation.dart';
import 'package:nnbd_migration/src/nullability_migration_impl.dart'; import 'package:nnbd_migration/src/nullability_migration_impl.dart';
@ -254,12 +253,7 @@ class NullabilityFixDescription {
{required this.appliedMessage, required this.kind}); {required this.appliedMessage, required this.kind});
@override @override
int get hashCode { int get hashCode => Object.hash(appliedMessage, kind);
int hash = 0;
hash = JenkinsSmiHash.combine(hash, appliedMessage.hashCode);
hash = JenkinsSmiHash.combine(hash, kind.hashCode);
return JenkinsSmiHash.finish(hash);
}
@override @override
bool operator ==(Object other) => bool operator ==(Object other) =>

View file

@ -2,7 +2,6 @@
// for details. All rights reserved. Use of this source code is governed by a // for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file. // BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/src/generated/utilities_general.dart';
import 'package:analyzer_plugin/protocol/protocol_common.dart'; import 'package:analyzer_plugin/protocol/protocol_common.dart';
import 'package:collection/collection.dart'; import 'package:collection/collection.dart';
import 'package:crypto/crypto.dart'; import 'package:crypto/crypto.dart';
@ -143,7 +142,7 @@ class NavigationTarget extends NavigationRegion {
: super(offset, line, length); : super(offset, line, length);
@override @override
int get hashCode => JenkinsSmiHash.hash3(filePath.hashCode, offset, length); int get hashCode => Object.hash(filePath.hashCode, offset, length);
@override @override
bool operator ==(Object other) { bool operator ==(Object other) {

View file

@ -4,7 +4,7 @@ name: nnbd_migration
publish_to: none publish_to: none
environment: environment:
sdk: '>=2.12.0 <3.0.0' sdk: '>=2.14.0 <3.0.0'
dependencies: dependencies:
_fe_analyzer_shared: _fe_analyzer_shared:

View file

@ -7,7 +7,7 @@ environment:
sdk: '>=2.12.0 <3.0.0' sdk: '>=2.12.0 <3.0.0'
dependencies: dependencies:
http: ^0.12.0 http: ^0.13.0
meta: meta:
path: ../meta path: ../meta
path: ^1.4.0 path: ^1.4.0