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