From 4080804391b25cae796d689cb247b3f7d2b6ff00 Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Tue, 13 Nov 2018 19:00:20 +0300 Subject: [PATCH] New J2K: Add JKPackageDeclaration --- .../org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt | 6 ++++++ j2k/newSrc/org/jetbrains/kotlin/j2k/NewCodeBuilder.kt | 6 ++++++ j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/jk.kt | 7 ++++++- j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt | 6 +++++- .../org/jetbrains/kotlin/j2k/tree/visitors/JKVisitor.kt | 6 ++++-- .../jetbrains/kotlin/j2k/tree/visitors/JKVisitorVoid.kt | 8 ++++++-- 6 files changed, 33 insertions(+), 6 deletions(-) diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt index ad9d49ae632..94abc952196 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt @@ -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() } } diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/NewCodeBuilder.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/NewCodeBuilder.kt index d9295076fd0..6a9def9c1d8 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/NewCodeBuilder.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/NewCodeBuilder.kt @@ -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") } diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/jk.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/jk.kt index e92abe5d573..a44ef60ad9c 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/jk.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/jk.kt @@ -501,4 +501,9 @@ fun JKStatement.isEmpty(): Boolean = is JKBlockStatement -> block is JKBodyStub || block.statements.isEmpty() is JKExpressionStatement -> expression is JKStubExpression else -> false - } \ No newline at end of file + } + +class JKPackageDeclarationImpl(packageName: JKNameIdentifier) : JKPackageDeclaration, JKBranchElementBase() { + override var packageName: JKNameIdentifier by child(packageName) + override fun accept(visitor: JKVisitor, data: D): R = visitor.visitPackageDeclaration(this, data) +} \ No newline at end of file diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt index ac0344d66d7..b3a21d5c2c3 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt @@ -300,4 +300,8 @@ interface JKForInStatement : JKStatement { var declaration: JKDeclaration var iterationExpression: JKExpression var body: JKStatement -} \ No newline at end of file +} + +interface JKPackageDeclaration : JKDeclaration { + var packageName: JKNameIdentifier +} diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitor.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitor.kt index 2cebbab5fbe..a68f7e5865d 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitor.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitor.kt @@ -24,8 +24,9 @@ interface JKVisitor { 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 { 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) diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitorVoid.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitorVoid.kt index 5db2fb23145..7a042816bd2 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitorVoid.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitorVoid.kt @@ -45,9 +45,11 @@ interface JKVisitorVoid : JKVisitor { 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 { 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)