New J2K: Add JKPackageDeclaration

This commit is contained in:
Ilya Kirillov
2018-11-13 19:00:20 +03:00
committed by Ilya Kirillov
parent 2b6ac84dda
commit 4080804391
6 changed files with 33 additions and 6 deletions
@@ -242,6 +242,9 @@ class JavaToJKTreeBuilder(var symbolProvider: JKSymbolProvider) {
JKTypeParameterImpl(JKNameIdentifierImpl(name!!),
extendsListTypes.map { JKTypeElementImpl(it.toJK(symbolProvider, Nullability.NotNull)) })
fun PsiPackageStatement.toJK(): JKPackageDeclaration =
JKPackageDeclarationImpl(JKNameIdentifierImpl(packageName))
fun PsiClass.toJK(): JKClass {
val classKind: JKClass.ClassKind = when {
isAnnotationType -> JKClass.ClassKind.ANNOTATION
@@ -504,6 +507,9 @@ class JavaToJKTreeBuilder(var symbolProvider: JKSymbolProvider) {
resultElement = with(declarationMapper) { aClass.toJK() }
}
override fun visitPackageStatement(statement: PsiPackageStatement) {
resultElement = with(declarationMapper) { statement.toJK() }
}
override fun visitField(field: PsiField) {
resultElement = with(declarationMapper) { field.toJK() }
}
@@ -120,6 +120,12 @@ class NewCodeBuilder {
file.acceptChildren(this)
}
override fun visitPackageDeclaration(packageDeclaration: JKPackageDeclaration) {
printer.printWithNoIndent("package ")
packageDeclaration.packageName.accept(this)
printer.printlnWithNoIndent()
}
override fun visitBreakStatement(breakStatement: JKBreakStatement) {
printer.printWithNoIndent("break")
}
@@ -501,4 +501,9 @@ fun JKStatement.isEmpty(): Boolean =
is JKBlockStatement -> block is JKBodyStub || block.statements.isEmpty()
is JKExpressionStatement -> expression is JKStubExpression
else -> false
}
}
class JKPackageDeclarationImpl(packageName: JKNameIdentifier) : JKPackageDeclaration, JKBranchElementBase() {
override var packageName: JKNameIdentifier by child(packageName)
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitPackageDeclaration(this, data)
}
@@ -300,4 +300,8 @@ interface JKForInStatement : JKStatement {
var declaration: JKDeclaration
var iterationExpression: JKExpression
var body: JKStatement
}
}
interface JKPackageDeclaration : JKDeclaration {
var packageName: JKNameIdentifier
}
@@ -24,8 +24,9 @@ interface JKVisitor<out R, in D> {
fun visitExpression(expression: JKExpression, data: D): R = visitTreeElement(expression, data)
fun visitExpressionStatement(expressionStatement: JKExpressionStatement, data: D): R = visitStatement(expressionStatement, data)
fun visitDeclarationStatement(declarationStatement: JKDeclarationStatement, data: D): R = visitStatement(declarationStatement, data)
fun visitBinaryExpression(binaryExpression: JKBinaryExpression, data: D): R = visitExpression(binaryExpression, data)
fun visitUnaryExpression(unaryExpression: JKUnaryExpression, data: D): R = visitExpression(unaryExpression, data)
fun visitOperatorExpression(operatorExpression: JKOperatorExpression, data: D): R = visitExpression(operatorExpression, data)
fun visitBinaryExpression(binaryExpression: JKBinaryExpression, data: D): R = visitOperatorExpression(binaryExpression, data)
fun visitUnaryExpression(unaryExpression: JKUnaryExpression, data: D): R = visitOperatorExpression(unaryExpression, data)
fun visitPrefixExpression(prefixExpression: JKPrefixExpression, data: D): R = visitUnaryExpression(prefixExpression, data)
fun visitPostfixExpression(postfixExpression: JKPostfixExpression, data: D): R = visitUnaryExpression(postfixExpression, data)
fun visitQualifiedExpression(qualifiedExpression: JKQualifiedExpression, data: D): R = visitExpression(qualifiedExpression, data)
@@ -65,6 +66,7 @@ interface JKVisitor<out R, in D> {
fun visitTypeParameterListOwner(typeParameterListOwner: JKTypeParameterListOwner, data: D): R = visitTreeElement(typeParameterListOwner, data)
fun visitEnumConstant(enumConstant: JKEnumConstant, data: D): R = visitField(enumConstant, data)
fun visitForInStatement(forInStatement: JKForInStatement, data: D): R = visitStatement(forInStatement, data)
fun visitPackageDeclaration(packageDeclaration: JKPackageDeclaration, data: D): R = visitDeclaration(packageDeclaration, 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)
@@ -45,9 +45,11 @@ interface JKVisitorVoid : JKVisitor<Unit, Nothing?> {
override fun visitExpressionStatement(expressionStatement: JKExpressionStatement, data: Nothing?) = visitExpressionStatement(expressionStatement)
fun visitDeclarationStatement(declarationStatement: JKDeclarationStatement) = visitStatement(declarationStatement, null)
override fun visitDeclarationStatement(declarationStatement: JKDeclarationStatement, data: Nothing?) = visitDeclarationStatement(declarationStatement)
fun visitBinaryExpression(binaryExpression: JKBinaryExpression) = visitExpression(binaryExpression, null)
fun visitOperatorExpression(operatorExpression: JKOperatorExpression) = visitExpression(operatorExpression, null)
override fun visitOperatorExpression(operatorExpression: JKOperatorExpression, data: Nothing?) = visitOperatorExpression(operatorExpression)
fun visitBinaryExpression(binaryExpression: JKBinaryExpression) = visitOperatorExpression(binaryExpression, null)
override fun visitBinaryExpression(binaryExpression: JKBinaryExpression, data: Nothing?) = visitBinaryExpression(binaryExpression)
fun visitUnaryExpression(unaryExpression: JKUnaryExpression) = visitExpression(unaryExpression, null)
fun visitUnaryExpression(unaryExpression: JKUnaryExpression) = visitOperatorExpression(unaryExpression, null)
override fun visitUnaryExpression(unaryExpression: JKUnaryExpression, data: Nothing?) = visitUnaryExpression(unaryExpression)
fun visitPrefixExpression(prefixExpression: JKPrefixExpression) = visitUnaryExpression(prefixExpression, null)
override fun visitPrefixExpression(prefixExpression: JKPrefixExpression, data: Nothing?) = visitPrefixExpression(prefixExpression)
@@ -127,6 +129,8 @@ interface JKVisitorVoid : JKVisitor<Unit, Nothing?> {
override fun visitEnumConstant(enumConstant: JKEnumConstant, data: Nothing?) = visitEnumConstant(enumConstant)
fun visitForInStatement(forInStatement: JKForInStatement) = visitStatement(forInStatement, null)
override fun visitForInStatement(forInStatement: JKForInStatement, data: Nothing?) = visitForInStatement(forInStatement)
fun visitPackageDeclaration(packageDeclaration: JKPackageDeclaration) = visitDeclaration(packageDeclaration, null)
override fun visitPackageDeclaration(packageDeclaration: JKPackageDeclaration, data: Nothing?) = visitPackageDeclaration(packageDeclaration)
fun visitJavaField(javaField: JKJavaField) = visitField(javaField, null)
override fun visitJavaField(javaField: JKJavaField, data: Nothing?) = visitJavaField(javaField)
fun visitJavaMethod(javaMethod: JKJavaMethod) = visitMethod(javaMethod, null)