Skip to content

Commit 47812d2

Browse files
committed
Add support to render attributes on classes
1 parent 5489869 commit 47812d2

File tree

4 files changed

+19
-1
lines changed

4 files changed

+19
-1
lines changed

src/Renderer/Php7Renderer.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,9 @@ protected function formatClassModifiers(PhpClass $class): array
194194
public function renderClass(PhpClass $class): array
195195
{
196196
$ret = FlattenSource::applySourceOn($this->renderComment($class->getComment()), []);
197+
foreach ($class->getAttributes() as $attribute) {
198+
$ret = FlattenSource::applySourceOn($this->renderAttribute($attribute), $ret);
199+
}
197200

198201
$declaration = $this->formatClassModifiers($class);
199202
$declaration[] = 'class';

src/Renderer/Php8Renderer.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public function renderClass(PhpClass $class): array
5959
}
6060
}
6161

62-
return parent::renderClass($class); // TODO: Change the autogenerated stub
62+
return parent::renderClass($class);
6363
}
6464

6565
/**

tests/Renderer/PhpClassTest.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -412,4 +412,15 @@ public function testVariableAttributeFromCtorNotPropagateToSetter(): void
412412
'PhpClassTest.testVariableAttributeFromCtorNotPropegateToSetter',
413413
);
414414
}
415+
416+
public function testClassLevelAttribute(): void
417+
{
418+
$class = new PhpClass(Identifier::fromString('Test'));
419+
$class->addAttribute(new PhpAttribute(TestAttribute::class));
420+
$renderer = new Php8Renderer();
421+
$this->assertSourceResult(
422+
$renderer->render($class),
423+
'PhpClassTest.testClassLevelAttribute',
424+
);
425+
}
415426
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
#[TestAttribute]
2+
class Test
3+
{
4+
}

0 commit comments

Comments
 (0)