statically imported members don't need to be qualified
This commit is contained in:
committed by
Pavel V. Talanov
parent
1bf84a8187
commit
e33f66f4b9
@@ -238,7 +238,8 @@ public open class ExpressionVisitor(converter: Converter): StatementVisitor(conv
|
|||||||
val resolved = expression?.getReference()?.resolve()
|
val resolved = expression?.getReference()?.resolve()
|
||||||
if (resolved is PsiMember && resolved.hasModifierProperty(PsiModifier.STATIC) &&
|
if (resolved is PsiMember && resolved.hasModifierProperty(PsiModifier.STATIC) &&
|
||||||
resolved.getContainingClass() != null &&
|
resolved.getContainingClass() != null &&
|
||||||
PsiTreeUtil.getParentOfType(expression, javaClass<PsiClass>()) != resolved.getContainingClass()) {
|
PsiTreeUtil.getParentOfType(expression, javaClass<PsiClass>()) != resolved.getContainingClass() &&
|
||||||
|
!isStaticallyImported(resolved, expression!!)) {
|
||||||
var member = resolved as PsiMember
|
var member = resolved as PsiMember
|
||||||
var result = Identifier(referencedName).toKotlin()
|
var result = Identifier(referencedName).toKotlin()
|
||||||
while(member.getContainingClass() != null) {
|
while(member.getContainingClass() != null) {
|
||||||
@@ -468,3 +469,23 @@ public open class ExpressionVisitor(converter: Converter): StatementVisitor(conv
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun isStaticallyImported(member: PsiMember, context: PsiElement): Boolean {
|
||||||
|
val containingFile = context.getContainingFile()
|
||||||
|
val targetContainingClass = member.getContainingClass()
|
||||||
|
if (containingFile is PsiJavaFile && targetContainingClass != null) {
|
||||||
|
val importList = containingFile.getImportList();
|
||||||
|
if (importList != null) {
|
||||||
|
val importStatics = importList.getImportStaticStatements();
|
||||||
|
return importStatics.any { importResolvesTo(it, member) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun importResolvesTo(stmt: PsiImportStaticStatement?, member: PsiMember): Boolean {
|
||||||
|
val targetContainingClass = member.getContainingClass()
|
||||||
|
var importedClass = stmt?.resolveTargetClass()
|
||||||
|
return importedClass == targetContainingClass && (stmt?.isOnDemand() ?: false ||
|
||||||
|
stmt?.getReferenceName() == member.getName())
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user