@@ -719,4 +719,165 @@ public static function dataFindStartInsideClosedScopeNestedWithinMatch()
719
719
}//end dataFindStartInsideClosedScopeNestedWithinMatch()
720
720
721
721
722
+ /**
723
+ * Test finding the start of a statement for a token within a set of parentheses within a match expressions.
724
+ *
725
+ * @param string $testMarker The comment which prefaces the target token in the test file.
726
+ * @param int|string $target The token to search for after the test marker.
727
+ * @param int|string $expectedTarget Token code of the expected start of statement stack pointer.
728
+ *
729
+ * @link https://github.com/PHPCSStandards/PHP_CodeSniffer/issues/437
730
+ *
731
+ * @dataProvider dataFindStartInsideParenthesesNestedWithinMatch
732
+ *
733
+ * @return void
734
+ */
735
+ public function testFindStartInsideParenthesesNestedWithinMatch ($ testMarker , $ target , $ expectedTarget )
736
+ {
737
+ $ testToken = $ this ->getTargetToken ($ testMarker , $ target );
738
+ $ expected = $ this ->getTargetToken ($ testMarker , $ expectedTarget );
739
+
740
+ $ found = self ::$ phpcsFile ->findStartOfStatement ($ testToken );
741
+
742
+ $ this ->assertSame ($ expected , $ found );
743
+
744
+ }//end testFindStartInsideParenthesesNestedWithinMatch()
745
+
746
+
747
+ /**
748
+ * Data provider.
749
+ *
750
+ * @return array<string, array<string, int|string>>
751
+ */
752
+ public static function dataFindStartInsideParenthesesNestedWithinMatch ()
753
+ {
754
+ return [
755
+ 'Array item itself should be start for first array item ' => [
756
+ 'testMarker ' => '/* test437NestedLongArrayWithinMatch */ ' ,
757
+ 'targets ' => T_LNUMBER ,
758
+ 'expectedTarget ' => T_LNUMBER ,
759
+ ],
760
+ 'Array item itself should be start for second array item ' => [
761
+ 'testMarker ' => '/* test437NestedLongArrayWithinMatch */ ' ,
762
+ 'targets ' => T_DNUMBER ,
763
+ 'expectedTarget ' => T_DNUMBER ,
764
+ ],
765
+ 'Array item itself should be start for third array item ' => [
766
+ 'testMarker ' => '/* test437NestedLongArrayWithinMatch */ ' ,
767
+ 'targets ' => T_VARIABLE ,
768
+ 'expectedTarget ' => T_VARIABLE ,
769
+ ],
770
+
771
+ 'Parameter itself should be start for first param passed to function call ' => [
772
+ 'testMarker ' => '/* test437NestedFunctionCallWithinMatch */ ' ,
773
+ 'targets ' => T_LNUMBER ,
774
+ 'expectedTarget ' => T_LNUMBER ,
775
+ ],
776
+ 'Parameter itself should be start for second param passed to function call ' => [
777
+ 'testMarker ' => '/* test437NestedFunctionCallWithinMatch */ ' ,
778
+ 'targets ' => T_VARIABLE ,
779
+ 'expectedTarget ' => T_VARIABLE ,
780
+ ],
781
+ 'Parameter itself should be start for third param passed to function call ' => [
782
+ 'testMarker ' => '/* test437NestedFunctionCallWithinMatch */ ' ,
783
+ 'targets ' => T_DNUMBER ,
784
+ 'expectedTarget ' => T_DNUMBER ,
785
+ ],
786
+
787
+ 'Parameter itself should be start for first param declared in arrow function ' => [
788
+ 'testMarker ' => '/* test437NestedArrowFunctionWithinMatch */ ' ,
789
+ 'targets ' => T_VARIABLE ,
790
+ 'expectedTarget ' => T_VARIABLE ,
791
+ ],
792
+ 'Parameter itself should be start for second param declared in arrow function ' => [
793
+ 'testMarker ' => '/* test437FnSecondParamWithinMatch */ ' ,
794
+ 'targets ' => T_VARIABLE ,
795
+ 'expectedTarget ' => T_VARIABLE ,
796
+ ],
797
+ ];
798
+
799
+ }//end dataFindStartInsideParenthesesNestedWithinMatch()
800
+
801
+
802
+ /**
803
+ * Test finding the start of a statement for a token within a set of parentheses within a match expressions,
804
+ * which itself is nested within parentheses.
805
+ *
806
+ * @param string $testMarker The comment which prefaces the target token in the test file.
807
+ * @param int|string $target The token to search for after the test marker.
808
+ * @param int|string $expectedTarget Token code of the expected start of statement stack pointer.
809
+ *
810
+ * @link https://github.com/PHPCSStandards/PHP_CodeSniffer/issues/437
811
+ *
812
+ * @dataProvider dataFindStartInsideParenthesesNestedWithinNestedMatch
813
+ *
814
+ * @return void
815
+ */
816
+ public function testFindStartInsideParenthesesNestedWithinNestedMatch ($ testMarker , $ target , $ expectedTarget )
817
+ {
818
+ $ testToken = $ this ->getTargetToken ($ testMarker , $ target );
819
+ $ expected = $ this ->getTargetToken ($ testMarker , $ expectedTarget );
820
+
821
+ $ found = self ::$ phpcsFile ->findStartOfStatement ($ testToken );
822
+
823
+ $ this ->assertSame ($ expected , $ found );
824
+
825
+ }//end testFindStartInsideParenthesesNestedWithinNestedMatch()
826
+
827
+
828
+ /**
829
+ * Data provider.
830
+ *
831
+ * @return array<string, array<string, int|string>>
832
+ */
833
+ public static function dataFindStartInsideParenthesesNestedWithinNestedMatch ()
834
+ {
835
+ return [
836
+ 'Array item itself should be start for first array item ' => [
837
+ 'testMarker ' => '/* test437NestedLongArrayWithinNestedMatch */ ' ,
838
+ 'targets ' => T_LNUMBER ,
839
+ 'expectedTarget ' => T_LNUMBER ,
840
+ ],
841
+ 'Array item itself should be start for second array item ' => [
842
+ 'testMarker ' => '/* test437NestedLongArrayWithinNestedMatch */ ' ,
843
+ 'targets ' => T_DNUMBER ,
844
+ 'expectedTarget ' => T_DNUMBER ,
845
+ ],
846
+ 'Array item itself should be start for third array item ' => [
847
+ 'testMarker ' => '/* test437NestedLongArrayWithinNestedMatch */ ' ,
848
+ 'targets ' => T_VARIABLE ,
849
+ 'expectedTarget ' => T_VARIABLE ,
850
+ ],
851
+
852
+ 'Parameter itself should be start for first param passed to function call ' => [
853
+ 'testMarker ' => '/* test437NestedFunctionCallWithinNestedMatch */ ' ,
854
+ 'targets ' => T_LNUMBER ,
855
+ 'expectedTarget ' => T_LNUMBER ,
856
+ ],
857
+ 'Parameter itself should be start for second param passed to function call ' => [
858
+ 'testMarker ' => '/* test437NestedFunctionCallWithinNestedMatch */ ' ,
859
+ 'targets ' => T_VARIABLE ,
860
+ 'expectedTarget ' => T_VARIABLE ,
861
+ ],
862
+ 'Parameter itself should be start for third param passed to function call ' => [
863
+ 'testMarker ' => '/* test437NestedFunctionCallWithinNestedMatch */ ' ,
864
+ 'targets ' => T_DNUMBER ,
865
+ 'expectedTarget ' => T_DNUMBER ,
866
+ ],
867
+
868
+ 'Parameter itself should be start for first param declared in arrow function ' => [
869
+ 'testMarker ' => '/* test437NestedArrowFunctionWithinNestedMatch */ ' ,
870
+ 'targets ' => T_VARIABLE ,
871
+ 'expectedTarget ' => T_VARIABLE ,
872
+ ],
873
+ 'Parameter itself should be start for second param declared in arrow function ' => [
874
+ 'testMarker ' => '/* test437FnSecondParamWithinNestedMatch */ ' ,
875
+ 'targets ' => T_VARIABLE ,
876
+ 'expectedTarget ' => T_VARIABLE ,
877
+ ],
878
+ ];
879
+
880
+ }//end dataFindStartInsideParenthesesNestedWithinNestedMatch()
881
+
882
+
722
883
}//end class
0 commit comments