New J2K: Add typeParameter & typeParameterList

This commit is contained in:
Ilya Kirillov
2018-11-07 16:07:00 +03:00
committed by Ilya Kirillov
parent b9d432bfac
commit 1f59f91aeb
6 changed files with 51 additions and 1 deletions
@@ -233,6 +233,12 @@ class JavaToJKTreeBuilder(var symbolProvider: JKSymbolProvider) {
}
private inner class DeclarationMapper(val expressionTreeMapper: ExpressionTreeMapper) {
fun PsiTypeParameterList.toJK(): JKTypeParameterList =
JKTypeParameterListImpl(typeParameters.map { it.toJK() })
fun PsiTypeParameter.toJK(): JKTypeParameter =
JKTypeParameterImpl(JKNameIdentifierImpl(name!!))
fun PsiClass.toJK(): JKClass {
val classKind: JKClass.ClassKind = when {
isAnnotationType -> JKClass.ClassKind.ANNOTATION
@@ -304,6 +304,20 @@ class NewCodeBuilder {
binaryExpression.right.accept(this)
}
override fun visitTypeParameterList(typeParameterList: JKTypeParameterList) {
if (typeParameterList.typeParameters.isNotEmpty()) {
printer.par(ANGLE) {
renderList(typeParameterList.typeParameters) {
it.accept(this)
}
}
}
}
override fun visitTypeParameter(typeParameter: JKTypeParameter) {
typeParameter.name.accept(this)
}
override fun visitLiteralExpression(literalExpression: JKLiteralExpression) {
printer.printWithNoIndent(literalExpression.literal)
}
@@ -446,3 +446,12 @@ val JKElement.psi: PsiElement?
fun <Elem : PsiElement>JKElement.psi(): Elem? =
(this as? PsiOwner)?.psi as? Elem
class JKTypeParameterListImpl(typeParameters: List<JKTypeParameter> = emptyList()) : JKTypeParameterList, JKBranchElementBase() {
override var typeParameters by children(typeParameters)
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitTypeParameterList(this, data)
}
class JKTypeParameterImpl(name: JKNameIdentifier) : JKTypeParameter, JKBranchElementBase() {
override var name: JKNameIdentifier by child(name)
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitTypeParameter(this, data)
}
+13 -1
View File
@@ -273,4 +273,16 @@ interface JKLabeledStatement : JKStatement {
val labels: List<JKNameIdentifier>
}
interface JKEmptyStatement : JKStatement
interface JKEmptyStatement : JKStatement
interface JKTypeParameterList : JKTreeElement {
var typeParameters: List<JKTypeParameter>
}
interface JKTypeParameter : JKTreeElement {
var name: JKNameIdentifier
}
interface JKTypeParameterListOwner : JKTreeElement {
var typeParameterList: JKTypeParameterList
}
@@ -60,6 +60,9 @@ interface JKVisitor<out R, in D> {
fun visitContinueStatement(continueStatement: JKContinueStatement, data: D): R = visitStatement(continueStatement, data)
fun visitLabeledStatement(labeledStatement: JKLabeledStatement, data: D): R = visitStatement(labeledStatement, data)
fun visitEmptyStatement(emptyStatement: JKEmptyStatement, data: D): R = visitStatement(emptyStatement, data)
fun visitTypeParameterList(typeParameterList: JKTypeParameterList, data: D): R = visitTreeElement(typeParameterList, data)
fun visitTypeParameter(typeParameter: JKTypeParameter, data: D): R = visitTreeElement(typeParameter, data)
fun visitTypeParameterListOwner(typeParameterListOwner: JKTypeParameterListOwner, data: D): R = visitTreeElement(typeParameterListOwner, data)
fun visitJavaField(javaField: JKJavaField, data: D): R = visitField(javaField, data)
fun visitJavaMethod(javaMethod: JKJavaMethod, data: D): R = visitMethod(javaMethod, data)
fun visitJavaMethodCallExpression(javaMethodCallExpression: JKJavaMethodCallExpression, data: D): R = visitMethodCallExpression(javaMethodCallExpression, data)
@@ -117,6 +117,12 @@ interface JKVisitorVoid : JKVisitor<Unit, Nothing?> {
override fun visitLabeledStatement(labeledStatement: JKLabeledStatement, data: Nothing?) = visitLabeledStatement(labeledStatement)
fun visitEmptyStatement(emptyStatement: JKEmptyStatement) = visitStatement(emptyStatement, null)
override fun visitEmptyStatement(emptyStatement: JKEmptyStatement, data: Nothing?) = visitEmptyStatement(emptyStatement)
fun visitTypeParameterList(typeParameterList: JKTypeParameterList) = visitTreeElement(typeParameterList, null)
override fun visitTypeParameterList(typeParameterList: JKTypeParameterList, data: Nothing?) = visitTypeParameterList(typeParameterList)
fun visitTypeParameter(typeParameter: JKTypeParameter) = visitTreeElement(typeParameter, null)
override fun visitTypeParameter(typeParameter: JKTypeParameter, data: Nothing?) = visitTypeParameter(typeParameter)
fun visitTypeParameterListOwner(typeParameterListOwner: JKTypeParameterListOwner) = visitTreeElement(typeParameterListOwner, null)
override fun visitTypeParameterListOwner(typeParameterListOwner: JKTypeParameterListOwner, data: Nothing?) = visitTypeParameterListOwner(typeParameterListOwner)
fun visitJavaField(javaField: JKJavaField) = visitField(javaField, null)
override fun visitJavaField(javaField: JKJavaField, data: Nothing?) = visitJavaField(javaField)
fun visitJavaMethod(javaMethod: JKJavaMethod) = visitMethod(javaMethod, null)