Tags: hswuhao/yaegi
Tags
interp: handle struct with multiple recursive fields (traefik#1372) * interp: handle struct with multiple recursive fields In case of a recursive struct with several recursive fields of different type, only the first one was properly fixed when constructing the corresponding reflect type. We now memorize and process all fields at the same depth level. Fixes traefik#1371. * Update interp/type.go Co-authored-by: mpl <[email protected]> * fix lint * fix comment Co-authored-by: mpl <[email protected]>
interp: fix wrapping of returned closure passed to runtime Fixes traefik#1333.
interp: fix setting of interface value from nested function calls Fixes traefik#1320 and traefik#1294.
interp: fix populating array of interfaces Fixes traefik#1308.
stdlib: remove wrapper of runtime/cgo Temporarily removing this wrapper which causes a failure on freebsd system at build. Fixes traefik#1221.
interp: fix interface wrapper generation Add early detection of cases where no wrapper is necessary because the value type already implements the target interface. It should both increase performances by avoiding the wrapper overhead, and fix errors due to replacing valid values by incomplete wrappers, caused by the presence of private methods in the interface definition, as in traefik#1191. Fixes traefik#1191.
interp: fix append of values to an array of interface objects Interface wrappers were not properly generated. Fixes traefik#1185
interp: improve handling of interface values In selector resolution, struct field matching now precedes method matching. Before struct field matching could be skipped in case of a matching method, which is incorrect, as demontrated by _test/issue-1156.go. Field lookup has been fixed to operate on recursive structures. Concrete type values are derived when filling a receiver for interface methods. LookupBinField has been fixed to skip non struct values. LookupMethod has been fixed to iterate on interface values as well as concrete type values. Fixes traefik#1156.
PreviousNext