From 95f8443027833fd259f81cf060bd54c95d13f678 Mon Sep 17 00:00:00 2001 From: jrfnl Date: Tue, 1 Apr 2025 01:42:13 +0200 Subject: [PATCH] Tokenizer: isset/unset/empty/eval/exit/die now contain parenthesis information Fixes 23 --- src/Util/Tokens.php | 5 ++ .../CreateTokenMapParenthesesTest.inc | 17 ++++--- .../CreateTokenMapParenthesesTest.php | 50 ++++++++++++------- 3 files changed, 48 insertions(+), 24 deletions(-) diff --git a/src/Util/Tokens.php b/src/Util/Tokens.php index 04adf1d0a4..8a0d610114 100644 --- a/src/Util/Tokens.php +++ b/src/Util/Tokens.php @@ -368,6 +368,11 @@ final class Tokens T_CATCH => T_CATCH, T_DECLARE => T_DECLARE, T_MATCH => T_MATCH, + T_ISSET => T_ISSET, + T_EMPTY => T_EMPTY, + T_UNSET => T_UNSET, + T_EVAL => T_EVAL, + T_EXIT => T_EXIT, ]; /** diff --git a/tests/Core/Tokenizers/Tokenizer/CreateTokenMapParenthesesTest.inc b/tests/Core/Tokenizers/Tokenizer/CreateTokenMapParenthesesTest.inc index b3dfd27132..072f15d660 100644 --- a/tests/Core/Tokenizers/Tokenizer/CreateTokenMapParenthesesTest.inc +++ b/tests/Core/Tokenizers/Tokenizer/CreateTokenMapParenthesesTest.inc @@ -84,24 +84,29 @@ $a = ($b + $c/* testArbitraryParenthesesCloser */); /* testFunctionCallParenthesesOpener */ do_something($b + $c, $d, false /* testFunctionCallParenthesesCloser */); -/* testIssetParenthesesOpener */ +/* testIssetParenthesesOwner */ $set = isset($b, $c/* testIssetParenthesesCloser */); -/* testEmptyParenthesesOpener */ +/* testEmptyParenthesesOwner */ $empty = empty($b /* testEmptyParenthesesCloser */); -/* testUnsetParenthesesOpener */ +/* testUnsetParenthesesOwner */ unset ($b, $c /* testUnsetParenthesesCloser */); -/* testEvalParenthesesOpener */ +/* testEvalParenthesesOwner */ $eval = eval("\$str = \"$str\";"/* testEvalParenthesesCloser */); -/* testExitParenthesesOpener */ +/* testExitParenthesesOwner */ exit ( 101 /* testExitParenthesesCloser */); -/* testDieParenthesesOpener */ +/* testDieParenthesesOwner */ die ('oopsie' /* testDieParenthesesCloser */); +/* testExitNoParentheses */ +exit; + +/* testDieNoParentheses */ +die; /* * All together now, let's make things a little more interesting.... diff --git a/tests/Core/Tokenizers/Tokenizer/CreateTokenMapParenthesesTest.php b/tests/Core/Tokenizers/Tokenizer/CreateTokenMapParenthesesTest.php index 3022e573be..dcd5fb8a27 100644 --- a/tests/Core/Tokenizers/Tokenizer/CreateTokenMapParenthesesTest.php +++ b/tests/Core/Tokenizers/Tokenizer/CreateTokenMapParenthesesTest.php @@ -151,6 +151,30 @@ public static function dataParenthesesWithOwner() 'testMarker' => '/* testAnonClassParenthesesOwner */', 'tokenCode' => T_ANON_CLASS, ], + 'isset' => [ + 'testMarker' => '/* testIssetParenthesesOwner */', + 'tokenCode' => T_ISSET, + ], + 'empty' => [ + 'testMarker' => '/* testEmptyParenthesesOwner */', + 'tokenCode' => T_EMPTY, + ], + 'unset' => [ + 'testMarker' => '/* testUnsetParenthesesOwner */', + 'tokenCode' => T_UNSET, + ], + 'eval' => [ + 'testMarker' => '/* testEvalParenthesesOwner */', + 'tokenCode' => T_EVAL, + ], + 'exit' => [ + 'testMarker' => '/* testExitParenthesesOwner */', + 'tokenCode' => T_EXIT, + ], + 'die' => [ + 'testMarker' => '/* testDieParenthesesOwner */', + 'tokenCode' => T_EXIT, + ], 'if - nested outer' => [ 'testMarker' => '/* testNestedOuterIfParenthesesOwner */', @@ -233,24 +257,6 @@ public static function dataParenthesesWithoutOwner() 'function call' => [ 'testMarker' => '/* testFunctionCallParenthesesOpener */', ], - 'isset' => [ - 'testMarker' => '/* testIssetParenthesesOpener */', - ], - 'empty' => [ - 'testMarker' => '/* testEmptyParenthesesOpener */', - ], - 'unset' => [ - 'testMarker' => '/* testUnsetParenthesesOpener */', - ], - 'eval' => [ - 'testMarker' => '/* testEvalParenthesesOpener */', - ], - 'exit' => [ - 'testMarker' => '/* testExitParenthesesOpener */', - ], - 'die' => [ - 'testMarker' => '/* testDieParenthesesOpener */', - ], 'function call - nested 1' => [ 'testMarker' => '/* testNestedFunctionCallAParenthesesOpener */', ], @@ -305,6 +311,14 @@ public static function dataParenthesesOwnerWithoutParentheses() 'testMarker' => '/* testAnonClassNoParentheses */', 'tokenCode' => T_ANON_CLASS, ], + 'exit without parentheses' => [ + 'testMarker' => '/* testExitNoParentheses */', + 'tokenCode' => T_EXIT, + ], + 'die without parentheses' => [ + 'testMarker' => '/* testDieNoParentheses */', + 'tokenCode' => T_EXIT, + ], ]; }//end dataParenthesesOwnerWithoutParentheses()