Skip to content

Commit be2484f

Browse files
committed
Improve client err handling in migrator
1 parent 3956cfb commit be2484f

File tree

2 files changed

+16
-28
lines changed

2 files changed

+16
-28
lines changed

cmd/internal/migrations/v3/client_usage.go

Lines changed: 12 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -483,10 +483,6 @@ func identifierDeclaredInLines(lines []string, name string) bool {
483483
return true
484484
}
485485

486-
if name == defaultErrName && futureErrsConflictPattern.MatchString(trimmed) {
487-
return true
488-
}
489-
490486
if declaredInVarBlockLine(name, trimmed) {
491487
return true
492488
}
@@ -713,34 +709,19 @@ func rewriteSimpleAgentBlocksWithAlias(content, alias string) (string, bool) {
713709
continue
714710
}
715711
if m := agentBytesCallPattern.FindStringSubmatch(l); len(m) > 0 && m[5] == varName {
716-
newVar := ""
717-
if m[4] == ":=" {
718-
newVar = varName
719-
}
720-
errAssign := errAssignmentOperator(errName, out, lines, i, newVar)
721-
replacement = buildSimpleAgentReplacement(indent, urlExpr, method, cfg, m[2], m[3], m[4], varName, "bytes", "", m[1], errAssign, errName)
712+
replacement = buildSimpleAgentReplacement(indent, urlExpr, method, cfg, m[2], m[3], m[4], varName, "bytes", "", m[1], ":=", errName)
722713
callFound = true
723714
callIndex = j
724715
break
725716
}
726717
if m := agentStringCallPattern.FindStringSubmatch(l); len(m) > 0 && m[5] == varName {
727-
newVar := ""
728-
if m[4] == ":=" {
729-
newVar = varName
730-
}
731-
errAssign := errAssignmentOperator(errName, out, lines, i, newVar)
732-
replacement = buildSimpleAgentReplacement(indent, urlExpr, method, cfg, m[2], m[3], m[4], varName, "string", "", m[1], errAssign, errName)
718+
replacement = buildSimpleAgentReplacement(indent, urlExpr, method, cfg, m[2], m[3], m[4], varName, "string", "", m[1], ":=", errName)
733719
callFound = true
734720
callIndex = j
735721
break
736722
}
737723
if m := agentStructCallPattern.FindStringSubmatch(l); len(m) > 0 && m[5] == varName {
738-
newVar := ""
739-
if m[4] == ":=" {
740-
newVar = varName
741-
}
742-
errAssign := errAssignmentOperator(errName, out, lines, i, newVar)
743-
replacement = buildSimpleAgentReplacement(indent, urlExpr, method, cfg, m[2], m[3], m[4], varName, "struct", strings.TrimSpace(m[6]), m[1], errAssign, errName)
724+
replacement = buildSimpleAgentReplacement(indent, urlExpr, method, cfg, m[2], m[3], m[4], varName, "struct", strings.TrimSpace(m[6]), m[1], ":=", errName)
744725
callFound = true
745726
callIndex = j
746727
break
@@ -1011,11 +992,18 @@ func ensureClientImport(content string) string {
1011992
}
1012993

1013994
func rewriteClientErrorHandling(content string) string {
1014-
updated := clientErrsDeclPattern.ReplaceAllString(content, "err error")
1015-
updated = clientErrIfPattern.ReplaceAllString(updated, "if err != nil {")
995+
// Only rewrite when we see the legacy multi-error usage patterns. This avoids
996+
// mutating unrelated identifiers such as custom "errs" slices.
997+
hasLegacyErrs := clientErrIfPattern.MatchString(content) || clientErrLenPattern.MatchString(content) || clientErrComparePattern.MatchString(content) || clientErrMapPattern.MatchString(content)
998+
if !hasLegacyErrs {
999+
return content
1000+
}
1001+
1002+
updated := clientErrIfPattern.ReplaceAllString(content, "if err != nil {")
10161003
updated = clientErrLenPattern.ReplaceAllString(updated, "err != nil")
10171004
updated = clientErrComparePattern.ReplaceAllString(updated, "err != nil")
10181005
updated = clientErrMapPattern.ReplaceAllString(updated, `"err": err`)
1006+
updated = clientErrsDeclPattern.ReplaceAllString(updated, "err error")
10191007
updated = clientErrVarPattern.ReplaceAllString(updated, "err")
10201008
return updated
10211009
}

cmd/internal/migrations/v3/client_usage_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1297,14 +1297,14 @@ import (
12971297
)
12981298
12991299
func handler(url string) {
1300-
var err error
1300+
var errs []error
13011301
1302-
_, err = client.Get(url)
1302+
_, err := client.Get(url)
13031303
if err != nil {
1304-
err = append(err, err)
1304+
errs = append(errs, err)
13051305
}
13061306
1307-
fmt.Println(err)
1307+
fmt.Println(errs)
13081308
}`)
13091309

13101310
assert.Equal(t, expected, content)

0 commit comments

Comments
 (0)