[analyzer] fix method name for `concrete_class_with_abstract_member` Fixes #49334 Change-Id: Idd47028064e4c98d693e7b9d831322a2c6c628ad Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/249614 Reviewed-by: Brian Wilkerson <brianwilkerson@google.com> Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/convert_into_block_body.dart b/pkg/analysis_server/lib/src/services/correction/dart/convert_into_block_body.dart index 61d60b6..c8e9c08 100644 --- a/pkg/analysis_server/lib/src/services/correction/dart/convert_into_block_body.dart +++ b/pkg/analysis_server/lib/src/services/correction/dart/convert_into_block_body.dart
@@ -61,7 +61,7 @@ var functionElement = _getFunctionElement(body.parent); if (functionElement == null) return null; - var lines = ['// TODO: implement ${functionElement.name}']; + var lines = ['// TODO: implement ${functionElement.displayName}']; var returnValueType = functionElement.returnType; if (!returnValueType.isVoid) {
diff --git a/pkg/analysis_server/test/src/services/correction/fix/convert_into_block_body_test.dart b/pkg/analysis_server/test/src/services/correction/fix/convert_into_block_body_test.dart index a9904be..d429ee6 100644 --- a/pkg/analysis_server/test/src/services/correction/fix/convert_into_block_body_test.dart +++ b/pkg/analysis_server/test/src/services/correction/fix/convert_into_block_body_test.dart
@@ -65,7 +65,7 @@ enum E { v; set s(int _) { - // TODO: implement s= + // TODO: implement s } } ''');
diff --git a/pkg/analyzer/lib/src/error/inheritance_override.dart b/pkg/analyzer/lib/src/error/inheritance_override.dart index 5d239db..e0deb86 100644 --- a/pkg/analyzer/lib/src/error/inheritance_override.dart +++ b/pkg/analyzer/lib/src/error/inheritance_override.dart
@@ -749,14 +749,15 @@ /// because the class itself defines an abstract method with this [name], /// report the more specific error, and return `true`. bool _reportConcreteClassWithAbstractMember(String name) { - bool checkMemberNameCombo(ClassMember member, String memberName) { + bool checkMemberNameCombo( + ClassMember member, String memberName, String displayName) { if (memberName == name) { reporter.reportErrorForNode( classElement.isEnum ? CompileTimeErrorCode.ENUM_WITH_ABSTRACT_MEMBER : CompileTimeErrorCode.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER, member, - [name, classElement.name], + [displayName, classElement.name], ); return true; } else { @@ -766,18 +767,18 @@ for (var member in members) { if (member is MethodDeclaration) { - var name2 = member.name.name; + var displayName = member.name.name; + var name2 = displayName; if (member.isSetter) { name2 += '='; } - if (checkMemberNameCombo(member, name2)) return true; + if (checkMemberNameCombo(member, name2, displayName)) return true; } else if (member is FieldDeclaration) { for (var variableDeclaration in member.fields.variables) { var name2 = variableDeclaration.name.name; - if (checkMemberNameCombo(member, name2)) return true; + if (checkMemberNameCombo(member, name2, name2)) return true; if (!variableDeclaration.isFinal) { - name2 += '='; - if (checkMemberNameCombo(member, name2)) return true; + if (checkMemberNameCombo(member, '$name2=', name2)) return true; } } }
diff --git a/pkg/analyzer/test/src/diagnostics/concrete_class_with_abstract_member_test.dart b/pkg/analyzer/test/src/diagnostics/concrete_class_with_abstract_member_test.dart index d81ddad..684d8d8 100644 --- a/pkg/analyzer/test/src/diagnostics/concrete_class_with_abstract_member_test.dart +++ b/pkg/analyzer/test/src/diagnostics/concrete_class_with_abstract_member_test.dart
@@ -25,8 +25,6 @@ ''', [ error(CompileTimeErrorCode.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER, 12, 16, text: "'x' must have a method body because 'A' isn't abstract."), - error(CompileTimeErrorCode.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER, 12, 16, - text: "'x=' must have a method body because 'A' isn't abstract."), ]); } @@ -56,6 +54,17 @@ } '''); } + + test_setter() async { + await assertErrorsInCode(''' +class A { + set s(int i); +} +''', [ + error(CompileTimeErrorCode.CONCRETE_CLASS_WITH_ABSTRACT_MEMBER, 12, 13, + text: "'s' must have a method body because 'A' isn't abstract."), + ]); + } } mixin ConcreteClassWithAbstractMemberTestCases on PubPackageResolutionTest {