| // Copyright 2010 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. |
| |
| package reflect |
| #include "runtime.h" |
| #include "go-type.h" |
| #include "interface.h" |
| #include "go-panic.h" |
| |
| func ifaceE2I(inter *Type, e Eface, ret *Iface) { |
| const Type *t; |
| Eface err; |
| |
| t = e.__type_descriptor; |
| if(t == nil) { |
| // explicit conversions require non-nil interface value. |
| runtime_newTypeAssertionError( |
| nil, nil, inter->__reflection, |
| nil, &err); |
| runtime_panic(err); |
| } |
| ret->__object = e.__object; |
| ret->__methods = __go_convert_interface(inter, t); |
| } |