Add support for handling Interface in reflect.Type.AssignableTo() (original) (raw)
Some packages like fxamacker/cbor require Type.AssignableTo to support Interface.
There was some prior discussion at fxamacker/cbor#295 (comment).
Projects using packages that require Interface support can encounter panics from the following code.
| func (t *rawType) AssignableTo(u Type) bool { |
|---|
| if t == u.(*rawType) { |
| return true |
| } |
| if u.Kind() == Interface && u.NumMethod() == 0 { |
| return true |
| } |
| if u.Kind() == Interface { |
| panic("reflect: unimplemented: AssignableTo with interface") |
| } |
| return false |
| } |
If a solution becomes available, I can use some existing tests in fxamacker/cbor to help test it.