qualify access to static members
This commit is contained in:
committed by
Pavel V. Talanov
parent
21b280f413
commit
c7113e143a
@@ -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
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user