// 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"
}