New J2K: Added unresolved field references.
This commit is contained in:
@@ -35,7 +35,7 @@ class JKSymbolProvider {
|
|||||||
fun provideSymbol(reference: PsiReference): JKSymbol {
|
fun provideSymbol(reference: PsiReference): JKSymbol {
|
||||||
val target = reference.resolve()
|
val target = reference.resolve()
|
||||||
if (target != null) return provideDirectSymbol(target)
|
if (target != null) return provideDirectSymbol(target)
|
||||||
TODO()
|
return JKUnresolvedField(reference)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun provideLocalVarSymbol(psi: PsiLocalVariable, variable: JKLocalVariable): JKSymbol {
|
fun provideLocalVarSymbol(psi: PsiLocalVariable, variable: JKLocalVariable): JKSymbol {
|
||||||
|
|||||||
@@ -243,6 +243,10 @@ class NewCodeBuilder {
|
|||||||
returnStatement.expression.accept(this)
|
returnStatement.expression.accept(this)
|
||||||
printer.printlnWithNoIndent()
|
printer.printlnWithNoIndent()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun visitFieldAccessExpression(fieldAccessExpression: JKFieldAccessExpression) {
|
||||||
|
printer.printWithNoIndent(FqName(fieldAccessExpression.identifier.fqName).shortName().asString())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun printCodeOut(root: JKTreeElement): String {
|
fun printCodeOut(root: JKTreeElement): String {
|
||||||
|
|||||||
@@ -97,6 +97,8 @@ class JKKtOperatorImpl private constructor(override val token: IElementType) : J
|
|||||||
this[JKJavaOperatorImpl.tokenToOperator[JavaTokenType.ANDAND]!!] = JKKtOperatorImpl.tokenToOperator[KtTokens.ANDAND]!!
|
this[JKJavaOperatorImpl.tokenToOperator[JavaTokenType.ANDAND]!!] = JKKtOperatorImpl.tokenToOperator[KtTokens.ANDAND]!!
|
||||||
this[JKJavaOperatorImpl.tokenToOperator[JavaTokenType.OROR]!!] = JKKtOperatorImpl.tokenToOperator[KtTokens.OROR]!!
|
this[JKJavaOperatorImpl.tokenToOperator[JavaTokenType.OROR]!!] = JKKtOperatorImpl.tokenToOperator[KtTokens.OROR]!!
|
||||||
this[JKJavaOperatorImpl.tokenToOperator[JavaTokenType.PLUS]!!] = JKKtOperatorImpl.tokenToOperator[KtTokens.PLUS]!!
|
this[JKJavaOperatorImpl.tokenToOperator[JavaTokenType.PLUS]!!] = JKKtOperatorImpl.tokenToOperator[KtTokens.PLUS]!!
|
||||||
|
this[JKJavaOperatorImpl.tokenToOperator[JavaTokenType.GT]!!] = JKKtOperatorImpl.tokenToOperator[KtTokens.GT]!!
|
||||||
|
this[JKJavaOperatorImpl.tokenToOperator[JavaTokenType.LT]!!] = JKKtOperatorImpl.tokenToOperator[KtTokens.LT]!!
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.j2k.tree.impl
|
|||||||
import com.intellij.psi.PsiClass
|
import com.intellij.psi.PsiClass
|
||||||
import com.intellij.psi.PsiField
|
import com.intellij.psi.PsiField
|
||||||
import com.intellij.psi.PsiMethod
|
import com.intellij.psi.PsiMethod
|
||||||
|
import com.intellij.psi.PsiReference
|
||||||
import org.jetbrains.kotlin.j2k.tree.JKClass
|
import org.jetbrains.kotlin.j2k.tree.JKClass
|
||||||
import org.jetbrains.kotlin.j2k.tree.JKField
|
import org.jetbrains.kotlin.j2k.tree.JKField
|
||||||
import org.jetbrains.kotlin.j2k.tree.JKMethod
|
import org.jetbrains.kotlin.j2k.tree.JKMethod
|
||||||
@@ -86,5 +87,10 @@ class JKMultiverseFieldSymbol(override val target: PsiField) : JKFieldSymbol {
|
|||||||
get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates.
|
get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates.
|
||||||
override val fqName: String
|
override val fqName: String
|
||||||
get() = target.name
|
get() = target.name
|
||||||
|
}
|
||||||
|
|
||||||
}
|
class JKUnresolvedField(override val target: PsiReference) : JKFieldSymbol {
|
||||||
|
override val declaredIn: JKSymbol
|
||||||
|
get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates.
|
||||||
|
override val fqName: String = target.canonicalText
|
||||||
|
}
|
||||||
|
|||||||
@@ -127,8 +127,8 @@ abstract class AbstractJavaToKotlinConverterSingleFileTest : AbstractJavaToKotli
|
|||||||
private fun expressionToKotlin(code: String, settings: ConverterSettings, project: Project): String {
|
private fun expressionToKotlin(code: String, settings: ConverterSettings, project: Project): String {
|
||||||
val result = statementToKotlin("final Object o =$code}", settings, project)
|
val result = statementToKotlin("final Object o =$code}", settings, project)
|
||||||
return result
|
return result
|
||||||
.replaceFirst("val o:Any? = ", "")
|
.replaceFirst("val o: Any? = ", "")
|
||||||
.replaceFirst("val o:Any = ", "")
|
.replaceFirst("val o: Any = ", "")
|
||||||
.replaceFirst("val o = ", "")
|
.replaceFirst("val o = ", "")
|
||||||
.trim()
|
.trim()
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user