Skip to content

Commit 0d2befa

Browse files
adonovangopherbot
authored andcommitted
go/analysis/passes/unreachable: use refactor.DeleteStmt
This change causes unreachable to use the DeleteStmt operator, resulting in cleaner edits. Change-Id: I2457033f379330dfd698e13e0b93ec4542f6fab6 Reviewed-on: https://go-review.googlesource.com/c/tools/+/711321 Reviewed-by: Peter Weinberger <pjw@google.com> Auto-Submit: Alan Donovan <adonovan@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
1 parent 3e909b6 commit 0d2befa

File tree

2 files changed

+8
-41
lines changed

2 files changed

+8
-41
lines changed

go/analysis/passes/unreachable/testdata/src/a/a.go.golden

Lines changed: 0 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -110,27 +110,23 @@ func _() int {
110110
func _() int {
111111
print(1)
112112
return 2
113-
114113
}
115114

116115
func _() int {
117116
L:
118117
print(1)
119118
goto L
120-
121119
}
122120

123121
func _() int {
124122
print(1)
125123
panic(2)
126-
127124
}
128125

129126
func _() int {
130127
{
131128
print(1)
132129
return 2
133-
134130
}
135131
}
136132

@@ -139,15 +135,13 @@ L:
139135
{
140136
print(1)
141137
goto L
142-
143138
}
144139
}
145140

146141
func _() int {
147142
print(1)
148143
{
149144
panic(2)
150-
151145
}
152146
}
153147

@@ -156,7 +150,6 @@ func _() int {
156150
print(1)
157151
return 2
158152
}
159-
160153
}
161154

162155
func _() int {
@@ -165,15 +158,13 @@ L:
165158
print(1)
166159
goto L
167160
}
168-
169161
}
170162

171163
func _() int {
172164
print(1)
173165
{
174166
panic(2)
175167
}
176-
177168
}
178169

179170
func _() int {
@@ -980,27 +971,23 @@ func _() int {
980971

981972
func _() int {
982973
return 2
983-
984974
println() // ok
985975
}
986976

987977
func _() int {
988978
L:
989979
goto L
990-
991980
println() // ok
992981
}
993982

994983
func _() int {
995984
panic(2)
996-
997985
println() // ok
998986
}
999987

1000988
func _() int {
1001989
{
1002990
return 2
1003-
1004991
}
1005992
println() // ok
1006993
}
@@ -1009,15 +996,13 @@ func _() int {
1009996
L:
1010997
{
1011998
goto L
1012-
1013999
}
10141000
println() // ok
10151001
}
10161002

10171003
func _() int {
10181004
{
10191005
panic(2)
1020-
10211006
}
10221007
println() // ok
10231008
}
@@ -1026,7 +1011,6 @@ func _() int {
10261011
{
10271012
return 2
10281013
}
1029-
10301014
println() // ok
10311015
}
10321016

@@ -1035,15 +1019,13 @@ L:
10351019
{
10361020
goto L
10371021
}
1038-
10391022
println() // ok
10401023
}
10411024

10421025
func _() int {
10431026
{
10441027
panic(2)
10451028
}
1046-
10471029
println() // ok
10481030
}
10491031

@@ -1145,27 +1127,23 @@ var _ = func() int {
11451127
var _ = func() int {
11461128
print(1)
11471129
return 2
1148-
11491130
}
11501131

11511132
var _ = func() int {
11521133
L:
11531134
print(1)
11541135
goto L
1155-
11561136
}
11571137

11581138
var _ = func() int {
11591139
print(1)
11601140
panic(2)
1161-
11621141
}
11631142

11641143
var _ = func() int {
11651144
{
11661145
print(1)
11671146
return 2
1168-
11691147
}
11701148
}
11711149

@@ -1174,15 +1152,13 @@ L:
11741152
{
11751153
print(1)
11761154
goto L
1177-
11781155
}
11791156
}
11801157

11811158
var _ = func() int {
11821159
print(1)
11831160
{
11841161
panic(2)
1185-
11861162
}
11871163
}
11881164

@@ -1191,7 +1167,6 @@ var _ = func() int {
11911167
print(1)
11921168
return 2
11931169
}
1194-
11951170
}
11961171

11971172
var _ = func() int {
@@ -1200,15 +1175,13 @@ L:
12001175
print(1)
12011176
goto L
12021177
}
1203-
12041178
}
12051179

12061180
var _ = func() int {
12071181
print(1)
12081182
{
12091183
panic(2)
12101184
}
1211-
12121185
}
12131186

12141187
var _ = func() int {
@@ -2015,27 +1988,23 @@ var _ = func() int {
20151988

20161989
var _ = func() int {
20171990
return 2
2018-
20191991
println() // ok
20201992
}
20211993

20221994
var _ = func() int {
20231995
L:
20241996
goto L
2025-
20261997
println() // ok
20271998
}
20281999

20292000
var _ = func() int {
20302001
panic(2)
2031-
20322002
println() // ok
20332003
}
20342004

20352005
var _ = func() int {
20362006
{
20372007
return 2
2038-
20392008
}
20402009
println() // ok
20412010
}
@@ -2044,15 +2013,13 @@ var _ = func() int {
20442013
L:
20452014
{
20462015
goto L
2047-
20482016
}
20492017
println() // ok
20502018
}
20512019

20522020
var _ = func() int {
20532021
{
20542022
panic(2)
2055-
20562023
}
20572024
println() // ok
20582025
}
@@ -2061,7 +2028,6 @@ var _ = func() int {
20612028
{
20622029
return 2
20632030
}
2064-
20652031
println() // ok
20662032
}
20672033

@@ -2070,15 +2036,13 @@ L:
20702036
{
20712037
goto L
20722038
}
2073-
20742039
println() // ok
20752040
}
20762041

20772042
var _ = func() int {
20782043
{
20792044
panic(2)
20802045
}
2081-
20822046
println() // ok
20832047
}
20842048

go/analysis/passes/unreachable/unreachable.go

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import (
1616
"golang.org/x/tools/go/analysis/passes/inspect"
1717
"golang.org/x/tools/go/analysis/passes/internal/analysisutil"
1818
"golang.org/x/tools/go/ast/inspector"
19+
"golang.org/x/tools/internal/refactor"
1920
)
2021

2122
//go:embed doc.go
@@ -188,6 +189,11 @@ func (d *deadState) findDead(stmt ast.Stmt) {
188189
case *ast.EmptyStmt:
189190
// do not warn about unreachable empty statements
190191
default:
192+
var (
193+
inspect = d.pass.ResultOf[inspect.Analyzer].(*inspector.Inspector)
194+
curStmt, _ = inspect.Root().FindNode(stmt)
195+
tokFile = d.pass.Fset.File(stmt.Pos())
196+
)
191197
// (This call to pass.Report is a frequent source
192198
// of diagnostics beyond EOF in a truncated file;
193199
// see #71659.)
@@ -196,11 +202,8 @@ func (d *deadState) findDead(stmt ast.Stmt) {
196202
End: stmt.End(),
197203
Message: "unreachable code",
198204
SuggestedFixes: []analysis.SuggestedFix{{
199-
Message: "Remove",
200-
TextEdits: []analysis.TextEdit{{
201-
Pos: stmt.Pos(),
202-
End: stmt.End(),
203-
}},
205+
Message: "Remove",
206+
TextEdits: refactor.DeleteStmt(tokFile, curStmt),
204207
}},
205208
})
206209
d.reachable = true // silence error about next statement

0 commit comments

Comments
 (0)