New J2K: Added unresolved field references.

This commit is contained in:
Dimach
2018-06-17 11:58:37 +03:00
committed by Ilya Kirillov
parent f6a5ac9d97
commit d183285a75
5 changed files with 16 additions and 4 deletions
@@ -35,7 +35,7 @@ class JKSymbolProvider {
fun provideSymbol(reference: PsiReference): JKSymbol {
val target = reference.resolve()
if (target != null) return provideDirectSymbol(target)
TODO()
return JKUnresolvedField(reference)
}
fun provideLocalVarSymbol(psi: PsiLocalVariable, variable: JKLocalVariable): JKSymbol {
@@ -243,6 +243,10 @@ class NewCodeBuilder {
returnStatement.expression.accept(this)
printer.printlnWithNoIndent()
}
override fun visitFieldAccessExpression(fieldAccessExpression: JKFieldAccessExpression) {
printer.printWithNoIndent(FqName(fieldAccessExpression.identifier.fqName).shortName().asString())
}
}
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.OROR]!!] = JKKtOperatorImpl.tokenToOperator[KtTokens.OROR]!!
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.PsiField
import com.intellij.psi.PsiMethod
import com.intellij.psi.PsiReference
import org.jetbrains.kotlin.j2k.tree.JKClass
import org.jetbrains.kotlin.j2k.tree.JKField
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.
override val fqName: String
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 {
val result = statementToKotlin("final Object o =$code}", settings, project)
return result
.replaceFirst("val o:Any? = ", "")
.replaceFirst("val o:Any = ", "")
.replaceFirst("val o: Any? = ", "")
.replaceFirst("val o: Any = ", "")
.replaceFirst("val o = ", "")
.trim()
}