method filtering for parameterized interfaces seems not working at all
This issue is about hasIdenticalParentMethod method in ClassInfo.java , it sems not working at all for parameterized interfaces.
E.g. Internal.RecipeFilter, which is a subclass of Internal.Predicate<Internal.RecipeKJS>, and here is what looks like in an actual dump (using ProbeJS 5.3.4 for MC1.19):
interface RecipeFilter extends Internal.Predicate<Internal.RecipeKJS> {
test(arg0: any): boolean;
negate(): Internal.Predicate<Internal.RecipeKJS>;
not<T>(arg0: Internal.Predicate_<T>): Internal.Predicate<T>;
or(arg0: Internal.Predicate_<Internal.RecipeKJS>): Internal.Predicate<Internal.RecipeKJS>;
and(arg0: Internal.Predicate_<Internal.RecipeKJS>): Internal.Predicate<Internal.RecipeKJS>;
test(arg0: Internal.RecipeKJS_): boolean;
of(cx: Internal.Context_, o: any): this;
isEqual<T>(arg0: any): Internal.Predicate<T>;
readonly PARSE: dev.architectury.event.Event<Internal.RecipeFilterParseEvent>;
}
and Internal.Predicate
interface Predicate <T> {
negate(): this;
not<T>(arg0: Internal.Predicate_<T>): this;
or(arg0: Internal.Predicate_<T>): this;
test(arg0: T): boolean;
and(arg0: Internal.Predicate_<T>): this;
isEqual<T>(arg0: any): this;
(arg0: T): boolean;
}
It's clear that inherited methods are not being filtered out.
I made some tests days ago, and found that hasIdenticalParentMethod goes wrong when checking generic types. For RecipeFilter, getGenericReturnType() will return proper return type, but for Predicate, it's returning Object when generic T is involved.
But that was days ago, I'm not quite sure if it's returnType or parameterTypes that's going wrong.
This was a very hard thing to be debugged, might be a low priority since I'm currently working on other things.
https://github.com/Prunoideae/ProbeJS/blob/a9fe3bfab6bed5da7ed9ca19914fcc3469284588/common/src/main/java/moe/wolfgirl/next/java/clazz/Clazz.java#L119-L133 https://github.com/Prunoideae/ProbeJS/blob/a9fe3bfab6bed5da7ed9ca19914fcc3469284588/common/src/main/java/moe/wolfgirl/next/java/clazz/Clazz.java#L150-L159