From b16f3a2d507fc718adcee19514a4c7b0081e726c Mon Sep 17 00:00:00 2001 From: Scott Lawrence Date: Mon, 16 Jan 2012 18:12:25 -0500 Subject: [PATCH] gc: don't fault on return outside function Fixes #2598. R=golang-dev, ality, minux.ma, mpimenov, rsc CC=golang-dev https://golang.org/cl/5510043 --- src/cmd/gc/go.y | 2 +- test/fixedbugs/bug394.go | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 test/fixedbugs/bug394.go diff --git a/src/cmd/gc/go.y b/src/cmd/gc/go.y index d64a3f82b4..6a99a275ca 100644 --- a/src/cmd/gc/go.y +++ b/src/cmd/gc/go.y @@ -1618,7 +1618,7 @@ non_dcl_stmt: { $$ = nod(ORETURN, N, N); $$->list = $2; - if($$->list == nil) { + if($$->list == nil && curfn != N) { NodeList *l; for(l=curfn->dcl; l; l=l->next) { diff --git a/test/fixedbugs/bug394.go b/test/fixedbugs/bug394.go new file mode 100644 index 0000000000..4d0f090bcd --- /dev/null +++ b/test/fixedbugs/bug394.go @@ -0,0 +1,10 @@ +// errchk $G $D/$F.go + +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Issue 2598 +package foo + +return nil // ERROR "non-declaration statement outside function body" -- 2.50.0