Skip to content

Commit 2c9c2dc

Browse files
committed
builtin ops for -race
1 parent 261af1c commit 2c9c2dc

File tree

1 file changed

+90
-88
lines changed

1 file changed

+90
-88
lines changed

builtin.go

+90-88
Original file line numberDiff line numberDiff line change
@@ -53,86 +53,87 @@ type typeParam struct {
5353
tidx int
5454
}
5555

56-
// initBuiltinOps initializes operators of the builtin package.
57-
func initBuiltinOps(builtin *types.Package, conf *Config) {
58-
ops := [...]struct {
59-
name string
60-
tparams []typeTParam
61-
params []typeParam
62-
result int
63-
}{
64-
{"Add", []typeTParam{{"T", addable}}, []typeParam{{"a", 0}, {"b", 0}}, 0},
65-
// func Gop_Add[T addable](a, b T) T
56+
var _builtinOps = [...]struct {
57+
name string
58+
tparams []typeTParam
59+
params []typeParam
60+
result int
61+
}{
62+
{"Add", []typeTParam{{"T", addable}}, []typeParam{{"a", 0}, {"b", 0}}, 0},
63+
// func Gop_Add[T addable](a, b T) T
6664

67-
{"Sub", []typeTParam{{"T", number}}, []typeParam{{"a", 0}, {"b", 0}}, 0},
68-
// func Gop_Sub[T number](a, b T) T
65+
{"Sub", []typeTParam{{"T", number}}, []typeParam{{"a", 0}, {"b", 0}}, 0},
66+
// func Gop_Sub[T number](a, b T) T
6967

70-
{"Mul", []typeTParam{{"T", number}}, []typeParam{{"a", 0}, {"b", 0}}, 0},
71-
// func Gop_Mul[T number](a, b T) T
68+
{"Mul", []typeTParam{{"T", number}}, []typeParam{{"a", 0}, {"b", 0}}, 0},
69+
// func Gop_Mul[T number](a, b T) T
7270

73-
{"Quo", []typeTParam{{"T", number}}, []typeParam{{"a", 0}, {"b", 0}}, 0},
74-
// func Gop_Quo(a, b untyped_bigint) untyped_bigrat
75-
// func Gop_Quo[T number](a, b T) T
71+
{"Quo", []typeTParam{{"T", number}}, []typeParam{{"a", 0}, {"b", 0}}, 0},
72+
// func Gop_Quo(a, b untyped_bigint) untyped_bigrat
73+
// func Gop_Quo[T number](a, b T) T
7674

77-
{"Rem", []typeTParam{{"T", integer}}, []typeParam{{"a", 0}, {"b", 0}}, 0},
78-
// func Gop_Rem[T integer](a, b T) T
75+
{"Rem", []typeTParam{{"T", integer}}, []typeParam{{"a", 0}, {"b", 0}}, 0},
76+
// func Gop_Rem[T integer](a, b T) T
7977

80-
{"Or", []typeTParam{{"T", integer}}, []typeParam{{"a", 0}, {"b", 0}}, 0},
81-
// func Gop_Or[T integer](a, b T) T
78+
{"Or", []typeTParam{{"T", integer}}, []typeParam{{"a", 0}, {"b", 0}}, 0},
79+
// func Gop_Or[T integer](a, b T) T
8280

83-
{"Xor", []typeTParam{{"T", integer}}, []typeParam{{"a", 0}, {"b", 0}}, 0},
84-
// func Gop_Xor[T integer](a, b T) T
81+
{"Xor", []typeTParam{{"T", integer}}, []typeParam{{"a", 0}, {"b", 0}}, 0},
82+
// func Gop_Xor[T integer](a, b T) T
8583

86-
{"And", []typeTParam{{"T", integer}}, []typeParam{{"a", 0}, {"b", 0}}, 0},
87-
// func Gop_And[T integer](a, b T) T
84+
{"And", []typeTParam{{"T", integer}}, []typeParam{{"a", 0}, {"b", 0}}, 0},
85+
// func Gop_And[T integer](a, b T) T
8886

89-
{"AndNot", []typeTParam{{"T", integer}}, []typeParam{{"a", 0}, {"b", 0}}, 0},
90-
// func Gop_AndNot[T integer](a, b T) T
87+
{"AndNot", []typeTParam{{"T", integer}}, []typeParam{{"a", 0}, {"b", 0}}, 0},
88+
// func Gop_AndNot[T integer](a, b T) T
9189

92-
{"Lsh", []typeTParam{{"T", integer}, {"N", ninteger}}, []typeParam{{"a", 0}, {"n", 1}}, 0},
93-
// func Gop_Lsh[T integer, N ninteger](a T, n N) T
90+
{"Lsh", []typeTParam{{"T", integer}, {"N", ninteger}}, []typeParam{{"a", 0}, {"n", 1}}, 0},
91+
// func Gop_Lsh[T integer, N ninteger](a T, n N) T
9492

95-
{"Rsh", []typeTParam{{"T", integer}, {"N", ninteger}}, []typeParam{{"a", 0}, {"n", 1}}, 0},
96-
// func Gop_Rsh[T integer, N ninteger](a T, n N) T
93+
{"Rsh", []typeTParam{{"T", integer}, {"N", ninteger}}, []typeParam{{"a", 0}, {"n", 1}}, 0},
94+
// func Gop_Rsh[T integer, N ninteger](a T, n N) T
9795

98-
{"LT", []typeTParam{{"T", orderable}}, []typeParam{{"a", 0}, {"b", 0}}, -1},
99-
// func Gop_LT[T orderable](a, b T) untyped_bool
96+
{"LT", []typeTParam{{"T", orderable}}, []typeParam{{"a", 0}, {"b", 0}}, -1},
97+
// func Gop_LT[T orderable](a, b T) untyped_bool
10098

101-
{"LE", []typeTParam{{"T", orderable}}, []typeParam{{"a", 0}, {"b", 0}}, -1},
102-
// func Gop_LE[T orderable](a, b T) untyped_bool
99+
{"LE", []typeTParam{{"T", orderable}}, []typeParam{{"a", 0}, {"b", 0}}, -1},
100+
// func Gop_LE[T orderable](a, b T) untyped_bool
103101

104-
{"GT", []typeTParam{{"T", orderable}}, []typeParam{{"a", 0}, {"b", 0}}, -1},
105-
// func Gop_GT[T orderable](a, b T) untyped_bool
102+
{"GT", []typeTParam{{"T", orderable}}, []typeParam{{"a", 0}, {"b", 0}}, -1},
103+
// func Gop_GT[T orderable](a, b T) untyped_bool
106104

107-
{"GE", []typeTParam{{"T", orderable}}, []typeParam{{"a", 0}, {"b", 0}}, -1},
108-
// func Gop_GE[T orderable](a, b T) untyped_bool
105+
{"GE", []typeTParam{{"T", orderable}}, []typeParam{{"a", 0}, {"b", 0}}, -1},
106+
// func Gop_GE[T orderable](a, b T) untyped_bool
109107

110-
{"EQ", []typeTParam{{"T", comparable}}, []typeParam{{"a", 0}, {"b", 0}}, -1},
111-
// func Gop_EQ[T comparable](a, b T) untyped_bool
108+
{"EQ", []typeTParam{{"T", comparable}}, []typeParam{{"a", 0}, {"b", 0}}, -1},
109+
// func Gop_EQ[T comparable](a, b T) untyped_bool
112110

113-
{"NE", []typeTParam{{"T", comparable}}, []typeParam{{"a", 0}, {"b", 0}}, -1},
114-
// func Gop_NE[T comparable](a, b T) untyped_bool
111+
{"NE", []typeTParam{{"T", comparable}}, []typeParam{{"a", 0}, {"b", 0}}, -1},
112+
// func Gop_NE[T comparable](a, b T) untyped_bool
115113

116-
{"LAnd", []typeTParam{{"T", cbool}}, []typeParam{{"a", 0}, {"b", 0}}, 0},
117-
// func Gop_LAnd[T bool](a, b T) T
114+
{"LAnd", []typeTParam{{"T", cbool}}, []typeParam{{"a", 0}, {"b", 0}}, 0},
115+
// func Gop_LAnd[T bool](a, b T) T
118116

119-
{"LOr", []typeTParam{{"T", cbool}}, []typeParam{{"a", 0}, {"b", 0}}, 0},
120-
// func Gop_LOr[T bool](a, b T) T
117+
{"LOr", []typeTParam{{"T", cbool}}, []typeParam{{"a", 0}, {"b", 0}}, 0},
118+
// func Gop_LOr[T bool](a, b T) T
121119

122-
{"Neg", []typeTParam{{"T", number}}, []typeParam{{"a", 0}}, 0},
123-
// func Gop_Neg[T number](a T) T
120+
{"Neg", []typeTParam{{"T", number}}, []typeParam{{"a", 0}}, 0},
121+
// func Gop_Neg[T number](a T) T
124122

125-
{"Dup", []typeTParam{{"T", number}}, []typeParam{{"a", 0}}, 0},
126-
// func Gop_Dup[T number](a T) T
123+
{"Dup", []typeTParam{{"T", number}}, []typeParam{{"a", 0}}, 0},
124+
// func Gop_Dup[T number](a T) T
127125

128-
{"Not", []typeTParam{{"T", integer}}, []typeParam{{"a", 0}}, 0},
129-
// func Gop_Not[T integer](a T) T
126+
{"Not", []typeTParam{{"T", integer}}, []typeParam{{"a", 0}}, 0},
127+
// func Gop_Not[T integer](a T) T
130128

131-
{"LNot", []typeTParam{{"T", cbool}}, []typeParam{{"a", 0}}, 0},
132-
// func Gop_LNot[T bool](a T) T
133-
}
129+
{"LNot", []typeTParam{{"T", cbool}}, []typeParam{{"a", 0}}, 0},
130+
// func Gop_LNot[T bool](a T) T
131+
}
132+
133+
// initBuiltinOps initializes operators of the builtin package.
134+
func initBuiltinOps(builtin *types.Package, conf *Config) {
134135
gbl := builtin.Scope()
135-
for _, op := range ops {
136+
for _, op := range _builtinOps {
136137
tparams := newTParams(op.tparams)
137138
n := len(op.params)
138139
params := make([]*types.Var, n)
@@ -184,48 +185,49 @@ func newTParams(params []typeTParam) []*TemplateParamType {
184185
return tparams
185186
}
186187

187-
// initBuiltinAssignOps initializes assign operators of the builtin package.
188-
func initBuiltinAssignOps(builtin *types.Package) {
189-
ops := [...]struct {
190-
name string
191-
t Contract
192-
ninteger bool
193-
}{
194-
{"AddAssign", addable, false},
195-
// func Gop_AddAssign[T addable](a *T, b T)
188+
var _assignOps = [...]struct {
189+
name string
190+
t Contract
191+
ninteger bool
192+
}{
193+
{"AddAssign", addable, false},
194+
// func Gop_AddAssign[T addable](a *T, b T)
196195

197-
{"SubAssign", number, false},
198-
// func Gop_SubAssign[T number](a *T, b T)
196+
{"SubAssign", number, false},
197+
// func Gop_SubAssign[T number](a *T, b T)
199198

200-
{"MulAssign", number, false},
201-
// func Gop_MulAssign[T number](a *T, b T)
199+
{"MulAssign", number, false},
200+
// func Gop_MulAssign[T number](a *T, b T)
202201

203-
{"QuoAssign", number, false},
204-
// func Gop_QuoAssign[T number](a *T, b T)
202+
{"QuoAssign", number, false},
203+
// func Gop_QuoAssign[T number](a *T, b T)
205204

206-
{"RemAssign", integer, false},
207-
// func Gop_RemAssign[T integer](a *T, b T)
205+
{"RemAssign", integer, false},
206+
// func Gop_RemAssign[T integer](a *T, b T)
208207

209-
{"OrAssign", integer, false},
210-
// func Gop_OrAssign[T integer](a *T, b T)
208+
{"OrAssign", integer, false},
209+
// func Gop_OrAssign[T integer](a *T, b T)
211210

212-
{"XorAssign", integer, false},
213-
// func Gop_XorAssign[T integer](a *T, b T)
211+
{"XorAssign", integer, false},
212+
// func Gop_XorAssign[T integer](a *T, b T)
214213

215-
{"AndAssign", integer, false},
216-
// func Gop_Assign[T integer](a *T, b T)
214+
{"AndAssign", integer, false},
215+
// func Gop_Assign[T integer](a *T, b T)
217216

218-
{"AndNotAssign", integer, false},
219-
// func Gop_AndNotAssign[T integer](a *T, b T)
217+
{"AndNotAssign", integer, false},
218+
// func Gop_AndNotAssign[T integer](a *T, b T)
220219

221-
{"LshAssign", integer, true},
222-
// func Gop_LshAssign[T integer, N ninteger](a *T, n N)
220+
{"LshAssign", integer, true},
221+
// func Gop_LshAssign[T integer, N ninteger](a *T, n N)
223222

224-
{"RshAssign", integer, true},
225-
// func Gop_RshAssign[T integer, N ninteger](a *T, n N)
226-
}
223+
{"RshAssign", integer, true},
224+
// func Gop_RshAssign[T integer, N ninteger](a *T, n N)
225+
}
226+
227+
// initBuiltinAssignOps initializes assign operators of the builtin package.
228+
func initBuiltinAssignOps(builtin *types.Package) {
227229
gbl := builtin.Scope()
228-
for _, op := range ops {
230+
for _, op := range _assignOps {
229231
tparams := newOpTParams(op.t, op.ninteger)
230232
params := make([]*types.Var, 2)
231233
params[0] = types.NewParam(token.NoPos, builtin, "a", NewPointer(tparams[0]))

0 commit comments

Comments
 (0)