Skip to content

Commit 925b93b

Browse files
committed
uses PhpToken
1 parent 92ad30c commit 925b93b

2 files changed

Lines changed: 15 additions & 20 deletions

File tree

src/CodeCoverage/PhpParser.php

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ class PhpParser
5353
*/
5454
public function parse(string $code): \stdClass
5555
{
56-
$tokens = token_get_all($code, TOKEN_PARSE);
56+
$tokens = \PhpToken::tokenize($code, TOKEN_PARSE);
5757

5858
$level = $classLevel = $functionLevel = null;
5959
$namespace = '';
@@ -70,11 +70,9 @@ public function parse(string $code): \stdClass
7070

7171
while ($token = current($tokens)) {
7272
next($tokens);
73-
if (is_array($token)) {
74-
$line = $token[2];
75-
}
73+
$line = $token->line;
7674

77-
switch (is_array($token) ? $token[0] : $token) {
75+
switch ($token->id) {
7876
case T_NAMESPACE:
7977
$namespace = self::fetch($tokens, [T_STRING, T_NAME_QUALIFIED]);
8078
$namespace = ltrim($namespace . '\\', '\\');
@@ -84,9 +82,9 @@ public function parse(string $code): \stdClass
8482
case T_INTERFACE:
8583
case T_TRAIT:
8684
if ($name = self::fetch($tokens, T_STRING)) {
87-
if ($token[0] === T_CLASS) {
85+
if ($token->id === T_CLASS) {
8886
$class = &$result->classes[$namespace . $name];
89-
} elseif ($token[0] === T_INTERFACE) {
87+
} elseif ($token->id === T_INTERFACE) {
9088
$class = &$result->interfaces[$namespace . $name];
9189
} else {
9290
$class = &$result->traits[$namespace . $name];
@@ -105,7 +103,7 @@ public function parse(string $code): \stdClass
105103
case T_PUBLIC:
106104
case T_PROTECTED:
107105
case T_PRIVATE:
108-
$visibility = $token[1];
106+
$visibility = $token->text;
109107
break;
110108

111109
case T_ABSTRACT:
@@ -138,11 +136,11 @@ public function parse(string $code): \stdClass
138136

139137
case T_CURLY_OPEN:
140138
case T_DOLLAR_OPEN_CURLY_BRACES:
141-
case '{':
139+
case ord('{'):
142140
$level++;
143141
break;
144142

145-
case '}':
143+
case ord('}'):
146144
if (isset($function) && $level === $functionLevel) {
147145
$function->end = $line;
148146
unset($function);
@@ -157,12 +155,12 @@ public function parse(string $code): \stdClass
157155

158156
case T_COMMENT:
159157
case T_DOC_COMMENT:
160-
$result->linesOfComments += substr_count(trim($token[1]), "\n") + 1;
158+
$result->linesOfComments += substr_count(trim($token->text), "\n") + 1;
161159
// break omitted
162160

163161
case T_WHITESPACE:
164162
case T_CONSTANT_ENCAPSED_STRING:
165-
$line += substr_count($token[1], "\n");
163+
$line += substr_count($token->text, "\n");
166164
break;
167165
}
168166
}
@@ -175,10 +173,9 @@ private static function fetch(array &$tokens, array|int $take): ?string
175173
{
176174
$res = null;
177175
while ($token = current($tokens)) {
178-
[$token, $s] = is_array($token) ? $token : [$token, $token];
179-
if (in_array($token, (array) $take, true)) {
180-
$res .= $s;
181-
} elseif (!in_array($token, [T_DOC_COMMENT, T_WHITESPACE, T_COMMENT], true)) {
176+
if ($token->is($take)) {
177+
$res .= $token->text;
178+
} elseif (!$token->is([T_DOC_COMMENT, T_WHITESPACE, T_COMMENT])) {
182179
break;
183180
}
184181

src/Framework/Environment.php

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -206,12 +206,10 @@ public static function bypassFinals(): void
206206
{
207207
FileMutator::addMutator(function (string $code): string {
208208
if (str_contains($code, 'final')) {
209-
$tokens = token_get_all($code, TOKEN_PARSE);
209+
$tokens = \PhpToken::tokenize($code, TOKEN_PARSE);
210210
$code = '';
211211
foreach ($tokens as $token) {
212-
$code .= is_array($token)
213-
? ($token[0] === T_FINAL ? '' : $token[1])
214-
: $token;
212+
$code .= $token->is(T_FINAL) ? '' : $token->text;
215213
}
216214
}
217215

0 commit comments

Comments
 (0)