From 09d52d13b8ce1909878a8714071940bdf63a0555 Mon Sep 17 00:00:00 2001 From: Dimach Date: Tue, 6 Mar 2018 05:30:21 +0200 Subject: [PATCH] New J2K: Type system. --- .../kotlin/j2k/JavaToJKTreeBuilder.kt | 59 +++++-------------- .../tree/conveersionCache/Implementations.kt | 4 +- .../ReferenceTargetProvider.kt | 14 +---- .../org/jetbrains/kotlin/j2k/tree/impl/j.kt | 38 ++++++++---- .../org/jetbrains/kotlin/j2k/tree/impl/jk.kt | 13 ++-- .../org/jetbrains/kotlin/j2k/tree/impl/k.kt | 2 +- j2k/newSrc/org/jetbrains/kotlin/j2k/tree/j.kt | 11 +++- .../org/jetbrains/kotlin/j2k/tree/jk.kt | 9 ++- j2k/newSrc/org/jetbrains/kotlin/j2k/tree/k.kt | 5 +- .../kotlin/j2k/tree/visitors/JKTransformer.kt | 5 +- .../j2k/tree/visitors/JKTransformerVoid.kt | 10 ++-- .../kotlin/j2k/tree/visitors/JKVisitor.kt | 5 +- .../kotlin/j2k/tree/visitors/JKVisitorVoid.kt | 10 ++-- .../newFileOrElement/first/First.java | 2 +- 14 files changed, 83 insertions(+), 104 deletions(-) diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt index 872130bb43a..aada5a460c7 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/JavaToJKTreeBuilder.kt @@ -26,7 +26,6 @@ import org.jetbrains.kotlin.j2k.tree.* import org.jetbrains.kotlin.j2k.tree.conveersionCache.JKMultiverseClass import org.jetbrains.kotlin.j2k.tree.conveersionCache.ReferenceTargetProvider import org.jetbrains.kotlin.j2k.tree.impl.* -import java.util.* class JavaToJKTreeBuilder : ReferenceTargetProvider { @@ -187,7 +186,7 @@ class JavaToJKTreeBuilder : ReferenceTargetProvider { } fun PsiTypeCastExpression.toJK(): JKExpression { - return JKTypeCastExpressionImpl(operand?.toJK(), castType?.toJK()) + return JKTypeCastExpressionImpl(operand?.toJK(), castType?.type?.toJK()) } fun PsiParenthesizedExpression.toJK(): JKExpression { @@ -198,10 +197,10 @@ class JavaToJKTreeBuilder : ReferenceTargetProvider { return JKExpressionListImpl(this?.expressions?.map { it.toJK() }?.toTypedArray() ?: emptyArray()) } - fun PsiElement?.convertReference(): JKReference = when(this){ + fun PsiElement?.convertReference(): JKReference = when (this) { is PsiMethod -> convertMethodReference() is PsiField -> convertFieldReference() - is PsiClass -> convertType() + is PsiClass -> convertClassReference() else -> throw Exception("Invalid PSI") } @@ -215,32 +214,18 @@ class JavaToJKTreeBuilder : ReferenceTargetProvider { return JKFieldReferenceImpl(clazz, this@JavaToJKTreeBuilder.resolveFieldReference(clazz, this)) } - fun PsiClass.convertType(): JKJavaClassReference { + fun PsiClass.convertClassReference(): JKJavaClassReference { return JKClassReferenceImpl(this@JavaToJKTreeBuilder.resolveClassReference(this)) } - fun PsiTypeElement.toJK(): JKType? { - return innermostComponentReferenceElement?.convertType() - } - - fun PsiJavaCodeReferenceElement.convertType(): JKType { - val classReference = JKClassReferenceImpl(this@JavaToJKTreeBuilder.resolveClassReference(this.resolve() as? PsiClass ?: TODO())) - val typeArguments = ArrayList() - parameterList?.typeParameterElements?.forEach { it -> - kotlin.run { - val type = it.toJK() - if (type != null) typeArguments.add(type) - } - } - return JKTypeImpl(classReference, typeArguments) + fun PsiType.toJK(): JKType { + val ref = JKClassReferenceImpl(this@JavaToJKTreeBuilder.resolveClassReference((this as PsiClassType).resolve() ?: TODO())) //TODO support other types + return JKClassTypeImpl(ref, parameters.map { it.toJK() }) } } private inner class DeclarationMapper(val expressionTreeMapper: ExpressionTreeMapper) { - - val declarationMapper = this - fun PsiClass.toJK(): JKClass { val classKind: JKClass.ClassKind = when { isAnnotationType -> JKClass.ClassKind.ANNOTATION @@ -248,34 +233,19 @@ class JavaToJKTreeBuilder : ReferenceTargetProvider { isInterface -> JKClass.ClassKind.INTERFACE else -> JKClass.ClassKind.CLASS } - return JKClassImpl(with(modifierMapper) { modifierList.toJK() }, JKNameIdentifierImpl(this.name!!), classKind).apply { - declarations = children.mapNotNull { ElementVisitor(declarationMapper).apply { it.accept(this) }.resultElement as? JKDeclaration } + return JKClassImpl(with(modifierMapper) { modifierList.toJK() }, JKNameIdentifierImpl(name!!), classKind).apply { + declarations = children.mapNotNull { ElementVisitor(this@DeclarationMapper).apply { it.accept(this) }.resultElement as? JKDeclaration } } } - fun PsiField.toJK(): JKJavaField { - - val initializer = with(expressionTreeMapper) { - initializer?.toJK() - } - - val type = JKJavaTypeIdentifierImpl(this.type.canonicalText) - val name = JKNameIdentifierImpl(this.name!!) - - val modifierList = with(modifierMapper) { - modifierList.toJK() - } - - return JKJavaFieldImpl(modifierList, type, name, initializer) + return JKJavaFieldImpl(with(modifierMapper) { modifierList.toJK() }, with(expressionTreeMapper) { type.toJK() }, + JKNameIdentifierImpl(this.name!!), with(expressionTreeMapper) { initializer?.toJK() }) } fun PsiMethod.toJK(): JKJavaMethod { - val modifierList = with(modifierMapper) { modifierList.toJK() } - val name = JKNameIdentifierImpl(name) - val valueArgumentList = this.parameterList.parameters.map { it -> it.toJK() } - val block = body?.toJK() - return JKJavaMethodImpl(modifierList, name, valueArgumentList, block) + return JKJavaMethodImpl(with(modifierMapper) { modifierList.toJK() }, JKNameIdentifierImpl(name), + parameterList.parameters.map { it -> it.toJK() }, body?.toJK()) } fun PsiMember.toJK(): JKDeclaration? = when (this) { @@ -285,8 +255,7 @@ class JavaToJKTreeBuilder : ReferenceTargetProvider { } fun PsiParameter.toJK(): JKValueArgumentImpl { - //TODO implement PsiType mapping for type name - return JKValueArgumentImpl(JKJavaTypeIdentifierImpl("this.type.getCanonicalText()"), this.name!!) + return JKValueArgumentImpl(with(expressionTreeMapper) { type.toJK() }, name!!) } fun PsiCodeBlock.toJK(): JKBlock { diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/conveersionCache/Implementations.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/conveersionCache/Implementations.kt index d0878fcc66f..c9f3e4f5570 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/conveersionCache/Implementations.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/conveersionCache/Implementations.kt @@ -18,7 +18,7 @@ package org.jetbrains.kotlin.j2k.tree.conveersionCache import org.jetbrains.kotlin.j2k.tree.* import org.jetbrains.kotlin.j2k.tree.impl.JKElementBase -import org.jetbrains.kotlin.j2k.tree.impl.JKJavaTypeIdentifierImpl +import org.jetbrains.kotlin.j2k.tree.impl.JKJavaPrimitiveTypeImpl import org.jetbrains.kotlin.j2k.tree.impl.JKModifierListImpl import org.jetbrains.kotlin.j2k.tree.impl.JKReferenceType import org.jetbrains.kotlin.j2k.tree.visitors.JKVisitor @@ -27,7 +27,7 @@ import org.jetbrains.kotlin.j2k.tree.visitors.JKVisitor class JKMultiverseField(override var name: JKNameIdentifier) : JKMultiverseDeclaration, JKJavaField { override var initializer: JKExpression? = null override var modifierList: JKModifierList = JKModifierListImpl() - override var type: JKTypeIdentifier = JKJavaTypeIdentifierImpl("") //TODO + override var type: JKType = JKJavaPrimitiveTypeImpl.BOOLEAN //TODO override val valid: Boolean get() = true } diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/conveersionCache/ReferenceTargetProvider.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/conveersionCache/ReferenceTargetProvider.kt index ba5ad798967..6b6e595b17b 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/conveersionCache/ReferenceTargetProvider.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/conveersionCache/ReferenceTargetProvider.kt @@ -30,20 +30,12 @@ interface ReferenceTargetProvider { fun putUniverseClass(clazz: JKClass) fun putMultiverseClass(clazz: JKMultiverseClass) fun resolveMethodReference(clazz: JKClass, method: PsiMethod): JKMethod { - return clazz.declarations.asSequence().filter { it is JKMethod && it.name.name == method.name }.firstOrNull() as JKMethod? ?: run { - val met = JKMultiverseMethod(JKNameIdentifierImpl(method.name)) - clazz.declarations += met - met - } + return clazz.declarations.asSequence().filter { it is JKMethod && it.name.name == method.name }.firstOrNull() as JKMethod? + ?: JKMultiverseMethod(JKNameIdentifierImpl(method.name)).also { clazz.declarations += it } } - fun resolveFieldReference(clazz: JKClass, field: PsiField): JKJavaField { return clazz.declarations.asSequence().filter { it is JKJavaField && it.name.name == field.name }.firstOrNull() as JKJavaField? - ?: run { - val field = JKMultiverseField(JKNameIdentifierImpl(field.name!!)) - clazz.declarations += field - field - } + ?: JKMultiverseField(JKNameIdentifierImpl(field.name!!)).also { clazz.declarations += it } } } \ No newline at end of file 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 82044d7362e..20515073d7a 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/j.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/j.kt @@ -20,12 +20,10 @@ import org.jetbrains.kotlin.j2k.tree.* import org.jetbrains.kotlin.j2k.tree.visitors.JKTransformer import org.jetbrains.kotlin.j2k.tree.visitors.JKVisitor -class JKJavaFieldImpl( - override var modifierList: JKModifierList, - override var type: JKTypeIdentifier, - override var name: JKNameIdentifier, - override var initializer: JKExpression? -) : JKJavaField, JKElementBase() { +class JKJavaFieldImpl(override var modifierList: JKModifierList, + override var type: JKType, + override var name: JKNameIdentifier, + override var initializer: JKExpression?) : JKJavaField, JKElementBase() { override val valid: Boolean get() = true @@ -41,12 +39,6 @@ class JKJavaFieldImpl( } } - -class JKJavaTypeIdentifierImpl(override val typeName: String) : JKJavaTypeIdentifier, JKElementBase() { - override fun accept(visitor: JKVisitor, data: D): R = visitor.visitJavaTypeIdentifier(this, data) -} - - class JKJavaStringLiteralExpressionImpl(override val text: String) : JKJavaStringLiteralExpression, JKElementBase() { override fun accept(visitor: JKVisitor, data: D): R = visitor.visitJavaStringLiteralExpression(this, data) } @@ -158,4 +150,26 @@ class JKJavaNewArrayImpl(override var initializer: List) : JKJavaN override fun transformChildren(transformer: JKTransformer, data: D) { initializer = initializer.map { it.transform(transformer, data) } } +} + +sealed class JKJavaPrimitiveTypeImpl(override val name: String) : JKJavaPrimitiveType, JKElementBase() { + + override fun accept(visitor: JKVisitor, data: D): R = visitor.visitJavaPrimitiveType(this, data) + + override fun acceptChildren(visitor: JKVisitor, data: D) { + + } + + object BYTE : JKJavaPrimitiveTypeImpl("byte") + object BOOLEAN : JKJavaPrimitiveTypeImpl("boolean") + object INT : JKJavaPrimitiveTypeImpl("int") +} + +class JKJavaArrayTypeImpl(override val type: JKType, override val dimensionCount: Int) : JKJavaArrayType, JKElementBase() { + + override fun accept(visitor: JKVisitor, data: D): R = visitor.visitJavaArrayType(this, data) + + override fun acceptChildren(visitor: JKVisitor, data: D) { + + } } \ No newline at end of file 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 8cccd20f9ea..c7be4728a3a 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/jk.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/jk.kt @@ -75,10 +75,8 @@ class JKModifierListImpl : JKModifierList, JKElementBase() { } } -class JKValueArgumentImpl( - override var type: JKTypeIdentifier, - override val name: String -) : JKValueArgument, JKElementBase() { +class JKValueArgumentImpl(override var type: JKType, + override val name: String) : JKValueArgument, JKElementBase() { override fun accept(visitor: JKVisitor, data: D): R = visitor.visitValueArgument(this, data) override fun transformChildren(transformer: JKTransformer, data: D) { type = type.transform(transformer, data) @@ -228,12 +226,9 @@ class JKTypeCastExpressionImpl(override var expression: JKExpression?, override } } -class JKTypeImpl( - override val classReference: JKClassReference, override val parameters: List, - override val nullability: Nullability = Nullability.Default -) : JKType, JKElementBase() { +class JKClassTypeImpl(override val classReference: JKClassReference, override val parameters: List, override val nullability: Nullability = Nullability.Default) : JKClassType, JKElementBase() { - override fun accept(visitor: JKVisitor, data: D): R = visitor.visitType(this, data) + override fun accept(visitor: JKVisitor, data: D): R = visitor.visitClassType(this, data) override fun acceptChildren(visitor: JKVisitor, data: D) { diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/k.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/k.kt index 1de87c9a543..0583b24903c 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/k.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/impl/k.kt @@ -21,7 +21,7 @@ import org.jetbrains.kotlin.j2k.tree.visitors.JKTransformer import org.jetbrains.kotlin.j2k.tree.visitors.JKVisitor class JKKtPropertyImpl(override var modifierList: JKModifierList, - override var type: JKTypeIdentifier, + override var type: JKType, override var name: JKNameIdentifier, override var initializer: JKExpression? = null, override var getter: JKBlock? = null, diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/j.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/j.kt index 3764a1ef9ff..628c94063e8 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/j.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/j.kt @@ -17,7 +17,7 @@ package org.jetbrains.kotlin.j2k.tree interface JKJavaField : JKDeclaration, JKModifierListOwner { - val type: JKTypeIdentifier + val type: JKType val name: JKNameIdentifier val initializer: JKExpression? } @@ -28,8 +28,13 @@ interface JKJavaForLoop : JKLoop interface JKJavaAssignmentExpression : JKExpression -interface JKJavaTypeIdentifier : JKTypeIdentifier { - val typeName: String +interface JKJavaPrimitiveType : JKType { + val name: String +} + +interface JKJavaArrayType : JKType { + val type: JKType + val dimensionCount : Int } interface JKJavaStringLiteralExpression : JKLiteralExpression { diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt index 24f27a84d26..bbac81c6078 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/jk.kt @@ -113,13 +113,14 @@ interface JKClassReference : JKReference { override val target: JKClass } -interface JKType : JKElement { +interface JKType : JKElement + +interface JKClassType : JKType { val classReference: JKClassReference val nullability: Nullability val parameters: List } - interface JKOperatorIdentifier : JKIdentifier interface JKQualificationIdentifier : JKIdentifier @@ -134,8 +135,6 @@ interface JKBlock : JKElement { interface JKIdentifier : JKElement -interface JKTypeIdentifier : JKIdentifier - interface JKNameIdentifier : JKIdentifier { val name: String } @@ -151,7 +150,7 @@ interface JKModifier : JKElement interface JKAccessModifier : JKModifier interface JKValueArgument : JKElement { - val type: JKTypeIdentifier + val type: JKType val name: String } diff --git a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/k.kt b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/k.kt index aacf241f059..a72d4cfbc80 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/k.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/k.kt @@ -27,7 +27,7 @@ interface JKKtAssignmentStatement : JKStatement interface JKKtCall : JKMethodCallExpression interface JKKtProperty : JKDeclaration, JKModifierListOwner { - val type: JKTypeIdentifier + val type: JKType val name: JKNameIdentifier val initializer: JKExpression? val getter: JKBlock? @@ -35,12 +35,11 @@ interface JKKtProperty : JKDeclaration, JKModifierListOwner { } interface JKKtFunction : JKDeclaration, JKModifierListOwner { - val returnType: JKTypeIdentifier + val returnType: JKType val name: JKNameIdentifier val valueArguments: List val block: JKBlock? } - interface JKKtModifier : JKModifier { val type: KtModifierType 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 3d04643f21f..4ab5a6fb335 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKTransformer.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKTransformer.kt @@ -23,13 +23,13 @@ interface JKTransformer : JKVisitor { override fun visitFieldReference(fieldReference: JKFieldReference, data: D): JKFieldReference = visitReference(fieldReference, data) as JKFieldReference override fun visitClassReference(classReference: JKClassReference, data: D): JKClassReference = visitReference(classReference, data) as JKClassReference override fun visitType(type: JKType, data: D): JKType = visitElement(type, data) as JKType + override fun visitClassType(classType: JKClassType, data: D): JKClassType = visitType(classType, data) as JKClassType override fun visitOperatorIdentifier(operatorIdentifier: JKOperatorIdentifier, data: D): JKOperatorIdentifier = visitIdentifier(operatorIdentifier, data) as JKOperatorIdentifier override fun visitQualificationIdentifier(qualificationIdentifier: JKQualificationIdentifier, data: D): JKQualificationIdentifier = visitIdentifier(qualificationIdentifier, data) as JKQualificationIdentifier override fun visitLoop(loop: JKLoop, data: D): JKLoop = visitStatement(loop, data) as JKLoop override fun visitDeclaration(declaration: JKDeclaration, data: D): JKDeclaration = visitElement(declaration, data) as JKDeclaration override fun visitBlock(block: JKBlock, data: D): JKBlock = visitElement(block, data) as JKBlock override fun visitIdentifier(identifier: JKIdentifier, data: D): JKIdentifier = visitElement(identifier, data) as JKIdentifier - override fun visitTypeIdentifier(typeIdentifier: JKTypeIdentifier, data: D): JKTypeIdentifier = visitIdentifier(typeIdentifier, data) as JKTypeIdentifier override fun visitNameIdentifier(nameIdentifier: JKNameIdentifier, data: D): JKNameIdentifier = visitIdentifier(nameIdentifier, data) as JKNameIdentifier override fun visitLiteralExpression(literalExpression: JKLiteralExpression, data: D): JKLiteralExpression = visitExpression(literalExpression, data) as JKLiteralExpression override fun visitModifierList(modifierList: JKModifierList, data: D): JKModifierList = visitElement(modifierList, data) as JKModifierList @@ -44,7 +44,8 @@ interface JKTransformer : JKVisitor { override fun visitJavaMethod(javaMethod: JKJavaMethod, data: D): JKMethod = visitMethod(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 visitJavaTypeIdentifier(javaTypeIdentifier: JKJavaTypeIdentifier, data: D): JKTypeIdentifier = visitTypeIdentifier(javaTypeIdentifier, data) + override fun visitJavaPrimitiveType(javaPrimitiveType: JKJavaPrimitiveType, data: D): JKType = visitType(javaPrimitiveType, data) + override fun visitJavaArrayType(javaArrayType: JKJavaArrayType, data: D): JKType = visitType(javaArrayType, data) override fun visitJavaStringLiteralExpression(javaStringLiteralExpression: JKJavaStringLiteralExpression, data: D): JKLiteralExpression = visitLiteralExpression(javaStringLiteralExpression, data) override fun visitJavaOperatorIdentifier(javaOperatorIdentifier: JKJavaOperatorIdentifier, data: D): JKOperatorIdentifier = visitOperatorIdentifier(javaOperatorIdentifier, data) override fun visitJavaQualificationIdentifier(javaQualificationIdentifier: JKJavaQualificationIdentifier, data: D): JKQualificationIdentifier = visitQualificationIdentifier(javaQualificationIdentifier, 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 d1f6c4d89a7..3a9ea63aa2d 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKTransformerVoid.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKTransformerVoid.kt @@ -43,6 +43,8 @@ interface JKTransformerVoid : JKTransformer { override fun visitClassReference(classReference: JKClassReference, data: Nothing?): JKClassReference = visitClassReference(classReference) fun visitType(type: JKType): JKType = visitElement(type) as JKType override fun visitType(type: JKType, data: Nothing?): JKType = visitType(type) + fun visitClassType(classType: JKClassType): JKClassType = visitType(classType) as JKClassType + override fun visitClassType(classType: JKClassType, data: Nothing?): JKClassType = visitClassType(classType) fun visitOperatorIdentifier(operatorIdentifier: JKOperatorIdentifier): JKOperatorIdentifier = visitIdentifier(operatorIdentifier) as JKOperatorIdentifier override fun visitOperatorIdentifier(operatorIdentifier: JKOperatorIdentifier, data: Nothing?): JKOperatorIdentifier = visitOperatorIdentifier(operatorIdentifier) fun visitQualificationIdentifier(qualificationIdentifier: JKQualificationIdentifier): JKQualificationIdentifier = visitIdentifier(qualificationIdentifier) as JKQualificationIdentifier @@ -55,8 +57,6 @@ interface JKTransformerVoid : JKTransformer { override fun visitBlock(block: JKBlock, data: Nothing?): JKBlock = visitBlock(block) fun visitIdentifier(identifier: JKIdentifier): JKIdentifier = visitElement(identifier) as JKIdentifier override fun visitIdentifier(identifier: JKIdentifier, data: Nothing?): JKIdentifier = visitIdentifier(identifier) - fun visitTypeIdentifier(typeIdentifier: JKTypeIdentifier): JKTypeIdentifier = visitIdentifier(typeIdentifier) as JKTypeIdentifier - override fun visitTypeIdentifier(typeIdentifier: JKTypeIdentifier, data: Nothing?): JKTypeIdentifier = visitTypeIdentifier(typeIdentifier) fun visitNameIdentifier(nameIdentifier: JKNameIdentifier): JKNameIdentifier = visitIdentifier(nameIdentifier) as JKNameIdentifier override fun visitNameIdentifier(nameIdentifier: JKNameIdentifier, data: Nothing?): JKNameIdentifier = visitNameIdentifier(nameIdentifier) fun visitLiteralExpression(literalExpression: JKLiteralExpression): JKLiteralExpression = visitExpression(literalExpression) as JKLiteralExpression @@ -85,8 +85,10 @@ interface JKTransformerVoid : JKTransformer { override fun visitJavaForLoop(javaForLoop: JKJavaForLoop, data: Nothing?): JKLoop = visitJavaForLoop(javaForLoop) fun visitJavaAssignmentExpression(javaAssignmentExpression: JKJavaAssignmentExpression): JKExpression = visitExpression(javaAssignmentExpression) override fun visitJavaAssignmentExpression(javaAssignmentExpression: JKJavaAssignmentExpression, data: Nothing?): JKExpression = visitJavaAssignmentExpression(javaAssignmentExpression) - fun visitJavaTypeIdentifier(javaTypeIdentifier: JKJavaTypeIdentifier): JKTypeIdentifier = visitTypeIdentifier(javaTypeIdentifier) - override fun visitJavaTypeIdentifier(javaTypeIdentifier: JKJavaTypeIdentifier, data: Nothing?): JKTypeIdentifier = visitJavaTypeIdentifier(javaTypeIdentifier) + fun visitJavaPrimitiveType(javaPrimitiveType: JKJavaPrimitiveType): JKType = visitType(javaPrimitiveType) + override fun visitJavaPrimitiveType(javaPrimitiveType: JKJavaPrimitiveType, data: Nothing?): JKType = visitJavaPrimitiveType(javaPrimitiveType) + fun visitJavaArrayType(javaArrayType: JKJavaArrayType): JKType = visitType(javaArrayType) + override fun visitJavaArrayType(javaArrayType: JKJavaArrayType, data: Nothing?): JKType = visitJavaArrayType(javaArrayType) fun visitJavaStringLiteralExpression(javaStringLiteralExpression: JKJavaStringLiteralExpression): JKLiteralExpression = visitLiteralExpression(javaStringLiteralExpression) override fun visitJavaStringLiteralExpression(javaStringLiteralExpression: JKJavaStringLiteralExpression, data: Nothing?): JKLiteralExpression = visitJavaStringLiteralExpression(javaStringLiteralExpression) fun visitJavaOperatorIdentifier(javaOperatorIdentifier: JKJavaOperatorIdentifier): JKOperatorIdentifier = visitOperatorIdentifier(javaOperatorIdentifier) 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 5845ad9ca38..87020ee2048 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitor.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitor.kt @@ -23,13 +23,13 @@ interface JKVisitor { fun visitFieldReference(fieldReference: JKFieldReference, data: D): R = visitReference(fieldReference, data) fun visitClassReference(classReference: JKClassReference, data: D): R = visitReference(classReference, data) fun visitType(type: JKType, data: D): R = visitElement(type, data) + fun visitClassType(classType: JKClassType, data: D): R = visitType(classType, data) fun visitOperatorIdentifier(operatorIdentifier: JKOperatorIdentifier, data: D): R = visitIdentifier(operatorIdentifier, data) fun visitQualificationIdentifier(qualificationIdentifier: JKQualificationIdentifier, data: D): R = visitIdentifier(qualificationIdentifier, data) fun visitLoop(loop: JKLoop, data: D): R = visitStatement(loop, data) fun visitDeclaration(declaration: JKDeclaration, data: D): R = visitElement(declaration, data) fun visitBlock(block: JKBlock, data: D): R = visitElement(block, data) fun visitIdentifier(identifier: JKIdentifier, data: D): R = visitElement(identifier, data) - fun visitTypeIdentifier(typeIdentifier: JKTypeIdentifier, data: D): R = visitIdentifier(typeIdentifier, data) fun visitNameIdentifier(nameIdentifier: JKNameIdentifier, data: D): R = visitIdentifier(nameIdentifier, data) fun visitLiteralExpression(literalExpression: JKLiteralExpression, data: D): R = visitExpression(literalExpression, data) fun visitModifierList(modifierList: JKModifierList, data: D): R = visitElement(modifierList, data) @@ -44,7 +44,8 @@ interface JKVisitor { fun visitJavaMethod(javaMethod: JKJavaMethod, data: D): R = visitMethod(javaMethod, data) fun visitJavaForLoop(javaForLoop: JKJavaForLoop, data: D): R = visitLoop(javaForLoop, data) fun visitJavaAssignmentExpression(javaAssignmentExpression: JKJavaAssignmentExpression, data: D): R = visitExpression(javaAssignmentExpression, data) - fun visitJavaTypeIdentifier(javaTypeIdentifier: JKJavaTypeIdentifier, data: D): R = visitTypeIdentifier(javaTypeIdentifier, data) + fun visitJavaPrimitiveType(javaPrimitiveType: JKJavaPrimitiveType, data: D): R = visitType(javaPrimitiveType, data) + fun visitJavaArrayType(javaArrayType: JKJavaArrayType, data: D): R = visitType(javaArrayType, data) fun visitJavaStringLiteralExpression(javaStringLiteralExpression: JKJavaStringLiteralExpression, data: D): R = visitLiteralExpression(javaStringLiteralExpression, data) fun visitJavaOperatorIdentifier(javaOperatorIdentifier: JKJavaOperatorIdentifier, data: D): R = visitOperatorIdentifier(javaOperatorIdentifier, data) fun visitJavaQualificationIdentifier(javaQualificationIdentifier: JKJavaQualificationIdentifier, data: D): R = visitQualificationIdentifier(javaQualificationIdentifier, 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 5bafb0cdece..e14100c6cd1 100644 --- a/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitorVoid.kt +++ b/j2k/newSrc/org/jetbrains/kotlin/j2k/tree/visitors/JKVisitorVoid.kt @@ -43,6 +43,8 @@ interface JKVisitorVoid : JKVisitor { override fun visitClassReference(classReference: JKClassReference, data: Nothing?) = visitClassReference(classReference) fun visitType(type: JKType) = visitElement(type, null) override fun visitType(type: JKType, data: Nothing?) = visitType(type) + fun visitClassType(classType: JKClassType) = visitType(classType, null) + override fun visitClassType(classType: JKClassType, data: Nothing?) = visitClassType(classType) fun visitOperatorIdentifier(operatorIdentifier: JKOperatorIdentifier) = visitIdentifier(operatorIdentifier, null) override fun visitOperatorIdentifier(operatorIdentifier: JKOperatorIdentifier, data: Nothing?) = visitOperatorIdentifier(operatorIdentifier) fun visitQualificationIdentifier(qualificationIdentifier: JKQualificationIdentifier) = visitIdentifier(qualificationIdentifier, null) @@ -55,8 +57,6 @@ interface JKVisitorVoid : JKVisitor { override fun visitBlock(block: JKBlock, data: Nothing?) = visitBlock(block) fun visitIdentifier(identifier: JKIdentifier) = visitElement(identifier, null) override fun visitIdentifier(identifier: JKIdentifier, data: Nothing?) = visitIdentifier(identifier) - fun visitTypeIdentifier(typeIdentifier: JKTypeIdentifier) = visitIdentifier(typeIdentifier, null) - override fun visitTypeIdentifier(typeIdentifier: JKTypeIdentifier, data: Nothing?) = visitTypeIdentifier(typeIdentifier) fun visitNameIdentifier(nameIdentifier: JKNameIdentifier) = visitIdentifier(nameIdentifier, null) override fun visitNameIdentifier(nameIdentifier: JKNameIdentifier, data: Nothing?) = visitNameIdentifier(nameIdentifier) fun visitLiteralExpression(literalExpression: JKLiteralExpression) = visitExpression(literalExpression, null) @@ -85,8 +85,10 @@ interface JKVisitorVoid : JKVisitor { override fun visitJavaForLoop(javaForLoop: JKJavaForLoop, data: Nothing?) = visitJavaForLoop(javaForLoop) fun visitJavaAssignmentExpression(javaAssignmentExpression: JKJavaAssignmentExpression) = visitExpression(javaAssignmentExpression, null) override fun visitJavaAssignmentExpression(javaAssignmentExpression: JKJavaAssignmentExpression, data: Nothing?) = visitJavaAssignmentExpression(javaAssignmentExpression) - fun visitJavaTypeIdentifier(javaTypeIdentifier: JKJavaTypeIdentifier) = visitTypeIdentifier(javaTypeIdentifier, null) - override fun visitJavaTypeIdentifier(javaTypeIdentifier: JKJavaTypeIdentifier, data: Nothing?) = visitJavaTypeIdentifier(javaTypeIdentifier) + fun visitJavaPrimitiveType(javaPrimitiveType: JKJavaPrimitiveType) = visitType(javaPrimitiveType, null) + override fun visitJavaPrimitiveType(javaPrimitiveType: JKJavaPrimitiveType, data: Nothing?) = visitJavaPrimitiveType(javaPrimitiveType) + fun visitJavaArrayType(javaArrayType: JKJavaArrayType) = visitType(javaArrayType, null) + override fun visitJavaArrayType(javaArrayType: JKJavaArrayType, data: Nothing?) = visitJavaArrayType(javaArrayType) fun visitJavaStringLiteralExpression(javaStringLiteralExpression: JKJavaStringLiteralExpression) = visitLiteralExpression(javaStringLiteralExpression, null) override fun visitJavaStringLiteralExpression(javaStringLiteralExpression: JKJavaStringLiteralExpression, data: Nothing?) = visitJavaStringLiteralExpression(javaStringLiteralExpression) fun visitJavaOperatorIdentifier(javaOperatorIdentifier: JKJavaOperatorIdentifier) = visitOperatorIdentifier(javaOperatorIdentifier, null) diff --git a/j2k/testData/newFileOrElement/first/First.java b/j2k/testData/newFileOrElement/first/First.java index 014db3081d8..b571f31338c 100644 --- a/j2k/testData/newFileOrElement/first/First.java +++ b/j2k/testData/newFileOrElement/first/First.java @@ -3,7 +3,7 @@ package p; public class Some { public String test=""+"a"; - public static void main(String[] args) { + public static void main(String args) { System.out.println("Test"); } } \ No newline at end of file