aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJosh Bleecher Snyder <josharian@gmail.com>2017-03-20 13:16:07 -0700
committerJosh Bleecher Snyder <josharian@gmail.com>2017-03-21 04:04:46 +0000
commit0dafb7d9624c4c2bc876f03f2a6fa8d4a2ce6963 (patch)
tree7aca40f9375ca126f37718a3d8ff1439fab81776 /src
parent49a533e212973d4403de640005fdcf88a23f91c4 (diff)
downloadgo-0dafb7d9624c4c2bc876f03f2a6fa8d4a2ce6963.tar.xz
cmd/compile: check for missing function body earlier
Tested by fixedbugs/issue3705.go. This removes a dependency on lineno from near the backend. Change-Id: I228bd0ad7295cf881b9bdeb0df9d18483fb96821 Reviewed-on: https://go-review.googlesource.com/38382 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
Diffstat (limited to 'src')
-rw-r--r--src/cmd/compile/internal/gc/noder.go4
-rw-r--r--src/cmd/compile/internal/gc/pgen.go6
2 files changed, 4 insertions, 6 deletions
diff --git a/src/cmd/compile/internal/gc/noder.go b/src/cmd/compile/internal/gc/noder.go
index a7f0ba54f0..41c05c6480 100644
--- a/src/cmd/compile/internal/gc/noder.go
+++ b/src/cmd/compile/internal/gc/noder.go
@@ -319,6 +319,10 @@ func (p *noder) funcDecl(fun *syntax.FuncDecl) *Node {
funcbody(f)
+ if f.Nbody.Len() == 0 && (pure_go || strings.HasPrefix(f.Func.Nname.Sym.Name, "init.")) {
+ yyerrorl(f.Pos, "missing function body for %q", f.Func.Nname.Sym.Name)
+ }
+
return f
}
diff --git a/src/cmd/compile/internal/gc/pgen.go b/src/cmd/compile/internal/gc/pgen.go
index e588ab210c..6294c125c7 100644
--- a/src/cmd/compile/internal/gc/pgen.go
+++ b/src/cmd/compile/internal/gc/pgen.go
@@ -12,7 +12,6 @@ import (
"cmd/internal/sys"
"fmt"
"sort"
- "strings"
)
// "Portable" code generation.
@@ -278,11 +277,6 @@ func compile(fn *Node) {
dowidth(fn.Type)
if fn.Nbody.Len() == 0 {
- if pure_go || strings.HasPrefix(fn.Func.Nname.Sym.Name, "init.") {
- yyerror("missing function body for %q", fn.Func.Nname.Sym.Name)
- return
- }
-
emitptrargsmap()
return
}