]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile/internal/typecheck: remove HasNamedResults check
authorMatthew Dempsky <mdempsky@google.com>
Tue, 12 Sep 2023 00:23:55 +0000 (17:23 -0700)
committerGopher Robot <gobot@golang.org>
Tue, 12 Sep 2023 04:52:25 +0000 (04:52 +0000)
types2 has already checked for us that bare returns are valid, so no
need to duplicate the effort in typecheck.

Change-Id: I13b2387173966ba44058fbc841327896e04184e2
Reviewed-on: https://go-review.googlesource.com/c/go/+/527515
Auto-Submit: Matthew Dempsky <mdempsky@google.com>
Reviewed-by: Robert Griesemer <gri@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>

src/cmd/compile/internal/ir/node.go
src/cmd/compile/internal/typecheck/stmt.go

index f3d1f21eeb58d1f02e0467be71d51fdeab3863d5..300084aea6076e9b31bf550debe59245471aa3e0 100644 (file)
@@ -482,11 +482,6 @@ func IsMethod(n Node) bool {
        return n.Type().Recv() != nil
 }
 
-func HasNamedResults(fn *Func) bool {
-       typ := fn.Type()
-       return typ.NumResults() > 0 && types.OrigSym(typ.Result(0).Sym) != nil
-}
-
 // HasUniquePos reports whether n has a unique position that can be
 // used for reporting error messages.
 //
index 93a147c335c696b5b7fe2096d3fca0a1748fce58..9bb3f7939230278ccba911d9cd8fb0767b19c77a 100644 (file)
@@ -423,17 +423,14 @@ func tcRange(n *ir.RangeStmt) {
 
 // tcReturn typechecks an ORETURN node.
 func tcReturn(n *ir.ReturnStmt) ir.Node {
-       typecheckargs(n)
        if ir.CurFunc == nil {
-               base.Errorf("return outside function")
-               n.SetType(nil)
-               return n
+               base.FatalfAt(n.Pos(), "return outside function")
        }
 
-       if ir.HasNamedResults(ir.CurFunc) && len(n.Results) == 0 {
-               return n
+       typecheckargs(n)
+       if len(n.Results) != 0 {
+               typecheckaste(ir.ORETURN, nil, false, ir.CurFunc.Type().Results(), n.Results, func() string { return "return argument" })
        }
-       typecheckaste(ir.ORETURN, nil, false, ir.CurFunc.Type().Results(), n.Results, func() string { return "return argument" })
        return n
 }