Skip to content

Commit e8a578e

Browse files
committed
Add deprecation trigger for context extension
1 parent 7205421 commit e8a578e

File tree

8 files changed

+119
-51
lines changed

8 files changed

+119
-51
lines changed

composer.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
"php": "^8.1",
3737
"ext-json": "*",
3838
"ext-mbstring": "*",
39+
"doctrine/deprecations": "^1.1",
3940
"phpdocumentor/guides": "^1.0@dev || ^0.3",
4041
"phpdocumentor/guides-cli": "^1.0@dev || ^0.3",
4142
"phpdocumentor/guides-code": "^1.0@dev || ^0.3",

composer.lock

Lines changed: 50 additions & 49 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/guides/composer.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
"php": "^8.1",
2525
"ext-json": "*",
2626
"ext-zlib": "*",
27+
"doctrine/deprecations": "^1.0",
2728
"league/flysystem": "^1.1",
2829
"league/tactician": "^1.1",
2930
"league/uri": "^6.5 || ^7.0",

packages/guides/src/Compiler/CompilerContext.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
namespace phpDocumentor\Guides\Compiler;
1515

16+
use Doctrine\Deprecations\Deprecation;
1617
use Exception;
1718
use phpDocumentor\Guides\Compiler\ShadowTree\TreeNode;
1819
use phpDocumentor\Guides\Nodes\DocumentNode;
@@ -38,6 +39,15 @@ class CompilerContext implements CompilerContextInterface
3839
public function __construct(
3940
private readonly ProjectNode $projectNode,
4041
) {
42+
if (self::class === static::class) {
43+
return;
44+
}
45+
46+
Deprecation::trigger(
47+
'phpdocumentor/guides',
48+
'https://github.com/phpDocumentor/guides/issues/971',
49+
'Extending CompilerContext is deprecated, please use the CompilerContextInterface instead.',
50+
);
4151
}
4252

4353
public function getProjectNode(): ProjectNode

packages/guides/src/Compiler/NodeTransformers/TransformerPass.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
namespace phpDocumentor\Guides\Compiler\NodeTransformers;
1515

1616
use phpDocumentor\Guides\Compiler\CompilerContext;
17-
use phpDocumentor\Guides\Compiler\CompilerContextInterface;
1817
use phpDocumentor\Guides\Compiler\CompilerPass;
1918
use phpDocumentor\Guides\Compiler\DocumentNodeTraverser;
2019
use phpDocumentor\Guides\Nodes\DocumentNode;
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
/**
6+
* This file is part of phpDocumentor.
7+
*
8+
* For the full copyright and license information, please view the LICENSE
9+
* file that was distributed with this source code.
10+
*
11+
* @link https://phpdoc.org
12+
*/
13+
14+
namespace phpDocumentor\Guides\Compiler;
15+
16+
use Doctrine\Deprecations\PHPUnit\VerifyDeprecations;
17+
use phpDocumentor\Guides\Nodes\ProjectNode;
18+
use PHPUnit\Framework\TestCase;
19+
20+
final class CompilerContextTest extends TestCase
21+
{
22+
use VerifyDeprecations;
23+
24+
public function testTriggersDeprecationOnContextExtend(): void
25+
{
26+
$this->expectDeprecationWithIdentifier('https://github.com/phpDocumentor/guides/issues/971');
27+
$context = new class (new ProjectNode()) extends CompilerContext{
28+
};
29+
}
30+
31+
public function testNoDeprecationOnNormalConstruct(): void
32+
{
33+
$this->expectNoDeprecationWithIdentifier('https://github.com/phpDocumentor/guides/issues/971');
34+
$context = new CompilerContext(new ProjectNode());
35+
}
36+
}

phpstan-baseline.neon

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,16 @@ parameters:
120120
count: 1
121121
path: packages/guides-restructured-text/src/RestructuredText/Parser/Productions/ListRule.php
122122

123+
-
124+
message: "#^Strict comparison using \\=\\=\\= between 'phpDocumentor\\\\\\\\Guides\\\\\\\\Compiler\\\\\\\\CompilerContext' and 'phpDocumentor\\\\\\\\Guides\\\\\\\\Compiler\\\\\\\\CompilerContext' will always evaluate to true\\.$#"
125+
count: 1
126+
path: packages/guides/src/Compiler/CompilerContext.php
127+
128+
-
129+
message: "#^Unreachable statement \\- code above always terminates\\.$#"
130+
count: 1
131+
path: packages/guides/src/Compiler/CompilerContext.php
132+
123133
-
124134
message: "#^Function Symfony\\\\Component\\\\DependencyInjection\\\\Loader\\\\Configurator\\\\tagged_iterator not found\\.$#"
125135
count: 2
@@ -140,6 +150,11 @@ parameters:
140150
count: 1
141151
path: packages/guides/src/Renderer/DocumentListIterator.php
142152

153+
-
154+
message: "#^Anonymous class extends @final class phpDocumentor\\\\Guides\\\\Compiler\\\\CompilerContext\\.$#"
155+
count: 1
156+
path: packages/guides/tests/unit/Compiler/CompilerContextTest.php
157+
143158
-
144159
message: "#^Return type \\(iterable\\<phpDocumentor\\\\Guides\\\\Compiler\\\\NodeTransformers\\\\MoveAnchorTransformer\\>\\) of method class@anonymous/packages/guides/tests/unit/Compiler/NodeTransformers/MoveAnchorTransformerTest\\.php\\:32\\:\\:getTransformers\\(\\) should be compatible with return type \\(iterable\\<phpDocumentor\\\\Guides\\\\Compiler\\\\NodeTransformer\\<phpDocumentor\\\\Guides\\\\Nodes\\\\Node\\>\\>\\) of method phpDocumentor\\\\Guides\\\\Compiler\\\\NodeTransformers\\\\NodeTransformerFactory\\:\\:getTransformers\\(\\)$#"
145160
count: 1

psalm-baseline.xml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<files psalm-version="5.22.2@d768d914152dbbf3486c36398802f74e80cfde48">
2+
<files psalm-version="5.23.1@8471a896ccea3526b26d082f4461eeea467f10a4">
33
<file src="packages/guides-cli/src/Config/Configuration.php">
44
<UndefinedMethod>
55
<code><![CDATA[ignoreExtraKeys]]></code>
@@ -55,6 +55,11 @@
5555
<code><![CDATA[$result->value]]></code>
5656
</InvalidPropertyAssignmentValue>
5757
</file>
58+
<file src="packages/guides/tests/unit/Compiler/CompilerContextTest.php">
59+
<InvalidExtendClass>
60+
<code><![CDATA[CompilerContext]]></code>
61+
</InvalidExtendClass>
62+
</file>
5863
<file src="packages/guides/tests/unit/Compiler/NodeTransformers/DocumentEntryRegistrationTransformerTest.php">
5964
<InvalidArgument>
6065
<code><![CDATA[[new SectionNode(TitleNode::emptyNode())]]]></code>

0 commit comments

Comments
 (0)