|
@@ -1804,13 +1804,23 @@ func (r *Runtime) toReflectValue(v Value, dst reflect.Value, ctx *objectExportCt
|
|
|
dst.Set(reflect.Zero(typ))
|
|
|
return nil
|
|
|
}
|
|
|
- if et.AssignableTo(typ) {
|
|
|
- dst.Set(reflect.ValueOf(exportValue(v, ctx)))
|
|
|
- return nil
|
|
|
- } else if et.ConvertibleTo(typ) {
|
|
|
- dst.Set(reflect.ValueOf(exportValue(v, ctx)).Convert(typ))
|
|
|
- return nil
|
|
|
+
|
|
|
+ for i := 0; ; i++ {
|
|
|
+ if et.ConvertibleTo(typ) {
|
|
|
+ ev := reflect.ValueOf(exportValue(v, ctx))
|
|
|
+ for ; i > 0; i-- {
|
|
|
+ ev = ev.Elem()
|
|
|
+ }
|
|
|
+ dst.Set(ev.Convert(typ))
|
|
|
+ return nil
|
|
|
+ }
|
|
|
+ if et.Kind() == reflect.Ptr {
|
|
|
+ et = et.Elem()
|
|
|
+ } else {
|
|
|
+ break
|
|
|
+ }
|
|
|
}
|
|
|
+
|
|
|
if typ == typeTime {
|
|
|
if obj, ok := v.(*Object); ok {
|
|
|
if d, ok := obj.self.(*dateObject); ok {
|