@@ -114,19 +114,16 @@ class RenameParameterRefactoringImpl extends RenameRefactoringImpl {
114114 }
115115 var references = await searchEngine.searchReferences (element);
116116
117- // Remove references that don't have to have the same name.
117+ // Named super formals are already in [elements].
118+ // Positional super formals are not tied by name so shouldn't be renamed.
119+ references.removeWhere (
120+ (match) => match.element is analyzer.SuperFormalParameterElement ,
121+ );
118122
119123 // Implicit references to optional positional parameters.
120124 if (element.isOptionalPositional) {
121125 references.removeWhere ((match) => match.sourceRange.length == 0 );
122126 }
123- // References to positional parameters from super-formal.
124- if (element.isPositional) {
125- references.removeWhere (
126- (match) => match.element is analyzer.SuperFormalParameterElement ,
127- );
128- }
129-
130127 processor.addReferenceEdits (references);
131128 }
132129 }
@@ -136,6 +133,17 @@ class RenameParameterRefactoringImpl extends RenameRefactoringImpl {
136133 var element = this .element;
137134 if (element.isNamed) {
138135 elements = await getHierarchyNamedParameters (searchEngine, element);
136+
137+ // Iteratively collect superFormalParameter(s) of subclasses.
138+ for (var i = 0 ; i < elements.length; i++ ) {
139+ var element = elements[i];
140+ var references = await searchEngine.searchReferences (element);
141+ elements.addAll (
142+ references
143+ .map ((match) => match.element)
144+ .whereType< analyzer.SuperFormalParameterElement > (),
145+ );
146+ }
139147 } else if (element.isPositional) {
140148 elements = await getHierarchyPositionalParameters (searchEngine, element);
141149 }
0 commit comments