Version 2.18.0-233.0.dev

Merge commit '09ec1743fe97b22969a394f8d830074dbd1ad8a2' into 'dev'
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 {
diff --git a/pkg/front_end/test/incremental_compiler_leak_test.dart b/pkg/front_end/test/incremental_compiler_leak_test.dart
index 581d63f..2385fab 100644
--- a/pkg/front_end/test/incremental_compiler_leak_test.dart
+++ b/pkg/front_end/test/incremental_compiler_leak_test.dart
@@ -192,32 +192,12 @@
     String? uriString = classDetails.location?.script?.uri;
     if (uriString == null) return true;
     if (uriString.startsWith("package:front_end/")) {
-      // Classes used for lazy initialization will naturally fluctuate.
-      if (classDetails.name == "DillClassBuilder") return true;
-      if (classDetails.name == "DillExtensionBuilder") return true;
-      if (classDetails.name == "DillExtensionMemberBuilder") return true;
-      if (classDetails.name == "DillMemberBuilder") return true;
-      if (classDetails.name == "DillTypeAliasBuilder") return true;
-
-      // These classes have proved to fluctuate, although the reason is less
-      // clear.
-      if (classDetails.name == "InheritedImplementationInterfaceConflict") {
-        return true;
-      }
-      if (classDetails.name == "AbstractMemberOverridingImplementation") {
-        return true;
-      }
-      if (classDetails.name == "VoidTypeBuilder") return true;
-      if (classDetails.name == "NamedTypeBuilder") return true;
-      if (classDetails.name == "DillClassMember") return true;
-      if (classDetails.name == "Scope") return true;
-      if (classDetails.name == "ConstructorScope") return true;
-      if (classDetails.name == "ScopeBuilder") return true;
-      if (classDetails.name == "ConstructorScopeBuilder") return true;
-      if (classDetails.name == "NullTypeDeclarationBuilder") return true;
-      if (classDetails.name == "NullabilityBuilder") return true;
-
-      return false;
+      // Because of lazy loading many things naturally fluctuate.
+      // We'll therefore restrict this to Source* stuff and
+      // DillLibraryBuilder for front_end stuff.
+      if (classDetails.name?.startsWith("Source") ?? false) return false;
+      if (classDetails.name == "DillLibraryBuilder") return false;
+      return true;
     } else if (uriString.startsWith("package:kernel/")) {
       // DirtifyingList is used for lazy stuff and naturally change in numbers.
       if (classDetails.name == "DirtifyingList") return true;
diff --git a/tools/VERSION b/tools/VERSION
index ff8d5ab..d47f5f9 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 18
 PATCH 0
-PRERELEASE 232
+PRERELEASE 233
 PRERELEASE_PATCH 0
\ No newline at end of file