Summary: Changing the order of the superclasses of a struct exposes a bug in both biabduction and the devirtualiser where a method would be resolved into a still virtual method (an interface method). The reason is that we don't check whether a super class is an interface before exploring it, and seemingly we assume that there is only one (first) superclass worth exploring. This also ignores multiple inheritance in C++. To fix this, refactor the resolution to a complete search (not just the first super class!) which ignores Java interface methods. Also moved it to `Tenv` so that both biabduction and the devirtualiser can use it. Reviewed By: jvillard Differential Revision: D22357488 fbshipit-source-id: 54b96c1f4master
parent
92824b30ca
commit
41b4e39817
Loading…
Reference in new issue