// errorcheck // Copyright 2009 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. // Verify assignment rules are enforced by the compiler. // Does not compile. package main type ( A [10]int B []int C chan int F func() int I interface { m() int } M map[int]int P *int S struct { X int } A1 [10]int B1 []int C1 chan int F1 func() int I1 interface { m() int } M1 map[int]int P1 *int S1 struct { X int } ) var ( a0 [10]int b0 []int c0 chan int f0 func() int i0 interface { m() int } m0 map[int]int p0 *int s0 struct { X int } a A b B c C f F i I m M p P s S a1 A1 b1 B1 c1 C1 f1 F1 i1 I1 m1 M1 p1 P1 s1 S1 pa0 *[10]int pb0 *[]int pc0 *chan int pf0 *func() int pi0 *interface { m() int } pm0 *map[int]int pp0 **int ps0 *struct { X int } pa *A pb *B pc *C pf *F pi *I pm *M pp *P ps *S pa1 *A1 pb1 *B1 pc1 *C1 pf1 *F1 pi1 *I1 pm1 *M1 pp1 *P1 ps1 *S1 ) func main() { a0 = a a0 = a1 a = a0 a = a1 // ERROR "cannot use" a1 = a0 a1 = a // ERROR "cannot use" b0 = b b0 = b1 b = b0 b = b1 // ERROR "cannot use" b1 = b0 b1 = b // ERROR "cannot use" c0 = c c0 = c1 c = c0 c = c1 // ERROR "cannot use" c1 = c0 c1 = c // ERROR "cannot use" f0 = f f0 = f1 f = f0 f = f1 // ERROR "cannot use" f1 = f0 f1 = f // ERROR "cannot use" i0 = i i0 = i1 i = i0 i = i1 i1 = i0 i1 = i m0 = m m0 = m1 m = m0 m = m1 // ERROR "cannot use" m1 = m0 m1 = m // ERROR "cannot use" p0 = p p0 = p1 p = p0 p = p1 // ERROR "cannot use" p1 = p0 p1 = p // ERROR "cannot use" s0 = s s0 = s1 s = s0 s = s1 // ERROR "cannot use" s1 = s0 s1 = s // ERROR "cannot use" pa0 = pa // ERROR "cannot use|incompatible" pa0 = pa1 // ERROR "cannot use|incompatible" pa = pa0 // ERROR "cannot use|incompatible" pa = pa1 // ERROR "cannot use|incompatible" pa1 = pa0 // ERROR "cannot use|incompatible" pa1 = pa // ERROR "cannot use|incompatible" pb0 = pb // ERROR "cannot use|incompatible" pb0 = pb1 // ERROR "cannot use|incompatible" pb = pb0 // ERROR "cannot use|incompatible" pb = pb1 // ERROR "cannot use|incompatible" pb1 = pb0 // ERROR "cannot use|incompatible" pb1 = pb // ERROR "cannot use|incompatible" pc0 = pc // ERROR "cannot use|incompatible" pc0 = pc1 // ERROR "cannot use|incompatible" pc = pc0 // ERROR "cannot use|incompatible" pc = pc1 // ERROR "cannot use|incompatible" pc1 = pc0 // ERROR "cannot use|incompatible" pc1 = pc // ERROR "cannot use|incompatible" pf0 = pf // ERROR "cannot use|incompatible" pf0 = pf1 // ERROR "cannot use|incompatible" pf = pf0 // ERROR "cannot use|incompatible" pf = pf1 // ERROR "cannot use|incompatible" pf1 = pf0 // ERROR "cannot use|incompatible" pf1 = pf // ERROR "cannot use|incompatible" pi0 = pi // ERROR "cannot use|incompatible" pi0 = pi1 // ERROR "cannot use|incompatible" pi = pi0 // ERROR "cannot use|incompatible" pi = pi1 // ERROR "cannot use|incompatible" pi1 = pi0 // ERROR "cannot use|incompatible" pi1 = pi // ERROR "cannot use|incompatible" pm0 = pm // ERROR "cannot use|incompatible" pm0 = pm1 // ERROR "cannot use|incompatible" pm = pm0 // ERROR "cannot use|incompatible" pm = pm1 // ERROR "cannot use|incompatible" pm1 = pm0 // ERROR "cannot use|incompatible" pm1 = pm // ERROR "cannot use|incompatible" pp0 = pp // ERROR "cannot use|incompatible" pp0 = pp1 // ERROR "cannot use|incompatible" pp = pp0 // ERROR "cannot use|incompatible" pp = pp1 // ERROR "cannot use|incompatible" pp1 = pp0 // ERROR "cannot use|incompatible" pp1 = pp // ERROR "cannot use|incompatible" ps0 = ps // ERROR "cannot use|incompatible" ps0 = ps1 // ERROR "cannot use|incompatible" ps = ps0 // ERROR "cannot use|incompatible" ps = ps1 // ERROR "cannot use|incompatible" ps1 = ps0 // ERROR "cannot use|incompatible" ps1 = ps // ERROR "cannot use|incompatible" a0 = [10]int(a) a0 = [10]int(a1) a = A(a0) a = A(a1) a1 = A1(a0) a1 = A1(a) b0 = []int(b) b0 = []int(b1) b = B(b0) b = B(b1) b1 = B1(b0) b1 = B1(b) c0 = chan int(c) c0 = chan int(c1) c = C(c0) c = C(c1) c1 = C1(c0) c1 = C1(c) f0 = func() int(f) f0 = func() int(f1) f = F(f0) f = F(f1) f1 = F1(f0) f1 = F1(f) i0 = interface { m() int }(i) i0 = interface { m() int }(i1) i = I(i0) i = I(i1) i1 = I1(i0) i1 = I1(i) m0 = map[int]int(m) m0 = map[int]int(m1) m = M(m0) m = M(m1) m1 = M1(m0) m1 = M1(m) p0 = (*int)(p) p0 = (*int)(p1) p = P(p0) p = P(p1) p1 = P1(p0) p1 = P1(p) s0 = struct { X int }(s) s0 = struct { X int }(s1) s = S(s0) s = S(s1) s1 = S1(s0) s1 = S1(s) pa0 = (*[10]int)(pa) pa0 = (*[10]int)(pa1) pa = (*A)(pa0) pa = (*A)(pa1) pa1 = (*A1)(pa0) pa1 = (*A1)(pa) pb0 = (*[]int)(pb) pb0 = (*[]int)(pb1) pb = (*B)(pb0) pb = (*B)(pb1) pb1 = (*B1)(pb0) pb1 = (*B1)(pb) pc0 = (*chan int)(pc) pc0 = (*chan int)(pc1) pc = (*C)(pc0) pc = (*C)(pc1) pc1 = (*C1)(pc0) pc1 = (*C1)(pc) pf0 = (*func() int)(pf) pf0 = (*func() int)(pf1) pf = (*F)(pf0) pf = (*F)(pf1) pf1 = (*F1)(pf0) pf1 = (*F1)(pf) pi0 = (*interface { m() int })(pi) pi0 = (*interface { m() int })(pi1) pi = (*I)(pi0) pi = (*I)(pi1) pi1 = (*I1)(pi0) pi1 = (*I1)(pi) pm0 = (*map[int]int)(pm) pm0 = (*map[int]int)(pm1) pm = (*M)(pm0) pm = (*M)(pm1) pm1 = (*M1)(pm0) pm1 = (*M1)(pm) pp0 = (**int)(pp) pp0 = (**int)(pp1) pp = (*P)(pp0) pp = (*P)(pp1) pp1 = (*P1)(pp0) pp1 = (*P1)(pp) ps0 = (*struct { X int })(ps) ps0 = (*struct { X int })(ps1) ps = (*S)(ps0) ps = (*S)(ps1) ps1 = (*S1)(ps0) ps1 = (*S1)(ps) }