@@ -174,7 +174,7 @@ class MissingRequiredPropDiagnostic extends ComponentUsageDiagnosticContributor
174174 final debugHelper = AnalyzerDebugHelper (result, collector, enabled: _cachedIsDebugHelperEnabled (result));
175175 // A flag to help verify during debugging/testing whether propsSetByFactory was computed.
176176 var hasPropsSetByFactoryBeenComputed = false ;
177- final debugInfoByForwardedRequiredProp = < FieldElement , _ForwardedRequiredPropDebugInfo > {};
177+ final debugSuppressedRequiredPropsDueToForwarding = < FieldElement > {};
178178
179179 // Use late variables to compute these only when we need to.
180180 late final propsSetByFactory = () {
@@ -209,7 +209,7 @@ class MissingRequiredPropDiagnostic extends ComponentUsageDiagnosticContributor
209209 if (sourcePropsClass is InterfaceElement ) {
210210 if (forwardedProps != null && forwardedProps.definitelyForwardsPropsFrom (sourcePropsClass)) {
211211 if (debugHelper.enabled) {
212- debugInfoByForwardedRequiredProp[field] = _ForwardedRequiredPropDebugInfo (forwardedProps.debugSourceNode );
212+ debugSuppressedRequiredPropsDueToForwarding. add (field );
213213 }
214214 continue ;
215215 }
@@ -236,19 +236,20 @@ class MissingRequiredPropDiagnostic extends ComponentUsageDiagnosticContributor
236236 }
237237 }
238238
239- if (debugHelper.enabled) {
240- final fieldsByReasonNode =
241- debugInfoByForwardedRequiredProp.keys.groupListsBy ((field) => debugInfoByForwardedRequiredProp[field]! .node);
242- fieldsByReasonNode.forEach ((reasonNode, fields) {
243- debugHelper.log (() {
244- return 'Suppressing missing required props warnings due to forwarding here, for the following props:'
245- ' ${fields .map ((f ) => '${f .enclosingElement .name }.${f .name }' ).join (', ' )}' ;
246- }, () => result.locationFor (reasonNode));
247- });
239+ if (forwardedProps != null ) {
240+ debugHelper.log (() {
241+ var message = StringBuffer ()..writeln (forwardedProps);
242+ if (debugSuppressedRequiredPropsDueToForwarding.isNotEmpty) {
243+ final propsNamesByClassName = < String ? , Set <String >> {};
244+ for (final field in debugSuppressedRequiredPropsDueToForwarding) {
245+ propsNamesByClassName.putIfAbsent (field.enclosingElement.name, () => {}).add (field.name);
246+ }
247+ message.write ('Required props set only via forwarding: ${prettyPrint (propsNamesByClassName )}' );
248+ } else {}
249+ return message.toString ();
250+ }, () => result.locationFor (forwardedProps.debugSourceNode));
248251 }
249252
250- debugHelper.log (() => 'Forwarded props: $forwardedProps ' , () => result.locationFor (usage.builder));
251-
252253 // Include debug info for each invocation ahout all the props and their requirednesses.
253254 debugHelper.log (() {
254255 final propNamesByRequirednessName = < String , Set <String >> {};
@@ -272,9 +273,3 @@ class MissingRequiredPropDiagnostic extends ComponentUsageDiagnosticContributor
272273 }, () => result.locationFor (usage.builder));
273274 }
274275}
275-
276- class _ForwardedRequiredPropDebugInfo {
277- final AstNode node;
278-
279- _ForwardedRequiredPropDebugInfo (this .node);
280- }
0 commit comments