Skip to content

Commit 729587e

Browse files
committed
scope process, limit inheritance tree
1 parent 6cad1ed commit 729587e

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

src/commonMain/kotlin/xyz/wagyourtail/unimined/mapping/propagator/InheritanceTree.kt

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ abstract class InheritanceTree(val tree: AbstractMappingTree) {
2727
abstract val classes: Map<InternalName, ClassInfo>
2828

2929
suspend fun propagate(targets: Set<Namespace>) = coroutineScope {
30+
31+
val classes = classes.filterValues { it.inMappings }
32+
3033
// write classes
3134
classes.values.parallelMap {
3235
it.propagate(targets)
@@ -149,6 +152,27 @@ abstract class InheritanceTree(val tree: AbstractMappingTree) {
149152
interfaces.mapNotNull { this@InheritanceTree.classes[it] }
150153
}
151154

155+
val allParents: List<ClassInfo> by lazy {
156+
buildList {
157+
if (superClass != null) {
158+
add(superClass!!)
159+
addAll(superClass!!.allParents)
160+
}
161+
for (interfaceClass in interfaceClasses) {
162+
add(interfaceClass)
163+
addAll(interfaceClass.allParents)
164+
}
165+
}
166+
}
167+
168+
val inMappings: Boolean by lazy {
169+
if (tree.getClass(fns, name) != null) {
170+
true
171+
} else {
172+
allParents.any { it.inMappings }
173+
}
174+
}
175+
152176
private val propagateLock = Mutex()
153177

154178
/**

src/commonMain/kotlin/xyz/wagyourtail/unimined/mapping/resolver/MappingResolver.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ abstract class MappingResolver<T : MappingResolver<T>>(val name: String) {
102102
abstract fun createForPostProcess(key: String): T
103103

104104
@JvmOverloads
105-
fun postProcessDependency(key: String, intern: T.() -> Unit, postProcess: MappingEntry.() -> Unit = {}) {
105+
fun postProcessDependency(key: String, intern: @Scoped T.() -> Unit, postProcess: MappingEntry.() -> Unit = {}) {
106106
val resolver = createForPostProcess(key)
107107
resolver.intern()
108108

0 commit comments

Comments
 (0)