From d17548ba737496cab26e3ede5d9545fe72434969 Mon Sep 17 00:00:00 2001 From: Knize Date: Thu, 9 Nov 2017 01:11:02 +0300 Subject: [PATCH] New J2K: Nj2k modifiers hierarchy (#3) --- .../kotlin/j2k/JavaToJKTreeBuilder.kt | 23 ++++++++++--- .../conversions/TransformerBasedConversion.kt | 2 +- .../kotlin/j2k/tree/DebugTreePrinter.kt | 4 +++ .../org/jetbrains/kotlin/j2k/tree/impl/j.kt | 4 +++ .../org/jetbrains/kotlin/j2k/tree/impl/jk.kt | 2 +- j2k/newSrc/org/jetbrains/kotlin/j2k/tree/j.kt | 10 +++++- .../org/jetbrains/kotlin/j2k/tree/jk.kt | 9 ++++- .../kotlin/j2k/tree/visitors/JKTransformer.kt | 32 +++++++++-------- .../j2k/tree/visitors/JKTransformerVoid.kt | 34 +++++++++++-------- .../kotlin/j2k/tree/visitors/JKVisitor.kt | 4 ++- .../kotlin/j2k/tree/visitors/JKVisitorVoid.kt | 6 +++- .../newFileOrElement/first/Modifiers.java | 7 ++++ .../newFileOrElement/first/Modifiers.kt | 0 ...inConverterNewSingleFileTestGenerated.java | 6 ++++ 14 files changed, 103 insertions(+), 40 deletions(-) create mode 100644 j2k/testData/newFileOrElement/first/Modifiers.java create mode 100644 j2k/testData/newFileOrElement/first/Modifiers.kt diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt index 76395076d88..02f3dea0bbb 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt @@ -44,9 +44,13 @@ class JavaToJKTreeBuilder { private object DeclarationMapper { fun PsiClass.toJK(): JKClass { - val modifierList = with(ModifierMapper) { modifierList.toJK() } - val declarations = this.children.filterIsInstance().mapNotNull { it.toJK() } - return JKClassImpl(modifierList, JKNameIdentifierImpl(this.name!!)).also { it.declarations = declarations } + val classKind: JKClass.ClassKind = when { + isAnnotationType -> JKClass.ClassKind.ANNOTATION + isEnum -> JKClass.ClassKind.ENUM + isInterface -> JKClass.ClassKind.INTERFACE + else -> JKClass.ClassKind.CLASS + } + return JKClassImpl(with(ModifierMapper) { modifierList.toJK() }, JKNameIdentifierImpl(this.name!!), classKind) } @@ -107,6 +111,16 @@ class JavaToJKTreeBuilder { PsiModifier.PUBLIC -> JKJavaAccessModifierImpl(JKJavaAccessModifier.AccessModifierType.PUBLIC) PsiModifier.PRIVATE -> JKJavaAccessModifierImpl(JKJavaAccessModifier.AccessModifierType.PRIVATE) PsiModifier.PROTECTED -> JKJavaAccessModifierImpl(JKJavaAccessModifier.AccessModifierType.PROTECTED) + + PsiModifier.ABSTRACT -> JKJavaModifierImpl(JKJavaModifier.JavaModifierType.ABSTRACT) + PsiModifier.FINAL -> JKJavaModifierImpl(JKJavaModifier.JavaModifierType.FINAL) + PsiModifier.NATIVE -> JKJavaModifierImpl(JKJavaModifier.JavaModifierType.NATIVE) + PsiModifier.STATIC -> JKJavaModifierImpl(JKJavaModifier.JavaModifierType.STATIC) + PsiModifier.STRICTFP -> JKJavaModifierImpl(JKJavaModifier.JavaModifierType.STRICTFP) + PsiModifier.SYNCHRONIZED -> JKJavaModifierImpl(JKJavaModifier.JavaModifierType.SYNCHRONIZED) + PsiModifier.TRANSIENT -> JKJavaModifierImpl(JKJavaModifier.JavaModifierType.TRANSIENT) + PsiModifier.VOLATILE -> JKJavaModifierImpl(JKJavaModifier.JavaModifierType.VOLATILE) + else -> TODO("Not yet supported") } } @@ -137,9 +151,10 @@ class JavaToJKTreeBuilder { return elementVisitor.resultElement } + companion object { private fun PsiExpression.buildTreeForExpression(): JKExpression = JavaToJKTreeBuilder.ExpressionTreeVisitor().apply { accept(this) }.result() } -} +} \ No newline at end of file diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/TransformerBasedConversion.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/TransformerBasedConversion.kt index 3b5d8f43506..6c72331ceac 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/TransformerBasedConversion.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/conversions/TransformerBasedConversion.kt @@ -19,7 +19,7 @@ package org.jetbrains.kotlin.j2k.conversions import org.jetbrains.kotlin.j2k.tree.JKElement import org.jetbrains.kotlin.j2k.tree.visitors.JKTransformerVoid -abstract class TransformerBasedConversion: BaseConversion(), JKTransformerVoid { +abstract class TransformerBasedConversion : BaseConversion(), JKTransformerVoid { protected var somethingChanged = false override fun runConversion(treeRoot: JKElement): Boolean { diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/DebugTreePrinter.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/DebugTreePrinter.kt index fe229ea10df..e819c9abeff 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/DebugTreePrinter.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/DebugTreePrinter.kt @@ -31,6 +31,10 @@ private class DebugTreePrinter : JKVisitorVoid { printer.println("]") } + override fun visitJavaModifier(javaModifier: JKJavaModifier) { + printer.println(javaModifier.classNameWithoutJK(), "(", javaModifier.type, ")") + } + override fun visitJavaAccessModifier(javaAccessModifier: JKJavaAccessModifier) { printer.println(javaAccessModifier.classNameWithoutJK(), "(", javaAccessModifier.type, ")") } diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/j.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/j.kt index 4d225d7d40f..3a072ebe9e6 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/j.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/j.kt @@ -52,6 +52,10 @@ class JKJavaAccessModifierImpl(override val type: JKJavaAccessModifier.AccessMod override fun accept(visitor: JKVisitor, data: D): R = visitor.visitJavaAccessModifier(this, data) } +class JKJavaModifierImpl(override val type: JKJavaModifier.JavaModifierType) : JKJavaModifier, JKElementBase() { + override fun accept(visitor: JKVisitor, data: D): R = visitor.visitJavaModifier(this, data) +} + class JKJavaMethodImpl(override var modifierList: JKModifierList, override var name: JKNameIdentifier, override var valueArguments: List, 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 0a0f852ddc2..45481d99f37 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/jk.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/jk.kt @@ -31,7 +31,7 @@ abstract class JKElementBase : JKElement { } -class JKClassImpl(override var modifierList: JKModifierList, override var name: JKNameIdentifier) : JKClass, JKElementBase() { +class JKClassImpl(override var modifierList: JKModifierList, override var name: JKNameIdentifier, override var classKind: JKClass.ClassKind) : JKClass, JKElementBase() { override var declarations: List = mutableListOf() override fun accept(visitor: JKVisitor, data: D): R = visitor.visitClass(this, data) diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/j.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/j.kt index 4cd99bba63c..082b2090ecd 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/j.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/j.kt @@ -22,7 +22,7 @@ interface JKJavaField : JKDeclaration, JKModifierListOwner { var initializer: JKExpression? } -interface JKJavaMethod : JKDeclaration{ +interface JKJavaMethod : JKDeclaration { var modifierList: JKModifierList var name: JKNameIdentifier var valueArguments: List @@ -49,4 +49,12 @@ interface JKJavaAccessModifier : JKAccessModifier { enum class AccessModifierType { PUBLIC, PROTECTED, PRIVATE } +} + +interface JKJavaModifier : JKModifier { + val type: JavaModifierType + + enum class JavaModifierType { + ABSTRACT, FINAL, NATIVE, STATIC, STRICTFP, SYNCHRONIZED, TRANSIENT, VOLATILE + } } \ 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 777e082d41c..edcdb23a467 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt @@ -31,6 +31,11 @@ interface JKElement { interface JKClass : JKDeclaration, JKModifierListOwner { var name: JKNameIdentifier var declarations: List + var classKind: ClassKind + + enum class ClassKind { + ABSTRACT, ANNOTATION, CLASS, ENUM, INTERFACE + } } interface JKStatement : JKElement @@ -72,4 +77,6 @@ interface JKValueArgument : JKElement { interface JKStringLiteralExpression : JKLiteralExpression { val text: String -} \ No newline at end of file +} + +interface JKModalityModifier : JKModifier \ No newline at end of file diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKTransformer.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKTransformer.kt index ad786068682..5e7473101ea 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKTransformer.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKTransformer.kt @@ -3,7 +3,7 @@ package org.jetbrains.kotlin.j2k.tree.visitors import org.jetbrains.kotlin.j2k.tree.* interface JKTransformer : JKVisitor { - override fun visitElement(element: JKElement, data: D): JKElement + override fun visitElement(element: JKElement, data: D): JKElement override fun visitClass(klass: JKClass, data: D): JKClass = visitDeclaration(klass, data) as JKClass override fun visitStatement(statement: JKStatement, data: D): JKStatement = visitElement(statement, data) as JKStatement override fun visitExpression(expression: JKExpression, data: D): JKExpression = visitStatement(expression, data) as JKExpression @@ -20,18 +20,20 @@ interface JKTransformer : JKVisitor { override fun visitAccessModifier(accessModifier: JKAccessModifier, data: D): JKAccessModifier = visitModifier(accessModifier, data) as JKAccessModifier override fun visitValueArgument(valueArgument: JKValueArgument, data: D): JKValueArgument = visitElement(valueArgument, data) as JKValueArgument override fun visitStringLiteralExpression(stringLiteralExpression: JKStringLiteralExpression, data: D): JKStringLiteralExpression = visitLiteralExpression(stringLiteralExpression, data) as JKStringLiteralExpression - override fun visitJavaField(javaField: JKJavaField, data: D): JKDeclaration = visitDeclaration(javaField, data) - override fun visitJavaMethod(javaMethod: JKJavaMethod, data: D): JKDeclaration = visitDeclaration(javaMethod, data) - override fun visitJavaForLoop(javaForLoop: JKJavaForLoop, data: D): JKLoop = visitLoop(javaForLoop, data) - override fun visitJavaAssignmentExpression(javaAssignmentExpression: JKJavaAssignmentExpression, data: D): JKExpression = visitExpression(javaAssignmentExpression, data) - override fun visitJavaCall(javaCall: JKJavaCall, data: D): JKCall = visitCall(javaCall, data) - override fun visitJavaTypeIdentifier(javaTypeIdentifier: JKJavaTypeIdentifier, data: D): JKTypeIdentifier = visitTypeIdentifier(javaTypeIdentifier, data) - override fun visitJavaStringLiteralExpression(javaStringLiteralExpression: JKJavaStringLiteralExpression, data: D): JKLiteralExpression = visitLiteralExpression(javaStringLiteralExpression, data) - override fun visitJavaAccessModifier(javaAccessModifier: JKJavaAccessModifier, data: D): JKAccessModifier = visitAccessModifier(javaAccessModifier, data) - override fun visitKtFun(ktFun: JKKtFun, data: D): JKDeclaration = visitDeclaration(ktFun, data) - override fun visitKtConstructor(ktConstructor: JKKtConstructor, data: D): JKDeclaration = visitDeclaration(ktConstructor, data) - override fun visitKtPrimaryConstructor(ktPrimaryConstructor: JKKtPrimaryConstructor, data: D): JKDeclaration = visitKtConstructor(ktPrimaryConstructor, data) - override fun visitKtAssignmentStatement(ktAssignmentStatement: JKKtAssignmentStatement, data: D): JKStatement = visitStatement(ktAssignmentStatement, data) - override fun visitKtCall(ktCall: JKKtCall, data: D): JKCall = visitCall(ktCall, data) - override fun visitKtProperty(ktProperty: JKKtProperty, data: D): JKDeclaration = visitDeclaration(ktProperty, data) + override fun visitModalityModifier(modalityModifier: JKModalityModifier, data: D): JKModalityModifier = visitModifier(modalityModifier, data) as JKModalityModifier + override fun visitJavaField(javaField: JKJavaField, data: D): JKDeclaration = visitDeclaration(javaField, data) + override fun visitJavaMethod(javaMethod: JKJavaMethod, data: D): JKDeclaration = visitDeclaration(javaMethod, data) + override fun visitJavaForLoop(javaForLoop: JKJavaForLoop, data: D): JKLoop = visitLoop(javaForLoop, data) + override fun visitJavaAssignmentExpression(javaAssignmentExpression: JKJavaAssignmentExpression, data: D): JKExpression = visitExpression(javaAssignmentExpression, data) + override fun visitJavaCall(javaCall: JKJavaCall, data: D): JKCall = visitCall(javaCall, data) + override fun visitJavaTypeIdentifier(javaTypeIdentifier: JKJavaTypeIdentifier, data: D): JKTypeIdentifier = visitTypeIdentifier(javaTypeIdentifier, data) + override fun visitJavaStringLiteralExpression(javaStringLiteralExpression: JKJavaStringLiteralExpression, data: D): JKLiteralExpression = visitLiteralExpression(javaStringLiteralExpression, data) + override fun visitJavaAccessModifier(javaAccessModifier: JKJavaAccessModifier, data: D): JKAccessModifier = visitAccessModifier(javaAccessModifier, data) + override fun visitJavaModifier(javaModifier: JKJavaModifier, data: D): JKModifier = visitModifier(javaModifier, data) + override fun visitKtFun(ktFun: JKKtFun, data: D): JKDeclaration = visitDeclaration(ktFun, data) + override fun visitKtConstructor(ktConstructor: JKKtConstructor, data: D): JKDeclaration = visitDeclaration(ktConstructor, data) + override fun visitKtPrimaryConstructor(ktPrimaryConstructor: JKKtPrimaryConstructor, data: D): JKDeclaration = visitKtConstructor(ktPrimaryConstructor, data) + override fun visitKtAssignmentStatement(ktAssignmentStatement: JKKtAssignmentStatement, data: D): JKStatement = visitStatement(ktAssignmentStatement, data) + override fun visitKtCall(ktCall: JKKtCall, data: D): JKCall = visitCall(ktCall, data) + override fun visitKtProperty(ktProperty: JKKtProperty, data: D): JKDeclaration = visitDeclaration(ktProperty, data) } diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKTransformerVoid.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKTransformerVoid.kt index e2ab26406cb..d1c25a64922 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKTransformerVoid.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKTransformerVoid.kt @@ -3,7 +3,7 @@ package org.jetbrains.kotlin.j2k.tree.visitors import org.jetbrains.kotlin.j2k.tree.* interface JKTransformerVoid : JKTransformer { - fun visitElement(element: JKElement): JKElement + fun visitElement(element: JKElement): JKElement override fun visitElement(element: JKElement, data: Nothing?): JKElement = visitElement(element) fun visitClass(klass: JKClass): JKClass = visitDeclaration(klass) as JKClass override fun visitClass(klass: JKClass, data: Nothing?): JKClass = visitClass(klass) @@ -37,32 +37,36 @@ interface JKTransformerVoid : JKTransformer { override fun visitValueArgument(valueArgument: JKValueArgument, data: Nothing?): JKValueArgument = visitValueArgument(valueArgument) fun visitStringLiteralExpression(stringLiteralExpression: JKStringLiteralExpression): JKStringLiteralExpression = visitLiteralExpression(stringLiteralExpression) as JKStringLiteralExpression override fun visitStringLiteralExpression(stringLiteralExpression: JKStringLiteralExpression, data: Nothing?): JKStringLiteralExpression = visitStringLiteralExpression(stringLiteralExpression) - fun visitJavaField(javaField: JKJavaField): JKDeclaration = visitDeclaration(javaField) + fun visitModalityModifier(modalityModifier: JKModalityModifier): JKModalityModifier = visitModifier(modalityModifier) as JKModalityModifier + override fun visitModalityModifier(modalityModifier: JKModalityModifier, data: Nothing?): JKModalityModifier = visitModalityModifier(modalityModifier) + fun visitJavaField(javaField: JKJavaField): JKDeclaration = visitDeclaration(javaField) override fun visitJavaField(javaField: JKJavaField, data: Nothing?): JKDeclaration = visitJavaField(javaField) - fun visitJavaMethod(javaMethod: JKJavaMethod): JKDeclaration = visitDeclaration(javaMethod) + fun visitJavaMethod(javaMethod: JKJavaMethod): JKDeclaration = visitDeclaration(javaMethod) override fun visitJavaMethod(javaMethod: JKJavaMethod, data: Nothing?): JKDeclaration = visitJavaMethod(javaMethod) - fun visitJavaForLoop(javaForLoop: JKJavaForLoop): JKLoop = visitLoop(javaForLoop) + fun visitJavaForLoop(javaForLoop: JKJavaForLoop): JKLoop = visitLoop(javaForLoop) override fun visitJavaForLoop(javaForLoop: JKJavaForLoop, data: Nothing?): JKLoop = visitJavaForLoop(javaForLoop) - fun visitJavaAssignmentExpression(javaAssignmentExpression: JKJavaAssignmentExpression): JKExpression = visitExpression(javaAssignmentExpression) + fun visitJavaAssignmentExpression(javaAssignmentExpression: JKJavaAssignmentExpression): JKExpression = visitExpression(javaAssignmentExpression) override fun visitJavaAssignmentExpression(javaAssignmentExpression: JKJavaAssignmentExpression, data: Nothing?): JKExpression = visitJavaAssignmentExpression(javaAssignmentExpression) - fun visitJavaCall(javaCall: JKJavaCall): JKCall = visitCall(javaCall) + fun visitJavaCall(javaCall: JKJavaCall): JKCall = visitCall(javaCall) override fun visitJavaCall(javaCall: JKJavaCall, data: Nothing?): JKCall = visitJavaCall(javaCall) - fun visitJavaTypeIdentifier(javaTypeIdentifier: JKJavaTypeIdentifier): JKTypeIdentifier = visitTypeIdentifier(javaTypeIdentifier) + fun visitJavaTypeIdentifier(javaTypeIdentifier: JKJavaTypeIdentifier): JKTypeIdentifier = visitTypeIdentifier(javaTypeIdentifier) override fun visitJavaTypeIdentifier(javaTypeIdentifier: JKJavaTypeIdentifier, data: Nothing?): JKTypeIdentifier = visitJavaTypeIdentifier(javaTypeIdentifier) - fun visitJavaStringLiteralExpression(javaStringLiteralExpression: JKJavaStringLiteralExpression): JKLiteralExpression = visitLiteralExpression(javaStringLiteralExpression) + fun visitJavaStringLiteralExpression(javaStringLiteralExpression: JKJavaStringLiteralExpression): JKLiteralExpression = visitLiteralExpression(javaStringLiteralExpression) override fun visitJavaStringLiteralExpression(javaStringLiteralExpression: JKJavaStringLiteralExpression, data: Nothing?): JKLiteralExpression = visitJavaStringLiteralExpression(javaStringLiteralExpression) - fun visitJavaAccessModifier(javaAccessModifier: JKJavaAccessModifier): JKAccessModifier = visitAccessModifier(javaAccessModifier) + fun visitJavaAccessModifier(javaAccessModifier: JKJavaAccessModifier): JKAccessModifier = visitAccessModifier(javaAccessModifier) override fun visitJavaAccessModifier(javaAccessModifier: JKJavaAccessModifier, data: Nothing?): JKAccessModifier = visitJavaAccessModifier(javaAccessModifier) - fun visitKtFun(ktFun: JKKtFun): JKDeclaration = visitDeclaration(ktFun) + fun visitJavaModifier(javaModifier: JKJavaModifier): JKModifier = visitModifier(javaModifier) + override fun visitJavaModifier(javaModifier: JKJavaModifier, data: Nothing?): JKModifier = visitJavaModifier(javaModifier) + fun visitKtFun(ktFun: JKKtFun): JKDeclaration = visitDeclaration(ktFun) override fun visitKtFun(ktFun: JKKtFun, data: Nothing?): JKDeclaration = visitKtFun(ktFun) - fun visitKtConstructor(ktConstructor: JKKtConstructor): JKDeclaration = visitDeclaration(ktConstructor) + fun visitKtConstructor(ktConstructor: JKKtConstructor): JKDeclaration = visitDeclaration(ktConstructor) override fun visitKtConstructor(ktConstructor: JKKtConstructor, data: Nothing?): JKDeclaration = visitKtConstructor(ktConstructor) - fun visitKtPrimaryConstructor(ktPrimaryConstructor: JKKtPrimaryConstructor): JKDeclaration = visitKtConstructor(ktPrimaryConstructor) + fun visitKtPrimaryConstructor(ktPrimaryConstructor: JKKtPrimaryConstructor): JKDeclaration = visitKtConstructor(ktPrimaryConstructor) override fun visitKtPrimaryConstructor(ktPrimaryConstructor: JKKtPrimaryConstructor, data: Nothing?): JKDeclaration = visitKtPrimaryConstructor(ktPrimaryConstructor) - fun visitKtAssignmentStatement(ktAssignmentStatement: JKKtAssignmentStatement): JKStatement = visitStatement(ktAssignmentStatement) + fun visitKtAssignmentStatement(ktAssignmentStatement: JKKtAssignmentStatement): JKStatement = visitStatement(ktAssignmentStatement) override fun visitKtAssignmentStatement(ktAssignmentStatement: JKKtAssignmentStatement, data: Nothing?): JKStatement = visitKtAssignmentStatement(ktAssignmentStatement) - fun visitKtCall(ktCall: JKKtCall): JKCall = visitCall(ktCall) + fun visitKtCall(ktCall: JKKtCall): JKCall = visitCall(ktCall) override fun visitKtCall(ktCall: JKKtCall, data: Nothing?): JKCall = visitKtCall(ktCall) - fun visitKtProperty(ktProperty: JKKtProperty): JKDeclaration = visitDeclaration(ktProperty) + fun visitKtProperty(ktProperty: JKKtProperty): JKDeclaration = visitDeclaration(ktProperty) override fun visitKtProperty(ktProperty: JKKtProperty, data: Nothing?): JKDeclaration = visitKtProperty(ktProperty) } 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 e836c4abb5c..56390b0e5ce 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitor.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitor.kt @@ -3,7 +3,7 @@ package org.jetbrains.kotlin.j2k.tree.visitors import org.jetbrains.kotlin.j2k.tree.* interface JKVisitor { - fun visitElement(element: JKElement, data: D): R + fun visitElement(element: JKElement, data: D): R fun visitClass(klass: JKClass, data: D): R = visitDeclaration(klass, data) fun visitStatement(statement: JKStatement, data: D): R = visitElement(statement, data) fun visitExpression(expression: JKExpression, data: D): R = visitStatement(expression, data) @@ -20,6 +20,7 @@ interface JKVisitor { fun visitAccessModifier(accessModifier: JKAccessModifier, data: D): R = visitModifier(accessModifier, data) fun visitValueArgument(valueArgument: JKValueArgument, data: D): R = visitElement(valueArgument, data) fun visitStringLiteralExpression(stringLiteralExpression: JKStringLiteralExpression, data: D): R = visitLiteralExpression(stringLiteralExpression, data) + fun visitModalityModifier(modalityModifier: JKModalityModifier, data: D): R = visitModifier(modalityModifier, data) fun visitJavaField(javaField: JKJavaField, data: D): R = visitDeclaration(javaField, data) fun visitJavaMethod(javaMethod: JKJavaMethod, data: D): R = visitDeclaration(javaMethod, data) fun visitJavaForLoop(javaForLoop: JKJavaForLoop, data: D): R = visitLoop(javaForLoop, data) @@ -28,6 +29,7 @@ interface JKVisitor { fun visitJavaTypeIdentifier(javaTypeIdentifier: JKJavaTypeIdentifier, data: D): R = visitTypeIdentifier(javaTypeIdentifier, data) fun visitJavaStringLiteralExpression(javaStringLiteralExpression: JKJavaStringLiteralExpression, data: D): R = visitLiteralExpression(javaStringLiteralExpression, data) fun visitJavaAccessModifier(javaAccessModifier: JKJavaAccessModifier, data: D): R = visitAccessModifier(javaAccessModifier, data) + fun visitJavaModifier(javaModifier: JKJavaModifier, data: D): R = visitModifier(javaModifier, data) fun visitKtFun(ktFun: JKKtFun, data: D): R = visitDeclaration(ktFun, data) fun visitKtConstructor(ktConstructor: JKKtConstructor, data: D): R = visitDeclaration(ktConstructor, data) fun visitKtPrimaryConstructor(ktPrimaryConstructor: JKKtPrimaryConstructor, data: D): R = visitKtConstructor(ktPrimaryConstructor, 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 e0aea26dde7..a1f9c34fbf2 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitorVoid.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitorVoid.kt @@ -3,7 +3,7 @@ package org.jetbrains.kotlin.j2k.tree.visitors import org.jetbrains.kotlin.j2k.tree.* interface JKVisitorVoid : JKVisitor { - fun visitElement(element: JKElement) + fun visitElement(element: JKElement) override fun visitElement(element: JKElement, data: Nothing?) = visitElement(element) fun visitClass(klass: JKClass) = visitDeclaration(klass, null) override fun visitClass(klass: JKClass, data: Nothing?) = visitClass(klass) @@ -37,6 +37,8 @@ interface JKVisitorVoid : JKVisitor { override fun visitValueArgument(valueArgument: JKValueArgument, data: Nothing?) = visitValueArgument(valueArgument) fun visitStringLiteralExpression(stringLiteralExpression: JKStringLiteralExpression) = visitLiteralExpression(stringLiteralExpression, null) override fun visitStringLiteralExpression(stringLiteralExpression: JKStringLiteralExpression, data: Nothing?) = visitStringLiteralExpression(stringLiteralExpression) + fun visitModalityModifier(modalityModifier: JKModalityModifier) = visitModifier(modalityModifier, null) + override fun visitModalityModifier(modalityModifier: JKModalityModifier, data: Nothing?) = visitModalityModifier(modalityModifier) fun visitJavaField(javaField: JKJavaField) = visitDeclaration(javaField, null) override fun visitJavaField(javaField: JKJavaField, data: Nothing?) = visitJavaField(javaField) fun visitJavaMethod(javaMethod: JKJavaMethod) = visitDeclaration(javaMethod, null) @@ -53,6 +55,8 @@ interface JKVisitorVoid : JKVisitor { override fun visitJavaStringLiteralExpression(javaStringLiteralExpression: JKJavaStringLiteralExpression, data: Nothing?) = visitJavaStringLiteralExpression(javaStringLiteralExpression) fun visitJavaAccessModifier(javaAccessModifier: JKJavaAccessModifier) = visitAccessModifier(javaAccessModifier, null) override fun visitJavaAccessModifier(javaAccessModifier: JKJavaAccessModifier, data: Nothing?) = visitJavaAccessModifier(javaAccessModifier) + fun visitJavaModifier(javaModifier: JKJavaModifier) = visitModifier(javaModifier, null) + override fun visitJavaModifier(javaModifier: JKJavaModifier, data: Nothing?) = visitJavaModifier(javaModifier) fun visitKtFun(ktFun: JKKtFun) = visitDeclaration(ktFun, null) override fun visitKtFun(ktFun: JKKtFun, data: Nothing?) = visitKtFun(ktFun) fun visitKtConstructor(ktConstructor: JKKtConstructor) = visitDeclaration(ktConstructor, null) diff --git a/j2k/testData/newFileOrElement/first/Modifiers.java b/j2k/testData/newFileOrElement/first/Modifiers.java new file mode 100644 index 00000000000..bfd8c004554 --- /dev/null +++ b/j2k/testData/newFileOrElement/first/Modifiers.java @@ -0,0 +1,7 @@ +package p; + +public class Some { + public static void main(String[] args) { + + } +} \ No newline at end of file diff --git a/j2k/testData/newFileOrElement/first/Modifiers.kt b/j2k/testData/newFileOrElement/first/Modifiers.kt new file mode 100644 index 00000000000..e69de29bb2d diff --git a/j2k/tests/org/jetbrains/kotlin/j2k/NewJavaToKotlinConverterNewSingleFileTestGenerated.java b/j2k/tests/org/jetbrains/kotlin/j2k/NewJavaToKotlinConverterNewSingleFileTestGenerated.java index c28ce22d7aa..b09369046f0 100644 --- a/j2k/tests/org/jetbrains/kotlin/j2k/NewJavaToKotlinConverterNewSingleFileTestGenerated.java +++ b/j2k/tests/org/jetbrains/kotlin/j2k/NewJavaToKotlinConverterNewSingleFileTestGenerated.java @@ -49,5 +49,11 @@ public class NewJavaToKotlinConverterNewSingleFileTestGenerated extends Abstract String fileName = KotlinTestUtils.navigationMetadata("j2k/testData/newFileOrElement/first/First.java"); doTest(fileName); } + + @TestMetadata("Modifiers.java") + public void testModifiers() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("j2k/testData/newFileOrElement/first/Modifiers.java"); + doTest(fileName); + } } }