go/test/fixedbugs/issue21273.go
griesemer 25159d3af9 cmd/compile: avoid spurious errors for invalid map key types
Instead of trying to validate map key types eagerly in some
cases, delay their validation to the end of type-checking,
when we all type information is present.

Passes go build -toolexec 'toolstash -cmp' -a std .

Fixes #21273.
Fixes #21657.

Change-Id: I532369dc91c6adca1502d6aa456bb06b57e6c7ff
Reviewed-on: https://go-review.googlesource.com/75310
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
2017-11-02 23:53:38 +00:00

29 lines
626 B
Go

// errorcheck
// Copyright 2017 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package main
type T0 T0 // ERROR "invalid recursive type"
type _ map[T0]int
type T1 struct{ T1 } // ERROR "invalid recursive type"
type _ map[T1]int
func f() {
type T2 T2 // ERROR "invalid recursive type"
type _ map[T2]int
}
func g() {
type T3 struct{ T3 } // ERROR "invalid recursive type"
type _ map[T3]int
}
func h() {
type T4 struct{ m map[T4]int } // ERROR "invalid map key"
type _ map[T4]int // ERROR "invalid map key"
}