[tools] gopls/internal/server: fix parsing vulncheck action

1 view
Skip to first unread message

Ethan Lee (Gerrit)

unread,
Jun 26, 2026, 3:39:26 PM (15 hours ago) Jun 26
to goph...@pubsubhelper.golang.org, golang-co...@googlegroups.com

Ethan Lee has uploaded the change for review

Commit message

gopls/internal/server: fix parsing vulncheck action

Previously, the action var in checkDepedencyChanges was being shadowed
within an inner context. As a result, the outer action var's value
remained null despite the inner action var being set correctly. Removed
this ambiguity and simplified the return of parseVulncheckAction.
Triggering govulncheck from the vulncheck_prompt works now.

Fixes golang/go#79826
Change-Id: I431bcf381f55616a2a8ff325b7f23d2f07a7e9fd

Change diff

diff --git a/gopls/internal/server/vulncheck_prompt.go b/gopls/internal/server/vulncheck_prompt.go
index cb69f1a..73f34aa 100644
--- a/gopls/internal/server/vulncheck_prompt.go
+++ b/gopls/internal/server/vulncheck_prompt.go
@@ -169,8 +169,8 @@
event.Error(ctx, "showing dependency changed notification failed", err)
return
}
- action, ok := parseVulncheckAction(choice)
- if !ok {
+ action = parseVulncheckAction(choice)
+ if action == "" {
event.Error(ctx, "parsing vulncheck action failed", fmt.Errorf("unexpected action: %s", choice))
return
}
@@ -279,8 +279,8 @@
event.Error(ctx, "vulncheck remediation failed", err)
return
}
- upgradeAction, ok := parseVulnupgradeAction(action)
- if !ok {
+ upgradeAction := parseVulnupgradeAction(action)
+ if upgradeAction == "" {
event.Error(ctx, "parsing vulncheck remediation action failed", fmt.Errorf("unexpected action: %s", action))
return
}
@@ -400,21 +400,21 @@
VulncheckMode string `json:"vulncheck"`
}

-func parseVulncheckAction(s string) (vulncheckAction, bool) {
+func parseVulncheckAction(s string) vulncheckAction {
return parseAction(s, []vulncheckAction{vulncheckActionYes, vulncheckActionNo, vulncheckActionAlways, vulncheckActionNever})
}

-func parseVulnupgradeAction(s string) (vulnupgradeAction, bool) {
+func parseVulnupgradeAction(s string) vulnupgradeAction {
return parseAction(s, []vulnupgradeAction{vulnupgradeActionUpgradeAll, vulnupgradeActionIgnore})
}

-func parseAction[T ~string](s string, actions []T) (T, bool) {
+func parseAction[T ~string](s string, actions []T) T {
for _, a := range actions {
if strings.EqualFold(string(a), s) {
- return a, true
+ return a
}
}
- return "", false
+ return ""
}

func getVulncheckPreference() (vulncheckAction, error) {
@@ -433,8 +433,8 @@
if err := json.Unmarshal(content, &config); err != nil {
return "", err
}
- action, ok := parseVulncheckAction(config.VulncheckMode)
- if !ok {
+ action := parseVulncheckAction(config.VulncheckMode)
+ if action == "" {
return "", fmt.Errorf("unexpected vulncheck mode in config: %s", config.VulncheckMode)
}
return action, nil

Change information

Files:
  • M gopls/internal/server/vulncheck_prompt.go
Change size: S
Delta: 1 file changed, 11 insertions(+), 11 deletions(-)
Open in Gerrit

Related details

Attention set is empty
Submit Requirements:
  • requirement is not satisfiedCode-Review
  • requirement satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
  • requirement is not satisfiedTryBots-Pass
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: newchange
Gerrit-Project: tools
Gerrit-Branch: master
Gerrit-Change-Id: I431bcf381f55616a2a8ff325b7f23d2f07a7e9fd
Gerrit-Change-Number: 794880
Gerrit-PatchSet: 1
Gerrit-Owner: Ethan Lee <etha...@google.com>
Gerrit-Reviewer: Ethan Lee <etha...@google.com>
unsatisfied_requirement
satisfied_requirement
open
diffy
Reply all
Reply to author
Forward
0 new messages