Skip to content

Commit 911ea8a

Browse files
committed
Add CLASS_ANONYMOUS flag
Pointed out by @tpunt
1 parent de8d25d commit 911ea8a

File tree

4 files changed

+62
-0
lines changed

4 files changed

+62
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,7 @@ ast\flags\CLASS_ABSTRACT
183183
ast\flags\CLASS_FINAL
184184
ast\flags\CLASS_TRAIT
185185
ast\flags\CLASS_INTERFACE
186+
ast\flags\CLASS_ANONYMOUS
186187
187188
// Used by ast\AST_PARAM (exclusive)
188189
ast\flags\PARAM_REF

ast.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -481,6 +481,7 @@ PHP_MINIT_FUNCTION(ast) {
481481
ast_register_flag_constant("CLASS_FINAL", ZEND_ACC_FINAL);
482482
ast_register_flag_constant("CLASS_TRAIT", ZEND_ACC_TRAIT);
483483
ast_register_flag_constant("CLASS_INTERFACE", ZEND_ACC_INTERFACE);
484+
ast_register_flag_constant("CLASS_ANONYMOUS", ZEND_ACC_ANON_CLASS);
484485

485486
ast_register_flag_constant("PARAM_REF", ZEND_PARAM_REF);
486487
ast_register_flag_constant("PARAM_VARIADIC", ZEND_PARAM_VARIADIC);

tests/class_types.phpt

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
--TEST--
2+
Different class types
3+
--FILE--
4+
<?php
5+
6+
require __DIR__ . '/../util.php';
7+
8+
$code = <<<'PHP'
9+
<?php
10+
class A {}
11+
abstract class B {}
12+
final class C {}
13+
trait D {}
14+
interface E {}
15+
new class {};
16+
PHP;
17+
18+
echo ast_dump(ast\parse_code($code, $version=20));
19+
20+
?>
21+
--EXPECT--
22+
AST_STMT_LIST
23+
0: AST_CLASS
24+
flags: 0
25+
name: A
26+
0: null
27+
1: null
28+
2: AST_STMT_LIST
29+
1: AST_CLASS
30+
flags: CLASS_ABSTRACT (32)
31+
name: B
32+
0: null
33+
1: null
34+
2: AST_STMT_LIST
35+
2: AST_CLASS
36+
flags: CLASS_FINAL (4)
37+
name: C
38+
0: null
39+
1: null
40+
2: AST_STMT_LIST
41+
3: AST_CLASS
42+
flags: CLASS_TRAIT (128)
43+
name: D
44+
0: null
45+
1: null
46+
2: AST_STMT_LIST
47+
4: AST_CLASS
48+
flags: CLASS_INTERFACE (64)
49+
name: E
50+
0: null
51+
1: null
52+
2: AST_STMT_LIST
53+
5: AST_NEW
54+
0: AST_CLASS
55+
flags: CLASS_ANONYMOUS (256)
56+
0: null
57+
1: null
58+
2: AST_STMT_LIST
59+
1: AST_ARG_LIST

util.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ function get_flag_info() : array {
6060
flags\CLASS_FINAL => 'CLASS_FINAL',
6161
flags\CLASS_TRAIT => 'CLASS_TRAIT',
6262
flags\CLASS_INTERFACE => 'CLASS_INTERFACE',
63+
flags\CLASS_ANONYMOUS => 'CLASS_ANONYMOUS',
6364
],
6465
ast\AST_PARAM => [
6566
flags\PARAM_REF => 'PARAM_REF',

0 commit comments

Comments
 (0)