qualify access to static members

This commit is contained in:
Dmitry Jemerov
2012-06-01 16:10:29 +02:00
committed by Pavel V. Talanov
parent 21b280f413
commit c7113e143a
3 changed files with 29 additions and 0 deletions
@@ -12,6 +12,7 @@ import java.util.ArrayList
import java.util.Collections
import java.util.List
import com.intellij.psi.CommonClassNames.*
import com.intellij.psi.util.PsiTreeUtil
public open class ExpressionVisitor(converter: Converter): StatementVisitor(converter) {
{
@@ -232,6 +233,21 @@ public open class ExpressionVisitor(converter: Converter): StatementVisitor(conv
else if (qualifier != null && qualifier.getType() is PsiArrayType && referencedName == "length") {
identifier = Identifier("size", isNullable)
}
else if (qualifier == null) {
val resolved = expression?.getReference()?.resolve()
if (resolved is PsiMember && resolved.hasModifierProperty(PsiModifier.STATIC) &&
resolved.getContainingClass() != null &&
PsiTreeUtil.getParentOfType(expression, javaClass<PsiClass>()) != resolved.getContainingClass()) {
var member = resolved as PsiMember
var result = Identifier(referencedName).toKotlin()
while(member.getContainingClass() != null) {
result = Identifier(member.getContainingClass()!!.getName()!!).toKotlin() + "." + result
member = member.getContainingClass()!!
}
myResult = Identifier(result, false, false)
return
}
}
myResult = CallChainExpression(getConverter().expressionToExpression(qualifier), identifier)
}
@@ -0,0 +1,7 @@
import java.util.Calendar
abstract class MyCalendar extends Calendar {
public void foo() {
int i = ALL_STYLES;
}
}
@@ -0,0 +1,6 @@
import java.util.Calendar
abstract class MyCalendar() : Calendar() {
public open fun foo() : Unit {
var i : Int = Calendar.ALL_STYLES
}
}