Skip to content

Commit 37b6c26

Browse files
committed
allow enums and traits
1 parent c6f15c6 commit 37b6c26

File tree

3 files changed

+38
-0
lines changed

3 files changed

+38
-0
lines changed

Zend/zend_language_parser.y

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -954,6 +954,8 @@ class_statement_list:
954954
nested_class_statement:
955955
T_CLASS T_STRING { $<num>$ = CG(zend_lineno); } extends_from implements_list backup_doc_comment '{' class_statement_list '}'
956956
{ $$ = zend_ast_create_decl(ZEND_AST_CLASS, 0, $<num>3, $6, zend_ast_get_str($2), $4, $5, $8, NULL, NULL); }
957+
| trait_declaration_statement { $$ = $1; }
958+
| enum_declaration_statement { $$ = $1; }
957959
;
958960

959961
attributed_class_statement:
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
--TEST--
2+
nested enum
3+
--FILE--
4+
<?php
5+
6+
class Outer {
7+
enum Inner {
8+
case Foo;
9+
case Bar;
10+
}
11+
}
12+
13+
echo Outer\Inner::Foo->name . "\n";
14+
?>
15+
--EXPECT--
16+
Foo
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
--TEST--
2+
nested traits
3+
--FILE--
4+
<?php
5+
6+
class Outer {
7+
trait Inner {
8+
public function foo() {
9+
return "foo";
10+
}
11+
}
12+
13+
use Inner;
14+
}
15+
16+
$outer = new Outer();
17+
echo $outer->foo();
18+
?>
19+
--EXPECT--
20+
foo

0 commit comments

Comments
 (0)