Skip to content

cmd/compile: assertion failure compiling embedded method on parameterized type #47797

@griesemer

Description

@griesemer
package p

type Foo[T any] struct {
        Val T
}

func (f Foo[T]) Bat() {}

type Bar struct {
        Foo[int]
}

func foo() {
        var b Bar
        b.Bat()
}

Compiling produces:

$ go tool compile -G=3 testdata/manual.go2 
testdata/manual.go2:15:9: internal compiler error: assertion failed

goroutine 1 [running]:
runtime/debug.Stack()
        /Users/gri/goroot/src/runtime/debug/stack.go:24 +0x65
cmd/compile/internal/base.FatalfAt({0x0, 0x0}, {0x18f1141, 0x10}, {0x0, 0x0, 0x0})
        /Users/gri/goroot/src/cmd/compile/internal/base/print.go:227 +0x154
cmd/compile/internal/base.Fatalf(...)
        /Users/gri/goroot/src/cmd/compile/internal/base/print.go:196
cmd/compile/internal/base.Assert(...)
        /Users/gri/goroot/src/cmd/compile/internal/base/print.go:239
cmd/compile/internal/noder.assert(...)
        /Users/gri/goroot/src/cmd/compile/internal/noder/stencil.go:27
cmd/compile/internal/noder.(*irgen).genericSubst(0xc000134300, 0xc0004194f0, 0xc00040fba0, {0x1fb5e30, 0x0, 0x0}, 0x1, 0xc000117dc0)
        /Users/gri/goroot/src/cmd/compile/internal/noder/stencil.go:658 +0x2eb
cmd/compile/internal/noder.(*irgen).getInstantiation(0xc000134300, 0xc00040fba0, {0x1fb5e30, 0x0, 0x0}, 0x58)
        /Users/gri/goroot/src/cmd/compile/internal/noder/stencil.go:600 +0x33d
cmd/compile/internal/noder.(*irgen).stencil.func1({0x1a5d3f8, 0xc00036e360})
        /Users/gri/goroot/src/cmd/compile/internal/noder/stencil.go:109 +0x2df
cmd/compile/internal/ir.Visit.func1({0x1a5d3f8, 0xc00036e360})
        /Users/gri/goroot/src/cmd/compile/internal/ir/visit.go:105 +0x30
cmd/compile/internal/ir.doNodes({0xc000117c80, 0x3, 0x0}, 0xc00000dcb0)
        /Users/gri/goroot/src/cmd/compile/internal/ir/node_gen.go:1512 +0x67
cmd/compile/internal/ir.(*Func).doChildren(0x1a5dd58, 0xc000410840)
        /Users/gri/goroot/src/cmd/compile/internal/ir/func.go:152 +0x2e
cmd/compile/internal/ir.DoChildren(...)
        /Users/gri/goroot/src/cmd/compile/internal/ir/visit.go:94
cmd/compile/internal/ir.Visit.func1({0x1a5dd58, 0xc000410840})
        /Users/gri/goroot/src/cmd/compile/internal/ir/visit.go:106 +0x57
cmd/compile/internal/ir.Visit({0x1a5dd58, 0xc000410840}, 0xc000117d80)
        /Users/gri/goroot/src/cmd/compile/internal/ir/visit.go:108 +0xb8
cmd/compile/internal/noder.(*irgen).stencil(0xc000134300)
        /Users/gri/goroot/src/cmd/compile/internal/noder/stencil.go:91 +0x26a
cmd/compile/internal/noder.(*irgen).generate(0xc000134300, {0xc00000e448, 0x1, 0x203000})
        /Users/gri/goroot/src/cmd/compile/internal/noder/irgen.go:265 +0x272
cmd/compile/internal/noder.check2({0xc00000e448, 0x1, 0x1})
        /Users/gri/goroot/src/cmd/compile/internal/noder/irgen.go:92 +0x16d
cmd/compile/internal/noder.LoadPackage({0xc00001e1d0, 0x1, 0x0})
        /Users/gri/goroot/src/cmd/compile/internal/noder/noder.go:90 +0x365
cmd/compile/internal/gc.Main(0x1918120)
        /Users/gri/goroot/src/cmd/compile/internal/gc/main.go:190 +0xaf3
main.main()
        /Users/gri/goroot/src/cmd/compile/main.go:55 +0xdd

cc: @danscales

Metadata

Metadata

Assignees

No one assigned

    Labels

    FrozenDueToAgeNeedsInvestigationSomeone must examine and confirm this is a valid issue and not a duplicate of an existing one.

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions