xref: /php-ast/tests/class.phpt (revision 260678d4)
1--TEST--
2Test parse and dump of class
3--FILE--
4<?php
5
6require __DIR__ . '/../util.php';
7
8$code = <<<'PHP'
9<?php
10class A extends B implements D, E {
11    use T, S;
12    const X = 'Y', Y = 'X';
13    public $foo, $bar;
14    abstract function test();
15}
16PHP;
17
18echo ast_dump(ast\parse_code($code, $version=60)), "\n";
19echo ast_dump(ast\parse_code($code, $version=70)), "\n";
20
21?>
22--EXPECTF--
23Deprecated: ast\parse_code(): Version 60 is deprecated in %sclass.php on line 15
24AST_STMT_LIST
25    0: AST_CLASS
26        name: "A"
27        docComment: null
28        extends: AST_NAME
29            flags: NAME_NOT_FQ (%d)
30            name: "B"
31        implements: AST_NAME_LIST
32            0: AST_NAME
33                flags: NAME_NOT_FQ (%d)
34                name: "D"
35            1: AST_NAME
36                flags: NAME_NOT_FQ (%d)
37                name: "E"
38        stmts: AST_STMT_LIST
39            0: AST_USE_TRAIT
40                traits: AST_NAME_LIST
41                    0: AST_NAME
42                        flags: NAME_NOT_FQ (%d)
43                        name: "T"
44                    1: AST_NAME
45                        flags: NAME_NOT_FQ (%d)
46                        name: "S"
47                adaptations: null
48            1: AST_CLASS_CONST_DECL
49                flags: MODIFIER_PUBLIC (%d)
50                0: AST_CONST_ELEM
51                    name: "X"
52                    value: "Y"
53                    docComment: null
54                1: AST_CONST_ELEM
55                    name: "Y"
56                    value: "X"
57                    docComment: null
58            2: AST_PROP_DECL
59                flags: MODIFIER_PUBLIC (%d)
60                0: AST_PROP_ELEM
61                    name: "foo"
62                    default: null
63                    docComment: null
64                1: AST_PROP_ELEM
65                    name: "bar"
66                    default: null
67                    docComment: null
68            3: AST_METHOD
69                flags: MODIFIER_PUBLIC | MODIFIER_ABSTRACT (%d)
70                name: "test"
71                docComment: null
72                params: AST_PARAM_LIST
73                stmts: null
74                returnType: null
75                __declId: 0
76        __declId: 1
77AST_STMT_LIST
78    0: AST_CLASS
79        name: "A"
80        docComment: null
81        extends: AST_NAME
82            flags: NAME_NOT_FQ (%d)
83            name: "B"
84        implements: AST_NAME_LIST
85            0: AST_NAME
86                flags: NAME_NOT_FQ (%d)
87                name: "D"
88            1: AST_NAME
89                flags: NAME_NOT_FQ (%d)
90                name: "E"
91        stmts: AST_STMT_LIST
92            0: AST_USE_TRAIT
93                traits: AST_NAME_LIST
94                    0: AST_NAME
95                        flags: NAME_NOT_FQ (%d)
96                        name: "T"
97                    1: AST_NAME
98                        flags: NAME_NOT_FQ (%d)
99                        name: "S"
100                adaptations: null
101            1: AST_CLASS_CONST_DECL
102                flags: MODIFIER_PUBLIC (%d)
103                0: AST_CONST_ELEM
104                    name: "X"
105                    value: "Y"
106                    docComment: null
107                1: AST_CONST_ELEM
108                    name: "Y"
109                    value: "X"
110                    docComment: null
111            2: AST_PROP_GROUP
112                flags: MODIFIER_PUBLIC (%d)
113                type: null
114                props: AST_PROP_DECL
115                    0: AST_PROP_ELEM
116                        name: "foo"
117                        default: null
118                        docComment: null
119                    1: AST_PROP_ELEM
120                        name: "bar"
121                        default: null
122                        docComment: null
123            3: AST_METHOD
124                flags: MODIFIER_PUBLIC | MODIFIER_ABSTRACT (%d)
125                name: "test"
126                docComment: null
127                params: AST_PARAM_LIST
128                stmts: null
129                returnType: null
130                __declId: 0
131        __declId: 1