Marc Vertes
e02621577f
interp: improve handling of composed interfaces wrappers
...
This change implements a workaround to better support composed
interfaces in yaegi and let the interpreter define objects which
implement multiple interfaces at once.
We use the existing MapTypes to store what possible composed interface
wrapper could be used for some interfaces. When generating an interface
wrapper, the wrapper with the highest number of implemented methods is
chosen.
This is still an imperfect solution but it improves the accuracy of
interpreter in some critical cases.
This workaround could be removed in future if/when golang/go#15924
is resolved.
Fixes #1425 .
2022-08-25 10:44:11 +02:00
..
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-07-20 17:10:08 +02:00
2022-06-14 10:18:08 +02:00
2020-07-08 22:35:04 +02:00
2022-07-20 17:10:08 +02:00
2022-08-25 10:44:11 +02:00