@@ -128,6 +128,18 @@ void main() {
128128 });
129129 });
130130 }
131+
132+ test ('unless props are conditionally added' , () async {
133+ final result = await sharedResolveSource (/*language=dart*/ r'''
134+ UiFactory<HasABCProps> HasABC = uiFunction((props) {
135+ return (NotCare()
136+ ..addProps(props, condition)
137+ )();
138+ }, _$HasABCConfig);
139+ ''' );
140+ final usage = getAllComponentUsages (result.unit).single;
141+ expect (computeForwardedProps (usage), isNull);
142+ });
131143 });
132144
133145 group ('UiProps.addUnconsumedProps:' , () {
@@ -298,6 +310,18 @@ void main() {
298310 });
299311 });
300312 }
313+
314+ test ('unless props are conditionally added' , () async {
315+ final result = await sharedResolveSource (/*language=dart*/ r'''
316+ UiFactory<HasABCProps> HasABC = uiFunction((props) {
317+ return (NotCare()
318+ ..addProps(props.getPropsToForward(exclude: {AProps, BProps}), condition)
319+ )();
320+ }, _$HasABCConfig);
321+ ''' );
322+ final usage = getAllComponentUsages (result.unit).single;
323+ expect (computeForwardedProps (usage), isNull);
324+ });
301325 });
302326
303327 group ('PropsToForward.addPropsToForward:' , () {
@@ -371,6 +395,18 @@ void main() {
371395 expect (forwardedProps.definitelyForwardsPropsFrom (propsElement), isFalse);
372396 expect (forwardedProps.definitelyForwardsPropsFrom (result.lookUpInterface ('UnrelatedProps' )), isFalse);
373397 });
398+
399+ test ('unless props are conditionally added' , () async {
400+ final result = await sharedResolveSource (/*language=dart*/ r'''
401+ UiFactory<HasABCProps> HasABC = uiFunction((props) {
402+ return (NotCare()
403+ ..modifyProps(props.addPropsToForward(exclude: {AProps, BProps}), condition)
404+ )();
405+ }, _$HasABCConfig);
406+ ''' );
407+ final usage = getAllComponentUsages (result.unit).single;
408+ expect (computeForwardedProps (usage), isNull);
409+ });
374410 });
375411
376412 group ('class component methods:' , () {
@@ -633,27 +669,45 @@ void main() {
633669 expect (forwardedProps.definitelyForwardsPropsFrom (result.lookUpInterface ('UnrelatedProps' )), isFalse);
634670 });
635671
636- test ('..modifyProps(addUnconsumedProps)' , () async {
637- final result = await sharedResolveSource (/*language=dart*/ r'''
638- UiFactory<HasABCProps> HasABC = castUiFactory(_$HasABC);
639- class HasABCComponent extends UiComponent2<HasABCProps> {
640- @override get consumedProps => propsMeta.forMixins({AProps, BProps});
641- @override render() {
642- return (NotCare()
643- ..modifyProps(addUnconsumedProps)
644- )();
672+ group ('..modifyProps(addUnconsumedProps)' , () {
673+ test ('' , () async {
674+ final result = await sharedResolveSource (/*language=dart*/ r'''
675+ UiFactory<HasABCProps> HasABC = castUiFactory(_$HasABC);
676+ class HasABCComponent extends UiComponent2<HasABCProps> {
677+ @override get consumedProps => propsMeta.forMixins({AProps, BProps});
678+ @override render() {
679+ return (NotCare()
680+ ..modifyProps(addUnconsumedProps)
681+ )();
682+ }
645683 }
646- }
647- ''' );
648- final usage = getAllComponentUsages (result.unit).single;
684+ ''' );
685+ final usage = getAllComponentUsages (result.unit).single;
649686
650- final forwardedProps = computeForwardedProps (usage)! ;
651- expect (forwardedProps.forwardingConfig, isNotNull, reason: 'forwarding config should be resolved' );
652- expect (forwardedProps.propsClassBeingForwarded, result.lookUpInterface ('HasABCProps' ));
653- expect (forwardedProps.definitelyForwardsPropsFrom (result.lookUpInterface ('AProps' )), isFalse);
654- expect (forwardedProps.definitelyForwardsPropsFrom (result.lookUpInterface ('BProps' )), isFalse);
655- expect (forwardedProps.definitelyForwardsPropsFrom (result.lookUpInterface ('CProps' )), isTrue);
656- expect (forwardedProps.definitelyForwardsPropsFrom (result.lookUpInterface ('UnrelatedProps' )), isFalse);
687+ final forwardedProps = computeForwardedProps (usage)! ;
688+ expect (forwardedProps.forwardingConfig, isNotNull, reason: 'forwarding config should be resolved' );
689+ expect (forwardedProps.propsClassBeingForwarded, result.lookUpInterface ('HasABCProps' ));
690+ expect (forwardedProps.definitelyForwardsPropsFrom (result.lookUpInterface ('AProps' )), isFalse);
691+ expect (forwardedProps.definitelyForwardsPropsFrom (result.lookUpInterface ('BProps' )), isFalse);
692+ expect (forwardedProps.definitelyForwardsPropsFrom (result.lookUpInterface ('CProps' )), isTrue);
693+ expect (forwardedProps.definitelyForwardsPropsFrom (result.lookUpInterface ('UnrelatedProps' )), isFalse);
694+ });
695+
696+ test ('unless props are conditionally added' , () async {
697+ final result = await sharedResolveSource (/*language=dart*/ r'''
698+ UiFactory<HasABCProps> HasABC = castUiFactory(_$HasABC);
699+ class HasABCComponent extends UiComponent2<HasABCProps> {
700+ @override get consumedProps => propsMeta.forMixins({AProps, BProps});
701+ @override render() {
702+ return (NotCare()
703+ ..modifyProps(addUnconsumedProps, condition)
704+ )();
705+ }
706+ }
707+ ''' );
708+ final usage = getAllComponentUsages (result.unit).single;
709+ expect (computeForwardedProps (usage), isNull);
710+ });
657711 });
658712
659713 group ('when there is no consumedProps override' , () {
0 commit comments