From 43f4e58ca03d5d760aa346b772cf6094dcfba27b Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 7 Feb 2026 16:04:31 +0000 Subject: [PATCH 1/4] Initial plan From 6099b465d97350f9d0c4dad2a132c3e09153e42c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 7 Feb 2026 16:06:30 +0000 Subject: [PATCH 2/4] Extract duplicate error-checking pattern into processAlerts helper Co-authored-by: Tasty-Kiwi <26067386+Tasty-Kiwi@users.noreply.github.com> --- wasm/wasm.go | 71 +++++++++++++++++++++------------------------------- 1 file changed, 29 insertions(+), 42 deletions(-) diff --git a/wasm/wasm.go b/wasm/wasm.go index 3cfca30..8602ec4 100644 --- a/wasm/wasm.go +++ b/wasm/wasm.go @@ -64,6 +64,29 @@ func formatAlerts(alertsList []alerts.Alert, source string) string { return sb.String() } +// processAlerts processes a list of alerts, returning an error if any are errors, +// or accumulating warnings in the provided strings.Builder. +func processAlerts(alertsList []alerts.Alert, source string, warnings *strings.Builder) error { + if len(alertsList) == 0 { + return nil + } + + hasError := false + for _, a := range alertsList { + if a.AlertType() == alerts.Error { + hasError = true + break + } + } + + msg := formatAlerts(alertsList, source) + if hasError { + return fmt.Errorf("%s", msg) + } + warnings.WriteString(msg) + return nil +} + func compile(code string) (string, error) { var warnings strings.Builder @@ -73,39 +96,15 @@ func compile(code string) (string, error) { return "", err } - if len(l.GetAlerts()) > 0 { - hasError := false - for _, a := range l.GetAlerts() { - if a.AlertType() == alerts.Error { - hasError = true - break - } - } - - msg := formatAlerts(l.GetAlerts(), code) - if hasError { - return "", fmt.Errorf("%s", msg) - } - warnings.WriteString(msg) + if err := processAlerts(l.GetAlerts(), code, &warnings); err != nil { + return "", err } p := parser.NewParser(tokensList) program := p.Parse() - if len(p.GetAlerts()) > 0 { - hasError := false - for _, a := range p.GetAlerts() { - if a.AlertType() == alerts.Error { - hasError = true - break - } - } - - msg := formatAlerts(p.GetAlerts(), code) - if hasError { - return "", fmt.Errorf("%s", msg) - } - warnings.WriteString(msg) + if err := processAlerts(p.GetAlerts(), code, &warnings); err != nil { + return "", err } walker.SetupLibraryEnvironments() @@ -118,20 +117,8 @@ func compile(code string) (string, error) { w.Walk() w.PostWalk() - if len(w.GetAlerts()) > 0 { - hasError := false - for _, a := range w.GetAlerts() { - if a.AlertType() == alerts.Error { - hasError = true - break - } - } - - msg := formatAlerts(w.GetAlerts(), code) - if hasError { - return "", fmt.Errorf("%s", msg) - } - warnings.WriteString(msg) + if err := processAlerts(w.GetAlerts(), code, &warnings); err != nil { + return "", err } gen := generator.NewGenerator() From 32e97ebe86f142a9f1f05eeb8b197f8589c45fde Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 7 Feb 2026 16:07:00 +0000 Subject: [PATCH 3/4] Remove unnecessary format string in processAlerts Co-authored-by: Tasty-Kiwi <26067386+Tasty-Kiwi@users.noreply.github.com> --- wasm/wasm.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wasm/wasm.go b/wasm/wasm.go index 8602ec4..43f92cd 100644 --- a/wasm/wasm.go +++ b/wasm/wasm.go @@ -81,7 +81,7 @@ func processAlerts(alertsList []alerts.Alert, source string, warnings *strings.B msg := formatAlerts(alertsList, source) if hasError { - return fmt.Errorf("%s", msg) + return fmt.Errorf(msg) } warnings.WriteString(msg) return nil From 3c347d74cd61fd4188285c82afd7b48bb592258e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 7 Feb 2026 16:07:36 +0000 Subject: [PATCH 4/4] Use errors.New instead of fmt.Errorf for pre-formatted strings Co-authored-by: Tasty-Kiwi <26067386+Tasty-Kiwi@users.noreply.github.com> --- wasm/wasm.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/wasm/wasm.go b/wasm/wasm.go index 43f92cd..4ca129c 100644 --- a/wasm/wasm.go +++ b/wasm/wasm.go @@ -4,6 +4,7 @@ package wasm import ( "bufio" + "errors" "fmt" "hybroid/alerts" "hybroid/ast" @@ -81,7 +82,7 @@ func processAlerts(alertsList []alerts.Alert, source string, warnings *strings.B msg := formatAlerts(alertsList, source) if hasError { - return fmt.Errorf(msg) + return errors.New(msg) } warnings.WriteString(msg) return nil