Skip to content

Commit b1f3841

Browse files
committed
feat: suggested fix を実装
1 parent de1a871 commit b1f3841

File tree

3 files changed

+411
-2
lines changed

3 files changed

+411
-2
lines changed

testdata/src/a/a.go.golden

+372
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,372 @@
1+
package a
2+
3+
import (
4+
"a/b"
5+
c "a/b"
6+
"context"
7+
"fmt"
8+
)
9+
10+
func f() error {
11+
// call method of interface field
12+
ptt := &itt{
13+
t: t{},
14+
ct: ct{},
15+
}
16+
if err := ptt.t.Err(); err != nil {
17+
return fmt.Errorf("ptt.t.Err: %w", err) // want `wrapping error message should be "ptt.t.Err: %w"`
18+
}
19+
if err := ptt.t.Err(); err != nil {
20+
return fmt.Errorf("ptt.t.Err: %w", err)
21+
}
22+
if err := ptt.ct.Err(context.Background()); err != nil {
23+
return fmt.Errorf("ptt.ct.Err: %w", err) // want `wrapping error message should be "ptt.ct.Err: %w"`
24+
}
25+
if err := ptt.ct.Err(context.Background()); err != nil {
26+
return fmt.Errorf("ptt.ct.Err: %w", err)
27+
}
28+
29+
itt := *ptt
30+
if err := itt.t.Err(); err != nil {
31+
return fmt.Errorf("itt.t.Err: %w", err) // want `wrapping error message should be "itt.t.Err: %w"`
32+
}
33+
if err := itt.t.Err(); err != nil {
34+
return fmt.Errorf("itt.t.Err: %w", err)
35+
}
36+
if err := itt.ct.Err(context.Background()); err != nil {
37+
return fmt.Errorf("itt.ct.Err: %w", err) // want `wrapping error message should be "itt.ct.Err: %w"`
38+
}
39+
if err := itt.ct.Err(context.Background()); err != nil {
40+
return fmt.Errorf("itt.ct.Err: %w", err)
41+
}
42+
43+
// call same package
44+
if err := g(); err != nil {
45+
return fmt.Errorf("g: %w", err) // want `wrapping error message should be "g: %w"`
46+
}
47+
if err := g(); err != nil {
48+
return fmt.Errorf("g: %w", err)
49+
}
50+
51+
if err := ctx(context.Background()); err != nil {
52+
return fmt.Errorf("ctx: %w", err) // want `wrapping error message should be "ctx: %w"`
53+
}
54+
if err := ctx(context.Background()); err != nil {
55+
return fmt.Errorf("ctx: %w", err)
56+
}
57+
58+
tmp := context.Background()
59+
if err := ctx(tmp); err != nil {
60+
return fmt.Errorf("ctx: %w", err) // want `wrapping error message should be "ctx: %w"`
61+
}
62+
if err := ctx(tmp); err != nil {
63+
return fmt.Errorf("ctx: %w", err)
64+
}
65+
66+
// call method of field
67+
tt := tt{}
68+
if err := tt.t.Err(); err != nil {
69+
return fmt.Errorf("tt.t.Err: %w", err) // want `wrapping error message should be "tt.t.Err: %w"`
70+
}
71+
if err := tt.t.Err(); err != nil {
72+
return fmt.Errorf("tt.t.Err: %w", err)
73+
}
74+
if err := tt.ct.Err(context.Background()); err != nil {
75+
return fmt.Errorf("tt.ct.Err: %w", err) // want `wrapping error message should be "tt.ct.Err: %w"`
76+
}
77+
if err := tt.ct.Err(context.Background()); err != nil {
78+
return fmt.Errorf("tt.ct.Err: %w", err)
79+
}
80+
81+
// method chain same package
82+
if err := T().Err(); err != nil {
83+
return fmt.Errorf("T.Err: %w", err) // want `wrapping error message should be "T\.Err: %w"`
84+
}
85+
if err := T().Err(); err != nil {
86+
return fmt.Errorf("T.Err: %w", err)
87+
}
88+
89+
// method chain same package with line break
90+
if err := T().
91+
Err(); err != nil {
92+
return fmt.Errorf("T.Err: %w", err) // want `wrapping error message should be "T\.Err: %w"`
93+
}
94+
if err := T().
95+
Err(); err != nil {
96+
return fmt.Errorf("T.Err: %w", err)
97+
}
98+
99+
// multi method chain same package
100+
if err := T().U().Err(); err != nil {
101+
return fmt.Errorf("T.U.Err: %w", err) // want `wrapping error message should be "T\.U\.Err: %w"`
102+
}
103+
if err := T().U().Err(); err != nil {
104+
return fmt.Errorf("T.U.Err: %w", err)
105+
}
106+
107+
// multi method chain same package with line break
108+
if err := T().
109+
U().
110+
Err(); err != nil {
111+
return fmt.Errorf("T.U.Err: %w", err) // want `wrapping error message should be "T\.U\.Err: %w"`
112+
}
113+
if err := T().
114+
U().
115+
Err(); err != nil {
116+
return fmt.Errorf("T.U.Err: %w", err)
117+
}
118+
119+
// method chain same package with args
120+
if err := T(1, 2).Err(); err != nil {
121+
return fmt.Errorf("T.Err: %w", err) // want `wrapping error message should be "T\.Err: %w"`
122+
}
123+
if err := T(1, 2).Err(); err != nil {
124+
return fmt.Errorf("T.Err: %w", err)
125+
}
126+
127+
// method chain same package with args, line break
128+
if err := T(1, 2).
129+
Err(); err != nil {
130+
return fmt.Errorf("T.Err: %w", err) // want `wrapping error message should be "T\.Err: %w"`
131+
}
132+
if err := T(1, 2).
133+
Err(); err != nil {
134+
return fmt.Errorf("T.Err: %w", err)
135+
}
136+
137+
// multi method chain same package with args
138+
if err := T(1, 2).U().Err(); err != nil {
139+
return fmt.Errorf("T.U.Err: %w", err) // want `wrapping error message should be "T\.U\.Err: %w"`
140+
}
141+
if err := T(1, 2).U().Err(); err != nil {
142+
return fmt.Errorf("T.U.Err: %w", err)
143+
}
144+
145+
// multi method chain same package with args, line break
146+
if err := T(1, 2).
147+
U().
148+
Err(); err != nil {
149+
return fmt.Errorf("T.U.Err: %w", err) // want `wrapping error message should be "T\.U\.Err: %w"`
150+
}
151+
if err := T(1, 2).
152+
U().
153+
Err(); err != nil {
154+
return fmt.Errorf("T.U.Err: %w", err)
155+
}
156+
157+
// call method
158+
t := T()
159+
if err := t.Err(); err != nil {
160+
return fmt.Errorf("t.Err: %w", err) // want `wrapping error message should be "t\.Err: %w"`
161+
}
162+
if err := t.Err(); err != nil {
163+
return fmt.Errorf("t.Err: %w", err)
164+
}
165+
166+
// call method with line break
167+
if err := t.
168+
Err(); err != nil {
169+
return fmt.Errorf("t.Err: %w", err) // want `wrapping error message should be "t\.Err: %w"`
170+
}
171+
if err := t.
172+
Err(); err != nil {
173+
return fmt.Errorf("t.Err: %w", err)
174+
}
175+
176+
// multi method chain
177+
if err := t.U().Err(); err != nil {
178+
return fmt.Errorf("t.U.Err: %w", err) // want `wrapping error message should be "t\.U\.Err: %w"`
179+
}
180+
if err := t.U().Err(); err != nil {
181+
return fmt.Errorf("t.U.Err: %w", err)
182+
}
183+
184+
// multi method chain with line break
185+
if err := t.
186+
U().
187+
Err(); err != nil {
188+
return fmt.Errorf("t.U.Err: %w", err) // want `wrapping error message should be "t\.U\.Err: %w"`
189+
}
190+
if err := t.
191+
U().
192+
Err(); err != nil {
193+
return fmt.Errorf("t.U.Err: %w", err)
194+
}
195+
196+
// call other package
197+
if err := b.F(); err != nil {
198+
return fmt.Errorf("b.F: %w", err) // want `wrapping error message should be "b\.F: %w"`
199+
}
200+
if err := b.F(); err != nil {
201+
return fmt.Errorf("b.F: %w", err)
202+
}
203+
204+
// call other package with line break
205+
if err := b.
206+
F(); err != nil {
207+
return fmt.Errorf("b.F: %w", err) // want `wrapping error message should be "b\.F: %w"`
208+
}
209+
if err := b.
210+
F(); err != nil {
211+
return fmt.Errorf("b.F: %w", err)
212+
}
213+
214+
// method chain other package
215+
if err := b.T().Err(); err != nil {
216+
return fmt.Errorf("b.T.Err: %w", err) // want `wrapping error message should be "b\.T\.Err: %w"`
217+
}
218+
if err := b.T().Err(); err != nil {
219+
return fmt.Errorf("b.T.Err: %w", err)
220+
}
221+
222+
// method chain other package with line break
223+
if err := b.
224+
T().
225+
Err(); err != nil {
226+
return fmt.Errorf("b.T.Err: %w", err) // want `wrapping error message should be "b\.T\.Err: %w"`
227+
}
228+
if err := b.
229+
T().
230+
Err(); err != nil {
231+
return fmt.Errorf("b.T.Err: %w", err)
232+
}
233+
234+
// multi method chain other package
235+
if err := b.T().U().Err(); err != nil {
236+
return fmt.Errorf("b.T.U.Err: %w", err) // want `wrapping error message should be "b\.T\.U\.Err: %w"`
237+
}
238+
if err := b.T().U().Err(); err != nil {
239+
return fmt.Errorf("b.T.U.Err: %w", err)
240+
}
241+
242+
// multi method chain other package with line break
243+
if err := b.
244+
T().
245+
U().
246+
Err(); err != nil {
247+
return fmt.Errorf("b.T.U.Err: %w", err) // want `wrapping error message should be "b\.T\.U\.Err: %w"`
248+
}
249+
if err := b.
250+
T().
251+
U().
252+
Err(); err != nil {
253+
return fmt.Errorf("b.T.U.Err: %w", err)
254+
}
255+
256+
// call other package with import alias
257+
if err := c.F(); err != nil {
258+
return fmt.Errorf("c.F: %w", err) // want `wrapping error message should be "c\.F: %w"`
259+
}
260+
if err := c.F(); err != nil {
261+
return fmt.Errorf("c.F: %w", err)
262+
}
263+
264+
// call other package with import alias, line break
265+
if err := c.
266+
F(); err != nil {
267+
return fmt.Errorf("c.F: %w", err) // want `wrapping error message should be "c\.F: %w"`
268+
}
269+
if err := c.
270+
F(); err != nil {
271+
return fmt.Errorf("c.F: %w", err)
272+
}
273+
274+
// method chain other package with import alias
275+
if err := c.T().Err(); err != nil {
276+
return fmt.Errorf("c.T.Err: %w", err) // want `wrapping error message should be "c\.T\.Err: %w"`
277+
}
278+
if err := c.T().Err(); err != nil {
279+
return fmt.Errorf("c.T.Err: %w", err)
280+
}
281+
282+
// method chain other package with import alias, line break
283+
if err := c.
284+
T().
285+
Err(); err != nil {
286+
return fmt.Errorf("c.T.Err: %w", err) // want `wrapping error message should be "c\.T\.Err: %w"`
287+
}
288+
if err := c.
289+
T().
290+
Err(); err != nil {
291+
return fmt.Errorf("c.T.Err: %w", err)
292+
}
293+
294+
// multi method chain other package with import alias
295+
if err := c.T().U().Err(); err != nil {
296+
return fmt.Errorf("c.T.U.Err: %w", err) // want `wrapping error message should be "c\.T\.U\.Err: %w"`
297+
}
298+
if err := c.T().U().Err(); err != nil {
299+
return fmt.Errorf("c.T.U.Err: %w", err)
300+
}
301+
302+
// multi method chain other package with import alias, line break
303+
if err := c.
304+
T().
305+
U().
306+
Err(); err != nil {
307+
return fmt.Errorf("c.T.U.Err: %w", err) // want `wrapping error message should be "c\.T\.U\.Err: %w"`
308+
}
309+
if err := c.
310+
T().
311+
U().
312+
Err(); err != nil {
313+
return fmt.Errorf("c.T.U.Err: %w", err)
314+
}
315+
316+
return nil
317+
}
318+
319+
type a struct {
320+
ct ct
321+
ict interface{ Err(context.Context) error }
322+
}
323+
324+
func (a *a) A(ctx context.Context) error {
325+
if err := a.ct.Err(ctx); err != nil {
326+
return fmt.Errorf("a.ct.Err: %w", err) // want `wrapping error message should be "a\.ct\.Err: %w"`
327+
}
328+
if err := a.ct.Err(ctx); err != nil {
329+
return fmt.Errorf("a.ct.Err: %w", err)
330+
}
331+
if err := a.ict.Err(ctx); err != nil {
332+
return fmt.Errorf("a.ict.Err: %w", err) // want `wrapping error message should be "a\.ict\.Err: %w"`
333+
}
334+
if err := a.ict.Err(ctx); err != nil {
335+
return fmt.Errorf("a.ict.Err: %w", err)
336+
}
337+
return nil
338+
}
339+
340+
func g() error {
341+
return nil
342+
}
343+
344+
func ctx(context.Context) error {
345+
return nil
346+
}
347+
348+
func T(_ ...int) t {
349+
return t{}
350+
}
351+
352+
type t struct{}
353+
354+
func (t) Err() error {
355+
return nil
356+
}
357+
func (t) U() t {
358+
return t{}
359+
}
360+
361+
type tt struct {
362+
t t
363+
ct ct
364+
}
365+
type itt struct {
366+
t interface{ Err() error }
367+
ct interface{ Err(context.Context) error }
368+
}
369+
370+
type ct struct{}
371+
372+
func (ct) Err(context.Context) error { return nil }

0 commit comments

Comments
 (0)