Merge pull request #1919 from DavidMikeSimon/master
Bugfix: Classmap parsing of PHP source with weird escape-like patternpull/1922/head
commit
978ba292a6
|
@ -115,7 +115,7 @@ class ClassMapGenerator
|
|||
// strip heredocs/nowdocs
|
||||
$contents = preg_replace('{<<<\'?(\w+)\'?(?:\r\n|\n|\r)(?:.*?)(?:\r\n|\n|\r)\\1(?=\r\n|\n|\r|;)}s', 'null', $contents);
|
||||
// strip strings
|
||||
$contents = preg_replace('{"[^"\\\\]*(\\\\.[^"\\\\]*)*"|\'[^\'\\\\]*(\\\\.[^\'\\\\]*)*\'}', 'null', $contents);
|
||||
$contents = preg_replace('{"[^"\\\\]*(\\\\.[^"\\\\]*)*"|\'[^\'\\\\]*(\\\\.[^\'\\\\]*)*\'}s', 'null', $contents);
|
||||
// strip leading non-php code if needed
|
||||
if (substr($contents, 0, 2) !== '<?') {
|
||||
$contents = preg_replace('{^.+?<\?}s', '<?', $contents);
|
||||
|
|
|
@ -55,6 +55,8 @@ class ClassMapGeneratorTest extends \PHPUnit_Framework_TestCase
|
|||
'Foo\\LargeGap' => realpath(__DIR__).'/Fixtures/classmap/LargeGap.php',
|
||||
'Foo\\MissingSpace' => realpath(__DIR__).'/Fixtures/classmap/MissingSpace.php',
|
||||
'Foo\\StripNoise' => realpath(__DIR__).'/Fixtures/classmap/StripNoise.php',
|
||||
'Foo\\SlashedA' => realpath(__DIR__).'/Fixtures/classmap/BackslashLineEndingString.php',
|
||||
'Foo\\SlashedB' => realpath(__DIR__).'/Fixtures/classmap/BackslashLineEndingString.php',
|
||||
'Unicode\\↑\\↑' => realpath(__DIR__).'/Fixtures/classmap/Unicode.php',
|
||||
)),
|
||||
array(__DIR__.'/Fixtures/template', array()),
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
<?php
|
||||
|
||||
namespace Foo;
|
||||
|
||||
class SlashedA {
|
||||
function foo() {
|
||||
return sprintf("foo\
|
||||
bar");
|
||||
}
|
||||
}
|
||||
|
||||
class SlashedB {
|
||||
function bar() {
|
||||
print "baz";
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue