[KJS] Throw exception on recursive types provided to typeOf and provide proper support later within KT-40173

#KT-38140 fixed
This commit is contained in:
Zalim Bashorov
2020-07-10 02:45:30 +03:00
parent c552933459
commit 340512e27a
11 changed files with 108 additions and 21 deletions
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.descriptors.FunctionDescriptor
import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor
import org.jetbrains.kotlin.js.backend.ast.*
import org.jetbrains.kotlin.js.backend.ast.metadata.SpecialFunction
import org.jetbrains.kotlin.js.backend.ast.metadata.kTypeWithRecursion
import org.jetbrains.kotlin.js.backend.ast.metadata.specialFunction
import org.jetbrains.kotlin.js.translate.callTranslator.CallInfo
import org.jetbrains.kotlin.js.translate.context.Namer
@@ -146,7 +147,11 @@ private class KTypeConstructor(private val context: TranslationContext) {
)
}
if (typeParameter in visitedTypeParams) return callHelperFunction(Namer.GET_START_KTYPE_PROJECTION)
if (typeParameter in visitedTypeParams) {
return callHelperFunction(Namer.GET_START_KTYPE_PROJECTION).also {
it.kTypeWithRecursion = true
}
}
visitedTypeParams.add(typeParameter)