[dart2js] Fixing info resolution paths in kernel dump info

Includes skipping duplicated installation code.
For more info, see #49348

Change-Id: I34833df32156d9fe090b579b665dd9cb93860f8b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/250020
Commit-Queue: Mark Zhou <markzipan@google.com>
Reviewed-by: Joshua Litt <joshualitt@google.com>
diff --git a/pkg/compiler/lib/src/dump_info.dart b/pkg/compiler/lib/src/dump_info.dart
index a654ce3..8dfbda7 100644
--- a/pkg/compiler/lib/src/dump_info.dart
+++ b/pkg/compiler/lib/src/dump_info.dart
@@ -9,6 +9,7 @@
 import 'dart:convert'
     show ChunkedConversionSink, JsonEncoder, StringConversionSink;
 
+import 'package:compiler/src/js_model/elements.dart';
 import 'package:dart2js_info/info.dart';
 import 'package:dart2js_info/json_info_codec.dart';
 import 'package:dart2js_info/binary_serialization.dart' as dump_info;
@@ -513,10 +514,12 @@
     state.entityToInfo[classEntity] = classInfo;
 
     clazz.members.forEach((ir.Member member) {
+      final isSetter = member is ir.Procedure && member.isSetter;
       // clazz.members includes constructors
-      MemberEntity memberEntity =
-          environment.lookupLocalClassMember(classEntity, member.name.text) ??
-              environment.lookupConstructor(classEntity, member.name.text);
+      MemberEntity memberEntity = environment.lookupLocalClassMember(
+              classEntity, member.name.text,
+              setter: isSetter) ??
+          environment.lookupConstructor(classEntity, member.name.text);
       if (memberEntity == null) return;
       // Multiple kernel members can map to single JWorld member
       // (e.g., when one of a getter/field pair are tree-shaken),
@@ -864,6 +867,10 @@
     int size = dumpInfoTask.sizeOf(clazz);
     final disambiguatedMemberName = '$parentName/${clazz.name}';
     environment.forEachLocalClassMember(clazz, (member) {
+      // Skip certain incongruent locals that during method alias installation.
+      if (member is JMethod && member.enclosingClass.name != clazz.name) {
+        return;
+      }
       if (member.isFunction || member.isGetter || member.isSetter) {
         FunctionInfo functionInfo =
             visitFunction(member, disambiguatedMemberName);