mirror of
https://github.com/golang/go
synced 2024-11-08 02:36:18 -07:00
47 lines
1.5 KiB
Go
47 lines
1.5 KiB
Go
|
// errorcheck
|
||
|
|
||
|
// Copyright 2022 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 p
|
||
|
|
||
|
// Self recursion.
|
||
|
type i interface{ m() interface{ i } } // ERROR "invalid recursive type"
|
||
|
type _ interface{ i } // no redundant error
|
||
|
|
||
|
// Mutual recursion.
|
||
|
type j interface{ m() interface{ k } } // ERROR "invalid recursive type"
|
||
|
type k interface{ m() interface{ j } }
|
||
|
|
||
|
// Both self and mutual recursion.
|
||
|
type (
|
||
|
a interface { // ERROR "invalid recursive type"
|
||
|
m() interface {
|
||
|
a
|
||
|
b
|
||
|
}
|
||
|
}
|
||
|
b interface {
|
||
|
m() interface {
|
||
|
a
|
||
|
b
|
||
|
}
|
||
|
}
|
||
|
)
|
||
|
|
||
|
// Self recursion through other types.
|
||
|
func _() { type i interface{ m() *interface{ i } } } // ERROR "invalid recursive type"
|
||
|
func _() { type i interface{ m() []interface{ i } } } // ERROR "invalid recursive type"
|
||
|
func _() { type i interface{ m() [0]interface{ i } } } // ERROR "invalid recursive type"
|
||
|
func _() { type i interface{ m() chan interface{ i } } } // ERROR "invalid recursive type"
|
||
|
func _() { type i interface{ m() map[interface{ i }]int } } // ERROR "invalid recursive type"
|
||
|
func _() { type i interface{ m() map[int]interface{ i } } } // ERROR "invalid recursive type"
|
||
|
func _() { type i interface{ m() func(interface{ i }) } } // ERROR "invalid recursive type"
|
||
|
func _() { type i interface{ m() func() interface{ i } } } // ERROR "invalid recursive type"
|
||
|
func _() {
|
||
|
type i interface { // ERROR "invalid recursive type"
|
||
|
m() struct{ i interface{ i } }
|
||
|
}
|
||
|
}
|