@@ -601,6 +601,94 @@ ruleTester.run('display-name', rule, {
601
601
)
602
602
` ,
603
603
} ,
604
+ {
605
+ // Nested React.forwardRef should be accepted in React versions in the following range:
606
+ // ^0.14.10 || ^15.7.0 || >= 16.12.0
607
+ code : `
608
+ import React from 'react'
609
+
610
+ const MemoizedForwardRefComponentLike = React.memo(
611
+ React.forwardRef(function({ world }, ref) {
612
+ return <div ref={ref}>Hello {world}</div>
613
+ })
614
+ )
615
+ ` ,
616
+ settings : {
617
+ react : {
618
+ version : '16.14.0' ,
619
+ } ,
620
+ } ,
621
+ } ,
622
+ {
623
+ // Nested React.forwardRef should be accepted in React versions in the following range:
624
+ // ^0.14.10 || ^15.7.0 || >= 16.12.0
625
+ code : `
626
+ import React from 'react'
627
+
628
+ const MemoizedForwardRefComponentLike = React.memo(
629
+ React.forwardRef(({ world }, ref) => {
630
+ return <div ref={ref}>Hello {world}</div>
631
+ })
632
+ )
633
+ ` ,
634
+ settings : {
635
+ react : {
636
+ version : '15.7.0' ,
637
+ } ,
638
+ } ,
639
+ } ,
640
+ {
641
+ // Nested React.forwardRef should be accepted in React versions in the following range:
642
+ // ^0.14.10 || ^15.7.0 || >= 16.12.0
643
+ code : `
644
+ import React from 'react'
645
+
646
+ const MemoizedForwardRefComponentLike = React.memo(
647
+ React.forwardRef(function ComponentLike({ world }, ref) {
648
+ return <div ref={ref}>Hello {world}</div>
649
+ })
650
+ )
651
+ ` ,
652
+ settings : {
653
+ react : {
654
+ version : '16.12.1' ,
655
+ } ,
656
+ } ,
657
+ } ,
658
+ {
659
+ // Nested React.forwardRef should be accepted in React versions in the following range:
660
+ // ^0.14.10 || ^15.7.0 || >= 16.12.0
661
+ code : `
662
+ export const ComponentWithForwardRef = React.memo(
663
+ React.forwardRef(function Component({ world }) {
664
+ return <div>Hello {world}</div>
665
+ })
666
+ )
667
+ ` ,
668
+ settings : {
669
+ react : {
670
+ version : '0.14.11' ,
671
+ } ,
672
+ } ,
673
+ } ,
674
+ {
675
+ // Nested React.forwardRef should be accepted in React versions in the following range:
676
+ // ^0.14.10 || ^15.7.0 || >= 16.12.0
677
+ code : `
678
+ import React from 'react'
679
+
680
+ const MemoizedForwardRefComponentLike = React.memo(
681
+ React.forwardRef(function({ world }, ref) {
682
+ return <div ref={ref}>Hello {world}</div>
683
+ })
684
+ )
685
+ ` ,
686
+ settings : {
687
+ react : {
688
+ version : '15.7.1' ,
689
+ } ,
690
+ } ,
691
+ } ,
604
692
] ) ,
605
693
606
694
invalid : parsers . all ( [
@@ -823,7 +911,9 @@ ruleTester.run('display-name', rule, {
823
911
errors : [ { messageId : 'noDisplayName' } ] ,
824
912
} ,
825
913
{
826
- // Only trigger an error for the outer React.memo
914
+ // Only trigger an error for the outer React.memo,
915
+ // if the React version is not in the following range:
916
+ // ^0.14.10 || ^15.7.0 || >= 16.12.0
827
917
code : `
828
918
import React from 'react'
829
919
@@ -837,19 +927,31 @@ ruleTester.run('display-name', rule, {
837
927
{
838
928
messageId : 'noDisplayName' ,
839
929
} ] ,
930
+ settings : {
931
+ react : {
932
+ version : '15.6.0' ,
933
+ } ,
934
+ } ,
840
935
} ,
841
936
{
842
- // Only trigger an error for the outer React.memo
937
+ // Only trigger an error for the outer React.memo,
938
+ // if the React version is not in the following range:
939
+ // ^0.14.10 || ^15.7.0 || >= ^16.12.0
843
940
code : `
844
941
import React from 'react'
845
942
846
943
const MemoizedForwardRefComponentLike = React.memo(
847
944
React.forwardRef(function({ world }, ref) {
848
945
return <div ref={ref}>Hello {world}</div>
849
- })
946
+ })
850
947
)
851
948
` ,
852
949
errors : [ { messageId : 'noDisplayName' } ] ,
950
+ settings : {
951
+ react : {
952
+ version : '0.14.2' ,
953
+ } ,
954
+ } ,
853
955
} ,
854
956
{
855
957
// React does not handle the result of forwardRef being passed into memo
@@ -865,6 +967,11 @@ ruleTester.run('display-name', rule, {
865
967
)
866
968
` ,
867
969
errors : [ { messageId : 'noDisplayName' } ] ,
970
+ settings : {
971
+ react : {
972
+ version : '15.0.1' ,
973
+ } ,
974
+ } ,
868
975
} ,
869
976
{
870
977
code : `
0 commit comments