Merge branch '1.0'
commit
05fab170a7
|
@ -188,6 +188,10 @@ class ClassMapGenerator
|
||||||
$namespace = str_replace(array(' ', "\t", "\r", "\n"), '', $matches['nsname'][$i]) . '\\';
|
$namespace = str_replace(array(' ', "\t", "\r", "\n"), '', $matches['nsname'][$i]) . '\\';
|
||||||
} else {
|
} else {
|
||||||
$name = $matches['name'][$i];
|
$name = $matches['name'][$i];
|
||||||
|
// skip anon classes extending/implementing
|
||||||
|
if ($name === 'extends' || $name === 'implements') {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
if ($name[0] === ':') {
|
if ($name[0] === ':') {
|
||||||
// This is an XHP class, https://github.com/facebook/xhp
|
// This is an XHP class, https://github.com/facebook/xhp
|
||||||
$name = 'xhp'.substr(str_replace(array('-', ':'), array('_', '__'), $name), 1);
|
$name = 'xhp'.substr(str_replace(array('-', ':'), array('_', '__'), $name), 1);
|
||||||
|
|
|
@ -179,9 +179,14 @@ class PluginManager
|
||||||
|
|
||||||
foreach ($classes as $class) {
|
foreach ($classes as $class) {
|
||||||
if (class_exists($class, false)) {
|
if (class_exists($class, false)) {
|
||||||
|
$class = trim($class, '\\');
|
||||||
$path = $classLoader->findFile($class);
|
$path = $classLoader->findFile($class);
|
||||||
$code = file_get_contents($path);
|
$code = file_get_contents($path);
|
||||||
$code = preg_replace('{^((?:final\s+)?(?:\s*))class\s+(\S+)}mi', '$1class $2_composer_tmp'.self::$classCounter, $code);
|
$separatorPos = strrpos($class, '\\');
|
||||||
|
if ($separatorPos) {
|
||||||
|
$className = substr($class, $separatorPos + 1);
|
||||||
|
}
|
||||||
|
$code = preg_replace('{^((?:final\s+)?(?:\s*))class\s+(\S+)}mi', '$1class $2_composer_tmp'.self::$classCounter, $code, 1);
|
||||||
$code = str_replace('__FILE__', var_export($path, true), $code);
|
$code = str_replace('__FILE__', var_export($path, true), $code);
|
||||||
$code = str_replace('__DIR__', var_export(dirname($path), true), $code);
|
$code = str_replace('__DIR__', var_export(dirname($path), true), $code);
|
||||||
$code = str_replace('__CLASS__', var_export($class, true), $code);
|
$code = str_replace('__CLASS__', var_export($class, true), $code);
|
||||||
|
|
|
@ -87,6 +87,11 @@ class ClassMapGeneratorTest extends TestCase
|
||||||
'Foo\\CBar' => __DIR__.'/Fixtures/php5.4/traits.php',
|
'Foo\\CBar' => __DIR__.'/Fixtures/php5.4/traits.php',
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
if (PHP_VERSION_ID >= 70000) {
|
||||||
|
$data[] = array(__DIR__.'/Fixtures/php7.0', array(
|
||||||
|
'Dummy\Test\AnonClassHolder' => __DIR__.'/Fixtures/php7.0/anonclass.php',
|
||||||
|
));
|
||||||
|
}
|
||||||
if (defined('HHVM_VERSION') && version_compare(HHVM_VERSION, '3.3', '>=')) {
|
if (defined('HHVM_VERSION') && version_compare(HHVM_VERSION, '3.3', '>=')) {
|
||||||
$data[] = array(__DIR__.'/Fixtures/hhvm3.3', array(
|
$data[] = array(__DIR__.'/Fixtures/hhvm3.3', array(
|
||||||
'FooEnum' => __DIR__.'/Fixtures/hhvm3.3/HackEnum.php',
|
'FooEnum' => __DIR__.'/Fixtures/hhvm3.3/HackEnum.php',
|
||||||
|
|
|
@ -0,0 +1,43 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types = 1);
|
||||||
|
|
||||||
|
namespace Dummy\Test;
|
||||||
|
|
||||||
|
use Dummy\Common\TestCase;
|
||||||
|
|
||||||
|
class AnonClassHolder extends TestCase
|
||||||
|
{
|
||||||
|
protected function getTest(): ClassAvailability
|
||||||
|
{
|
||||||
|
return new class extends ClassAvailability
|
||||||
|
{
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function getTest2(): ClassAvailability
|
||||||
|
{
|
||||||
|
return new class(2) extends ClassAvailability
|
||||||
|
{
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function getTest3(): ClassAvailability
|
||||||
|
{
|
||||||
|
return new class(2, 3) extends ClassAvailability
|
||||||
|
{
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function getTest4(): ClassAvailability
|
||||||
|
{
|
||||||
|
return new class(2, 3) {
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function getTest5(): ClassAvailability
|
||||||
|
{
|
||||||
|
return new class implements FooInterface {
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue