New J2K: Add annotations for JKField
This commit is contained in:
committed by
Ilya Kirillov
parent
2633834741
commit
213aa9a86d
@@ -24,7 +24,8 @@ object ConversionsRunner {
|
|||||||
private fun createRootConversion(context: ConversionContext) =
|
private fun createRootConversion(context: ConversionContext) =
|
||||||
batchPipe {
|
batchPipe {
|
||||||
//Java --> Kotlin conversions
|
//Java --> Kotlin conversions
|
||||||
+JavaModifiersConversion()
|
+JavaModifiersConversion(context)
|
||||||
|
+JavaAnnotationsConversion()
|
||||||
+InternalClassConversion(context)
|
+InternalClassConversion(context)
|
||||||
+ModalityConversion(context)
|
+ModalityConversion(context)
|
||||||
+AssignmentAsExpressionToAlsoConversion(context)
|
+AssignmentAsExpressionToAlsoConversion(context)
|
||||||
|
|||||||
@@ -372,6 +372,7 @@ class JavaToJKTreeBuilder(var symbolProvider: JKSymbolProvider) {
|
|||||||
with(expressionTreeMapper) { typeElement?.toJK() } ?: JKTypeElementImpl(JKNoTypeImpl),
|
with(expressionTreeMapper) { typeElement?.toJK() } ?: JKTypeElementImpl(JKNoTypeImpl),
|
||||||
JKNameIdentifierImpl(name),
|
JKNameIdentifierImpl(name),
|
||||||
with(expressionTreeMapper) { initializer.toJK() },
|
with(expressionTreeMapper) { initializer.toJK() },
|
||||||
|
JKAnnotationListImpl(annotations.map { it.toJK() }),
|
||||||
modifiers(),
|
modifiers(),
|
||||||
visibility(),
|
visibility(),
|
||||||
modality(),
|
modality(),
|
||||||
@@ -382,6 +383,15 @@ class JavaToJKTreeBuilder(var symbolProvider: JKSymbolProvider) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun PsiAnnotation.toJK(): JKAnnotation =
|
||||||
|
JKAnnotationImpl(
|
||||||
|
symbolProvider.provideSymbol(nameReferenceElement!!),
|
||||||
|
with(expressionTreeMapper) {
|
||||||
|
JKExpressionListImpl(parameterList.attributes.map { (it.value as? PsiExpression).toJK() })
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
fun PsiMethod.toJK(): JKJavaMethod {
|
fun PsiMethod.toJK(): JKJavaMethod {
|
||||||
return JKJavaMethodImpl(
|
return JKJavaMethodImpl(
|
||||||
with(expressionTreeMapper) {
|
with(expressionTreeMapper) {
|
||||||
|
|||||||
@@ -220,6 +220,10 @@ class NewCodeBuilder {
|
|||||||
|
|
||||||
|
|
||||||
override fun visitKtProperty(ktProperty: JKKtProperty) {
|
override fun visitKtProperty(ktProperty: JKKtProperty) {
|
||||||
|
ktProperty.annotationList.accept(this)
|
||||||
|
if (ktProperty.annotationList.annotations.isNotEmpty()) {
|
||||||
|
printer.println()
|
||||||
|
}
|
||||||
renderModifiersList(ktProperty)
|
renderModifiersList(ktProperty)
|
||||||
|
|
||||||
printer.printWithNoIndent(" ")
|
printer.printWithNoIndent(" ")
|
||||||
|
|||||||
@@ -45,6 +45,7 @@ class FieldToPropertyConversion(private val context: ConversionContext) : Recurs
|
|||||||
JKTypeElementImpl(it.returnType.type),
|
JKTypeElementImpl(it.returnType.type),
|
||||||
JKNameIdentifierImpl(propertyNameFromGet(it)!!),
|
JKNameIdentifierImpl(propertyNameFromGet(it)!!),
|
||||||
JKStubExpressionImpl(),
|
JKStubExpressionImpl(),
|
||||||
|
JKAnnotationListImpl(),
|
||||||
emptyList(),
|
emptyList(),
|
||||||
Visibility.PRIVATE,
|
Visibility.PRIVATE,
|
||||||
Modality.OPEN,
|
Modality.OPEN,
|
||||||
@@ -104,6 +105,7 @@ class FieldToPropertyConversion(private val context: ConversionContext) : Recurs
|
|||||||
propertyField.initializer,
|
propertyField.initializer,
|
||||||
ktGetter,
|
ktGetter,
|
||||||
ktSetter,
|
ktSetter,
|
||||||
|
propertyField.annotationList,
|
||||||
propertyField.extraModifiers,
|
propertyField.extraModifiers,
|
||||||
visibility,
|
visibility,
|
||||||
propertyField.modality,
|
propertyField.modality,
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
||||||
|
* that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.j2k.conversions
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.j2k.tree.*
|
||||||
|
import org.jetbrains.kotlin.j2k.tree.impl.JKKtLiteralExpressionImpl
|
||||||
|
|
||||||
|
class JavaAnnotationsConversion : RecursiveApplicableConversionBase() {
|
||||||
|
override fun applyToElement(element: JKTreeElement): JKTreeElement {
|
||||||
|
if (element !is JKAnnotation) return recurse(element)
|
||||||
|
if (element.classSymbol.name == "Deprecated" && element.arguments.expressions.isEmpty()) {
|
||||||
|
element.arguments.expressions += JKKtLiteralExpressionImpl("\"\"", JKLiteralExpression.LiteralType.STRING)
|
||||||
|
}
|
||||||
|
return recurse(element)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -28,7 +28,10 @@ import org.jetbrains.kotlin.lexer.KtTokens
|
|||||||
import org.jetbrains.kotlin.resolve.jvm.JvmPrimitiveType
|
import org.jetbrains.kotlin.resolve.jvm.JvmPrimitiveType
|
||||||
|
|
||||||
class JKJavaFieldImpl(
|
class JKJavaFieldImpl(
|
||||||
type: JKTypeElement, name: JKNameIdentifier, initializer: JKExpression,
|
type: JKTypeElement,
|
||||||
|
name: JKNameIdentifier,
|
||||||
|
initializer: JKExpression,
|
||||||
|
annotationList: JKAnnotationList,
|
||||||
override var extraModifiers: List<ExtraModifier>,
|
override var extraModifiers: List<ExtraModifier>,
|
||||||
override var visibility: Visibility,
|
override var visibility: Visibility,
|
||||||
override var modality: Modality,
|
override var modality: Modality,
|
||||||
@@ -37,6 +40,7 @@ class JKJavaFieldImpl(
|
|||||||
JKBranchElementBase(), PsiOwner by PsiOwnerImpl() {
|
JKBranchElementBase(), PsiOwner by PsiOwnerImpl() {
|
||||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitJavaField(this, data)
|
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitJavaField(this, data)
|
||||||
|
|
||||||
|
override var annotationList: JKAnnotationList by child(annotationList)
|
||||||
override var initializer: JKExpression by child(initializer)
|
override var initializer: JKExpression by child(initializer)
|
||||||
override var type by child(type)
|
override var type by child(type)
|
||||||
override var name: JKNameIdentifier by child(name)
|
override var name: JKNameIdentifier by child(name)
|
||||||
|
|||||||
@@ -501,7 +501,7 @@ class JKAnnotationListImpl(annotations: List<JKAnnotation> = emptyList()) : JKAn
|
|||||||
|
|
||||||
class JKAnnotationImpl(
|
class JKAnnotationImpl(
|
||||||
override val classSymbol: JKClassSymbol,
|
override val classSymbol: JKClassSymbol,
|
||||||
arguments: JKExpressionList
|
arguments: JKExpressionList = JKExpressionListImpl()
|
||||||
) : JKAnnotation, JKBranchElementBase() {
|
) : JKAnnotation, JKBranchElementBase() {
|
||||||
override var arguments: JKExpressionList by child(arguments)
|
override var arguments: JKExpressionList by child(arguments)
|
||||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitAnnotation(this, data)
|
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitAnnotation(this, data)
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ class JKKtPropertyImpl(
|
|||||||
initializer: JKExpression,
|
initializer: JKExpression,
|
||||||
getter: JKKtGetterOrSetter,
|
getter: JKKtGetterOrSetter,
|
||||||
setter: JKKtGetterOrSetter,
|
setter: JKKtGetterOrSetter,
|
||||||
|
annotationList: JKAnnotationList,
|
||||||
override var extraModifiers: List<ExtraModifier>,
|
override var extraModifiers: List<ExtraModifier>,
|
||||||
override var visibility: Visibility,
|
override var visibility: Visibility,
|
||||||
override var modality: Modality,
|
override var modality: Modality,
|
||||||
@@ -38,6 +39,7 @@ class JKKtPropertyImpl(
|
|||||||
) : JKBranchElementBase(), JKKtProperty {
|
) : JKBranchElementBase(), JKKtProperty {
|
||||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitKtProperty(this, data)
|
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitKtProperty(this, data)
|
||||||
|
|
||||||
|
override var annotationList: JKAnnotationList by child(annotationList)
|
||||||
override var type by child(type)
|
override var type by child(type)
|
||||||
override var name: JKNameIdentifier by child(name)
|
override var name: JKNameIdentifier by child(name)
|
||||||
override var initializer: JKExpression by child(initializer)
|
override var initializer: JKExpression by child(initializer)
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ package org.jetbrains.kotlin.j2k.tree
|
|||||||
import org.jetbrains.kotlin.idea.search.usagesSearch.constructor
|
import org.jetbrains.kotlin.idea.search.usagesSearch.constructor
|
||||||
import org.jetbrains.kotlin.j2k.tree.impl.*
|
import org.jetbrains.kotlin.j2k.tree.impl.*
|
||||||
|
|
||||||
interface JKField : JKVariable, JKVisibilityOwner, JKMutabilityOwner, JKModalityOwner, JKExtraModifiersOwner
|
interface JKField : JKVariable, JKVisibilityOwner, JKMutabilityOwner, JKModalityOwner, JKExtraModifiersOwner, JKAnnotationListOwner
|
||||||
|
|
||||||
interface JKJavaField : JKField, JKBranchElement
|
interface JKJavaField : JKField, JKBranchElement
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user