Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 6b869b0

Browse files
Merge remote-tracking branch 'origin/0.10.x-merge-up-into-0.11.x_6008acf73af1a0.91533706' into 0.11.x
# Conflicts: # CHANGELOG.md # src/Builder/ClassBuilderCollection.php # tests/Builder/FileCollectionTest.php
2 parents f0bcfdb + ac8419d commit 6b869b0

File tree

9 files changed

+81
-6
lines changed

9 files changed

+81
-6
lines changed

‎CHANGELOG.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,26 @@ All notable changes to this project will be documented in this file, in reverse
2424

2525
- Nothing.
2626

27+
## 0.10.2 - 2021年01月20日
28+
29+
30+
-----
31+
32+
### Release Notes for [0.10.2](https://github.com/open-code-modeling/php-code-ast/milestone/22)
33+
34+
0.10.x bugfix release (patch)
35+
36+
### 0.10.2
37+
38+
- Total issues resolved: **2**
39+
- Total pull requests resolved: **0**
40+
- Total contributors: **1**
41+
42+
#### bug
43+
44+
- [59: Fully qualified namespace not checked in note visitors](https://github.com/open-code-modeling/php-code-ast/issues/59) thanks to @sandrokeil
45+
- [58: Empty collection not working](https://github.com/open-code-modeling/php-code-ast/issues/58) thanks to @sandrokeil
46+
2747
## 0.10.1 - 2021年01月15日
2848

2949

‎src/Builder/FileCollection.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ public static function emptyList(): self
3232

3333
private function __construct(File ...$files)
3434
{
35+
$this->items = [];
36+
3537
foreach ($files as $file) {
3638
$this->items[$this->identifier($file)] = $file;
3739
}

‎src/NodeVisitor/ClassExtends.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,9 @@ public function afterTraverse(array $nodes): ?array
5757

5858
private function checkExtendsExists(Stmt\Class_ $node): bool
5959
{
60-
$exists = $this->extends === (string) $node->extends;
60+
$exists = $this->extends === ($node->extends instanceof Name\FullyQualified
61+
? '\\' . $node->extends->toString()
62+
: (string) $node->extends);
6163

6264
if (false === $exists && null !== $node->extends) {
6365
throw new LogicException(\sprintf(

‎src/NodeVisitor/ClassImplements.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
namespace OpenCodeModeling\CodeAst\NodeVisitor;
1212

1313
use PhpParser\Node\Name;
14+
use PhpParser\Node\Name\FullyQualified;
1415
use PhpParser\Node\Stmt;
1516
use PhpParser\Node\Stmt\Namespace_;
1617
use PhpParser\NodeVisitorAbstract;
@@ -74,7 +75,9 @@ private function filterImplements(array $nodes): array
7475
if ($stmt instanceof Stmt\Class_) {
7576
foreach ($stmt->implements as $implementName) {
7677
$implements = \array_filter($implements, static function (string $implement) use ($implementName) {
77-
return $implement !== (string) $implementName;
78+
return $implement !== ($implementName instanceof FullyQualified
79+
? '\\' . $implementName->toString()
80+
: (string) $implementName);
7881
});
7982
}
8083
}

‎src/NodeVisitor/ClassUseTrait.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,9 @@ private function filterTraits(array $nodes): array
7373
foreach ($classStmt->traits as $trait) {
7474
$useTraits = \array_filter($useTraits,
7575
static function (string $implement) use ($trait) {
76-
return $implement !== (string) $trait;
76+
return $implement !== ($trait instanceof Name\FullyQualified
77+
? '\\' . $trait->toString()
78+
: (string) $trait);
7779
});
7880
}
7981
}

‎tests/Builder/ClassBuilderTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ final class TestClass extends BaseClass implements \Iterator, Bar
7676
EOF;
7777

7878
$this->assertSame($expected, $this->printer->prettyPrintFile($nodeTraverser->traverse($ast)));
79+
$this->assertSame($expected, $this->printer->prettyPrintFile($nodeTraverser->traverse($this->parser->parse($expected))));
7980
}
8081

8182
/**

‎tests/Builder/FileCollectionTest.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,4 +84,15 @@ public function it_adds_anonymous_class_builder(): void
8484
$items = $cut->items();
8585
$this->assertArrayHasKey(\spl_object_hash($classBuilder), $items);
8686
}
87+
88+
/**
89+
* @test
90+
*/
91+
public function it_can_be_empty(): void
92+
{
93+
$cut = FileCollection::emptyList();
94+
$this->assertCount(0, $cut);
95+
96+
$this->assertSame([], $cut->items());
97+
}
8798
}

‎tests/NodeVisitor/ClassExtendsTest.php

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,38 @@ class TestClass extends MyBaseClass
170170
$this->assertSame($expected, $this->printer->prettyPrintFile($nodeTraverser->traverse($ast)));
171171
}
172172

173+
/**
174+
* @test
175+
*/
176+
public function it_checks_class_extends_with_fully_qualified_namespace_for_existing_file(): void
177+
{
178+
$code = <<<EOF
179+
<?php
180+
181+
namespace My\Awesome\Service;
182+
183+
class TestClass extends \MyBaseClass {}
184+
EOF;
185+
186+
$ast = $this->parser->parse($code);
187+
188+
$nodeTraverser = new NodeTraverser();
189+
$nodeTraverser->addVisitor(new ClassFile(new ClassGenerator('TestClass')));
190+
$nodeTraverser->addVisitor(new ClassExtends('\\MyBaseClass'));
191+
192+
$expected = <<<EOF
193+
<?php
194+
195+
namespace My\Awesome\Service;
196+
197+
class TestClass extends \MyBaseClass
198+
{
199+
}
200+
EOF;
201+
202+
$this->assertSame($expected, $this->printer->prettyPrintFile($nodeTraverser->traverse($ast)));
203+
}
204+
173205
/**
174206
* @test
175207
*/

‎tests/NodeVisitor/ClassUseTraitTest.php

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public function it_add_namespace_imports_in_correct_order(): void
4343
$ast = $this->parser->parse($this->classCode());
4444

4545
$nodeTraverser = new NodeTraverser();
46-
$nodeTraverser->addVisitor(new ClassUseTrait('MyService\Foo', 'MyService\Bar'));
46+
$nodeTraverser->addVisitor(new ClassUseTrait('\MyService\Foo', 'MyService\Bar', 'MyService\FooBar'));
4747

4848
$this->assertSame($this->expectedClassCode(), $this->printer->prettyPrintFile($nodeTraverser->traverse($ast)));
4949
}
@@ -59,7 +59,8 @@ private function classCode(): string
5959
6060
class TestClass
6161
{
62-
use MyService\Foo;
62+
use \MyService\Foo;
63+
use MyService\FooBar;
6364
6465
public function testMethod()
6566
{
@@ -79,7 +80,8 @@ private function expectedClassCode(): string
7980
class TestClass
8081
{
8182
use MyService\Bar;
82-
use MyService\Foo;
83+
use \MyService\Foo;
84+
use MyService\FooBar;
8385
public function testMethod()
8486
{
8587
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /