Skip to content

Commit c929bf9

Browse files
committed
Verify instance methods work on enums
1 parent 80a531e commit c929bf9

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

src/test/php/lang/ast/unittest/emit/EnumTest.class.php

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,29 @@ public static function run($arg) {
158158
Assert::equals($expected, $t->getMethod('run')->invoke(null, [$arg]));
159159
}
160160

161+
#[Test]
162+
public function declare_method_on_enum() {
163+
$t= $this->type('enum <T> {
164+
case Hearts;
165+
case Diamonds;
166+
case Clubs;
167+
case Spades;
168+
169+
public function color() {
170+
return match ($this) {
171+
self::Hearts, self::Diamonds => "red",
172+
self::Clubs, self::Spaces => "black",
173+
};
174+
}
175+
176+
public static function run() {
177+
return self::Hearts->color();
178+
}
179+
}');
180+
181+
Assert::equals('red', $t->getMethod('run')->invoke(null));
182+
}
183+
161184
#[Test]
162185
public function enum_values() {
163186
$t= $this->type('enum <T> {

0 commit comments

Comments
 (0)