Skip to content
This repository was archived by the owner on Jul 12, 2020. It is now read-only.

Commit 1fd33a4

Browse files
committed
change StaticCodeAnalysis to return line 0 for namespace if no namespace is in file
1 parent 205fe91 commit 1fd33a4

File tree

2 files changed

+31
-1
lines changed

2 files changed

+31
-1
lines changed

src/main/QafooLabs/Refactoring/Adapters/TokenReflection/StaticCodeAnalysis.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
use TokenReflection\Broker;
2424
use TokenReflection\Broker\Backend\Memory;
25+
use TokenReflection\ReflectionNamespace;
2526

2627
class StaticCodeAnalysis extends CodeAnalysis
2728
{
@@ -143,11 +144,12 @@ public function findClasses(File $file)
143144

144145
$file = $this->broker->processString($file->getCode(), $file->getRelativePath(), true);
145146
foreach ($file->getNamespaces() as $namespace) {
147+
$noNamespace = ReflectionNamespace::NO_NAMESPACE_NAME === $namespace->getName();
146148
foreach ($namespace->getClasses() as $class) {
147149
$classes[] = new PhpClass(
148150
PhpName::createDeclarationName($class->getName()),
149151
$class->getStartLine(),
150-
$namespace->getStartLine()
152+
$noNamespace ? 0 : $namespace->getStartLine()
151153
);
152154
}
153155
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<?php
2+
3+
namespace QafooLabs\Refactoring\Adapters\TokenReflection;
4+
5+
use PHPUnit_Framework_TestCase;
6+
use QafooLabs\Refactoring\Domain\Model\File;
7+
8+
class StaticCodeAnalysisTest extends PHPUnit_Framework_TestCase
9+
{
10+
public function testNamespaceDeclarationForFileWithoutNamespace_isInLine0()
11+
{
12+
$file = new File('without-namespace.php', <<<'PHP'
13+
<?php
14+
15+
class WithoutNamespace
16+
{
17+
18+
}
19+
PHP
20+
);
21+
22+
$analysis = new StaticCodeAnalysis();
23+
$classes = $analysis->findClasses($file);
24+
$class = $classes[0];
25+
26+
$this->assertEquals(0, $class->namespaceDeclarationLine(), 'namespace declaration line for file without namespace');
27+
}
28+
}

0 commit comments

Comments
 (0)