Version 2.11.0-241.0.dev
Merge commit '2ad8fdeebb0de82c8384c0a1dd4ca2109e53f450' into 'dev'
diff --git a/.dart_tool/package_config.json b/.dart_tool/package_config.json
index a34f4e3..03a17e0a 100644
--- a/.dart_tool/package_config.json
+++ b/.dart_tool/package_config.json
@@ -11,7 +11,7 @@
"constraint, update this by running tools/generate_package_config.dart."
],
"configVersion": 2,
- "generated": "2020-10-20T09:30:11.069083",
+ "generated": "2020-10-20T23:33:25.579167",
"generator": "tools/generate_package_config.dart",
"packages": [
{
@@ -254,7 +254,8 @@
{
"name": "ffi",
"rootUri": "../third_party/pkg/ffi",
- "packageUri": "lib/"
+ "packageUri": "lib/",
+ "languageVersion": "2.10"
},
{
"name": "fixnum",
@@ -521,6 +522,12 @@
"languageVersion": "2.0"
},
{
+ "name": "scrape",
+ "rootUri": "../pkg/scrape",
+ "packageUri": "lib/",
+ "languageVersion": "2.10"
+ },
+ {
"name": "sdk_library_metadata",
"rootUri": "../sdk/lib/_internal/sdk_library_metadata",
"packageUri": "lib/"
@@ -766,4 +773,4 @@
"languageVersion": "2.4"
}
]
-}
+}
\ No newline at end of file
diff --git a/DEPS b/DEPS
index 9f75edb..8b6b6ce 100644
--- a/DEPS
+++ b/DEPS
@@ -98,7 +98,7 @@
"chromedriver_tag": "83.0.4103.39",
"dartdoc_rev" : "8f5f30e58bbc0f11f104888ee87f11cbd6b82cc7",
- "ffi_rev": "454ab0f9ea6bd06942a983238d8a6818b1357edb",
+ "ffi_rev": "a90bd424116fb6f416337db67425171f2dc4c98f",
"fixnum_rev": "16d3890c6dc82ca629659da1934e412292508bba",
"glob_rev": "e9f4e6b7ae8abe5071461cf8f47191bb19cf7ef6",
"html_rev": "22f17e97fedeacaa1e945cf84d8016284eed33a6",
diff --git a/pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart b/pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart
index 0d6be78..e24981c 100644
--- a/pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart
+++ b/pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart
@@ -64,6 +64,7 @@
import 'package:analyzer/dart/analysis/analysis_context.dart';
import 'package:analyzer/dart/analysis/results.dart';
import 'package:analyzer/error/error.dart';
+import 'package:analyzer/exception/exception.dart';
import 'package:analyzer/source/error_processor.dart';
import 'package:analyzer/src/error/codes.dart';
import 'package:analyzer/src/generated/engine.dart' show AnalysisEngine;
@@ -123,7 +124,9 @@
LintNames.empty_statements: [
RemoveEmptyStatement.newInstance,
],
- LintNames.hash_and_equals: [CreateMethod.equalsOrHashCode],
+ LintNames.hash_and_equals: [
+ CreateMethod.equalsOrHashCode,
+ ],
LintNames.no_duplicate_case_values: [
RemoveDuplicateCase.newInstance,
],
@@ -412,28 +415,35 @@
}
var errorCode = diagnostic.errorCode;
- if (errorCode is LintCode) {
- var generators = lintProducerMap[errorCode.name];
- if (generators != null) {
- for (var generator in generators) {
+ try {
+ if (errorCode is LintCode) {
+ var generators = lintProducerMap[errorCode.name];
+ if (generators != null) {
+ for (var generator in generators) {
+ await compute(generator());
+ }
+ }
+ } else {
+ var generator = nonLintProducerMap[errorCode];
+ if (generator != null) {
await compute(generator());
}
- }
- } else {
- var generator = nonLintProducerMap[errorCode];
- if (generator != null) {
- await compute(generator());
- }
- var multiGenerators = nonLintMultiProducerMap[errorCode];
- if (multiGenerators != null) {
- for (var multiGenerator in multiGenerators) {
- var multiProducer = multiGenerator();
- multiProducer.configure(context);
- for (var producer in multiProducer.producers) {
- await compute(producer);
+ var multiGenerators = nonLintMultiProducerMap[errorCode];
+ if (multiGenerators != null) {
+ for (var multiGenerator in multiGenerators) {
+ var multiProducer = multiGenerator();
+ multiProducer.configure(context);
+ for (var producer in multiProducer.producers) {
+ await compute(producer);
+ }
}
}
}
+ } catch (e, s) {
+ throw CaughtException.withMessage(
+ 'Exception generating fix for ${errorCode.name} in ${result.path}',
+ e,
+ s);
}
}
}
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/create_method.dart b/pkg/analysis_server/lib/src/services/correction/dart/create_method.dart
index 17509ff..dd39818 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/create_method.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/create_method.dart
@@ -36,13 +36,18 @@
}
Future<void> createEqualsOrHashCode(ChangeBuilder builder) async {
- final methodDecl = node.thisOrAncestorOfType<MethodDeclaration>();
- final classDecl = methodDecl.thisOrAncestorOfType<ClassDeclaration>();
- if (methodDecl != null && classDecl != null) {
+ final memberDecl = node.thisOrAncestorOfType<ClassMember>();
+ if (memberDecl == null) {
+ return;
+ }
+ final classDecl = memberDecl.thisOrAncestorOfType<ClassDeclaration>();
+ if (classDecl != null) {
final classElement = classDecl.declaredElement;
+ var missingEquals = memberDecl is FieldDeclaration ||
+ (memberDecl as MethodDeclaration).name.name == 'hashCode';
ExecutableElement element;
- if (methodDecl.name.name == 'hashCode') {
+ if (missingEquals) {
_memberName = '==';
element = classElement.lookUpInheritedMethod(
_memberName, classElement.library);
diff --git a/pkg/analysis_server/test/src/services/correction/fix/create_method_test.dart b/pkg/analysis_server/test/src/services/correction/fix/create_method_test.dart
index d207559..f93b1cc 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/create_method_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/create_method_test.dart
@@ -47,6 +47,28 @@
''');
}
+ /// See: https://github.com/dart-lang/sdk/issues/43867
+ Future<void> test_equals_fieldHashCode() async {
+ await resolveTestUnit('''
+class C {
+ @override
+ int hashCode = 13;
+}
+''');
+ await assertHasFix('''
+class C {
+ @override
+ int hashCode = 13;
+
+ @override
+ bool operator ==(Object other) {
+ // TODO: implement ==
+ return super == other;
+ }
+}
+''');
+ }
+
Future<void> test_hashCode() async {
await resolveTestUnit('''
class C {
diff --git a/tools/VERSION b/tools/VERSION
index 807baa8..bd8a9fd 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 11
PATCH 0
-PRERELEASE 240
+PRERELEASE 241
PRERELEASE_PATCH 0
\ No newline at end of file