From b0e691727652333b8d569c56b47861f251fae5c8 Mon Sep 17 00:00:00 2001 From: upstream Date: Fri, 4 Sep 2026 06:21:22 +0200 Subject: [PATCH] Upstream oklog/run state of the touched files before 8b4632a8c6 --- actors.go | 11 +++++------ actors_test.go | 21 --------------------- 2 files changed, 5 insertions(+), 27 deletions(-) diff --git a/actors.go b/actors.go index c430c12..ad6aed8 100644 --- a/actors.go +++ b/actors.go @@ -82,15 +82,14 @@ func (e SignalError) Is(err error) bool { } // As fixes a design error in the SignalError type, so that errors.As with the -// literal `&SignalError{}` will return true and, per the errors.As contract, -// populate target with the underlying signal. +// literal `&SignalError{}` will return true. func (e SignalError) As(target interface{}) bool { - t, ok := target.(*SignalError) - if !ok { + switch target.(type) { + case *SignalError, SignalError: + return true + default: return false } - *t = e - return true } // ErrSignal is returned by SignalHandler when a signal triggers termination. diff --git a/actors_test.go b/actors_test.go index 3bb568f..d8d7ea1 100644 --- a/actors_test.go +++ b/actors_test.go @@ -58,27 +58,6 @@ func TestSignalError(t *testing.T) { } } -// errors.As must populate a value-typed SignalError target, not merely -// report a match; #27 made it return true without ever assigning. -func TestSignalErrorAsAssignsTarget(t *testing.T) { - testc := make(chan os.Signal, 1) - ctx := putTestSigChan(context.Background(), testc) - - var rg Group - rg.Add(SignalHandler(ctx, os.Interrupt)) - testc <- os.Interrupt - err := rg.Run() - - var target SignalError - if want, have := true, errors.As(err, &target); want != have { - t.Fatalf("errors.As(err, &target): want %v, have %v", want, have) - } - - if want, have := os.Interrupt, target.Signal; want != have { - t.Errorf("target.Signal: want %v, have %v (errors.As reported success but did not assign the target)", want, have) - } -} - func TestSignalHandlerNil(t *testing.T) { ctx, cancel := context.WithCancel(context.Background()) var rg Group