From c97876154d92f3379cb830ebeb067528b2a53c29 Mon Sep 17 00:00:00 2001 From: Wagyourtail <wagyourtail@wagyourtail.xyz> Date: Sun, 22 Sep 2024 11:01:48 -0500 Subject: [PATCH] fix wildcard, skip empty named --- .../tree/node/_class/member/MethodNode.kt | 1 + .../tree/node/_class/member/WildcardNode.kt | 21 +++++++------------ 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/src/commonMain/kotlin/xyz/wagyourtail/unimined/mapping/tree/node/_class/member/MethodNode.kt b/src/commonMain/kotlin/xyz/wagyourtail/unimined/mapping/tree/node/_class/member/MethodNode.kt index 4b9b7c0..ff60277 100644 --- a/src/commonMain/kotlin/xyz/wagyourtail/unimined/mapping/tree/node/_class/member/MethodNode.kt +++ b/src/commonMain/kotlin/xyz/wagyourtail/unimined/mapping/tree/node/_class/member/MethodNode.kt @@ -95,6 +95,7 @@ class MethodNode(parent: ClassNode) : FieldMethodResolvable<MethodNode, MethodVi exception.accept(visitor, nsFilter) } for (param in params.resolve()) { + if (param.names.isEmpty()) continue param.accept(visitor, nsFilter) } for (local in locals) { diff --git a/src/commonMain/kotlin/xyz/wagyourtail/unimined/mapping/tree/node/_class/member/WildcardNode.kt b/src/commonMain/kotlin/xyz/wagyourtail/unimined/mapping/tree/node/_class/member/WildcardNode.kt index 7c81400..08cba5f 100644 --- a/src/commonMain/kotlin/xyz/wagyourtail/unimined/mapping/tree/node/_class/member/WildcardNode.kt +++ b/src/commonMain/kotlin/xyz/wagyourtail/unimined/mapping/tree/node/_class/member/WildcardNode.kt @@ -6,6 +6,7 @@ import xyz.wagyourtail.unimined.mapping.jvms.ext.FieldOrMethodDescriptor import xyz.wagyourtail.unimined.mapping.jvms.four.ElementType import xyz.wagyourtail.unimined.mapping.jvms.four.two.one.InternalName import xyz.wagyourtail.unimined.mapping.tree.node.LazyResolvableEntry +import xyz.wagyourtail.unimined.mapping.tree.node.LazyResolvables import xyz.wagyourtail.unimined.mapping.tree.node.SignatureNode import xyz.wagyourtail.unimined.mapping.tree.node._class.ClassNode import xyz.wagyourtail.unimined.mapping.tree.node._class.member.method.ExceptionNode @@ -16,13 +17,14 @@ import xyz.wagyourtail.unimined.mapping.visitor.* class WildcardNode(parent: ClassNode, val type: WildcardType, descs: Map<Namespace, FieldOrMethodDescriptor>) : MemberNode<WildcardVisitor, ClassVisitor>(parent), WildcardVisitor, LazyResolvableEntry<WildcardNode, WildcardVisitor> { private val _descs = descs.toMutableMap() private val _signatures: MutableSet<SignatureNode<WildcardVisitor>> = mutableSetOf() - private val _params: MutableList<ParameterNode<WildcardVisitor>> = mutableListOf() private val _locals: MutableList<LocalNode<WildcardVisitor>> = mutableListOf() private val _exceptions: MutableList<ExceptionNode<WildcardVisitor>> = mutableListOf() val descs: Map<Namespace, FieldOrMethodDescriptor> get() = _descs val signatures: Set<SignatureNode<WildcardVisitor>> get() = _signatures - val params: List<ParameterNode<WildcardVisitor>> get() = _params + val params = LazyResolvables<ParameterVisitor, ParameterNode<WildcardVisitor>>(root) { + ParameterNode(this, null, null) + } val locals: List<LocalNode<WildcardVisitor>> get() = _locals val exceptions: List<ExceptionNode<WildcardVisitor>> get() = _exceptions @@ -54,19 +56,9 @@ class WildcardNode(parent: ClassNode, val type: WildcardType, descs: Map<Namespa override fun visitParameter(index: Int?, lvOrd: Int?, names: Map<Namespace, String>): ParameterVisitor? { if (type == WildcardType.FIELD) return null - for (param in params) { - if (index != null && param.index == index) { - param.setNames(names) - return param - } - if (lvOrd != null && param.lvOrd == lvOrd) { - param.setNames(names) - return param - } - } val newParam = ParameterNode(this, index, lvOrd) newParam.setNames(names) - _params.add(newParam) + params.addUnresolved(newParam) return newParam } @@ -109,7 +101,8 @@ class WildcardNode(parent: ClassNode, val type: WildcardType, descs: Map<Namespa for (exception in exceptions) { exception.accept(visitor, nsFilter) } - for (param in params) { + for (param in params.resolve()) { + if (param.names.isEmpty()) continue param.accept(visitor, nsFilter) } for (local in locals) {