fix: correctly update proto chain
This commit is contained in:
parent
11ecd8c68f
commit
ece9cf68dc
@ -289,15 +289,18 @@ public class NativeWrapperProvider implements WrapperProvider {
|
|||||||
private void updateProtoChain(Class<?> clazz, ObjectValue proto, FunctionValue constr) {
|
private void updateProtoChain(Class<?> clazz, ObjectValue proto, FunctionValue constr) {
|
||||||
var parent = clazz;
|
var parent = clazz;
|
||||||
|
|
||||||
while (true) {
|
while (parent != null) {
|
||||||
parent = parent.getSuperclass();
|
|
||||||
if (parent == null) return;
|
|
||||||
|
|
||||||
var parentProto = getProto(parent);
|
var parentProto = getProto(parent);
|
||||||
var parentConstr = getConstr(parent);
|
var parentConstr = getConstr(parent);
|
||||||
|
|
||||||
if (parentProto != null) Values.setPrototype(Context.NULL, proto, parentProto);
|
if (parentProto != null && parentConstr != null) {
|
||||||
if (parentConstr != null) Values.setPrototype(Context.NULL, constr, parentConstr);
|
Values.setPrototype(Context.NULL, proto, parentProto);
|
||||||
|
Values.setPrototype(Context.NULL, constr, parentConstr);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
parent = parent.getSuperclass();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user