Don't try remap type parameter of inline lambda parent context
This commit is contained in:
@@ -96,8 +96,15 @@ public class InliningContext {
|
|||||||
boolean isInliningLambda,
|
boolean isInliningLambda,
|
||||||
boolean isRegeneration
|
boolean isRegeneration
|
||||||
) {
|
) {
|
||||||
|
//isInliningLambda && !this.isInliningLambda for root inline lambda
|
||||||
return new InliningContext(this, expressionMap, state, generator,
|
return new InliningContext(this, expressionMap, state, generator,
|
||||||
TypeRemapper.createFrom(typeRemapper, additionalTypeMappings), reifedTypeInliner, isInliningLambda, isRegeneration);
|
TypeRemapper.createFrom(
|
||||||
|
typeRemapper,
|
||||||
|
additionalTypeMappings,
|
||||||
|
//root inline lambda
|
||||||
|
isInliningLambda && !this.isInliningLambda
|
||||||
|
),
|
||||||
|
reifedTypeInliner, isInliningLambda, isRegeneration);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isRoot() {
|
public boolean isRoot() {
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ import java.util.HashMap
|
|||||||
class TypeParameter(val oldName: String, val newName: String?, val isReified: Boolean, val signature: String?)
|
class TypeParameter(val oldName: String, val newName: String?, val isReified: Boolean, val signature: String?)
|
||||||
|
|
||||||
//typeMapping data could be changed outside through method processing
|
//typeMapping data could be changed outside through method processing
|
||||||
class TypeRemapper private constructor(private val typeMapping: MutableMap<String, String>, val parent: TypeRemapper?) {
|
class TypeRemapper private constructor(private val typeMapping: MutableMap<String, String>, val parent: TypeRemapper?, val isInlineLambda: Boolean = false) {
|
||||||
|
|
||||||
private var additionalMappings: MutableMap<String, String> = hashMapOf()
|
private var additionalMappings: MutableMap<String, String> = hashMapOf()
|
||||||
|
|
||||||
@@ -56,7 +56,7 @@ class TypeRemapper private constructor(private val typeMapping: MutableMap<Strin
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun mapTypeParameter(name: String): TypeParameter? {
|
fun mapTypeParameter(name: String): TypeParameter? {
|
||||||
return typeParametersMapping[name] ?: parent?.mapTypeParameter(name)
|
return typeParametersMapping[name] ?: if (!isInlineLambda) parent?.mapTypeParameter(name) else null
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
@@ -76,8 +76,9 @@ class TypeRemapper private constructor(private val typeMapping: MutableMap<Strin
|
|||||||
}
|
}
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun createFrom(remapper: TypeRemapper, mappings: MutableMap<String, String>): TypeRemapper {
|
@JvmOverloads
|
||||||
return TypeRemapper(createNewAndMerge(remapper, mappings), remapper)
|
fun createFrom(remapper: TypeRemapper, mappings: MutableMap<String, String>, isInlineLambda: Boolean = false): TypeRemapper {
|
||||||
|
return TypeRemapper(createNewAndMerge(remapper, mappings), remapper, isInlineLambda)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun createNewAndMerge(remapper: TypeRemapper, additionalTypeMappings: Map<String, String>): MutableMap<String, String> {
|
private fun createNewAndMerge(remapper: TypeRemapper, additionalTypeMappings: Map<String, String>): MutableMap<String, String> {
|
||||||
|
|||||||
Reference in New Issue
Block a user