URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [go.test/] [test/] [interface/] [explicit.go] - Rev 867
Go to most recent revision | Compare with Previous | Blame | View Log
// errchk $G -e $D/$F.go// 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.// Static error messages about interface conversions.package maintype T struct {a int}var t *Ttype I interface {M()}var i Itype I2 interface {M()N()}var i2 I2type E interface{}var e Efunc main() {e = t // okt = 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 "incompatible|missing M method"t = i // ERROR "incompatible|need type assertion"i = i2 // oki2 = i // ERROR "incompatible|missing N method"i = I(i2) // oki2 = I2(i) // ERROR "invalid|missing N method"e = E(t) // okt = T(e) // ERROR "need explicit|need type assertion|incompatible" "as type [*]T"}type M interface {M()}var m Mvar _ = m.(int) // ERROR "impossible type assertion"type Int intfunc (Int) M(float64) {}var _ = m.(Int) // ERROR "impossible type assertion"var ii intvar jj Intvar m1 M = ii // ERROR "incompatible|missing"var m2 M = jj // ERROR "incompatible|wrong type for M method"var m3 = M(ii) // ERROR "invalid|missing"var m4 = M(jj) // ERROR "invalid|wrong type for M method"
Go to most recent revision | Compare with Previous | Blame | View Log
