Refactor: rename KtLightClassForExplicitDeclaration -> KtLightClassForSourceDeclaration

This commit is contained in:
Pavel V. Talanov
2016-07-26 15:14:26 +03:00
parent b686b37cbf
commit 999c8e7486
16 changed files with 48 additions and 48 deletions
@@ -28,7 +28,7 @@ import org.jetbrains.annotations.TestOnly
import org.jetbrains.kotlin.asJava.LightClassGenerationSupport import org.jetbrains.kotlin.asJava.LightClassGenerationSupport
import org.jetbrains.kotlin.asJava.builder.LightClassConstructionContext import org.jetbrains.kotlin.asJava.builder.LightClassConstructionContext
import org.jetbrains.kotlin.asJava.classes.KtLightClass import org.jetbrains.kotlin.asJava.classes.KtLightClass
import org.jetbrains.kotlin.asJava.classes.KtLightClassForExplicitDeclaration import org.jetbrains.kotlin.asJava.classes.KtLightClassForSourceDeclaration
import org.jetbrains.kotlin.asJava.classes.KtLightClassForFacade import org.jetbrains.kotlin.asJava.classes.KtLightClassForFacade
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.descriptors.ModuleDescriptor
@@ -134,7 +134,7 @@ class CliLightClassGenerationSupport(project: Project) : LightClassGenerationSup
} }
override fun getLightClass(classOrObject: KtClassOrObject): KtLightClass? { override fun getLightClass(classOrObject: KtClassOrObject): KtLightClass? {
return KtLightClassForExplicitDeclaration.create(classOrObject) return KtLightClassForSourceDeclaration.create(classOrObject)
} }
override fun resolveToDescriptor(declaration: KtDeclaration): DeclarationDescriptor? { override fun resolveToDescriptor(declaration: KtDeclaration): DeclarationDescriptor? {
@@ -27,7 +27,7 @@ import org.jetbrains.kotlin.resolve.DescriptorUtils
internal open class KtLightClassForAnonymousDeclaration(fqNameFunction: ((KtClassOrObject) -> FqName), internal open class KtLightClassForAnonymousDeclaration(fqNameFunction: ((KtClassOrObject) -> FqName),
classOrObject: KtClassOrObject) : classOrObject: KtClassOrObject) :
KtLightClassForExplicitDeclaration(fqNameFunction, classOrObject), PsiAnonymousClass { KtLightClassForSourceDeclaration(fqNameFunction, classOrObject), PsiAnonymousClass {
private var cachedBaseType: SoftReference<PsiClassType>? = null private var cachedBaseType: SoftReference<PsiClassType>? = null
@@ -101,7 +101,7 @@ internal open class KtLightClassForAnonymousDeclaration(fqNameFunction: ((KtClas
} }
override fun isInheritor(baseClass: PsiClass, checkDeep: Boolean): Boolean { override fun isInheritor(baseClass: PsiClass, checkDeep: Boolean): Boolean {
if (baseClass is KtLightClassForExplicitDeclaration) { if (baseClass is KtLightClassForSourceDeclaration) {
return super.isInheritor(baseClass, checkDeep) return super.isInheritor(baseClass, checkDeep)
} }
@@ -24,7 +24,7 @@ import org.jetbrains.kotlin.psi.KtClassOrObject
open class KtLightClassForInterfaceDefaultImpls( open class KtLightClassForInterfaceDefaultImpls(
classFqName: FqName, classFqName: FqName,
classOrObject: KtClassOrObject) classOrObject: KtClassOrObject)
: KtLightClassForExplicitDeclaration({ classFqName }, classOrObject){ : KtLightClassForSourceDeclaration({ classFqName }, classOrObject){
override fun copy(): PsiElement { override fun copy(): PsiElement {
return KtLightClassForInterfaceDefaultImpls(classFqName, classOrObject.copy() as KtClassOrObject) return KtLightClassForInterfaceDefaultImpls(classFqName, classOrObject.copy() as KtClassOrObject)
@@ -47,7 +47,7 @@ open class KtLightClassForInterfaceDefaultImpls(
throw IncorrectOperationException("Impossible to rename DefaultImpls") throw IncorrectOperationException("Impossible to rename DefaultImpls")
} }
override fun getContainingClass() = KtLightClassForExplicitDeclaration.create(classOrObject) override fun getContainingClass() = KtLightClassForSourceDeclaration.create(classOrObject)
override fun getOwnInnerClasses() = emptyList<PsiClass>() override fun getOwnInnerClasses() = emptyList<PsiClass>()
} }
@@ -56,7 +56,7 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns
import java.util.* import java.util.*
import javax.swing.Icon import javax.swing.Icon
open class KtLightClassForExplicitDeclaration( open class KtLightClassForSourceDeclaration(
private val classFqNameFunction: ((KtClassOrObject) -> FqName), private val classFqNameFunction: ((KtClassOrObject) -> FqName),
protected val classOrObject: KtClassOrObject) protected val classOrObject: KtClassOrObject)
: KtWrappingLightClass(classOrObject.manager), KtJavaMirrorMarker, StubBasedPsiElement<KotlinClassOrObjectStub<out KtClassOrObject>> { : KtWrappingLightClass(classOrObject.manager), KtJavaMirrorMarker, StubBasedPsiElement<KotlinClassOrObjectStub<out KtClassOrObject>> {
@@ -160,7 +160,7 @@ open class KtLightClassForExplicitDeclaration(
override fun getFqName(): FqName = classFqName override fun getFqName(): FqName = classFqName
override fun copy(): PsiElement { override fun copy(): PsiElement {
return KtLightClassForExplicitDeclaration({ classFqName }, classOrObject.copy() as KtClassOrObject) return KtLightClassForSourceDeclaration({ classFqName }, classOrObject.copy() as KtClassOrObject)
} }
override val clsDelegate: PsiClass by lazy(LazyThreadSafetyMode.PUBLICATION) { override val clsDelegate: PsiClass by lazy(LazyThreadSafetyMode.PUBLICATION) {
@@ -240,7 +240,7 @@ open class KtLightClassForExplicitDeclaration(
if (this === other) return true if (this === other) return true
if (other == null || javaClass != other.javaClass) return false if (other == null || javaClass != other.javaClass) return false
val aClass = other as KtLightClassForExplicitDeclaration val aClass = other as KtLightClassForSourceDeclaration
if (classFqName != aClass.classFqName) return false if (classFqName != aClass.classFqName) return false
@@ -276,9 +276,9 @@ open class KtLightClassForExplicitDeclaration(
override fun getQualifiedName(): String? = classFqName.asString() override fun getQualifiedName(): String? = classFqName.asString()
private val _modifierList : PsiModifierList by lazy(LazyThreadSafetyMode.PUBLICATION) { private val _modifierList : PsiModifierList by lazy(LazyThreadSafetyMode.PUBLICATION) {
object : KtLightModifierListWithExplicitModifiers(this@KtLightClassForExplicitDeclaration, computeModifiers()) { object : KtLightModifierListWithExplicitModifiers(this@KtLightClassForSourceDeclaration, computeModifiers()) {
override val delegate: PsiAnnotationOwner override val delegate: PsiAnnotationOwner
get() = this@KtLightClassForExplicitDeclaration.delegate.modifierList!! get() = this@KtLightClassForSourceDeclaration.delegate.modifierList!!
} }
} }
@@ -376,7 +376,7 @@ open class KtLightClassForExplicitDeclaration(
override fun isInheritor(baseClass: PsiClass, checkDeep: Boolean): Boolean { override fun isInheritor(baseClass: PsiClass, checkDeep: Boolean): Boolean {
val qualifiedName: String? val qualifiedName: String?
if (baseClass is KtLightClassForExplicitDeclaration) { if (baseClass is KtLightClassForSourceDeclaration) {
val baseDescriptor = baseClass.getDescriptor() val baseDescriptor = baseClass.getDescriptor()
qualifiedName = if (baseDescriptor != null) DescriptorUtils.getFqName(baseDescriptor).asString() else null qualifiedName = if (baseDescriptor != null) DescriptorUtils.getFqName(baseDescriptor).asString() else null
} }
@@ -427,7 +427,7 @@ open class KtLightClassForExplicitDeclaration(
FINAL_KEYWORD to PsiModifier.FINAL) FINAL_KEYWORD to PsiModifier.FINAL)
fun create(classOrObject: KtClassOrObject): KtLightClassForExplicitDeclaration? { fun create(classOrObject: KtClassOrObject): KtLightClassForSourceDeclaration? {
if (classOrObject is KtObjectDeclaration && classOrObject.isObjectLiteral()) { if (classOrObject is KtObjectDeclaration && classOrObject.isObjectLiteral()) {
if (classOrObject.containingFile.virtualFile == null) { if (classOrObject.containingFile.virtualFile == null) {
return null return null
@@ -443,7 +443,7 @@ open class KtLightClassForExplicitDeclaration(
} }
val fqName = predictFqName(classOrObject) ?: return null val fqName = predictFqName(classOrObject) ?: return null
return KtLightClassForExplicitDeclaration({ fqName }, classOrObject) return KtLightClassForSourceDeclaration({ fqName }, classOrObject)
} }
private fun isEnumEntryWithoutBody(classOrObject: KtClassOrObject): Boolean { private fun isEnumEntryWithoutBody(classOrObject: KtClassOrObject): Boolean {
@@ -520,6 +520,6 @@ open class KtLightClassForExplicitDeclaration(
return false return false
} }
private val LOG = Logger.getInstance(KtLightClassForExplicitDeclaration::class.java) private val LOG = Logger.getInstance(KtLightClassForSourceDeclaration::class.java)
} }
} }
@@ -19,7 +19,7 @@ package org.jetbrains.kotlin.asJava
import com.intellij.psi.PsiElement import com.intellij.psi.PsiElement
import com.intellij.psi.search.GlobalSearchScope import com.intellij.psi.search.GlobalSearchScope
import org.jetbrains.kotlin.asJava.builder.OutermostKotlinClassLightClassData import org.jetbrains.kotlin.asJava.builder.OutermostKotlinClassLightClassData
import org.jetbrains.kotlin.asJava.classes.KtLightClassForExplicitDeclaration import org.jetbrains.kotlin.asJava.classes.KtLightClassForSourceDeclaration
import org.jetbrains.kotlin.asJava.classes.KtLightClassForFacade import org.jetbrains.kotlin.asJava.classes.KtLightClassForFacade
import org.jetbrains.kotlin.diagnostics.Diagnostic import org.jetbrains.kotlin.diagnostics.Diagnostic
import org.jetbrains.kotlin.diagnostics.DiagnosticFactory import org.jetbrains.kotlin.diagnostics.DiagnosticFactory
@@ -42,7 +42,7 @@ fun getJvmSignatureDiagnostics(element: PsiElement, otherDiagnostics: Diagnostic
} }
fun getDiagnosticsForClass(ktClassOrObject: KtClassOrObject): Diagnostics { fun getDiagnosticsForClass(ktClassOrObject: KtClassOrObject): Diagnostics {
return (KtLightClassForExplicitDeclaration.getLightClassData(ktClassOrObject) as? OutermostKotlinClassLightClassData)?.extraDiagnostics ?: Diagnostics.EMPTY return (KtLightClassForSourceDeclaration.getLightClassData(ktClassOrObject) as? OutermostKotlinClassLightClassData)?.extraDiagnostics ?: Diagnostics.EMPTY
} }
fun doGetDiagnostics(): Diagnostics? { fun doGetDiagnostics(): Diagnostics? {
@@ -23,7 +23,7 @@ import com.intellij.psi.PsiElementVisitor
import com.intellij.psi.impl.compiled.ClsFileImpl import com.intellij.psi.impl.compiled.ClsFileImpl
import com.intellij.psi.stubs.PsiClassHolderFileStub import com.intellij.psi.stubs.PsiClassHolderFileStub
import org.jetbrains.kotlin.asJava.classes.KtLightClass import org.jetbrains.kotlin.asJava.classes.KtLightClass
import org.jetbrains.kotlin.asJava.classes.KtLightClassForExplicitDeclaration import org.jetbrains.kotlin.asJava.classes.KtLightClassForSourceDeclaration
import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtFile
@@ -51,7 +51,7 @@ open class FakeFileForLightClass(
override fun hashCode(): Int { override fun hashCode(): Int {
val thisClass = lightClass() val thisClass = lightClass()
if (thisClass is KtLightClassForExplicitDeclaration) return ktFile.hashCode() if (thisClass is KtLightClassForSourceDeclaration) return ktFile.hashCode()
return thisClass.hashCode() return thisClass.hashCode()
} }
@@ -61,8 +61,8 @@ open class FakeFileForLightClass(
val thisClass = lightClass() val thisClass = lightClass()
val anotherClass = other.lightClass() val anotherClass = other.lightClass()
if (thisClass is KtLightClassForExplicitDeclaration) { if (thisClass is KtLightClassForSourceDeclaration) {
return anotherClass is KtLightClassForExplicitDeclaration && ktFile == other.ktFile return anotherClass is KtLightClassForSourceDeclaration && ktFile == other.ktFile
} }
return thisClass == anotherClass return thisClass == anotherClass
@@ -23,7 +23,7 @@ import com.intellij.openapi.util.text.StringUtil
import com.intellij.psi.PsiElement import com.intellij.psi.PsiElement
import com.intellij.ui.RowIcon import com.intellij.ui.RowIcon
import com.intellij.util.PlatformIcons import com.intellij.util.PlatformIcons
import org.jetbrains.kotlin.asJava.classes.KtLightClassForExplicitDeclaration import org.jetbrains.kotlin.asJava.classes.KtLightClassForSourceDeclaration
import org.jetbrains.kotlin.asJava.classes.KtLightClassForFacade import org.jetbrains.kotlin.asJava.classes.KtLightClassForFacade
import org.jetbrains.kotlin.idea.caches.resolve.KtLightClassForDecompiledDeclaration import org.jetbrains.kotlin.idea.caches.resolve.KtLightClassForDecompiledDeclaration
import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.lexer.KtTokens
@@ -90,7 +90,7 @@ class KotlinIconProvider : IconProvider(), DumbAware {
//TODO (light classes for decompiled files): correct presentation //TODO (light classes for decompiled files): correct presentation
if (origin != null) origin.getBaseIcon() else KotlinIcons.CLASS if (origin != null) origin.getBaseIcon() else KotlinIcons.CLASS
} }
is KtLightClassForExplicitDeclaration -> navigationElement.getBaseIcon() is KtLightClassForSourceDeclaration -> navigationElement.getBaseIcon()
is KtNamedFunction -> when { is KtNamedFunction -> when {
receiverTypeReference != null -> KotlinIcons.EXTENSION_FUNCTION receiverTypeReference != null -> KotlinIcons.EXTENSION_FUNCTION
getStrictParentOfType<KtNamedDeclaration>() is KtClass -> getStrictParentOfType<KtNamedDeclaration>() is KtClass ->
@@ -32,7 +32,7 @@ import org.jetbrains.kotlin.asJava.builder.ClsWrapperStubPsiFactory
import org.jetbrains.kotlin.asJava.builder.LightClassConstructionContext import org.jetbrains.kotlin.asJava.builder.LightClassConstructionContext
import org.jetbrains.kotlin.asJava.classes.FakeLightClassForFileOfPackage import org.jetbrains.kotlin.asJava.classes.FakeLightClassForFileOfPackage
import org.jetbrains.kotlin.asJava.classes.KtLightClass import org.jetbrains.kotlin.asJava.classes.KtLightClass
import org.jetbrains.kotlin.asJava.classes.KtLightClassForExplicitDeclaration import org.jetbrains.kotlin.asJava.classes.KtLightClassForSourceDeclaration
import org.jetbrains.kotlin.asJava.classes.KtLightClassForFacade import org.jetbrains.kotlin.asJava.classes.KtLightClassForFacade
import org.jetbrains.kotlin.asJava.finder.JavaElementFinder import org.jetbrains.kotlin.asJava.finder.JavaElementFinder
import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.ClassDescriptor
@@ -145,7 +145,7 @@ class IDELightClassGenerationSupport(private val project: Project) : LightClassG
if (virtualFile != null) { if (virtualFile != null) {
when { when {
ProjectRootsUtil.isProjectSourceFile(project, virtualFile) -> ProjectRootsUtil.isProjectSourceFile(project, virtualFile) ->
return KtLightClassForExplicitDeclaration.create(classOrObject) return KtLightClassForSourceDeclaration.create(classOrObject)
ProjectRootsUtil.isLibraryClassFile(project, virtualFile) -> ProjectRootsUtil.isLibraryClassFile(project, virtualFile) ->
return getLightClassForDecompiledClassOrObject(classOrObject) return getLightClassForDecompiledClassOrObject(classOrObject)
ProjectRootsUtil.isLibrarySourceFile(project, virtualFile) -> ProjectRootsUtil.isLibrarySourceFile(project, virtualFile) ->
@@ -154,7 +154,7 @@ class IDELightClassGenerationSupport(private val project: Project) : LightClassG
} }
if (classOrObject.getContainingKtFile().analysisContext != null) { if (classOrObject.getContainingKtFile().analysisContext != null) {
// explicit request to create light class from dummy.kt // explicit request to create light class from dummy.kt
return KtLightClassForExplicitDeclaration.create(classOrObject) return KtLightClassForSourceDeclaration.create(classOrObject)
} }
return null return null
} }
@@ -34,7 +34,7 @@ import com.intellij.xdebugger.breakpoints.XLineBreakpoint
import com.intellij.xdebugger.breakpoints.XLineBreakpointType import com.intellij.xdebugger.breakpoints.XLineBreakpointType
import com.intellij.xdebugger.breakpoints.ui.XBreakpointCustomPropertiesPanel import com.intellij.xdebugger.breakpoints.ui.XBreakpointCustomPropertiesPanel
import org.jetbrains.kotlin.asJava.classes.KtLightClass import org.jetbrains.kotlin.asJava.classes.KtLightClass
import org.jetbrains.kotlin.asJava.classes.KtLightClassForExplicitDeclaration import org.jetbrains.kotlin.asJava.classes.KtLightClassForSourceDeclaration
import org.jetbrains.kotlin.asJava.classes.KtLightClassForFacade import org.jetbrains.kotlin.asJava.classes.KtLightClassForFacade
import org.jetbrains.kotlin.idea.KotlinBundle import org.jetbrains.kotlin.idea.KotlinBundle
import org.jetbrains.kotlin.idea.debugger.breakpoints.dialog.AddFieldBreakpointDialog import org.jetbrains.kotlin.idea.debugger.breakpoints.dialog.AddFieldBreakpointDialog
@@ -88,7 +88,7 @@ class KotlinFieldBreakpointType : JavaBreakpointType<KotlinPropertyBreakpointPro
is KtLightClassForFacade -> { is KtLightClassForFacade -> {
psiClass.files.asSequence().mapNotNull { createBreakpointIfPropertyExists(it, it, className, fieldName) }.firstOrNull() psiClass.files.asSequence().mapNotNull { createBreakpointIfPropertyExists(it, it, className, fieldName) }.firstOrNull()
} }
is KtLightClassForExplicitDeclaration -> { is KtLightClassForSourceDeclaration -> {
val jetClass = psiClass.kotlinOrigin val jetClass = psiClass.kotlinOrigin
createBreakpointIfPropertyExists(jetClass, jetClass.getContainingKtFile(), className, fieldName) createBreakpointIfPropertyExists(jetClass, jetClass.getContainingKtFile(), className, fieldName)
} }
@@ -40,7 +40,7 @@ import kotlin.jvm.functions.Function1;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jetbrains.kotlin.asJava.LightClassUtilsKt; import org.jetbrains.kotlin.asJava.LightClassUtilsKt;
import org.jetbrains.kotlin.asJava.classes.KtLightClassForExplicitDeclaration; import org.jetbrains.kotlin.asJava.classes.KtLightClassForSourceDeclaration;
import org.jetbrains.kotlin.idea.projectView.KtClassOrObjectTreeNode; import org.jetbrains.kotlin.idea.projectView.KtClassOrObjectTreeNode;
import org.jetbrains.kotlin.idea.refactoring.memberInfo.KotlinMemberInfo; import org.jetbrains.kotlin.idea.refactoring.memberInfo.KotlinMemberInfo;
import org.jetbrains.kotlin.idea.refactoring.memberInfo.KotlinMemberSelectionPanel; import org.jetbrains.kotlin.idea.refactoring.memberInfo.KotlinMemberSelectionPanel;
@@ -114,8 +114,8 @@ public class MoveKotlinNestedClassesDialog extends RefactoringDialog {
new ClassFilter() { new ClassFilter() {
@Override @Override
public boolean isAccepted(PsiClass aClass) { public boolean isAccepted(PsiClass aClass) {
if (!(aClass instanceof KtLightClassForExplicitDeclaration)) return false; if (!(aClass instanceof KtLightClassForSourceDeclaration)) return false;
KtClassOrObject classOrObject = ((KtLightClassForExplicitDeclaration) aClass).getKotlinOrigin(); KtClassOrObject classOrObject = ((KtLightClassForSourceDeclaration) aClass).getKotlinOrigin();
if (classOrObject instanceof KtObjectDeclaration) { if (classOrObject instanceof KtObjectDeclaration) {
return !((KtObjectDeclaration) classOrObject).isObjectLiteral(); return !((KtObjectDeclaration) classOrObject).isObjectLiteral();
@@ -148,8 +148,8 @@ public class MoveKotlinNestedClassesDialog extends RefactoringDialog {
chooser.showDialog(); chooser.showDialog();
PsiClass aClass = chooser.getSelected(); PsiClass aClass = chooser.getSelected();
if (aClass instanceof KtLightClassForExplicitDeclaration) { if (aClass instanceof KtLightClassForSourceDeclaration) {
targetClass = ((KtLightClassForExplicitDeclaration) aClass).getKotlinOrigin(); targetClass = ((KtLightClassForSourceDeclaration) aClass).getKotlinOrigin();
targetClassChooser.setText(aClass.getQualifiedName()); targetClassChooser.setText(aClass.getQualifiedName());
} }
} }
@@ -166,8 +166,8 @@ public class MoveKotlinNestedClassesDialog extends RefactoringDialog {
PsiClass aClass = JavaPsiFacade PsiClass aClass = JavaPsiFacade
.getInstance(myProject) .getInstance(myProject)
.findClass(targetClassChooser.getText(), GlobalSearchScope.projectScope(myProject)); .findClass(targetClassChooser.getText(), GlobalSearchScope.projectScope(myProject));
targetClass = aClass instanceof KtLightClassForExplicitDeclaration targetClass = aClass instanceof KtLightClassForSourceDeclaration
? ((KtLightClassForExplicitDeclaration) aClass).getKotlinOrigin() ? ((KtLightClassForSourceDeclaration) aClass).getKotlinOrigin()
: null; : null;
validateButtons(); validateButtons();
} }
@@ -21,7 +21,7 @@ import com.intellij.psi.PsiElement
import com.intellij.refactoring.rename.naming.AutomaticRenamer import com.intellij.refactoring.rename.naming.AutomaticRenamer
import com.intellij.refactoring.rename.naming.AutomaticTestRenamerFactory import com.intellij.refactoring.rename.naming.AutomaticTestRenamerFactory
import com.intellij.usageView.UsageInfo import com.intellij.usageView.UsageInfo
import org.jetbrains.kotlin.asJava.classes.KtLightClassForExplicitDeclaration import org.jetbrains.kotlin.asJava.classes.KtLightClassForSourceDeclaration
import org.jetbrains.kotlin.asJava.classes.KtLightClassForFacade import org.jetbrains.kotlin.asJava.classes.KtLightClassForFacade
import org.jetbrains.kotlin.asJava.findFacadeClass import org.jetbrains.kotlin.asJava.findFacadeClass
import org.jetbrains.kotlin.asJava.toLightClass import org.jetbrains.kotlin.asJava.toLightClass
@@ -32,7 +32,7 @@ import org.jetbrains.kotlin.psi.KtFile
class KotlinAutomaticTestRenamerFactory : AutomaticTestRenamerFactory() { class KotlinAutomaticTestRenamerFactory : AutomaticTestRenamerFactory() {
private fun getPsiClass(element: PsiElement): PsiClass? { private fun getPsiClass(element: PsiElement): PsiClass? {
return when (element) { return when (element) {
is KtLightClassForExplicitDeclaration -> element is KtLightClassForSourceDeclaration -> element
is KtClassOrObject -> element.toLightClass() is KtClassOrObject -> element.toLightClass()
is KtFile -> element.findFacadeClass() is KtFile -> element.findFacadeClass()
else -> null else -> null
@@ -24,7 +24,7 @@ import com.intellij.refactoring.listeners.RefactoringElementListener
import com.intellij.refactoring.rename.RenamePsiElementProcessor import com.intellij.refactoring.rename.RenamePsiElementProcessor
import com.intellij.usageView.UsageInfo import com.intellij.usageView.UsageInfo
import org.jetbrains.kotlin.asJava.classes.KtLightClass import org.jetbrains.kotlin.asJava.classes.KtLightClass
import org.jetbrains.kotlin.asJava.classes.KtLightClassForExplicitDeclaration import org.jetbrains.kotlin.asJava.classes.KtLightClassForSourceDeclaration
import org.jetbrains.kotlin.asJava.classes.KtLightClassForFacade import org.jetbrains.kotlin.asJava.classes.KtLightClassForFacade
import org.jetbrains.kotlin.asJava.namedUnwrappedElement import org.jetbrains.kotlin.asJava.namedUnwrappedElement
import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.ClassDescriptor
@@ -112,7 +112,7 @@ class RenameKotlinClassProcessor : RenameKotlinPsiProcessor() {
private fun getClassOrObject(element: PsiElement?): PsiElement? = when (element) { private fun getClassOrObject(element: PsiElement?): PsiElement? = when (element) {
is KtLightClass -> is KtLightClass ->
when (element) { when (element) {
is KtLightClassForExplicitDeclaration -> element.kotlinOrigin is KtLightClassForSourceDeclaration -> element.kotlinOrigin
is KtLightClassForFacade -> element is KtLightClassForFacade -> element
else -> throw AssertionError("Should not be suggested to rename element of type " + element.javaClass + " " + element) else -> throw AssertionError("Should not be suggested to rename element of type " + element.javaClass + " " + element)
} }
@@ -48,7 +48,7 @@ import kotlin.jvm.functions.Function1;
import org.jdom.Element; import org.jdom.Element;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jetbrains.kotlin.asJava.classes.KtLightClassForExplicitDeclaration; import org.jetbrains.kotlin.asJava.classes.KtLightClassForSourceDeclaration;
import org.jetbrains.kotlin.asJava.elements.KtLightMethod; import org.jetbrains.kotlin.asJava.elements.KtLightMethod;
import org.jetbrains.kotlin.idea.MainFunctionDetector; import org.jetbrains.kotlin.idea.MainFunctionDetector;
import org.jetbrains.kotlin.idea.caches.resolve.ResolutionUtils; import org.jetbrains.kotlin.idea.caches.resolve.ResolutionUtils;
@@ -389,7 +389,7 @@ public class JetRunConfiguration extends ModuleBasedConfiguration<RunConfigurati
private String noFunctionFoundMessage(@NotNull PsiClass psiClass) { private String noFunctionFoundMessage(@NotNull PsiClass psiClass) {
//noinspection ConstantConditions //noinspection ConstantConditions
FqName classFqName = new FqName(psiClass.getQualifiedName()); FqName classFqName = new FqName(psiClass.getQualifiedName());
if (psiClass instanceof KtLightClassForExplicitDeclaration) { if (psiClass instanceof KtLightClassForSourceDeclaration) {
return String.format("Function 'main' not found in class '%s'", classFqName); return String.format("Function 'main' not found in class '%s'", classFqName);
} }
return String.format("Top-level function 'main' not found in package '%s'", classFqName.parent()); return String.format("Top-level function 'main' not found in package '%s'", classFqName.parent());
@@ -27,7 +27,7 @@ import com.intellij.testIntegration.JavaTestFinder
import com.intellij.testIntegration.TestFinderHelper import com.intellij.testIntegration.TestFinderHelper
import com.intellij.util.CommonProcessors import com.intellij.util.CommonProcessors
import com.intellij.util.containers.HashSet import com.intellij.util.containers.HashSet
import org.jetbrains.kotlin.asJava.classes.KtLightClassForExplicitDeclaration import org.jetbrains.kotlin.asJava.classes.KtLightClassForSourceDeclaration
import org.jetbrains.kotlin.asJava.classes.KtLightClassForFacade import org.jetbrains.kotlin.asJava.classes.KtLightClassForFacade
import org.jetbrains.kotlin.asJava.findFacadeClass import org.jetbrains.kotlin.asJava.findFacadeClass
import org.jetbrains.kotlin.asJava.toLightClass import org.jetbrains.kotlin.asJava.toLightClass
@@ -72,7 +72,7 @@ class KotlinTestFinder : JavaTestFinder() {
if (eachClass is KtLightClassForFacade) { if (eachClass is KtLightClassForFacade) {
eachClass.files.mapTo(classesWithWeights) { Pair.create(it, candidateNameWithWeight.second) } eachClass.files.mapTo(classesWithWeights) { Pair.create(it, candidateNameWithWeight.second) }
} }
else if (eachClass.isPhysical || eachClass is KtLightClassForExplicitDeclaration) { else if (eachClass.isPhysical || eachClass is KtLightClassForSourceDeclaration) {
classesWithWeights.add(Pair.create(eachClass, candidateNameWithWeight.second)) classesWithWeights.add(Pair.create(eachClass, candidateNameWithWeight.second))
} }
} }
@@ -101,7 +101,7 @@ class KotlinTestFinder : JavaTestFinder() {
if (!pattern.matcher(candidateName).matches()) continue if (!pattern.matcher(candidateName).matches()) continue
for (candidateClass in cache.getClassesByName(candidateName, scope)) { for (candidateClass in cache.getClassesByName(candidateName, scope)) {
if (!(frameworks.isTestClass(candidateClass) || frameworks.isPotentialTestClass(candidateClass))) continue if (!(frameworks.isTestClass(candidateClass) || frameworks.isPotentialTestClass(candidateClass))) continue
if (!candidateClass.isPhysical && candidateClass !is KtLightClassForExplicitDeclaration) continue if (!candidateClass.isPhysical && candidateClass !is KtLightClassForSourceDeclaration) continue
processor.process(Pair.create(candidateClass, TestFinderHelper.calcTestNameProximity(klassName, candidateName))) processor.process(Pair.create(candidateClass, TestFinderHelper.calcTestNameProximity(klassName, candidateName)))
} }
} }
@@ -18,7 +18,7 @@ package org.jetbrains.kotlin.asJava
import com.intellij.psi.JavaPsiFacade import com.intellij.psi.JavaPsiFacade
import com.intellij.psi.impl.ResolveScopeManager import com.intellij.psi.impl.ResolveScopeManager
import org.jetbrains.kotlin.asJava.classes.KtLightClassForExplicitDeclaration import org.jetbrains.kotlin.asJava.classes.KtLightClassForSourceDeclaration
import org.jetbrains.kotlin.asJava.classes.KtLightClassForFacade import org.jetbrains.kotlin.asJava.classes.KtLightClassForFacade
import org.jetbrains.kotlin.idea.caches.resolve.KtLightClassForDecompiledDeclaration import org.jetbrains.kotlin.idea.caches.resolve.KtLightClassForDecompiledDeclaration
import org.jetbrains.kotlin.idea.test.JdkAndMockLibraryProjectDescriptor import org.jetbrains.kotlin.idea.test.JdkAndMockLibraryProjectDescriptor
@@ -56,7 +56,7 @@ class LightClassesClasspathSortingTest : KotlinCodeInsightTestCase() {
assertNotNull(psiClass, "Can't find class for $fqName") assertNotNull(psiClass, "Can't find class for $fqName")
psiClass!! psiClass!!
assert(psiClass is KtLightClassForExplicitDeclaration || psiClass is KtLightClassForFacade) { "Should be an explicit light class, but was $fqName ${psiClass.javaClass}" } assert(psiClass is KtLightClassForSourceDeclaration || psiClass is KtLightClassForFacade) { "Should be an explicit light class, but was $fqName ${psiClass.javaClass}" }
assert(psiClass !is KtLightClassForDecompiledDeclaration) { "Should not be decompiled light class: $fqName ${psiClass.javaClass}" } assert(psiClass !is KtLightClassForDecompiledDeclaration) { "Should not be decompiled light class: $fqName ${psiClass.javaClass}" }
} }
@@ -21,7 +21,7 @@ import com.intellij.testFramework.LightProjectDescriptor;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jetbrains.kotlin.asJava.classes.KtLightClass; import org.jetbrains.kotlin.asJava.classes.KtLightClass;
import org.jetbrains.kotlin.asJava.classes.KtLightClassForExplicitDeclaration; import org.jetbrains.kotlin.asJava.classes.KtLightClassForSourceDeclaration;
import org.jetbrains.kotlin.idea.caches.resolve.KtLightClassForDecompiledDeclaration; import org.jetbrains.kotlin.idea.caches.resolve.KtLightClassForDecompiledDeclaration;
import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase; import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase;
import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor; import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor;
@@ -41,7 +41,7 @@ public class LightClassEqualsTest extends KotlinLightCodeInsightFixtureTestCase
PsiClass theClass = myFixture.getJavaFacade().findClass("A"); PsiClass theClass = myFixture.getJavaFacade().findClass("A");
assertNotNull(theClass); assertNotNull(theClass);
assertInstanceOf(theClass, KtLightClassForExplicitDeclaration.class); assertInstanceOf(theClass, KtLightClassForSourceDeclaration.class);
doTestEquals(((KtLightClass) theClass).getKotlinOrigin()); doTestEquals(((KtLightClass) theClass).getKotlinOrigin());
} }