@@ -1156,12 +1156,35 @@ class InheritanceManager3 {
11561156 }
11571157
11581158 if (executable is MethodElementOrMember ) {
1159- var result = MethodFragmentImpl (name: executable.name, nameOffset: - 1 );
1159+ var fragmentName = executable.name;
1160+ var fragmentReference = class_.reference!
1161+ .getChild ('@method' )
1162+ .getChild (fragmentName);
1163+
1164+ if (fragmentReference.element case MethodFragmentImpl result) {
1165+ return result;
1166+ }
1167+
1168+ var result = MethodFragmentImpl (name: fragmentName, nameOffset: - 1 );
1169+ result.reference = fragmentReference;
1170+ fragmentReference.element = result;
11601171 result.enclosingElement3 = class_;
11611172 result.isSynthetic = true ;
11621173 result.parameters = transformedParameters;
11631174 result.returnType = executable.returnType;
11641175 result.typeParameters = executable.typeParameters;
1176+
1177+ var elementName = executable.asElement2.name3! ;
1178+ var elementReference = class_.element.reference!
1179+ .getChild ('@method' )
1180+ .getChild (elementName);
1181+ assert (elementReference.element2 == null );
1182+ MethodElementImpl2 (
1183+ name3: elementName,
1184+ reference: elementReference,
1185+ firstFragment: result,
1186+ );
1187+
11651188 return result;
11661189 }
11671190
@@ -1216,9 +1239,20 @@ class InheritanceManager3 {
12161239 }
12171240
12181241 if (first is MethodElementOrMember ) {
1219- var firstMethod = first;
1220- var fragmentName = first.asElement2.firstFragment.name2;
1221- var result = MethodFragmentImpl (name: firstMethod.name, nameOffset: - 1 );
1242+ var firstElement = first.asElement2;
1243+ var fragmentName = firstElement.firstFragment.name2! ;
1244+
1245+ var fragmentReference = targetClass.reference!
1246+ .getChild ('@method' )
1247+ .getChild (fragmentName);
1248+
1249+ if (fragmentReference.element case MethodFragmentImpl result) {
1250+ return result;
1251+ }
1252+
1253+ var result = MethodFragmentImpl (name: first.name, nameOffset: - 1 );
1254+ result.reference = fragmentReference;
1255+ fragmentReference.element = result;
12221256 result.enclosingElement3 = targetClass;
12231257 result.name2 = fragmentName;
12241258 result.typeParameters = resultType.typeFormals;
@@ -1228,6 +1262,18 @@ class InheritanceManager3 {
12281262 resultType.parameters
12291263 .map ((e) => e.firstFragment as FormalParameterFragmentImpl )
12301264 .toList ();
1265+
1266+ var elementName = first.asElement2.name3! ;
1267+ var elementReference = targetClass.element.reference!
1268+ .getChild ('@method' )
1269+ .getChild (elementName);
1270+ assert (elementReference.element2 == null );
1271+ MethodElementImpl2 (
1272+ name3: elementName,
1273+ reference: elementReference,
1274+ firstFragment: result,
1275+ );
1276+
12311277 return result;
12321278 } else {
12331279 var firstAccessor = first as PropertyAccessorElementOrMember ;
0 commit comments