comparison vendor/nikic/php-parser/test/code/parser/stmt/class/modifier.test @ 0:4c8ae668cc8c

Initial import (non-working)
author Chris Cannam
date Wed, 29 Nov 2017 16:09:58 +0000
parents
children 5fb285c0d0e3
comparison
equal deleted inserted replaced
-1:000000000000 0:4c8ae668cc8c
1 Invalid modifier combination
2 -----
3 <?php class A { public public $a; }
4 -----
5 Multiple access type modifiers are not allowed from 1:24 to 1:29
6 array(
7 0: Stmt_Class(
8 flags: 0
9 name: A
10 extends: null
11 implements: array(
12 )
13 stmts: array(
14 0: Stmt_Property(
15 flags: MODIFIER_PUBLIC (1)
16 props: array(
17 0: Stmt_PropertyProperty(
18 name: a
19 default: null
20 )
21 )
22 )
23 )
24 )
25 )
26 -----
27 <?php class A { public protected $a; }
28 -----
29 Multiple access type modifiers are not allowed from 1:24 to 1:32
30 array(
31 0: Stmt_Class(
32 flags: 0
33 name: A
34 extends: null
35 implements: array(
36 )
37 stmts: array(
38 0: Stmt_Property(
39 flags: MODIFIER_PUBLIC | MODIFIER_PROTECTED (3)
40 props: array(
41 0: Stmt_PropertyProperty(
42 name: a
43 default: null
44 )
45 )
46 )
47 )
48 )
49 )
50 -----
51 <?php class A { abstract abstract function a(); }
52 -----
53 Multiple abstract modifiers are not allowed from 1:26 to 1:33
54 array(
55 0: Stmt_Class(
56 flags: 0
57 name: A
58 extends: null
59 implements: array(
60 )
61 stmts: array(
62 0: Stmt_ClassMethod(
63 flags: MODIFIER_ABSTRACT (16)
64 byRef: false
65 name: a
66 params: array(
67 )
68 returnType: null
69 stmts: null
70 )
71 )
72 )
73 )
74 -----
75 <?php class A { static static $a; }
76 -----
77 Multiple static modifiers are not allowed from 1:24 to 1:29
78 array(
79 0: Stmt_Class(
80 flags: 0
81 name: A
82 extends: null
83 implements: array(
84 )
85 stmts: array(
86 0: Stmt_Property(
87 flags: MODIFIER_STATIC (8)
88 props: array(
89 0: Stmt_PropertyProperty(
90 name: a
91 default: null
92 )
93 )
94 )
95 )
96 )
97 )
98 -----
99 <?php class A { final final function a() {} }
100 -----
101 Multiple final modifiers are not allowed from 1:23 to 1:27
102 array(
103 0: Stmt_Class(
104 flags: 0
105 name: A
106 extends: null
107 implements: array(
108 )
109 stmts: array(
110 0: Stmt_ClassMethod(
111 flags: MODIFIER_FINAL (32)
112 byRef: false
113 name: a
114 params: array(
115 )
116 returnType: null
117 stmts: array(
118 )
119 )
120 )
121 )
122 )
123 -----
124 <?php class A { abstract final function a(); }
125 -----
126 Cannot use the final modifier on an abstract class member from 1:26 to 1:30
127 array(
128 0: Stmt_Class(
129 flags: 0
130 name: A
131 extends: null
132 implements: array(
133 )
134 stmts: array(
135 0: Stmt_ClassMethod(
136 flags: MODIFIER_ABSTRACT | MODIFIER_FINAL (48)
137 byRef: false
138 name: a
139 params: array(
140 )
141 returnType: null
142 stmts: null
143 )
144 )
145 )
146 )
147 -----
148 <?php abstract final class A { }
149 // Type in the partial parse could conceivably be any of 0, 16 or 32
150 -----
151 Syntax error, unexpected T_FINAL, expecting T_CLASS from 1:16 to 1:20
152 array(
153 0: Stmt_Class(
154 flags: MODIFIER_FINAL (32)
155 name: A
156 extends: null
157 implements: array(
158 )
159 stmts: array(
160 )
161 )
162 1: Stmt_Nop(
163 comments: array(
164 0: // Type in the partial parse could conceivably be any of 0, 16 or 32
165 )
166 )
167 )
168 -----
169 <?php class A { abstract $a; }
170 -----
171 Properties cannot be declared abstract from 1:17 to 1:24
172 array(
173 0: Stmt_Class(
174 flags: 0
175 name: A
176 extends: null
177 implements: array(
178 )
179 stmts: array(
180 0: Stmt_Property(
181 flags: MODIFIER_ABSTRACT (16)
182 props: array(
183 0: Stmt_PropertyProperty(
184 name: a
185 default: null
186 )
187 )
188 )
189 )
190 )
191 )
192 -----
193 <?php class A { final $a; }
194 -----
195 Properties cannot be declared final from 1:17 to 1:21
196 array(
197 0: Stmt_Class(
198 flags: 0
199 name: A
200 extends: null
201 implements: array(
202 )
203 stmts: array(
204 0: Stmt_Property(
205 flags: MODIFIER_FINAL (32)
206 props: array(
207 0: Stmt_PropertyProperty(
208 name: a
209 default: null
210 )
211 )
212 )
213 )
214 )
215 )