| // errorcheck -+ |
| |
| // Copyright 2016 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. |
| |
| // Test type-checking errors for not-in-heap types. |
| |
| //go:build cgo |
| |
| package p |
| |
| import "runtime/cgo" |
| |
| type nih struct{ _ cgo.Incomplete } |
| |
| type embed4 map[nih]int // ERROR "incomplete \(or unallocatable\) map key not allowed" |
| |
| type embed5 map[int]nih // ERROR "incomplete \(or unallocatable\) map value not allowed" |
| |
| type emebd6 chan nih // ERROR "chan of incomplete \(or unallocatable\) type not allowed" |
| |
| type okay1 *nih |
| |
| type okay2 []nih |
| |
| type okay3 func(x nih) nih |
| |
| type okay4 interface { |
| f(x nih) nih |
| } |
| |
| func f() { |
| type embed7 map[nih]int // ERROR "incomplete \(or unallocatable\) map key not allowed" |
| type embed8 map[int]nih // ERROR "incomplete \(or unallocatable\) map value not allowed" |
| type emebd9 chan nih // ERROR "chan of incomplete \(or unallocatable\) type not allowed" |
| } |