New J2K: Add typeParameter & typeParameterList
This commit is contained in:
committed by
Ilya Kirillov
parent
b9d432bfac
commit
1f59f91aeb
@@ -233,6 +233,12 @@ class JavaToJKTreeBuilder(var symbolProvider: JKSymbolProvider) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private inner class DeclarationMapper(val expressionTreeMapper: ExpressionTreeMapper) {
|
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 {
|
fun PsiClass.toJK(): JKClass {
|
||||||
val classKind: JKClass.ClassKind = when {
|
val classKind: JKClass.ClassKind = when {
|
||||||
isAnnotationType -> JKClass.ClassKind.ANNOTATION
|
isAnnotationType -> JKClass.ClassKind.ANNOTATION
|
||||||
|
|||||||
@@ -304,6 +304,20 @@ class NewCodeBuilder {
|
|||||||
binaryExpression.right.accept(this)
|
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) {
|
override fun visitLiteralExpression(literalExpression: JKLiteralExpression) {
|
||||||
printer.printWithNoIndent(literalExpression.literal)
|
printer.printWithNoIndent(literalExpression.literal)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -446,3 +446,12 @@ val JKElement.psi: PsiElement?
|
|||||||
fun <Elem : PsiElement>JKElement.psi(): Elem? =
|
fun <Elem : PsiElement>JKElement.psi(): Elem? =
|
||||||
(this as? PsiOwner)?.psi as? 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)
|
||||||
|
}
|
||||||
|
|||||||
@@ -273,4 +273,16 @@ interface JKLabeledStatement : JKStatement {
|
|||||||
val labels: List<JKNameIdentifier>
|
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 visitContinueStatement(continueStatement: JKContinueStatement, data: D): R = visitStatement(continueStatement, data)
|
||||||
fun visitLabeledStatement(labeledStatement: JKLabeledStatement, data: D): R = visitStatement(labeledStatement, data)
|
fun visitLabeledStatement(labeledStatement: JKLabeledStatement, data: D): R = visitStatement(labeledStatement, data)
|
||||||
fun visitEmptyStatement(emptyStatement: JKEmptyStatement, data: D): R = visitStatement(emptyStatement, 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 visitJavaField(javaField: JKJavaField, data: D): R = visitField(javaField, data)
|
||||||
fun visitJavaMethod(javaMethod: JKJavaMethod, data: D): R = visitMethod(javaMethod, data)
|
fun visitJavaMethod(javaMethod: JKJavaMethod, data: D): R = visitMethod(javaMethod, data)
|
||||||
fun visitJavaMethodCallExpression(javaMethodCallExpression: JKJavaMethodCallExpression, data: D): R = visitMethodCallExpression(javaMethodCallExpression, 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)
|
override fun visitLabeledStatement(labeledStatement: JKLabeledStatement, data: Nothing?) = visitLabeledStatement(labeledStatement)
|
||||||
fun visitEmptyStatement(emptyStatement: JKEmptyStatement) = visitStatement(emptyStatement, null)
|
fun visitEmptyStatement(emptyStatement: JKEmptyStatement) = visitStatement(emptyStatement, null)
|
||||||
override fun visitEmptyStatement(emptyStatement: JKEmptyStatement, data: Nothing?) = visitEmptyStatement(emptyStatement)
|
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)
|
fun visitJavaField(javaField: JKJavaField) = visitField(javaField, null)
|
||||||
override fun visitJavaField(javaField: JKJavaField, data: Nothing?) = visitJavaField(javaField)
|
override fun visitJavaField(javaField: JKJavaField, data: Nothing?) = visitJavaField(javaField)
|
||||||
fun visitJavaMethod(javaMethod: JKJavaMethod) = visitMethod(javaMethod, null)
|
fun visitJavaMethod(javaMethod: JKJavaMethod) = visitMethod(javaMethod, null)
|
||||||
|
|||||||
Reference in New Issue
Block a user