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) =
|
||||
batchPipe {
|
||||
//Java --> Kotlin conversions
|
||||
+JavaModifiersConversion()
|
||||
+JavaModifiersConversion(context)
|
||||
+JavaAnnotationsConversion()
|
||||
+InternalClassConversion(context)
|
||||
+ModalityConversion(context)
|
||||
+AssignmentAsExpressionToAlsoConversion(context)
|
||||
|
||||
@@ -372,6 +372,7 @@ class JavaToJKTreeBuilder(var symbolProvider: JKSymbolProvider) {
|
||||
with(expressionTreeMapper) { typeElement?.toJK() } ?: JKTypeElementImpl(JKNoTypeImpl),
|
||||
JKNameIdentifierImpl(name),
|
||||
with(expressionTreeMapper) { initializer.toJK() },
|
||||
JKAnnotationListImpl(annotations.map { it.toJK() }),
|
||||
modifiers(),
|
||||
visibility(),
|
||||
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 {
|
||||
return JKJavaMethodImpl(
|
||||
with(expressionTreeMapper) {
|
||||
|
||||
@@ -220,6 +220,10 @@ class NewCodeBuilder {
|
||||
|
||||
|
||||
override fun visitKtProperty(ktProperty: JKKtProperty) {
|
||||
ktProperty.annotationList.accept(this)
|
||||
if (ktProperty.annotationList.annotations.isNotEmpty()) {
|
||||
printer.println()
|
||||
}
|
||||
renderModifiersList(ktProperty)
|
||||
|
||||
printer.printWithNoIndent(" ")
|
||||
|
||||
@@ -45,6 +45,7 @@ class FieldToPropertyConversion(private val context: ConversionContext) : Recurs
|
||||
JKTypeElementImpl(it.returnType.type),
|
||||
JKNameIdentifierImpl(propertyNameFromGet(it)!!),
|
||||
JKStubExpressionImpl(),
|
||||
JKAnnotationListImpl(),
|
||||
emptyList(),
|
||||
Visibility.PRIVATE,
|
||||
Modality.OPEN,
|
||||
@@ -104,6 +105,7 @@ class FieldToPropertyConversion(private val context: ConversionContext) : Recurs
|
||||
propertyField.initializer,
|
||||
ktGetter,
|
||||
ktSetter,
|
||||
propertyField.annotationList,
|
||||
propertyField.extraModifiers,
|
||||
visibility,
|
||||
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
|
||||
|
||||
class JKJavaFieldImpl(
|
||||
type: JKTypeElement, name: JKNameIdentifier, initializer: JKExpression,
|
||||
type: JKTypeElement,
|
||||
name: JKNameIdentifier,
|
||||
initializer: JKExpression,
|
||||
annotationList: JKAnnotationList,
|
||||
override var extraModifiers: List<ExtraModifier>,
|
||||
override var visibility: Visibility,
|
||||
override var modality: Modality,
|
||||
@@ -37,6 +40,7 @@ class JKJavaFieldImpl(
|
||||
JKBranchElementBase(), PsiOwner by PsiOwnerImpl() {
|
||||
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 type by child(type)
|
||||
override var name: JKNameIdentifier by child(name)
|
||||
|
||||
@@ -501,7 +501,7 @@ class JKAnnotationListImpl(annotations: List<JKAnnotation> = emptyList()) : JKAn
|
||||
|
||||
class JKAnnotationImpl(
|
||||
override val classSymbol: JKClassSymbol,
|
||||
arguments: JKExpressionList
|
||||
arguments: JKExpressionList = JKExpressionListImpl()
|
||||
) : JKAnnotation, JKBranchElementBase() {
|
||||
override var arguments: JKExpressionList by child(arguments)
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitAnnotation(this, data)
|
||||
|
||||
@@ -31,6 +31,7 @@ class JKKtPropertyImpl(
|
||||
initializer: JKExpression,
|
||||
getter: JKKtGetterOrSetter,
|
||||
setter: JKKtGetterOrSetter,
|
||||
annotationList: JKAnnotationList,
|
||||
override var extraModifiers: List<ExtraModifier>,
|
||||
override var visibility: Visibility,
|
||||
override var modality: Modality,
|
||||
@@ -38,6 +39,7 @@ class JKKtPropertyImpl(
|
||||
) : JKBranchElementBase(), JKKtProperty {
|
||||
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 name: JKNameIdentifier by child(name)
|
||||
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.j2k.tree.impl.*
|
||||
|
||||
interface JKField : JKVariable, JKVisibilityOwner, JKMutabilityOwner, JKModalityOwner, JKExtraModifiersOwner
|
||||
interface JKField : JKVariable, JKVisibilityOwner, JKMutabilityOwner, JKModalityOwner, JKExtraModifiersOwner, JKAnnotationListOwner
|
||||
|
||||
interface JKJavaField : JKField, JKBranchElement
|
||||
|
||||
|
||||
Reference in New Issue
Block a user