-
Notifications
You must be signed in to change notification settings - Fork 18.4k
Closed as not planned
Closed as not planned
Copy link
Description
Go version
go version go1.23.6 darwin/arm64
Output of go env
in your module/workspace:
GO111MODULE=''
GOARCH='arm64'
GOBIN='/Users/mitch/.local/share/mise/installs/go/1.23.6/bin'
GOCACHE='/Users/mitch/Library/Caches/go-build'
GOENV='/Users/mitch/Library/Application Support/go/env'
GOEXE=''
GOEXPERIMENT='aliastypeparams'
GOFLAGS=''
GOHOSTARCH='arm64'
GOHOSTOS='darwin'
GOINSECURE=''
GOMODCACHE='/Users/mitch/go/pkg/mod'
GONOPROXY=''
GONOSUMDB=''
GOOS='darwin'
GOPATH='/Users/mitch/go'
GOPRIVATE=''
GOPROXY='https://proxy.golang.org,direct'
GOROOT='/Users/mitch/.local/share/mise/installs/go/1.23.6'
GOSUMDB='sum.golang.org'
GOTMPDIR=''
GOTOOLCHAIN='auto'
GOTOOLDIR='/Users/mitch/.local/share/mise/installs/go/1.23.6/pkg/tool/darwin_arm64'
GOVCS=''
GOVERSION='go1.23.6'
GODEBUG='gotypesalias=1'
GOTELEMETRY='local'
GOTELEMETRYDIR='/Users/mitch/Library/Application Support/go/telemetry'
GCCGO='gccgo'
GOARM64='v8.0'
AR='ar'
CC='clang'
CXX='clang++'
CGO_ENABLED='1'
GOMOD='/Users/mitch/projects/gotypealias/go.mod'
GOWORK=''
CGO_CFLAGS='-O2 -g'
CGO_CPPFLAGS=''
CGO_CXXFLAGS='-O2 -g'
CGO_FFLAGS='-O2 -g'
CGO_LDFLAGS='-O2 -g'
PKG_CONFIG='pkg-config'
GOGCCFLAGS='-fPIC -arch arm64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -ffile-prefix-map=/var/folders/c0/m8wzsq5904s7bcn4qjh28qw80000gn/T/go-build1912046319=/tmp/go-build -gno-record-gcc-switches -fno-common'
What did you do?
I made a minimal go program (gotypealias.zip) with a test that imports a package containing a type alias.
// go.mod
module gotypealias
go 1.23.6
// main_test.go
package main
import (
"gotypealias/pkg"
"testing"
)
func TestXxx(t *testing.T) {
t.Log(pkg.Hello())
}
// pkg/pkg.go
package pkg
func Hello() string {
return "Hello"
}
type StructType[T any] struct{}
type Alias[T any] = StructType[T]
What did you see happen?
go test . -v
# gotypealias
# [gotypealias]
panic: runtime error: index out of range [0] with length 0 [recovered]
panic: runtime error: index out of range [0] with length 0
goroutine 1 [running]:
go/types.(*Checker).handleBailout(0x140000056c0, 0x1400002d9d8)
go/types/check.go:404 +0x9c
panic({0x1010e9bc0?, 0x14000000750?})
runtime/panic.go:785 +0x124
go/internal/gcimporter.(*reader).doTyp(0x1400002c3f8)
go/internal/gcimporter/ureader.go:308 +0x3f4
go/internal/gcimporter.(*pkgReader).typIdx(0x140000038c0, {0x10bebe0?, 0x1?}, 0x14000234360)
go/internal/gcimporter/ureader.go:276 +0x150
go/internal/gcimporter.(*reader).typ(0x1400002c668)
go/internal/gcimporter/ureader.go:246 +0x4c
go/internal/gcimporter.(*reader).obj(0x1400002c668)
go/internal/gcimporter/ureader.go:438 +0xcc
go/internal/gcimporter.(*reader).doTyp(0x1400002c668)
go/internal/gcimporter/ureader.go:299 +0x84
go/internal/gcimporter.(*pkgReader).typIdx(0x140000038c0, {0x2c?, 0x0?}, 0x14000234360)
go/internal/gcimporter/ureader.go:276 +0x150
go/internal/gcimporter.(*reader).typ(0x1400002c900)
go/internal/gcimporter/ureader.go:246 +0x4c
go/internal/gcimporter.(*pkgReader).objIdx(0x140000038c0, 0x0)
go/internal/gcimporter/ureader.go:485 +0x7c8
go/internal/gcimporter.readUnifiedPackage(0x140001fd0c0, 0x0, 0x1400022a510, {0x1, 0x0, {0x14000011970, 0xf}, {0x140001d0e44, 0x174}, {0x140002260a0, ...}, ...})
go/internal/gcimporter/ureader.go:75 +0x2cc
go/internal/gcimporter.Import(0x140001fd0c0, 0x1400022a510, {0x14000011970, 0xf}, {0x0?, 0x100d1ea14?}, 0x140001e7c00?)
go/internal/gcimporter/gcimporter.go:240 +0x61c
go/importer.(*gcimports).ImportFrom(0x100f84050?, {0x14000011970?, 0x1010becc0?}, {0x0?, 0x1400002d038?}, 0x14000003560?)
go/importer/importer.go:102 +0x4c
go/importer.(*gcimports).Import(0x1010b50c0?, {0x14000011970?, 0x140000006f1?})
go/importer/importer.go:95 +0x2c
cmd/vendor/golang.org/x/tools/go/analysis/unitchecker.init.func1.2({0x140000006f1?, 0x11?})
cmd/vendor/golang.org/x/tools/go/analysis/unitchecker/unitchecker.go:213 +0x6c
cmd/vendor/golang.org/x/tools/go/analysis/unitchecker.importerFunc.Import(0x101327520?, {0x140000006f1?, 0x140000006f1?})
cmd/vendor/golang.org/x/tools/go/analysis/unitchecker/unitchecker.go:443 +0x30
go/types.(*Checker).importPackage(0x140000056c0, {0x101108ac0, 0x14000071440}, {0x140000006f1, 0xf}, {0x1400001ca80, 0x21})
go/types/resolver.go:166 +0x458
go/types.(*Checker).collectObjects.func1({0x101108bc0?, 0x1400022a390})
go/types/resolver.go:270 +0xd8
go/types.(*Checker).walkDecl(0x140000056c0, {0x10110ac10?, 0x140001fd100}, 0x1400002d8d8)
go/types/decl.go:404 +0x218
go/types.(*Checker).walkDecls(...)
go/types/decl.go:391
go/types.(*Checker).collectObjects(0x140000056c0)
go/types/resolver.go:257 +0xb00
go/types.(*Checker).checkFiles(0x140000056c0, {0x1400005a890, 0x1, 0x1})
go/types/check.go:456 +0x170
go/types.(*Checker).Files(0x14000011960?, {0x1400005a890?, 0x14000234120?, 0x0?})
go/types/check.go:422 +0x80
go/types.(*Config).Check(0x140001da770, {0x14000011960?, 0x140000100a7?}, 0x140001fd0c0, {0x1400005a890, 0x1, 0x1}, 0x14000234060)
go/types/api.go:476 +0x70
cmd/vendor/golang.org/x/tools/go/analysis/unitchecker.run(0x140001fd0c0, 0x1400018e2a0, {0x1400013fa00, 0xa, 0x0?})
cmd/vendor/golang.org/x/tools/go/analysis/unitchecker/unitchecker.go:268 +0x348
cmd/vendor/golang.org/x/tools/go/analysis/unitchecker.Run({0x16f0eacb5?, 0x21?}, {0x1400013fa00, 0xa, 0x10})
cmd/vendor/golang.org/x/tools/go/analysis/unitchecker/unitchecker.go:133 +0x90
cmd/vendor/golang.org/x/tools/go/analysis/unitchecker.Main({0x14000003200, 0x21, 0x21})
cmd/vendor/golang.org/x/tools/go/analysis/unitchecker/unitchecker.go:120 +0x310
main.main()
cmd/vet/main.go:54 +0x4e0
FAIL gotypealias [build failed]
FAIL
What did you expect to see?
> go test . -v
=== RUN TestXxx
main_test.go:9: Hello
--- PASS: TestXxx (0.00s)
PASS
ok gotypealias 0.182s
Metadata
Metadata
Assignees
Labels
No labels