Skip to content

cmd/compile: cannot export = (21) node #44325

@rogpeppe

Description

@rogpeppe

commit 2f0da6d

The following testscript example gives gives me an internal compiler error:

cd p1
go install

-- go.mod --
module example

go 1.15
-- go.sum --
-- p1/f.go --
package p1

import (
	"example/p2"
)

func F() {
	p2.FM()
}
-- p2/w.go --
package p2

func FM() func() {
	return func() {
		_ = func() int {
			return 0
		}
	}
}

The error I see is:

> cd p1
$WORK/p1
> go install
[stderr]
# example/p1
./f.go:8:7: internal compiler error: cannot export = (21) node
	==> please file an issue and assign to gri@

goroutine 1 [running]:
runtime/debug.Stack(0xe9d640, 0xc00000e018, 0x0)
	/home/rogpeppe/go/src/runtime/debug/stack.go:24 +0x9f
cmd/compile/internal/base.FatalfAt(0x505000000004, 0xd85733, 0x47, 0xc0006130c8, 0x2, 0x2)
	/home/rogpeppe/go/src/cmd/compile/internal/base/print.go:227 +0x1bc
cmd/compile/internal/base.Fatalf(...)
	/home/rogpeppe/go/src/cmd/compile/internal/base/print.go:196
cmd/compile/internal/typecheck.(*exportWriter).expr(0xc0006c6540, 0xeab610, 0xc0006380a0)
	/home/rogpeppe/go/src/cmd/compile/internal/typecheck/iexport.go:1581 +0x65a
cmd/compile/internal/typecheck.(*exportWriter).exprList(0xc0006c6540, 0xc0006300b0, 0x1, 0x1)
	/home/rogpeppe/go/src/cmd/compile/internal/typecheck/iexport.go:1287 +0x6c
cmd/compile/internal/typecheck.(*exportWriter).stmt(0xc0006c6540, 0xead230, 0xc0003b85f0)
	/home/rogpeppe/go/src/cmd/compile/internal/typetestscript: exit 1
check/iexport.go:1186 +0xadc
cmd/compile/internal/typecheck.(*exportWriter).node(0xc0006c6540, 0xead230, 0xc0003b85f0)
	/home/rogpeppe/go/src/cmd/compile/internal/typecheck/iexport.go:1116 +0x78
cmd/compile/internal/typecheck.(*exportWriter).stmtList(0xc0006c6540, 0xc000630080, 0x1, 0x1)
	/home/rogpeppe/go/src/cmd/compile/internal/typecheck/iexport.go:1109 +0x6c
cmd/compile/internal/typecheck.(*exportWriter).expr(0xc0006c6540, 0xeabc50, 0xc0003b8640)
	/home/rogpeppe/go/src/cmd/compile/internal/typecheck/iexport.go:1395 +0x3ca
cmd/compile/internal/typecheck.(*exportWriter).stmt(0xc0006c6540, 0xeab610, 0xc0003b8690)
	/home/rogpeppe/go/src/cmd/compile/internal/typecheck/iexport.go:1162 +0x44e
cmd/compile/internal/typecheck.(*exportWriter).node(0xc0006c6540, 0xeab610, 0xc0003b8690)
	/home/rogpeppe/go/src/cmd/compile/internal/typecheck/iexport.go:1116 +0x78
cmd/compile/internal/typecheck.(*exportWriter).stmtList(0xc0006c6540, 0xc000050870, 0x1, 0x1)
	/home/rogpeppe/go/src/cmd/compile/internal/typecheck/iexport.go:1109 +0x6c
cmd/compile/internal/typecheck.(*exportWriter).expr(0xc0006c6540, 0xeabc50, 0xc0003b86e0)
	/home/rogpeppe/go/src/cmd/compile/internal/typecheck/iexport.go:1395 +0x3ca
cmd/compile/internal/typecheck.(*exportWriter).exprList(0xc0006c6540, 0xc000050880, 0x1, 0x1)
	/home/rogpeppe/go/src/cmd/compile/internal/typecheck/iexport.go:1287 +0x6c
cmd/compile/internal/typecheck.(*exportWriter).stmt(0xc0006c6540, 0xead230, 0xc0003b8730)
	/home/rogpeppe/go/src/cmd/compile/internal/typecheck/iexport.go:1186 +0xadc
cmd/compile/internal/typecheck.(*exportWriter).node(0xc0006c6540, 0xead230, 0xc0003b8730)
	/home/rogpeppe/go/src/cmd/compile/internal/typecheck/iexport.go:1116 +0x78
cmd/compile/internal/typecheck.(*exportWriter).stmtList(0xc0006c6540, 0xc000050890, 0x1, 0x1)
	/home/rogpeppe/go/src/cmd/compile/internal/typecheck/iexport.go:1109 +0x6c
cmd/compile/internal/typecheck.(*exportWriter).funcBody(0xc0006c6540, 0xc00013a420)
	/home/rogpeppe/go/src/cmd/compile/internal/typecheck/iexport.go:1104 +0x8b
cmd/compile/internal/typecheck.(*iexporter).doInline(0xc0001080a0, 0xc0003aea90)
	/home/rogpeppe/go/src/cmd/compile/internal/typecheck/iexport.go:545 +0xd3
cmd/compile/internal/typecheck.(*exportWriter).funcExt(0xc0006c6460, 0xc0003aea90)
	/home/rogpeppe/go/src/cmd/compile/internal/typecheck/iexport.go:1042 +0x1cf
cmd/compile/internal/typecheck.(*iexporter).doDecl(0xc0001080a0, 0xc0003aea90)
	/home/rogpeppe/go/src/cmd/compile/internal/typecheck/iexport.go:458 +0x147
cmd/compile/internal/typecheck.WriteExports(0xc0006ac480)
	/home/rogpeppe/go/src/cmd/compile/internal/typecheck/iexport.go:274 +0x2ab
cmd/compile/internal/gc.dumpexport(0xc0006ba240)
	/home/rogpeppe/go/src/cmd/compile/internal/gc/export.go:34 +0x1a5
cmd/compile/internal/gc.dumpCompilerObj(0xc0006ba240)
	/home/rogpeppe/go/src/cmd/compile/internal/gc/obj.go:106 +0x39
cmd/compile/internal/gc.dumpobj1(0x7ffc3ab34911, 0x4e, 0x3)
	/home/rogpeppe/go/src/cmd/compile/internal/gc/obj.go:62 +0x174
cmd/compile/internal/gc.dumpobj()
	/home/rogpeppe/go/src/cmd/compile/internal/gc/obj.go:43 +0x50
cmd/compile/internal/gc.Main(0xd8bf40)
	/home/rogpeppe/go/src/cmd/compile/internal/gc/main.go:299 +0xefa
main.main()
	/home/rogpeppe/go/src/cmd/compile/main.go:54 +0xb1


[exit status 2]
FAIL: /tmp/testscript564923438/0/script.txt:2: unexpected go command failure
error running /tmp/export-bug.txt in /tmp/testscript564923438/0

Metadata

Metadata

Assignees

No one assigned

    Labels

    FrozenDueToAgeNeedsFixThe path to resolution is known, but the work has not been done.

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions