in src/main/kotlin/org/jetbrains/objcdiff/parsers/parseObjCType.kt [13:42]
fun foldTokensToType(
tokens: List<ObjCToken>,
classOrInterface: ClassifierType = ClassifierType.Undefined
): List<ObjCType> {
if (tokens.isEmpty()) return emptyList()
return tokens.filterPrimaryTokens().map { token ->
if (token is ObjCToken.PrimitiveType) {
buildPrimitiveType(token.value)
} else if (token is ObjCToken.LambdaType) {
buildLambdaType(
foldTokensToType(
listOf(token.returnType)
).first(),
foldTokensToType(token.arguments)
)
} else {
var nullable = false
val generics = if (token is ObjCToken.IdType) {
nullable = token.nullable
foldTokensToType(token.tokens, classOrInterface)
} else if (token is ObjCToken.ObjectType) {
nullable = token.nullable
foldTokensToType(token.tokens, classOrInterface)
} else emptyList()
buildObjectType(token.value, generics, emptyList(), nullable, null)
}
}
}