2011-11-27 12:53:48 +01:00
|
|
|
Invalid modifier combination
|
|
|
|
-----
|
|
|
|
<?php class A { public public $a; }
|
|
|
|
-----
|
2016-10-09 00:59:44 +02:00
|
|
|
Multiple access type modifiers are not allowed from 1:24 to 1:29
|
|
|
|
array(
|
|
|
|
0: Stmt_Class(
|
|
|
|
flags: 0
|
2017-04-28 19:09:39 +02:00
|
|
|
name: Identifier(
|
|
|
|
name: A
|
|
|
|
)
|
2016-10-09 00:59:44 +02:00
|
|
|
extends: null
|
|
|
|
implements: array(
|
|
|
|
)
|
|
|
|
stmts: array(
|
|
|
|
0: Stmt_Property(
|
|
|
|
flags: MODIFIER_PUBLIC (1)
|
2019-01-05 12:06:18 +01:00
|
|
|
type: null
|
2016-10-09 00:59:44 +02:00
|
|
|
props: array(
|
|
|
|
0: Stmt_PropertyProperty(
|
2017-04-28 19:09:39 +02:00
|
|
|
name: VarLikeIdentifier(
|
|
|
|
name: a
|
|
|
|
)
|
2016-10-09 00:59:44 +02:00
|
|
|
default: null
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
2011-11-27 12:53:48 +01:00
|
|
|
-----
|
|
|
|
<?php class A { public protected $a; }
|
|
|
|
-----
|
2016-10-09 00:59:44 +02:00
|
|
|
Multiple access type modifiers are not allowed from 1:24 to 1:32
|
|
|
|
array(
|
|
|
|
0: Stmt_Class(
|
|
|
|
flags: 0
|
2017-04-28 19:09:39 +02:00
|
|
|
name: Identifier(
|
|
|
|
name: A
|
|
|
|
)
|
2016-10-09 00:59:44 +02:00
|
|
|
extends: null
|
|
|
|
implements: array(
|
|
|
|
)
|
|
|
|
stmts: array(
|
|
|
|
0: Stmt_Property(
|
|
|
|
flags: MODIFIER_PUBLIC | MODIFIER_PROTECTED (3)
|
2019-01-05 12:06:18 +01:00
|
|
|
type: null
|
2016-10-09 00:59:44 +02:00
|
|
|
props: array(
|
|
|
|
0: Stmt_PropertyProperty(
|
2017-04-28 19:09:39 +02:00
|
|
|
name: VarLikeIdentifier(
|
|
|
|
name: a
|
|
|
|
)
|
2016-10-09 00:59:44 +02:00
|
|
|
default: null
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
2011-11-27 12:53:48 +01:00
|
|
|
-----
|
2016-10-09 00:59:44 +02:00
|
|
|
<?php class A { abstract abstract function a(); }
|
2011-11-27 12:53:48 +01:00
|
|
|
-----
|
2016-10-09 00:59:44 +02:00
|
|
|
Multiple abstract modifiers are not allowed from 1:26 to 1:33
|
|
|
|
array(
|
|
|
|
0: Stmt_Class(
|
|
|
|
flags: 0
|
2017-04-28 19:09:39 +02:00
|
|
|
name: Identifier(
|
|
|
|
name: A
|
|
|
|
)
|
2016-10-09 00:59:44 +02:00
|
|
|
extends: null
|
|
|
|
implements: array(
|
|
|
|
)
|
|
|
|
stmts: array(
|
|
|
|
0: Stmt_ClassMethod(
|
|
|
|
flags: MODIFIER_ABSTRACT (16)
|
|
|
|
byRef: false
|
2017-04-28 19:09:39 +02:00
|
|
|
name: Identifier(
|
|
|
|
name: a
|
|
|
|
)
|
2016-10-09 00:59:44 +02:00
|
|
|
params: array(
|
|
|
|
)
|
|
|
|
returnType: null
|
|
|
|
stmts: null
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
2011-11-27 12:53:48 +01:00
|
|
|
-----
|
|
|
|
<?php class A { static static $a; }
|
|
|
|
-----
|
2016-10-09 00:59:44 +02:00
|
|
|
Multiple static modifiers are not allowed from 1:24 to 1:29
|
|
|
|
array(
|
|
|
|
0: Stmt_Class(
|
|
|
|
flags: 0
|
2017-04-28 19:09:39 +02:00
|
|
|
name: Identifier(
|
|
|
|
name: A
|
|
|
|
)
|
2016-10-09 00:59:44 +02:00
|
|
|
extends: null
|
|
|
|
implements: array(
|
|
|
|
)
|
|
|
|
stmts: array(
|
|
|
|
0: Stmt_Property(
|
|
|
|
flags: MODIFIER_STATIC (8)
|
2019-01-05 12:06:18 +01:00
|
|
|
type: null
|
2016-10-09 00:59:44 +02:00
|
|
|
props: array(
|
|
|
|
0: Stmt_PropertyProperty(
|
2017-04-28 19:09:39 +02:00
|
|
|
name: VarLikeIdentifier(
|
|
|
|
name: a
|
|
|
|
)
|
2016-10-09 00:59:44 +02:00
|
|
|
default: null
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
2011-11-27 12:53:48 +01:00
|
|
|
-----
|
2016-10-09 00:59:44 +02:00
|
|
|
<?php class A { final final function a() {} }
|
2011-11-27 12:53:48 +01:00
|
|
|
-----
|
2016-10-09 00:59:44 +02:00
|
|
|
Multiple final modifiers are not allowed from 1:23 to 1:27
|
|
|
|
array(
|
|
|
|
0: Stmt_Class(
|
|
|
|
flags: 0
|
2017-04-28 19:09:39 +02:00
|
|
|
name: Identifier(
|
|
|
|
name: A
|
|
|
|
)
|
2016-10-09 00:59:44 +02:00
|
|
|
extends: null
|
|
|
|
implements: array(
|
|
|
|
)
|
|
|
|
stmts: array(
|
|
|
|
0: Stmt_ClassMethod(
|
|
|
|
flags: MODIFIER_FINAL (32)
|
|
|
|
byRef: false
|
2017-04-28 19:09:39 +02:00
|
|
|
name: Identifier(
|
|
|
|
name: a
|
|
|
|
)
|
2016-10-09 00:59:44 +02:00
|
|
|
params: array(
|
|
|
|
)
|
|
|
|
returnType: null
|
|
|
|
stmts: array(
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
2011-11-27 12:53:48 +01:00
|
|
|
-----
|
2016-10-09 00:59:44 +02:00
|
|
|
<?php class A { abstract final function a(); }
|
2011-11-27 12:53:48 +01:00
|
|
|
-----
|
2016-10-09 00:59:44 +02:00
|
|
|
Cannot use the final modifier on an abstract class member from 1:26 to 1:30
|
|
|
|
array(
|
|
|
|
0: Stmt_Class(
|
|
|
|
flags: 0
|
2017-04-28 19:09:39 +02:00
|
|
|
name: Identifier(
|
|
|
|
name: A
|
|
|
|
)
|
2016-10-09 00:59:44 +02:00
|
|
|
extends: null
|
|
|
|
implements: array(
|
|
|
|
)
|
|
|
|
stmts: array(
|
|
|
|
0: Stmt_ClassMethod(
|
|
|
|
flags: MODIFIER_ABSTRACT | MODIFIER_FINAL (48)
|
|
|
|
byRef: false
|
2017-04-28 19:09:39 +02:00
|
|
|
name: Identifier(
|
|
|
|
name: a
|
|
|
|
)
|
2016-10-09 00:59:44 +02:00
|
|
|
params: array(
|
|
|
|
)
|
|
|
|
returnType: null
|
|
|
|
stmts: null
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
2012-03-10 23:25:26 +01:00
|
|
|
-----
|
|
|
|
<?php abstract final class A { }
|
2015-04-30 17:37:19 +02:00
|
|
|
// Type in the partial parse could conceivably be any of 0, 16 or 32
|
2012-03-10 23:25:26 +01:00
|
|
|
-----
|
2015-04-18 21:20:45 +02:00
|
|
|
Syntax error, unexpected T_FINAL, expecting T_CLASS from 1:16 to 1:20
|
2015-04-30 17:37:19 +02:00
|
|
|
array(
|
|
|
|
0: Stmt_Class(
|
2016-07-25 13:53:49 +02:00
|
|
|
flags: MODIFIER_FINAL (32)
|
2017-04-28 19:09:39 +02:00
|
|
|
name: Identifier(
|
|
|
|
name: A
|
|
|
|
)
|
2015-04-30 17:37:19 +02:00
|
|
|
extends: null
|
|
|
|
implements: array(
|
|
|
|
)
|
|
|
|
stmts: array(
|
|
|
|
)
|
|
|
|
)
|
2015-10-02 11:03:12 +02:00
|
|
|
1: Stmt_Nop(
|
|
|
|
comments: array(
|
|
|
|
0: // Type in the partial parse could conceivably be any of 0, 16 or 32
|
|
|
|
)
|
|
|
|
)
|
2015-04-30 17:37:19 +02:00
|
|
|
)
|
2014-11-13 20:25:52 +01:00
|
|
|
-----
|
|
|
|
<?php class A { abstract $a; }
|
|
|
|
-----
|
2016-10-09 00:59:44 +02:00
|
|
|
Properties cannot be declared abstract from 1:17 to 1:24
|
|
|
|
array(
|
|
|
|
0: Stmt_Class(
|
|
|
|
flags: 0
|
2017-04-28 19:09:39 +02:00
|
|
|
name: Identifier(
|
|
|
|
name: A
|
|
|
|
)
|
2016-10-09 00:59:44 +02:00
|
|
|
extends: null
|
|
|
|
implements: array(
|
|
|
|
)
|
|
|
|
stmts: array(
|
|
|
|
0: Stmt_Property(
|
|
|
|
flags: MODIFIER_ABSTRACT (16)
|
2019-01-05 12:06:18 +01:00
|
|
|
type: null
|
2016-10-09 00:59:44 +02:00
|
|
|
props: array(
|
|
|
|
0: Stmt_PropertyProperty(
|
2017-04-28 19:09:39 +02:00
|
|
|
name: VarLikeIdentifier(
|
|
|
|
name: a
|
|
|
|
)
|
2016-10-09 00:59:44 +02:00
|
|
|
default: null
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
2014-11-13 20:25:52 +01:00
|
|
|
-----
|
|
|
|
<?php class A { final $a; }
|
|
|
|
-----
|
2016-10-09 00:59:44 +02:00
|
|
|
Properties cannot be declared final from 1:17 to 1:21
|
|
|
|
array(
|
|
|
|
0: Stmt_Class(
|
|
|
|
flags: 0
|
2017-04-28 19:09:39 +02:00
|
|
|
name: Identifier(
|
|
|
|
name: A
|
|
|
|
)
|
2016-10-09 00:59:44 +02:00
|
|
|
extends: null
|
|
|
|
implements: array(
|
|
|
|
)
|
|
|
|
stmts: array(
|
|
|
|
0: Stmt_Property(
|
|
|
|
flags: MODIFIER_FINAL (32)
|
2019-01-05 12:06:18 +01:00
|
|
|
type: null
|
2016-10-09 00:59:44 +02:00
|
|
|
props: array(
|
|
|
|
0: Stmt_PropertyProperty(
|
2017-04-28 19:09:39 +02:00
|
|
|
name: VarLikeIdentifier(
|
|
|
|
name: a
|
|
|
|
)
|
2016-10-09 00:59:44 +02:00
|
|
|
default: null
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
2017-01-19 22:25:22 +01:00
|
|
|
)
|