Skip to content

Commit a04dc69

Browse files
committed
move writeDotted into addDefaultCase
1 parent 0cbc264 commit a04dc69

File tree

1 file changed

+20
-19
lines changed

1 file changed

+20
-19
lines changed

gopls/internal/analysis/fillswitch/fillswitch.go

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -188,10 +188,28 @@ func suggestedFixSwitch(stmt *ast.SwitchStmt, pkg *types.Package, info *types.In
188188
}
189189

190190
func addDefaultCase(buf *bytes.Buffer, named *types.Named, expr ast.Expr) {
191+
var dottedBuf bytes.Buffer
192+
// writeDotted emits a dotted path a.b.c.
193+
var writeDotted func(e ast.Expr) bool
194+
writeDotted = func(e ast.Expr) bool {
195+
switch e := e.(type) {
196+
case *ast.SelectorExpr:
197+
if !writeDotted(e.X) {
198+
return false
199+
}
200+
dottedBuf.WriteByte('.')
201+
dottedBuf.WriteString(e.Sel.Name)
202+
return true
203+
case *ast.Ident:
204+
dottedBuf.WriteString(e.Name)
205+
return true
206+
}
207+
return false
208+
}
209+
191210
buf.WriteString("\tdefault:\n")
192211
typeName := fmt.Sprintf("%s.%s", named.Obj().Pkg().Name(), named.Obj().Name())
193-
var dottedBuf bytes.Buffer
194-
if writeDotted(&dottedBuf, expr) {
212+
if writeDotted(expr) {
195213
// Switch tag expression is a dotted path.
196214
// It is safe to re-evaluate it in the default case.
197215
format := fmt.Sprintf("unexpected %s: %%#v", typeName)
@@ -202,23 +220,6 @@ func addDefaultCase(buf *bytes.Buffer, named *types.Named, expr ast.Expr) {
202220
}
203221
}
204222

205-
// writeDotted emits a dotted path a.b.c.
206-
func writeDotted(buf *bytes.Buffer, e ast.Expr) bool {
207-
switch e := e.(type) {
208-
case *ast.SelectorExpr:
209-
if !writeDotted(buf, e.X) {
210-
return false
211-
}
212-
buf.WriteByte('.')
213-
buf.WriteString(e.Sel.Name)
214-
return true
215-
case *ast.Ident:
216-
buf.WriteString(e.Name)
217-
return true
218-
}
219-
return false
220-
}
221-
222223
func namedTypeFromTypeSwitch(stmt *ast.TypeSwitchStmt, info *types.Info) *types.Named {
223224
switch assign := stmt.Assign.(type) {
224225
case *ast.ExprStmt:

0 commit comments

Comments
 (0)