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