aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/compile/internal/types2/resolver.go
diff options
context:
space:
mode:
authorRobert Griesemer <gri@golang.org>2020-12-21 16:48:58 -0800
committerRobert Griesemer <gri@golang.org>2020-12-22 17:51:21 +0000
commit41e7901ca41de2211567fe2d3f73a8da9ae6189b (patch)
tree2daf45bcd2e088b663530f930e2400431fe61fec /src/cmd/compile/internal/types2/resolver.go
parent53c4c17b098093a5636751407e120385031a2e3c (diff)
downloadgo-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.go11
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