@@ -25,8 +25,19 @@ func typeWithPointers() *types.Type {
25
25
return t
26
26
}
27
27
28
+ func markUsed (n * Node ) * Node {
29
+ n .Name .SetUsed (true )
30
+ return n
31
+ }
32
+
33
+ func markNeedZero (n * Node ) * Node {
34
+ n .Name .SetNeedzero (true )
35
+ return n
36
+ }
37
+
28
38
func nodeWithClass (n Node , c Class ) * Node {
29
39
n .SetClass (c )
40
+ n .Name = new (Name )
30
41
return & n
31
42
}
32
43
@@ -72,13 +83,13 @@ func TestCmpstackvar(t *testing.T) {
72
83
true ,
73
84
},
74
85
{
75
- nodeWithClass (Node {flags : nodeUsed }, PAUTO ),
86
+ markUsed ( nodeWithClass (Node {}, PAUTO ) ),
76
87
nodeWithClass (Node {}, PAUTO ),
77
88
true ,
78
89
},
79
90
{
80
91
nodeWithClass (Node {}, PAUTO ),
81
- nodeWithClass (Node {flags : nodeUsed }, PAUTO ),
92
+ markUsed ( nodeWithClass (Node {}, PAUTO ) ),
82
93
false ,
83
94
},
84
95
{
@@ -92,13 +103,13 @@ func TestCmpstackvar(t *testing.T) {
92
103
true ,
93
104
},
94
105
{
95
- nodeWithClass (Node {Type : & types.Type {}, Name : & Name { flags : nameNeedzero }} , PAUTO ),
106
+ markNeedZero ( nodeWithClass (Node {Type : & types.Type {}} , PAUTO ) ),
96
107
nodeWithClass (Node {Type : & types.Type {}, Name : & Name {}}, PAUTO ),
97
108
true ,
98
109
},
99
110
{
100
111
nodeWithClass (Node {Type : & types.Type {}, Name : & Name {}}, PAUTO ),
101
- nodeWithClass (Node {Type : & types.Type {}, Name : & Name { flags : nameNeedzero }} , PAUTO ),
112
+ markNeedZero ( nodeWithClass (Node {Type : & types.Type {}} , PAUTO ) ),
102
113
false ,
103
114
},
104
115
{
@@ -112,18 +123,18 @@ func TestCmpstackvar(t *testing.T) {
112
123
true ,
113
124
},
114
125
{
115
- nodeWithClass (Node {Type : & types.Type {}, Name : & Name {}, Sym : & types.Sym {Name : "abc" }}, PAUTO ),
116
- nodeWithClass (Node {Type : & types.Type {}, Name : & Name {}, Sym : & types.Sym {Name : "xyz" }}, PAUTO ),
126
+ nodeWithClass (Node {Type : & types.Type {}, Sym : & types.Sym {Name : "abc" }}, PAUTO ),
127
+ nodeWithClass (Node {Type : & types.Type {}, Sym : & types.Sym {Name : "xyz" }}, PAUTO ),
117
128
true ,
118
129
},
119
130
{
120
- nodeWithClass (Node {Type : & types.Type {}, Name : & Name {}, Sym : & types.Sym {Name : "abc" }}, PAUTO ),
121
- nodeWithClass (Node {Type : & types.Type {}, Name : & Name {}, Sym : & types.Sym {Name : "abc" }}, PAUTO ),
131
+ nodeWithClass (Node {Type : & types.Type {}, Sym : & types.Sym {Name : "abc" }}, PAUTO ),
132
+ nodeWithClass (Node {Type : & types.Type {}, Sym : & types.Sym {Name : "abc" }}, PAUTO ),
122
133
false ,
123
134
},
124
135
{
125
- nodeWithClass (Node {Type : & types.Type {}, Name : & Name {}, Sym : & types.Sym {Name : "xyz" }}, PAUTO ),
126
- nodeWithClass (Node {Type : & types.Type {}, Name : & Name {}, Sym : & types.Sym {Name : "abc" }}, PAUTO ),
136
+ nodeWithClass (Node {Type : & types.Type {}, Sym : & types.Sym {Name : "xyz" }}, PAUTO ),
137
+ nodeWithClass (Node {Type : & types.Type {}, Sym : & types.Sym {Name : "abc" }}, PAUTO ),
127
138
false ,
128
139
},
129
140
}
@@ -141,34 +152,34 @@ func TestCmpstackvar(t *testing.T) {
141
152
142
153
func TestStackvarSort (t * testing.T ) {
143
154
inp := []* Node {
144
- nodeWithClass (Node {Type : & types.Type {}, Name : & Name {}, Sym : & types.Sym {}}, PFUNC ),
145
- nodeWithClass (Node {Type : & types.Type {}, Name : & Name {}, Sym : & types.Sym {}}, PAUTO ),
146
- nodeWithClass (Node {Xoffset : 0 , Type : & types.Type {}, Name : & Name {}, Sym : & types.Sym {}}, PFUNC ),
147
- nodeWithClass (Node {Xoffset : 10 , Type : & types.Type {}, Name : & Name {}, Sym : & types.Sym {}}, PFUNC ),
148
- nodeWithClass (Node {Xoffset : 20 , Type : & types.Type {}, Name : & Name {}, Sym : & types.Sym {}}, PFUNC ),
149
- nodeWithClass (Node {flags : nodeUsed , Type : & types.Type {}, Name : & Name {}, Sym : & types.Sym {}}, PAUTO ),
150
- nodeWithClass (Node {Type : typeWithoutPointers (), Name : & Name {}, Sym : & types.Sym {}}, PAUTO ),
151
- nodeWithClass (Node {Type : & types.Type {}, Name : & Name {}, Sym : & types.Sym {}}, PAUTO ),
152
- nodeWithClass (Node {Type : & types.Type {}, Name : & Name { flags : nameNeedzero }, Sym : & types.Sym {}}, PAUTO ),
153
- nodeWithClass (Node {Type : & types.Type {Width : 1 }, Name : & Name {}, Sym : & types.Sym {}}, PAUTO ),
154
- nodeWithClass (Node {Type : & types.Type {Width : 2 }, Name : & Name {}, Sym : & types.Sym {}}, PAUTO ),
155
- nodeWithClass (Node {Type : & types.Type {}, Name : & Name {}, Sym : & types.Sym {Name : "abc" }}, PAUTO ),
156
- nodeWithClass (Node {Type : & types.Type {}, Name : & Name {}, Sym : & types.Sym {Name : "xyz" }}, PAUTO ),
155
+ nodeWithClass (Node {Type : & types.Type {}, Sym : & types.Sym {}}, PFUNC ),
156
+ nodeWithClass (Node {Type : & types.Type {}, Sym : & types.Sym {}}, PAUTO ),
157
+ nodeWithClass (Node {Xoffset : 0 , Type : & types.Type {}, Sym : & types.Sym {}}, PFUNC ),
158
+ nodeWithClass (Node {Xoffset : 10 , Type : & types.Type {}, Sym : & types.Sym {}}, PFUNC ),
159
+ nodeWithClass (Node {Xoffset : 20 , Type : & types.Type {}, Sym : & types.Sym {}}, PFUNC ),
160
+ markUsed ( nodeWithClass (Node {Type : & types.Type {}, Sym : & types.Sym {}}, PAUTO ) ),
161
+ nodeWithClass (Node {Type : typeWithoutPointers (), Sym : & types.Sym {}}, PAUTO ),
162
+ nodeWithClass (Node {Type : & types.Type {}, Sym : & types.Sym {}}, PAUTO ),
163
+ markNeedZero ( nodeWithClass (Node {Type : & types.Type {}, Sym : & types.Sym {}}, PAUTO ) ),
164
+ nodeWithClass (Node {Type : & types.Type {Width : 1 }, Sym : & types.Sym {}}, PAUTO ),
165
+ nodeWithClass (Node {Type : & types.Type {Width : 2 }, Sym : & types.Sym {}}, PAUTO ),
166
+ nodeWithClass (Node {Type : & types.Type {}, Sym : & types.Sym {Name : "abc" }}, PAUTO ),
167
+ nodeWithClass (Node {Type : & types.Type {}, Sym : & types.Sym {Name : "xyz" }}, PAUTO ),
157
168
}
158
169
want := []* Node {
159
- nodeWithClass (Node {Type : & types.Type {}, Name : & Name {}, Sym : & types.Sym {}}, PFUNC ),
160
- nodeWithClass (Node {Xoffset : 0 , Type : & types.Type {}, Name : & Name {}, Sym : & types.Sym {}}, PFUNC ),
161
- nodeWithClass (Node {Xoffset : 10 , Type : & types.Type {}, Name : & Name {}, Sym : & types.Sym {}}, PFUNC ),
162
- nodeWithClass (Node {Xoffset : 20 , Type : & types.Type {}, Name : & Name {}, Sym : & types.Sym {}}, PFUNC ),
163
- nodeWithClass (Node {flags : nodeUsed , Type : & types.Type {}, Name : & Name {}, Sym : & types.Sym {}}, PAUTO ),
164
- nodeWithClass (Node {Type : & types.Type {}, Name : & Name { flags : nameNeedzero }, Sym : & types.Sym {}}, PAUTO ),
165
- nodeWithClass (Node {Type : & types.Type {Width : 2 }, Name : & Name {}, Sym : & types.Sym {}}, PAUTO ),
166
- nodeWithClass (Node {Type : & types.Type {Width : 1 }, Name : & Name {}, Sym : & types.Sym {}}, PAUTO ),
167
- nodeWithClass (Node {Type : & types.Type {}, Name : & Name {}, Sym : & types.Sym {}}, PAUTO ),
168
- nodeWithClass (Node {Type : & types.Type {}, Name : & Name {}, Sym : & types.Sym {}}, PAUTO ),
169
- nodeWithClass (Node {Type : & types.Type {}, Name : & Name {}, Sym : & types.Sym {Name : "abc" }}, PAUTO ),
170
- nodeWithClass (Node {Type : & types.Type {}, Name : & Name {}, Sym : & types.Sym {Name : "xyz" }}, PAUTO ),
171
- nodeWithClass (Node {Type : typeWithoutPointers (), Name : & Name {}, Sym : & types.Sym {}}, PAUTO ),
170
+ nodeWithClass (Node {Type : & types.Type {}, Sym : & types.Sym {}}, PFUNC ),
171
+ nodeWithClass (Node {Xoffset : 0 , Type : & types.Type {}, Sym : & types.Sym {}}, PFUNC ),
172
+ nodeWithClass (Node {Xoffset : 10 , Type : & types.Type {}, Sym : & types.Sym {}}, PFUNC ),
173
+ nodeWithClass (Node {Xoffset : 20 , Type : & types.Type {}, Sym : & types.Sym {}}, PFUNC ),
174
+ markUsed ( nodeWithClass (Node {Type : & types.Type {}, Sym : & types.Sym {}}, PAUTO ) ),
175
+ markNeedZero ( nodeWithClass (Node {Type : & types.Type {}, Sym : & types.Sym {}}, PAUTO ) ),
176
+ nodeWithClass (Node {Type : & types.Type {Width : 2 }, Sym : & types.Sym {}}, PAUTO ),
177
+ nodeWithClass (Node {Type : & types.Type {Width : 1 }, Sym : & types.Sym {}}, PAUTO ),
178
+ nodeWithClass (Node {Type : & types.Type {}, Sym : & types.Sym {}}, PAUTO ),
179
+ nodeWithClass (Node {Type : & types.Type {}, Sym : & types.Sym {}}, PAUTO ),
180
+ nodeWithClass (Node {Type : & types.Type {}, Sym : & types.Sym {Name : "abc" }}, PAUTO ),
181
+ nodeWithClass (Node {Type : & types.Type {}, Sym : & types.Sym {Name : "xyz" }}, PAUTO ),
182
+ nodeWithClass (Node {Type : typeWithoutPointers (), Sym : & types.Sym {}}, PAUTO ),
172
183
}
173
184
// haspointers updates Type.Haspointers as a side effect, so
174
185
// exercise this function on all inputs so that reflect.DeepEqual
0 commit comments