Tags: tttoad/yaegi
Tags
interp: fix resolution of methods on aliased types The type.val field was always pointing to the final underlying type for aliased types, defeating a possible match if a method was attached to a type in between. Now the complete chain of aliases is always preserved. We have added an underlying() itype method which returns the underlying type of a defined type (aliasT), even in the presence of multiple indirections. We have added a definedType function which checks if type t1 is defined from type t2 or t2 defined from t1, required when checking assignability of aliasT types. Fixes traefik#1411. PS: this is the 2nd attempt, as the first version traefik#1412 wasn't passing _test/issue-1408.go as well. This PR does pass and supersedes traefik#1412.
interp: improve handling values and comparisons in interfaces Fixes traefik#1347.
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.
PreviousNext