3 // Tests of interface conversions and type assertions.
30 // Nil always causes a type assertion to fail, even to the
32 if _, ok := i0.(I0); ok {
33 panic("nil i0.(I0) succeeded")
35 if _, ok := i1.(I1); ok {
36 panic("nil i1.(I1) succeeded")
38 if _, ok := i2.(I2); ok {
39 panic("nil i2.(I2) succeeded")
42 // Conversions can't fail, even with nil.
52 // Non-nil type assertions pass or fail based on the concrete type.
54 if _, ok := i1.(I0); !ok {
55 panic("C1 i1.(I0) failed")
57 if _, ok := i1.(I1); !ok {
58 panic("C1 i1.(I1) failed")
60 if _, ok := i1.(I2); ok {
61 panic("C1 i1.(I2) succeeded")
65 if _, ok := i1.(I0); !ok {
66 panic("C2 i1.(I0) failed")
68 if _, ok := i1.(I1); !ok {
69 panic("C2 i1.(I1) failed")
71 if _, ok := i1.(I2); !ok {
72 panic("C2 i1.(I2) failed")
75 // Conversions can't fail.
78 panic("C1 I0(i1) was nil")
81 panic("C1 I1(i1) was nil")