Skip to content

Commit df724f5

Browse files
committed
loader: don't panic when main package is not named 'main'
This can in fact happen in practice, so return an actual error message instead.
1 parent 539cc5c commit df724f5

File tree

3 files changed

+13
-2
lines changed

3 files changed

+13
-2
lines changed

errors_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ func TestErrors(t *testing.T) {
2424
{name: "cgo"},
2525
{name: "compiler"},
2626
{name: "interp"},
27+
{name: "invalidmain"},
2728
{name: "linker-flashoverflow", target: "cortex-m-qemu"},
2829
{name: "linker-ramoverflow", target: "cortex-m-qemu"},
2930
{name: "linker-undefined", target: "darwin/arm64"},

loader/loader.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -418,8 +418,12 @@ func (p *Package) Check() error {
418418
packageName := p.ImportPath
419419
if p == p.program.MainPkg() {
420420
if p.Name != "main" {
421-
// Sanity check. Should not ever trigger.
422-
panic("expected main package to have name 'main'")
421+
return Errors{p, []error{
422+
scanner.Error{
423+
Pos: p.program.fset.Position(p.Files[0].Name.Pos()),
424+
Msg: fmt.Sprintf("expected main package to have name \"main\", not %#v", p.Name),
425+
},
426+
}}
423427
}
424428
packageName = "main"
425429
}

testdata/errors/invalidmain.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
// some comment to move the first line
2+
3+
package foobar
4+
5+
// ERROR: # command-line-arguments
6+
// ERROR: invalidmain.go:3:9: expected main package to have name "main", not "foobar"

0 commit comments

Comments
 (0)