/
traitUse.test
115 lines (104 loc) · 2.35 KB
/
traitUse.test
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
<?php
trait A {
public function smallTalk() {
echo 'a';
}
public function bigTalk() {
echo 'A';
}
}
trait B {
public function smallTalk() {
echo 'b';
}
public function bigTalk() {
echo 'B';
}
}
class Talker {
use A, B {
B::smallTalk insteadof A;
A::bigTalk insteadof B;
}
}
class Aliased_Talker {
use A, B {
B::smallTalk insteadof A;
A::bigTalk insteadof B;
B::bigTalk as private talk;
}
}
-----
Block#1
Stmt_Trait
name: LITERAL('A')
stmts: Block#2
Stmt_Trait
name: LITERAL('B')
stmts: Block#3
Stmt_Class
name: LITERAL('Talker')
stmts: Block#4
Stmt_Class
name: LITERAL('Aliased_Talker')
stmts: Block#5
Terminal_Return
Block#2
Stmt_ClassMethod<'smallTalk'>
flags: public
Stmt_ClassMethod<'bigTalk'>
flags: public
Block#3
Stmt_ClassMethod<'smallTalk'>
flags: public
Stmt_ClassMethod<'bigTalk'>
flags: public
Block#4
Stmt_TraitUse
use[0]: LITERAL('\\A')
use[1]: LITERAL('\\B')
adaptation[0]: Insteadof
trait:LITERAL('\\B')
method:LITERAL('smallTalk')
insteadof[0]: LITERAL('\\A')
adaptation[1]: Insteadof
trait:LITERAL('\\A')
method:LITERAL('bigTalk')
insteadof[0]: LITERAL('\\B')
Block#5
Stmt_TraitUse
use[0]: LITERAL('\\A')
use[1]: LITERAL('\\B')
adaptation[0]: Insteadof
trait:LITERAL('\\B')
method:LITERAL('smallTalk')
insteadof[0]: LITERAL('\\A')
adaptation[1]: Insteadof
trait:LITERAL('\\A')
method:LITERAL('bigTalk')
insteadof[0]: LITERAL('\\B')
adaptation[2]: Alias
trait:LITERAL('\\B')
method:LITERAL('bigTalk')
newName:LITERAL('talk')
newModifier:private
Function 'A::smallTalk': mixed
Block#1
Terminal_Echo
expr: LITERAL('a')
Terminal_Return
Function 'A::bigTalk': mixed
Block#1
Terminal_Echo
expr: LITERAL('A')
Terminal_Return
Function 'B::smallTalk': mixed
Block#1
Terminal_Echo
expr: LITERAL('b')
Terminal_Return
Function 'B::bigTalk': mixed
Block#1
Terminal_Echo
expr: LITERAL('B')
Terminal_Return