@@ -1206,6 +1206,16 @@ class InheritanceManager3 {
12061206 resultField.type = executable.parameters[0 ].type;
12071207 result.variable2 = resultField;
12081208
1209+ var elementName = executable.asElement2.name3! ;
1210+ var elementReference = class_.element.reference!
1211+ .getChild ('@field' )
1212+ .getChild (elementName);
1213+ assert (elementReference.element2 == null );
1214+ FieldElementImpl2 (
1215+ reference: elementReference,
1216+ firstFragment: resultField,
1217+ );
1218+
12091219 return result;
12101220 }
12111221
@@ -1279,16 +1289,36 @@ class InheritanceManager3 {
12791289 return result;
12801290 } else {
12811291 var firstAccessor = first as PropertyAccessorElementOrMember ;
1282- var fragmentName = first.asElement2.firstFragment.name2;
1292+ var fragmentName = first.asElement2.firstFragment.name2! ;
12831293 var field = FieldFragmentImpl (name2: fragmentName, nameOffset: - 1 );
12841294
12851295 PropertyAccessorFragmentImpl result;
12861296 if (firstAccessor.isGetter) {
1287- field.getter =
1288- result = GetterFragmentImpl (name2: fragmentName, nameOffset: - 1 );
1297+ var fragmentReference = targetClass.reference!
1298+ .getChild ('@getter' )
1299+ .getChild (fragmentName);
1300+ if (fragmentReference.element case GetterFragmentImpl result) {
1301+ return result;
1302+ }
1303+
1304+ var fragment = GetterFragmentImpl (name2: fragmentName, nameOffset: - 1 );
1305+ fragment.reference = fragmentReference;
1306+ fragmentReference.element = fragment;
1307+ field.getter = fragment;
1308+ result = fragment;
12891309 } else {
1290- field.setter =
1291- result = SetterFragmentImpl (name2: fragmentName, nameOffset: - 1 );
1310+ var fragmentReference = targetClass.reference!
1311+ .getChild ('@setter' )
1312+ .getChild (fragmentName);
1313+ if (fragmentReference.element case SetterFragmentImpl result) {
1314+ return result;
1315+ }
1316+
1317+ var fragment = SetterFragmentImpl (name2: fragmentName, nameOffset: - 1 );
1318+ fragment.reference = fragmentReference;
1319+ fragmentReference.element = fragment;
1320+ field.setter = fragment;
1321+ result = fragment;
12921322 }
12931323 result.enclosingElement3 = targetClass;
12941324 result.returnType = resultType.returnType;
@@ -1306,6 +1336,13 @@ class InheritanceManager3 {
13061336 }
13071337 result.variable2 = field;
13081338
1339+ var elementName = first.asElement2.name3! ;
1340+ var elementReference = targetClass.element.reference!
1341+ .getChild ('@field' )
1342+ .getChild (elementName);
1343+ assert (elementReference.element2 == null );
1344+ FieldElementImpl2 (reference: elementReference, firstFragment: field);
1345+
13091346 return result;
13101347 }
13111348 }
0 commit comments