1
0
Fork 0

Don't show Ambiguous class resolution warning if class when not ambiguous

if a class or interface is defined twice in the same class, this should not produce a warning
pull/2855/head
Daniel Karp 2014-03-30 12:53:15 -04:00
parent 7daf876d70
commit e3be04c443
3 changed files with 28 additions and 1 deletions

View File

@ -84,7 +84,7 @@ class ClassMapGenerator
foreach ($classes as $class) {
if (!isset($map[$class])) {
$map[$class] = $filePath;
} elseif ($io) {
} elseif ($io && $map[$class] !== $filePath) {
$io->write(
'<warning>Warning: Ambiguous class resolution, "'.$class.'"'.
' was found in both "'.$map[$class].'" and "'.$filePath.'", the first will be used.</warning>'

View File

@ -133,6 +133,27 @@ class ClassMapGeneratorTest extends \PHPUnit_Framework_TestCase
$this->assertTrue(in_array($msg, $messages, true), $msg.' not found in expected messages ('.var_export($messages, true).')');
}
/**
* If one file has a class or interface defined more than once,
* an ambiguous reference warning should not be produced
*/
public function testUnambiguousReference()
{
$this->checkIfFinderIsAvailable();
$finder = new Finder();
$finder->files()->in(__DIR__ . '/Fixtures/Unambiguous');
$io = $this->getMockBuilder('Composer\IO\ConsoleIO')
->disableOriginalConstructor()
->getMock();
$io->expects($this->never())
->method('write');
ClassMapGenerator::createMap($finder, null, $io);
}
/**
* @expectedException \RuntimeException
* @expectedExceptionMessage Could not scan for classes inside

View File

@ -0,0 +1,6 @@
<?php
if (PHP_VERSION_ID < 50400) {
interface A extends Iterator, ArrayAccess { }
} else {
interface A extends Iterator, ArrayAccess, JsonSerializable { }
}