Instances of classes implementing interfaces can override functions for all implentations of an interface
The changes to interface resolution had the unintended side effect of allowing instances to override parent interface's implementations because the same getter
/setter
is referenced.
Reproduction from Matrix
import Gio from 'gi://Gio';
const dummyAppName = 'dummy';
const apps = Gio.app_info_get_all();
apps[0].get_name = () => dummyAppName;
let appsWithOverriddenNames = 0;
for (const app of apps) {
appsWithOverriddenNames += app.get_name() === dummyAppName ? 1 : 0;
}
console.log(JSON.stringify({ appsWithOverriddenNames, TotalApps: apps.length }));