Skip to content

Commit 17156bc

Browse files
committed
Return an empty context when no file related to the reflector
1 parent 4d9d237 commit 17156bc

File tree

2 files changed

+28
-8
lines changed

2 files changed

+28
-8
lines changed

src/Types/ContextFactory.php

+5-5
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,6 @@ final class ContextFactory
3737
* @see Context for more information on Contexts.
3838
*
3939
* @return Context
40-
*
41-
* @throws \InvalidArgumentException
4240
*/
4341
public function createFromReflector(\Reflector $reflector)
4442
{
@@ -47,11 +45,13 @@ public function createFromReflector(\Reflector $reflector)
4745
}
4846

4947
$fileName = $reflector->getFileName();
50-
if (!$fileName) {
51-
throw new \InvalidArgumentException('There is no file name associated with this reflector.');
48+
$namespace = $reflector->getNamespaceName();
49+
50+
if (file_exists($fileName)) {
51+
return $this->createForNamespace($namespace, file_get_contents($fileName));
5252
}
5353

54-
return $this->createForNamespace($reflector->getNamespaceName(), file_get_contents($fileName));
54+
return new Context($namespace, []);
5555
}
5656

5757
/**

tests/unit/Types/ContextFactoryTest.php

+23-3
Original file line numberDiff line numberDiff line change
@@ -151,13 +151,33 @@ public function bar()
151151
}
152152

153153
/**
154-
* @expectedException \InvalidArgumentException
155154
* @covers ::createFromReflector
156155
*/
157-
public function testThrowExceptionWhenEmptyFileName()
156+
public function testEmptyFileName()
158157
{
159158
$fixture = new ContextFactory();
160-
$fixture->createFromReflector(new \ReflectionClass('stdClass'));
159+
$context = $fixture->createFromReflector(new \ReflectionClass('stdClass'));
160+
161+
$this->assertSame([], $context->getNamespaceAliases());
162+
}
163+
164+
/**
165+
* @covers ::createFromReflector
166+
*/
167+
public function testEvalDClass()
168+
{
169+
eval(<<<PHP
170+
namespace Foo;
171+
172+
class Bar
173+
{
174+
}
175+
PHP
176+
);
177+
$fixture = new ContextFactory();
178+
$context = $fixture->createFromReflector(new \ReflectionClass('Foo\Bar'));
179+
180+
$this->assertSame([], $context->getNamespaceAliases());
161181
}
162182
}
163183
}

0 commit comments

Comments
 (0)