annotate vendor/nikic/php-parser/test/code/parser/semiReserved.test @ 13:5fb285c0d0e3

Update Drupal core to 8.4.7 via Composer. Security update; I *think* we've been lucky to get away with this so far, as we don't support self-registration which seems to be used by the so-called "drupalgeddon 2" attack that 8.4.5 was vulnerable to.
author Chris Cannam
date Mon, 23 Apr 2018 09:33:26 +0100
parents 4c8ae668cc8c
children 129ea1e6d783
rev   line source
Chris@0 1 Valid usages of reserved keywords as identifiers
Chris@0 2 -----
Chris@0 3 <?php
Chris@0 4
Chris@0 5 class Test {
Chris@0 6 function array() {}
Chris@0 7 function public() {}
Chris@0 8
Chris@0 9 static function list() {}
Chris@0 10 static function protected() {}
Chris@0 11
Chris@0 12 public $class;
Chris@0 13 public $private;
Chris@0 14
Chris@0 15 const TRAIT = 3, FINAL = 4;
Chris@0 16
Chris@0 17 const __CLASS__ = 1, __TRAIT__ = 2, __FUNCTION__ = 3, __METHOD__ = 4, __LINE__ = 5,
Chris@0 18 __FILE__ = 6, __DIR__ = 7, __NAMESPACE__ = 8;
Chris@0 19 // __halt_compiler does not work
Chris@0 20 }
Chris@0 21
Chris@0 22 $t = new Test;
Chris@0 23 $t->array();
Chris@0 24 $t->public();
Chris@0 25
Chris@0 26 Test::list();
Chris@0 27 Test::protected();
Chris@0 28
Chris@0 29 $t->class;
Chris@0 30 $t->private;
Chris@0 31
Chris@0 32 Test::TRAIT;
Chris@0 33 Test::FINAL;
Chris@0 34
Chris@0 35 class Foo {
Chris@0 36 use TraitA, TraitB {
Chris@0 37 TraitA::catch insteadof namespace\TraitB;
Chris@0 38 TraitA::list as foreach;
Chris@0 39 TraitB::throw as protected public;
Chris@0 40 TraitB::self as protected;
Chris@0 41 exit as die;
Chris@0 42 \TraitC::exit as bye;
Chris@0 43 namespace\TraitC::exit as byebye;
Chris@0 44 TraitA::
Chris@0 45 //
Chris@0 46 /** doc comment */
Chris@0 47 #
Chris@0 48 catch /* comment */
Chris@0 49 // comment
Chris@0 50 # comment
Chris@0 51 insteadof TraitB;
Chris@0 52 }
Chris@0 53 }
Chris@0 54 -----
Chris@0 55 array(
Chris@0 56 0: Stmt_Class(
Chris@0 57 flags: 0
Chris@13 58 name: Identifier(
Chris@13 59 name: Test
Chris@13 60 )
Chris@0 61 extends: null
Chris@0 62 implements: array(
Chris@0 63 )
Chris@0 64 stmts: array(
Chris@0 65 0: Stmt_ClassMethod(
Chris@0 66 flags: 0
Chris@0 67 byRef: false
Chris@13 68 name: Identifier(
Chris@13 69 name: array
Chris@13 70 )
Chris@0 71 params: array(
Chris@0 72 )
Chris@0 73 returnType: null
Chris@0 74 stmts: array(
Chris@0 75 )
Chris@0 76 )
Chris@0 77 1: Stmt_ClassMethod(
Chris@0 78 flags: 0
Chris@0 79 byRef: false
Chris@13 80 name: Identifier(
Chris@13 81 name: public
Chris@13 82 )
Chris@0 83 params: array(
Chris@0 84 )
Chris@0 85 returnType: null
Chris@0 86 stmts: array(
Chris@0 87 )
Chris@0 88 )
Chris@0 89 2: Stmt_ClassMethod(
Chris@0 90 flags: MODIFIER_STATIC (8)
Chris@0 91 byRef: false
Chris@13 92 name: Identifier(
Chris@13 93 name: list
Chris@13 94 )
Chris@0 95 params: array(
Chris@0 96 )
Chris@0 97 returnType: null
Chris@0 98 stmts: array(
Chris@0 99 )
Chris@0 100 )
Chris@0 101 3: Stmt_ClassMethod(
Chris@0 102 flags: MODIFIER_STATIC (8)
Chris@0 103 byRef: false
Chris@13 104 name: Identifier(
Chris@13 105 name: protected
Chris@13 106 )
Chris@0 107 params: array(
Chris@0 108 )
Chris@0 109 returnType: null
Chris@0 110 stmts: array(
Chris@0 111 )
Chris@0 112 )
Chris@0 113 4: Stmt_Property(
Chris@0 114 flags: MODIFIER_PUBLIC (1)
Chris@0 115 props: array(
Chris@0 116 0: Stmt_PropertyProperty(
Chris@13 117 name: VarLikeIdentifier(
Chris@13 118 name: class
Chris@13 119 )
Chris@0 120 default: null
Chris@0 121 )
Chris@0 122 )
Chris@0 123 )
Chris@0 124 5: Stmt_Property(
Chris@0 125 flags: MODIFIER_PUBLIC (1)
Chris@0 126 props: array(
Chris@0 127 0: Stmt_PropertyProperty(
Chris@13 128 name: VarLikeIdentifier(
Chris@13 129 name: private
Chris@13 130 )
Chris@0 131 default: null
Chris@0 132 )
Chris@0 133 )
Chris@0 134 )
Chris@0 135 6: Stmt_ClassConst(
Chris@0 136 flags: 0
Chris@0 137 consts: array(
Chris@0 138 0: Const(
Chris@13 139 name: Identifier(
Chris@13 140 name: TRAIT
Chris@13 141 )
Chris@0 142 value: Scalar_LNumber(
Chris@0 143 value: 3
Chris@0 144 )
Chris@0 145 )
Chris@0 146 1: Const(
Chris@13 147 name: Identifier(
Chris@13 148 name: FINAL
Chris@13 149 )
Chris@0 150 value: Scalar_LNumber(
Chris@0 151 value: 4
Chris@0 152 )
Chris@0 153 )
Chris@0 154 )
Chris@0 155 )
Chris@0 156 7: Stmt_ClassConst(
Chris@0 157 flags: 0
Chris@0 158 consts: array(
Chris@0 159 0: Const(
Chris@13 160 name: Identifier(
Chris@13 161 name: __CLASS__
Chris@13 162 )
Chris@0 163 value: Scalar_LNumber(
Chris@0 164 value: 1
Chris@0 165 )
Chris@0 166 )
Chris@0 167 1: Const(
Chris@13 168 name: Identifier(
Chris@13 169 name: __TRAIT__
Chris@13 170 )
Chris@0 171 value: Scalar_LNumber(
Chris@0 172 value: 2
Chris@0 173 )
Chris@0 174 )
Chris@0 175 2: Const(
Chris@13 176 name: Identifier(
Chris@13 177 name: __FUNCTION__
Chris@13 178 )
Chris@0 179 value: Scalar_LNumber(
Chris@0 180 value: 3
Chris@0 181 )
Chris@0 182 )
Chris@0 183 3: Const(
Chris@13 184 name: Identifier(
Chris@13 185 name: __METHOD__
Chris@13 186 )
Chris@0 187 value: Scalar_LNumber(
Chris@0 188 value: 4
Chris@0 189 )
Chris@0 190 )
Chris@0 191 4: Const(
Chris@13 192 name: Identifier(
Chris@13 193 name: __LINE__
Chris@13 194 )
Chris@0 195 value: Scalar_LNumber(
Chris@0 196 value: 5
Chris@0 197 )
Chris@0 198 )
Chris@0 199 5: Const(
Chris@13 200 name: Identifier(
Chris@13 201 name: __FILE__
Chris@13 202 )
Chris@0 203 value: Scalar_LNumber(
Chris@0 204 value: 6
Chris@0 205 )
Chris@0 206 )
Chris@0 207 6: Const(
Chris@13 208 name: Identifier(
Chris@13 209 name: __DIR__
Chris@13 210 )
Chris@0 211 value: Scalar_LNumber(
Chris@0 212 value: 7
Chris@0 213 )
Chris@0 214 )
Chris@0 215 7: Const(
Chris@13 216 name: Identifier(
Chris@13 217 name: __NAMESPACE__
Chris@13 218 )
Chris@0 219 value: Scalar_LNumber(
Chris@0 220 value: 8
Chris@0 221 )
Chris@0 222 )
Chris@0 223 )
Chris@0 224 )
Chris@0 225 )
Chris@0 226 )
Chris@13 227 1: Stmt_Expression(
Chris@13 228 expr: Expr_Assign(
Chris@13 229 var: Expr_Variable(
Chris@13 230 name: t
Chris@13 231 )
Chris@13 232 expr: Expr_New(
Chris@13 233 class: Name(
Chris@13 234 parts: array(
Chris@13 235 0: Test
Chris@13 236 )
Chris@13 237 )
Chris@13 238 args: array(
Chris@13 239 )
Chris@13 240 )
Chris@0 241 )
Chris@13 242 )
Chris@13 243 2: Stmt_Expression(
Chris@13 244 expr: Expr_MethodCall(
Chris@13 245 var: Expr_Variable(
Chris@13 246 name: t
Chris@13 247 )
Chris@13 248 name: Identifier(
Chris@13 249 name: array
Chris@13 250 )
Chris@13 251 args: array(
Chris@13 252 )
Chris@13 253 )
Chris@13 254 )
Chris@13 255 3: Stmt_Expression(
Chris@13 256 expr: Expr_MethodCall(
Chris@13 257 var: Expr_Variable(
Chris@13 258 name: t
Chris@13 259 )
Chris@13 260 name: Identifier(
Chris@13 261 name: public
Chris@13 262 )
Chris@13 263 args: array(
Chris@13 264 )
Chris@13 265 )
Chris@13 266 )
Chris@13 267 4: Stmt_Expression(
Chris@13 268 expr: Expr_StaticCall(
Chris@0 269 class: Name(
Chris@0 270 parts: array(
Chris@0 271 0: Test
Chris@0 272 )
Chris@0 273 )
Chris@13 274 name: Identifier(
Chris@13 275 name: list
Chris@13 276 )
Chris@0 277 args: array(
Chris@0 278 )
Chris@0 279 )
Chris@0 280 )
Chris@13 281 5: Stmt_Expression(
Chris@13 282 expr: Expr_StaticCall(
Chris@13 283 class: Name(
Chris@13 284 parts: array(
Chris@13 285 0: Test
Chris@13 286 )
Chris@13 287 )
Chris@13 288 name: Identifier(
Chris@13 289 name: protected
Chris@13 290 )
Chris@13 291 args: array(
Chris@13 292 )
Chris@0 293 )
Chris@0 294 )
Chris@13 295 6: Stmt_Expression(
Chris@13 296 expr: Expr_PropertyFetch(
Chris@13 297 var: Expr_Variable(
Chris@13 298 name: t
Chris@13 299 )
Chris@13 300 name: Identifier(
Chris@13 301 name: class
Chris@13 302 )
Chris@0 303 )
Chris@0 304 )
Chris@13 305 7: Stmt_Expression(
Chris@13 306 expr: Expr_PropertyFetch(
Chris@13 307 var: Expr_Variable(
Chris@13 308 name: t
Chris@13 309 )
Chris@13 310 name: Identifier(
Chris@13 311 name: private
Chris@0 312 )
Chris@0 313 )
Chris@13 314 )
Chris@13 315 8: Stmt_Expression(
Chris@13 316 expr: Expr_ClassConstFetch(
Chris@13 317 class: Name(
Chris@13 318 parts: array(
Chris@13 319 0: Test
Chris@13 320 )
Chris@13 321 )
Chris@13 322 name: Identifier(
Chris@13 323 name: TRAIT
Chris@13 324 )
Chris@0 325 )
Chris@0 326 )
Chris@13 327 9: Stmt_Expression(
Chris@13 328 expr: Expr_ClassConstFetch(
Chris@13 329 class: Name(
Chris@13 330 parts: array(
Chris@13 331 0: Test
Chris@13 332 )
Chris@13 333 )
Chris@13 334 name: Identifier(
Chris@13 335 name: FINAL
Chris@0 336 )
Chris@0 337 )
Chris@0 338 )
Chris@0 339 10: Stmt_Class(
Chris@0 340 flags: 0
Chris@13 341 name: Identifier(
Chris@13 342 name: Foo
Chris@13 343 )
Chris@0 344 extends: null
Chris@0 345 implements: array(
Chris@0 346 )
Chris@0 347 stmts: array(
Chris@0 348 0: Stmt_TraitUse(
Chris@0 349 traits: array(
Chris@0 350 0: Name(
Chris@0 351 parts: array(
Chris@0 352 0: TraitA
Chris@0 353 )
Chris@0 354 )
Chris@0 355 1: Name(
Chris@0 356 parts: array(
Chris@0 357 0: TraitB
Chris@0 358 )
Chris@0 359 )
Chris@0 360 )
Chris@0 361 adaptations: array(
Chris@0 362 0: Stmt_TraitUseAdaptation_Precedence(
Chris@0 363 trait: Name(
Chris@0 364 parts: array(
Chris@0 365 0: TraitA
Chris@0 366 )
Chris@0 367 )
Chris@13 368 method: Identifier(
Chris@13 369 name: catch
Chris@13 370 )
Chris@0 371 insteadof: array(
Chris@0 372 0: Name_Relative(
Chris@0 373 parts: array(
Chris@0 374 0: TraitB
Chris@0 375 )
Chris@0 376 )
Chris@0 377 )
Chris@0 378 )
Chris@0 379 1: Stmt_TraitUseAdaptation_Alias(
Chris@0 380 trait: Name(
Chris@0 381 parts: array(
Chris@0 382 0: TraitA
Chris@0 383 )
Chris@0 384 )
Chris@13 385 method: Identifier(
Chris@13 386 name: list
Chris@13 387 )
Chris@0 388 newModifier: null
Chris@13 389 newName: Identifier(
Chris@13 390 name: foreach
Chris@13 391 )
Chris@0 392 )
Chris@0 393 2: Stmt_TraitUseAdaptation_Alias(
Chris@0 394 trait: Name(
Chris@0 395 parts: array(
Chris@0 396 0: TraitB
Chris@0 397 )
Chris@0 398 )
Chris@13 399 method: Identifier(
Chris@13 400 name: throw
Chris@13 401 )
Chris@0 402 newModifier: MODIFIER_PROTECTED (2)
Chris@13 403 newName: Identifier(
Chris@13 404 name: public
Chris@13 405 )
Chris@0 406 )
Chris@0 407 3: Stmt_TraitUseAdaptation_Alias(
Chris@0 408 trait: Name(
Chris@0 409 parts: array(
Chris@0 410 0: TraitB
Chris@0 411 )
Chris@0 412 )
Chris@13 413 method: Identifier(
Chris@13 414 name: self
Chris@13 415 )
Chris@0 416 newModifier: MODIFIER_PROTECTED (2)
Chris@0 417 newName: null
Chris@0 418 )
Chris@0 419 4: Stmt_TraitUseAdaptation_Alias(
Chris@0 420 trait: null
Chris@13 421 method: Identifier(
Chris@13 422 name: exit
Chris@13 423 )
Chris@0 424 newModifier: null
Chris@13 425 newName: Identifier(
Chris@13 426 name: die
Chris@13 427 )
Chris@0 428 )
Chris@0 429 5: Stmt_TraitUseAdaptation_Alias(
Chris@0 430 trait: Name_FullyQualified(
Chris@0 431 parts: array(
Chris@0 432 0: TraitC
Chris@0 433 )
Chris@0 434 )
Chris@13 435 method: Identifier(
Chris@13 436 name: exit
Chris@13 437 )
Chris@0 438 newModifier: null
Chris@13 439 newName: Identifier(
Chris@13 440 name: bye
Chris@13 441 )
Chris@0 442 )
Chris@0 443 6: Stmt_TraitUseAdaptation_Alias(
Chris@0 444 trait: Name_Relative(
Chris@0 445 parts: array(
Chris@0 446 0: TraitC
Chris@0 447 )
Chris@0 448 )
Chris@13 449 method: Identifier(
Chris@13 450 name: exit
Chris@13 451 )
Chris@0 452 newModifier: null
Chris@13 453 newName: Identifier(
Chris@13 454 name: byebye
Chris@13 455 )
Chris@0 456 )
Chris@0 457 7: Stmt_TraitUseAdaptation_Precedence(
Chris@0 458 trait: Name(
Chris@0 459 parts: array(
Chris@0 460 0: TraitA
Chris@0 461 )
Chris@0 462 )
Chris@13 463 method: Identifier(
Chris@13 464 name: catch
Chris@13 465 comments: array(
Chris@13 466 0: //
Chris@13 467 1: /** doc comment */
Chris@13 468 2: #
Chris@13 469 )
Chris@13 470 )
Chris@0 471 insteadof: array(
Chris@0 472 0: Name(
Chris@0 473 parts: array(
Chris@0 474 0: TraitB
Chris@0 475 )
Chris@0 476 )
Chris@0 477 )
Chris@0 478 )
Chris@0 479 )
Chris@0 480 )
Chris@0 481 )
Chris@0 482 )
Chris@0 483 )