diff options
author | Robert Griesemer <gri@golang.org> | 2020-12-21 16:48:58 -0800 |
---|---|---|
committer | Robert Griesemer <gri@golang.org> | 2020-12-22 17:51:21 +0000 |
commit | 41e7901ca41de2211567fe2d3f73a8da9ae6189b (patch) | |
tree | 2daf45bcd2e088b663530f930e2400431fe61fec /src/cmd/compile/internal/types2/resolver.go | |
parent | 53c4c17b098093a5636751407e120385031a2e3c (diff) | |
download | go-41e7901ca41de2211567fe2d3f73a8da9ae6189b.tar.gz go-41e7901ca41de2211567fe2d3f73a8da9ae6189b.zip |
[dev.typeparams] cmd/compile/internal/types2: report error for invalid main function signature
Updates #43308.
Change-Id: I2caff83f304c7e104edda76ac3623cce9fc94a8d
Reviewed-on: https://go-review.googlesource.com/c/go/+/279552
Trust: Robert Griesemer <gri@golang.org>
Run-TryBot: Robert Griesemer <gri@golang.org>
Reviewed-by: Robert Findley <rfindley@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Diffstat (limited to 'src/cmd/compile/internal/types2/resolver.go')
-rw-r--r-- | src/cmd/compile/internal/types2/resolver.go | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/cmd/compile/internal/types2/resolver.go b/src/cmd/compile/internal/types2/resolver.go index 2c98ca20e3..7ea9bde5fa 100644 --- a/src/cmd/compile/internal/types2/resolver.go +++ b/src/cmd/compile/internal/types2/resolver.go @@ -397,15 +397,16 @@ func (check *Checker) collectObjects() { obj := NewFunc(d.Name.Pos(), pkg, name, nil) if d.Recv == nil { // regular function - if name == "init" { + if name == "init" || name == "main" && pkg.name == "main" { if d.TParamList != nil { - //check.softErrorf(d.TParamList.Pos(), "func init must have no type parameters") - check.softErrorf(d.Name, "func init must have no type parameters") + check.softErrorf(d, "func %s must have no type parameters", name) } if t := d.Type; len(t.ParamList) != 0 || len(t.ResultList) != 0 { - check.softErrorf(d, "func init must have no arguments and no return values") + check.softErrorf(d, "func %s must have no arguments and no return values", name) } - // don't declare init functions in the package scope - they are invisible + } + // don't declare init functions in the package scope - they are invisible + if name == "init" { obj.parent = pkg.scope check.recordDef(d.Name, obj) // init functions must have a body |