New J2K: Fix type arguments for new expression

This commit is contained in:
Ilya Kirillov
2018-12-24 12:34:22 +03:00
committed by Ilya Kirillov
parent de26e2cfe7
commit 2d37a2b28e
@@ -23,11 +23,9 @@ import com.intellij.psi.impl.source.tree.ChildRole
import com.intellij.psi.impl.source.tree.java.*
import org.jetbrains.kotlin.asJava.classes.KtLightClassForFacade
import org.jetbrains.kotlin.asJava.elements.KtLightMethod
import org.jetbrains.kotlin.j2k.ast.*
import org.jetbrains.kotlin.j2k.ast.LiteralExpression.NullLiteral.isNullable
import org.jetbrains.kotlin.j2k.ast.Nullability
import org.jetbrains.kotlin.j2k.tree.*
import org.jetbrains.kotlin.j2k.tree.JKLiteralExpression.LiteralType.*
import org.jetbrains.kotlin.j2k.tree.Mutability
import org.jetbrains.kotlin.j2k.tree.impl.*
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType
@@ -313,11 +311,18 @@ class JavaToJKTreeBuilder(var symbolProvider: JKSymbolProvider) {
classOrAnonymousClassReference?.resolve()?.let {
symbolProvider.provideDirectSymbol(it) as JKClassSymbol
} ?: JKUnresolvedClassSymbol(classOrAnonymousClassReference!!.text)
val typeArgumentList =
this.typeArgumentList.toJK()
.takeIf { it.typeArguments.isNotEmpty() }
?: classOrAnonymousClassReference
?.typeParameters
?.let { typeParameters ->
JKTypeArgumentListImpl(typeParameters.map { JKTypeElementImpl(it.toJK(symbolProvider)) })
} ?: JKTypeArgumentListImpl()
JKJavaNewExpressionImpl(
classSymbol,
argumentList.toJK(),
typeArgumentList.toJK(),
typeArgumentList,
with(declarationMapper) { anonymousClass?.createClassBody() } ?: JKEmptyClassBodyImpl()
)
}