Skip to content

Commit 7cf779c

Browse files
committed
delayed add
1 parent 786ee23 commit 7cf779c

File tree

2 files changed

+42
-0
lines changed

2 files changed

+42
-0
lines changed

src/Printer/Printer.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -552,6 +552,15 @@ private function printArrayFormatPreserving(array $nodes, array $originalNodes,
552552
if ($parenthesesNeeded) {
553553
$result .= '(';
554554
}
555+
556+
if($insertNewline) {
557+
$delayedAddComments = $delayedAddNode->getAttribute(Attribute::COMMENTS) ?? [];
558+
if (count($delayedAddComments) > 0) {
559+
$result .= $this->pComments($delayedAddComments, $beforeAsteriskIndent, $afterAsteriskIndent);// . "\n";
560+
$result .= sprintf('%s%s*%s', $originalTokens->getDetectedNewline() ?? "\n", $beforeAsteriskIndent, $afterAsteriskIndent);
561+
}
562+
}
563+
555564
$result .= $this->printNodeFormatPreserving($delayedAddNode, $originalTokens);
556565
if ($parenthesesNeeded) {
557566
$result .= ')';

tests/PHPStan/Printer/PrinterTest.php

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -728,6 +728,39 @@ public function enterNode(Node $node)
728728
$addItemsWithCommentsToMultilineArrayShape,
729729
];
730730

731+
$prependItemsWithCommentsToMultilineArrayShape = new class extends AbstractNodeVisitor {
732+
733+
public function enterNode(Node $node)
734+
{
735+
if ($node instanceof ArrayShapeNode) {
736+
$commentedNode = new ArrayShapeItemNode(new IdentifierTypeNode('a'), false, new IdentifierTypeNode('int'));
737+
$commentedNode->setAttribute(Attribute::COMMENTS, [new Comment('// first item')]);
738+
array_splice($node->items, 0, 0, [
739+
$commentedNode,
740+
]);
741+
}
742+
743+
return $node;
744+
}
745+
746+
};
747+
748+
yield [
749+
'/**
750+
* @return array{
751+
* b: int,
752+
* }
753+
*/',
754+
'/**
755+
* @return array{
756+
* // first item
757+
* a: int,
758+
* b: int,
759+
* }
760+
*/',
761+
$prependItemsWithCommentsToMultilineArrayShape,
762+
];
763+
731764
$changeCommentOnArrayShapeItem = new class extends AbstractNodeVisitor {
732765

733766
public function enterNode(Node $node)

0 commit comments

Comments
 (0)