Skip to content

go/types: assertion failed #11347

Closed
Closed
@dvyukov

Description

@dvyukov

gotype crashes on the following program:

package a
var e,g,f g=0>0<<""[""[f]]>f
panic: assertion failed [recovered]
    panic: assertion failed [recovered]
    panic: assertion failed

goroutine 1 [running]:
main.checkPkgFiles.func2()
    src/golang.org/x/tools/cmd/gotype/gotype.go:212 +0x92
golang.org/x/tools/go/types.(*Checker).handleBailout(0xc8201021c0, 0xc820123d58)
    src/golang.org/x/tools/go/types/check.go:219 +0xd8
golang.org/x/tools/go/types.assert(0x63d300)
    src/golang.org/x/tools/go/types/errors.go:18 +0x6c
golang.org/x/tools/go/types.(*Checker).shift(0xc8201021c0, 0xc820010940, 0xc820010980, 0x14)
    src/golang.org/x/tools/go/types/expr.go:685 +0x6cf
golang.org/x/tools/go/types.(*Checker).binary(0xc8201021c0, 0xc820010940, 0x7fdbf004d8a8, 0xc82000aa80, 0x7fdbf004d8e0, 0xc820016c00, 0x14)
    src/golang.org/x/tools/go/types/expr.go:741 +0x136
golang.org/x/tools/go/types.(*Checker).exprInternal(0xc8201021c0, 0xc820010940, 0x7fdbf004d918, 0xc820016c30, 0x0, 0x0, 0x1)
    src/golang.org/x/tools/go/types/expr.go:1388 +0x2ef9
golang.org/x/tools/go/types.(*Checker).rawExpr(0xc8201021c0, 0xc820010940, 0x7fdbf004d918, 0xc820016c30, 0x0, 0x0, 0x0)
    src/golang.org/x/tools/go/types/expr.go:914 +0x7d
golang.org/x/tools/go/types.(*Checker).expr(0xc8201021c0, 0xc820010940, 0x7fdbf004d918, 0xc820016c30)
    src/golang.org/x/tools/go/types/expr.go:1442 +0x63
golang.org/x/tools/go/types.(*Checker).binary(0xc8201021c0, 0xc8200108c0, 0x7fdbf004d8a8, 0xc82000aa60, 0x7fdbf004d918, 0xc820016c30, 0x29)
    src/golang.org/x/tools/go/types/expr.go:729 +0xa6
golang.org/x/tools/go/types.(*Checker).exprInternal(0xc8201021c0, 0xc8200108c0, 0x7fdbf004d918, 0xc820016c60, 0x0, 0x0, 0x7e)
    src/golang.org/x/tools/go/types/expr.go:1388 +0x2ef9
golang.org/x/tools/go/types.(*Checker).rawExpr(0xc8201021c0, 0xc8200108c0, 0x7fdbf004d918, 0xc820016c60, 0x0, 0x0, 0x0)
    src/golang.org/x/tools/go/types/expr.go:914 +0x7d
golang.org/x/tools/go/types.(*Checker).expr(0xc8201021c0, 0xc8200108c0, 0x7fdbf004d918, 0xc820016c60)
    src/golang.org/x/tools/go/types/expr.go:1442 +0x63
golang.org/x/tools/go/types.(*Checker).binary(0xc8201021c0, 0xc8200108c0, 0x7fdbf004d918, 0xc820016c60, 0x7fdbf004d870, 0xc82000ab20, 0x29)
    src/golang.org/x/tools/go/types/expr.go:728 +0x71
golang.org/x/tools/go/types.(*Checker).exprInternal(0xc8201021c0, 0xc8200108c0, 0x7fdbf004d918, 0xc820016c90, 0x0, 0x0, 0x0)
    src/golang.org/x/tools/go/types/expr.go:1388 +0x2ef9
golang.org/x/tools/go/types.(*Checker).rawExpr(0xc8201021c0, 0xc8200108c0, 0x7fdbf004d918, 0xc820016c90, 0x0, 0x0, 0x0)
    src/golang.org/x/tools/go/types/expr.go:914 +0x7d
golang.org/x/tools/go/types.(*Checker).expr(0xc8201021c0, 0xc8200108c0, 0x7fdbf004d918, 0xc820016c90)
    src/golang.org/x/tools/go/types/expr.go:1442 +0x63
golang.org/x/tools/go/types.(*Checker).initVars.func1(0xc8200108c0, 0x0)
    src/golang.org/x/tools/go/types/assignments.go:208 +0x72
golang.org/x/tools/go/types.unpack(0xc8201231a8, 0x1, 0x7ac400, 0x7fdbf004d318, 0x896440, 0x412099)
    src/golang.org/x/tools/go/types/call.go:139 +0x60
golang.org/x/tools/go/types.(*Checker).initVars(0xc8201021c0, 0xc82000ab60, 0x3, 0x3, 0xc82000ea30, 0x1, 0x1, 0x0)
    src/golang.org/x/tools/go/types/assignments.go:208 +0xcb
golang.org/x/tools/go/types.(*Checker).varDecl(0xc8201021c0, 0xc820015c20, 0xc82000ab60, 0x3, 0x3, 0x7fdbf004d870, 0xc82000aa40, 0x7fdbf004d918, 0xc820016c90)
    src/golang.org/x/tools/go/types/decl.go:177 +0x2df
golang.org/x/tools/go/types.(*Checker).objDecl(0xc8201021c0, 0x7fdbf004da28, 0xc820015c20, 0x0, 0x0, 0x0, 0x0)
    src/golang.org/x/tools/go/types/decl.go:82 +0x483
golang.org/x/tools/go/types.(*Checker).ident(0xc8201021c0, 0xc820010840, 0xc82000aa40, 0x0, 0x0, 0x0, 0x0)
    src/golang.org/x/tools/go/types/typexpr.go:37 +0x3a6
golang.org/x/tools/go/types.(*Checker).typExprInternal(0xc8201021c0, 0x7fdbf004d870, 0xc82000aa40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
    src/golang.org/x/tools/go/types/typexpr.go:218 +0x150
golang.org/x/tools/go/types.(*Checker).typExpr(0xc8201021c0, 0x7fdbf004d870, 0xc82000aa40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
    src/golang.org/x/tools/go/types/typexpr.go:133 +0x88
golang.org/x/tools/go/types.(*Checker).typ(0xc8201021c0, 0x7fdbf004d870, 0xc82000aa40, 0x0, 0x0)
    src/golang.org/x/tools/go/types/typexpr.go:141 +0x5b
golang.org/x/tools/go/types.(*Checker).varDecl(0xc8201021c0, 0xc820015bd0, 0xc82000ab60, 0x3, 0x3, 0x7fdbf004d870, 0xc82000aa40, 0x7fdbf004d918, 0xc820016c90)
    src/golang.org/x/tools/go/types/decl.go:144 +0x129
golang.org/x/tools/go/types.(*Checker).objDecl(0xc8201021c0, 0x7fdbf004da28, 0xc820015bd0, 0x0, 0xc820123c80, 0x0, 0x8)
    src/golang.org/x/tools/go/types/decl.go:82 +0x483
golang.org/x/tools/go/types.(*Checker).packageObjects(0xc8201021c0, 0xc820016db0, 0x3, 0x3)
    src/golang.org/x/tools/go/types/resolver.go:400 +0x22a
golang.org/x/tools/go/types.(*Checker).Files(0xc8201021c0, 0xc82006c060, 0x1, 0x1, 0x0, 0x0)
    src/golang.org/x/tools/go/types/check.go:231 +0xfc
golang.org/x/tools/go/types.(*Config).Check(0xc820010800, 0x71ed30, 0x3, 0xc820010780, 0xc82006c060, 0x1, 0x1, 0x0, 0x1, 0x0, ...)
    src/golang.org/x/tools/go/types/api.go:340 +0x248
main.checkPkgFiles(0xc82006c060, 0x1, 0x1)
    src/golang.org/x/tools/cmd/gotype/gotype.go:217 +0x204
main.main()
    src/golang.org/x/tools/cmd/gotype/gotype.go:254 +0x1d9

on commit e9a746d

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions