diff options
Diffstat (limited to 'test/interface/explicit.go')
-rw-r--r-- | test/interface/explicit.go | 41 |
1 files changed, 26 insertions, 15 deletions
diff --git a/test/interface/explicit.go b/test/interface/explicit.go index bd1bd19a9..797cec80e 100644 --- a/test/interface/explicit.go +++ b/test/interface/explicit.go @@ -8,34 +8,45 @@ package main -type T struct { a int } +type T struct { + a int +} + var t *T -type I interface { M() } +type I interface { + M() +} + var i I -type I2 interface { M(); N(); } +type I2 interface { + M() + N() +} + var i2 I2 -type E interface { } +type E interface{} + var e E func main() { - e = t; // ok - t = e; // ERROR "need explicit|need type assertion" + e = t // ok + t = e // ERROR "need explicit|need type assertion" // neither of these can work, // because i has an extra method // that t does not, so i cannot contain a t. - i = t; // ERROR "missing|incompatible|is not" - t = i; // ERROR "missing|incompatible|is not" + i = t // ERROR "incompatible|missing M method" + t = i // ERROR "incompatible|need type assertion" + + i = i2 // ok + i2 = i // ERROR "missing N method" - i = i2; // ok - i2 = i; // ERROR "need explicit|need type assertion" - - i = I(i2); // ok - i2 = I2(i); // ERROR "need explicit|need type assertion" + i = I(i2) // ok + i2 = I2(i) // ERROR "missing N method" - e = E(t); // ok - t = T(e); // ERROR "need explicit|need type assertion|incompatible" + e = E(t) // ok + t = T(e) // ERROR "need explicit|need type assertion|incompatible" } |