supra
02/04/2021, 7:50 AMprivate fun transformDepsRecursively(target: Project, from: Map<*, *>, to: MutableMap<*, *>) {
log.quiet("$TAG transformDepsRecursion start")
from.forEach {
val valueFrom = it.value
var valueTo = valueFrom;
if (valueFrom is ProjectDescriptor) {
valueTo = target.project(valueFrom.path)
} else if (valueFrom is Map<*, *>) {
valueTo = mutableMapOf<String, Any>()
transformDepsRecursively(target, valueFrom, valueTo)
}
mapOf<Any,Any>()
to[it.key]=valueTo
}
log.quiet("$TAG transformDepsRecursion end")
}
Albert Chang
02/04/2021, 10:36 AM*
can represents any type and there isn't any restriction so under your current function signature, this is possible, for example:
transformDepsRecursively(target, mapOf<Int, Int>(), mutableMapOf<String, String>())
But of course you can't put int values into a map of strings. This is the reason of the error.supra
02/04/2021, 11:41 AMprivate fun transformDeps(target: Project): Map<String, Any?> {
<http://log.info|log.info>("$TAG transformDeps start")
val deps = mutableMapOf<String, Any?>()
transformDepsRecursively(target, Nest.dependens, deps)
<http://log.info|log.info>("$TAG transformDeps end from size(${Nest.dependens.size}) to size(${deps.size})")
return deps
}
private fun <K> transformDepsRecursively(target: Project, from: Map<out K, Any?>, to: MutableMap<in K, Any?>) {
<http://log.info|log.info>("$TAG transformDepsRecursively start from.size(${from.size} to.size(${to.size}))")
from.forEach {
val valueFrom = it.value
var valueTo = valueFrom;
<http://log.info|log.info>("$TAG transformDepsRecursively for key = ${it.key} with value type ${valueFrom?.javaClass}")
log.debug("$TAG transformDepsRecursively valueFrom = ${valueFrom}")
if (valueFrom is ProjectDescriptor) {
valueTo = target.project(valueFrom.path)
} else if (valueFrom is Map<*, *>) {
valueTo = mutableMapOf<Any?, Any?>()
transformDepsRecursively(target, valueFrom , valueTo)
}
log.debug("$TAG transformDepsRecursively valueTo = ${valueTo}")
to[it.key] = valueTo
}
<http://log.info|log.info>("$TAG transformDepsRecursively end")
}