- Patch #458566 by chx: work around PHP's curly bracket madness.
parent
b9b0063a48
commit
43ad4ad140
|
@ -254,7 +254,9 @@ function _registry_skip_body(&$tokens) {
|
|||
// Scan through the rest of the tokens until we reach the matching
|
||||
// end brace.
|
||||
while ($num_braces && ($token = next($tokens))) {
|
||||
if ($token == '{') {
|
||||
// PHP is really logical to have three different tokens for { with
|
||||
// inconsistent names and only one for a closing brace.
|
||||
if ($token == '{' || (is_array($token) && ($token[0] == T_DOLLAR_OPEN_CURLY_BRACES || $token[0] == T_CURLY_OPEN))) {
|
||||
++$num_braces;
|
||||
}
|
||||
elseif ($token == '}') {
|
||||
|
|
|
@ -135,3 +135,23 @@ CONTENTS;
|
|||
|
||||
}
|
||||
|
||||
class RegistrySkipBodyTestCase extends DrupalWebTestCase {
|
||||
public static function getInfo() {
|
||||
return array(
|
||||
'name' => t('Skip function body test'),
|
||||
'description' => t('Tokenize a simple function and check that the body is skipped right'),
|
||||
'group' => t('System'),
|
||||
);
|
||||
}
|
||||
|
||||
function testRegistrySkipBody () {
|
||||
// This string contains all three kinds of opening braces.
|
||||
$function = '<?php function foo () { $x = "{$y}"; $x = "${y}" }';
|
||||
$tokens = token_get_all($function);
|
||||
_registry_skip_body($tokens);
|
||||
// Consume the last }
|
||||
each($tokens);
|
||||
$this->assertIdentical(each($tokens), FALSE, t('Tokens skipped'));
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue