Create From Usage: Create class by reference expression
This commit is contained in:
@@ -376,3 +376,5 @@ public fun PsiElement.nextLeafSkipWhitespacesAndComments(): PsiElement? {
|
|||||||
return leaf
|
return leaf
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public fun JetExpression.isDotReceiver(): Boolean =
|
||||||
|
(getParent() as? JetDotQualifiedExpression)?.getReceiverExpression() == this
|
||||||
@@ -19,6 +19,7 @@ package org.jetbrains.jet.plugin.quickfix;
|
|||||||
import org.jetbrains.jet.lang.psi.JetClass;
|
import org.jetbrains.jet.lang.psi.JetClass;
|
||||||
import org.jetbrains.jet.plugin.codeInsight.ImplementMethodsHandler;
|
import org.jetbrains.jet.plugin.codeInsight.ImplementMethodsHandler;
|
||||||
import org.jetbrains.jet.plugin.quickfix.createFromUsage.createClass.CreateClassFromTypeReferenceActionFactory;
|
import org.jetbrains.jet.plugin.quickfix.createFromUsage.createClass.CreateClassFromTypeReferenceActionFactory;
|
||||||
|
import org.jetbrains.jet.plugin.quickfix.createFromUsage.createClass.CreateClassFromReferenceExpressionActionFactory;
|
||||||
import org.jetbrains.jet.plugin.quickfix.createFromUsage.createFunction.*;
|
import org.jetbrains.jet.plugin.quickfix.createFromUsage.createFunction.*;
|
||||||
import org.jetbrains.jet.plugin.quickfix.createFromUsage.createVariable.*;
|
import org.jetbrains.jet.plugin.quickfix.createFromUsage.createVariable.*;
|
||||||
|
|
||||||
@@ -270,5 +271,6 @@ public class QuickFixRegistrar {
|
|||||||
QuickFixes.factories.put(DELEGATE_SPECIAL_FUNCTION_NONE_APPLICABLE, CreatePropertyDelegateAccessorsActionFactory.INSTANCE$);
|
QuickFixes.factories.put(DELEGATE_SPECIAL_FUNCTION_NONE_APPLICABLE, CreatePropertyDelegateAccessorsActionFactory.INSTANCE$);
|
||||||
|
|
||||||
QuickFixes.factories.put(UNRESOLVED_REFERENCE, CreateClassFromTypeReferenceActionFactory.INSTANCE$);
|
QuickFixes.factories.put(UNRESOLVED_REFERENCE, CreateClassFromTypeReferenceActionFactory.INSTANCE$);
|
||||||
|
QuickFixes.factories.put(UNRESOLVED_REFERENCE, CreateClassFromReferenceExpressionActionFactory.INSTANCE$);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+104
@@ -0,0 +1,104 @@
|
|||||||
|
package org.jetbrains.jet.plugin.quickfix.createFromUsage.createClass
|
||||||
|
|
||||||
|
import org.jetbrains.jet.lang.diagnostics.Diagnostic
|
||||||
|
import com.intellij.codeInsight.intention.IntentionAction
|
||||||
|
import org.jetbrains.jet.lang.psi.JetSimpleNameExpression
|
||||||
|
import org.jetbrains.jet.lang.psi.JetExpression
|
||||||
|
import org.jetbrains.jet.lang.psi.psiUtil.getParentByType
|
||||||
|
import org.jetbrains.jet.lang.psi.JetTypeReference
|
||||||
|
import java.util.Collections
|
||||||
|
import org.jetbrains.jet.plugin.quickfix.JetIntentionActionsFactory
|
||||||
|
import org.jetbrains.jet.lang.psi.JetClass
|
||||||
|
import org.jetbrains.jet.lang.psi.JetQualifiedExpression
|
||||||
|
import org.jetbrains.jet.lang.psi.psiUtil.getAssignmentByLHS
|
||||||
|
import org.jetbrains.jet.lang.psi.JetCallExpression
|
||||||
|
import org.jetbrains.jet.lang.psi.JetImportDirective
|
||||||
|
import org.jetbrains.jet.plugin.caches.resolve.getAnalysisResults
|
||||||
|
import org.jetbrains.jet.lang.resolve.calls.callUtil.getCall
|
||||||
|
import org.jetbrains.jet.lang.psi.JetFile
|
||||||
|
import org.jetbrains.jet.lang.resolve.BindingContext
|
||||||
|
import org.jetbrains.jet.lang.psi.psiUtil.getQualifiedElementSelector
|
||||||
|
import org.jetbrains.jet.plugin.quickfix.createFromUsage.callableBuilder.TypeInfo
|
||||||
|
import org.jetbrains.jet.lang.psi.JetReferenceExpression
|
||||||
|
import java.util.Arrays
|
||||||
|
import org.jetbrains.jet.lang.psi.JetDotQualifiedExpression
|
||||||
|
import org.jetbrains.jet.lang.psi.psiUtil.isDotReceiver
|
||||||
|
|
||||||
|
public object CreateClassFromReferenceExpressionActionFactory : JetIntentionActionsFactory() {
|
||||||
|
override fun doCreateActions(diagnostic: Diagnostic): List<IntentionAction> {
|
||||||
|
val refExpr = diagnostic.getPsiElement() as? JetSimpleNameExpression ?: return Collections.emptyList()
|
||||||
|
if (refExpr.getParentByType(javaClass<JetTypeReference>()) != null) return Collections.emptyList()
|
||||||
|
|
||||||
|
val file = refExpr.getContainingFile() as? JetFile ?: return Collections.emptyList()
|
||||||
|
|
||||||
|
val name = refExpr.getReferencedName()
|
||||||
|
if (!name.checkClassName()) return Collections.emptyList()
|
||||||
|
|
||||||
|
val exhaust = refExpr.getAnalysisResults()
|
||||||
|
val context = exhaust.getBindingContext()
|
||||||
|
|
||||||
|
val fullCallExpr = refExpr.getParent()?.let {
|
||||||
|
when {
|
||||||
|
it is JetCallExpression && it.getCalleeExpression() == refExpr -> return Collections.emptyList()
|
||||||
|
it is JetQualifiedExpression && it.getSelectorExpression() == refExpr -> it
|
||||||
|
else -> refExpr
|
||||||
|
}
|
||||||
|
} as? JetExpression ?: return Collections.emptyList()
|
||||||
|
|
||||||
|
val inImport = refExpr.getParentByType(javaClass<JetImportDirective>()) != null
|
||||||
|
val qualifierExpected = refExpr.isDotReceiver() || ((refExpr.getParent() as? JetDotQualifiedExpression)?.isDotReceiver() ?: false)
|
||||||
|
|
||||||
|
if (inImport || qualifierExpected) {
|
||||||
|
val receiverSelector = (fullCallExpr as? JetQualifiedExpression)?.getReceiverExpression()?.getQualifiedElementSelector() as? JetReferenceExpression
|
||||||
|
val qualifierDescriptor = receiverSelector?.let { context[BindingContext.REFERENCE_TARGET, it] }
|
||||||
|
|
||||||
|
val targetParent =
|
||||||
|
getTargetParentByQualifier(refExpr.getContainingJetFile(), receiverSelector != null, qualifierDescriptor)
|
||||||
|
?: return Collections.emptyList()
|
||||||
|
|
||||||
|
return ClassKind.values()
|
||||||
|
.filter {
|
||||||
|
when (it) {
|
||||||
|
ClassKind.ANNOTATION_CLASS -> inImport
|
||||||
|
ClassKind.ENUM_ENTRY -> inImport && targetParent is JetClass && targetParent.isEnum()
|
||||||
|
else -> true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.map {
|
||||||
|
val classInfo = ClassInfo(
|
||||||
|
kind = it,
|
||||||
|
name = name,
|
||||||
|
targetParent = targetParent,
|
||||||
|
expectedTypeInfo = TypeInfo.Empty
|
||||||
|
)
|
||||||
|
CreateClassFromUsageFix(refExpr, classInfo)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fullCallExpr.getAssignmentByLHS() != null) return Collections.emptyList()
|
||||||
|
|
||||||
|
val call = refExpr.getCall(context) ?: return Collections.emptyList()
|
||||||
|
val targetParent = getTargetParentByCall(call, file) ?: return Collections.emptyList()
|
||||||
|
if (isInnerClassExpected(call)) return Collections.emptyList()
|
||||||
|
|
||||||
|
val (expectedTypeInfo, filter) = fullCallExpr.getInheritableTypeInfo(context, exhaust.getModuleDescriptor(), targetParent)
|
||||||
|
|
||||||
|
return Arrays.asList(ClassKind.OBJECT, ClassKind.ENUM_ENTRY)
|
||||||
|
.filter {
|
||||||
|
filter(it) && when (it) {
|
||||||
|
ClassKind.OBJECT -> true
|
||||||
|
ClassKind.ENUM_ENTRY -> targetParent is JetClass && targetParent.isEnum()
|
||||||
|
else -> false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.map {
|
||||||
|
val classInfo = ClassInfo(
|
||||||
|
kind = it,
|
||||||
|
name = name,
|
||||||
|
targetParent = targetParent,
|
||||||
|
expectedTypeInfo = expectedTypeInfo
|
||||||
|
)
|
||||||
|
CreateClassFromUsageFix(refExpr, classInfo)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+4
-35
@@ -8,28 +8,21 @@ import java.util.Collections
|
|||||||
import org.jetbrains.jet.lang.psi.JetUserType
|
import org.jetbrains.jet.lang.psi.JetUserType
|
||||||
import org.jetbrains.jet.lang.psi.JetFile
|
import org.jetbrains.jet.lang.psi.JetFile
|
||||||
import org.jetbrains.jet.lang.resolve.BindingContext
|
import org.jetbrains.jet.lang.resolve.BindingContext
|
||||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor
|
|
||||||
import org.jetbrains.jet.lang.descriptors.PackageViewDescriptor
|
|
||||||
import org.jetbrains.jet.plugin.caches.resolve.getAnalysisResults
|
import org.jetbrains.jet.plugin.caches.resolve.getAnalysisResults
|
||||||
import org.jetbrains.jet.plugin.codeInsight.DescriptorToDeclarationUtil
|
|
||||||
import com.intellij.psi.JavaPsiFacade
|
|
||||||
import com.intellij.openapi.module.ModuleUtilCore
|
|
||||||
import com.intellij.psi.PsiDirectory
|
|
||||||
import org.jetbrains.jet.lang.psi.JetElement
|
|
||||||
import org.jetbrains.jet.plugin.quickfix.createFromUsage.callableBuilder.TypeInfo
|
import org.jetbrains.jet.plugin.quickfix.createFromUsage.callableBuilder.TypeInfo
|
||||||
import org.jetbrains.jet.lang.types.Variance
|
import org.jetbrains.jet.lang.types.Variance
|
||||||
|
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor
|
||||||
|
import com.intellij.psi.PsiElement
|
||||||
import org.jetbrains.jet.lang.psi.JetDelegatorToSuperClass
|
import org.jetbrains.jet.lang.psi.JetDelegatorToSuperClass
|
||||||
|
import org.jetbrains.jet.lang.psi.JetDelegatorToSuperCall
|
||||||
import org.jetbrains.jet.lang.psi.JetConstructorCalleeExpression
|
import org.jetbrains.jet.lang.psi.JetConstructorCalleeExpression
|
||||||
import org.jetbrains.jet.plugin.project.AnalyzerFacadeWithCache
|
import org.jetbrains.jet.plugin.project.AnalyzerFacadeWithCache
|
||||||
import org.jetbrains.jet.plugin.util.ProjectRootsUtil
|
|
||||||
|
|
||||||
public object CreateClassFromTypeReferenceActionFactory: JetIntentionActionsFactory() {
|
public object CreateClassFromTypeReferenceActionFactory: JetIntentionActionsFactory() {
|
||||||
override fun doCreateActions(diagnostic: Diagnostic): List<IntentionAction> {
|
override fun doCreateActions(diagnostic: Diagnostic): List<IntentionAction> {
|
||||||
val userType = QuickFixUtil.getParentElementOfType(diagnostic, javaClass<JetUserType>()) ?: return Collections.emptyList()
|
val userType = QuickFixUtil.getParentElementOfType(diagnostic, javaClass<JetUserType>()) ?: return Collections.emptyList()
|
||||||
val typeArguments = userType.getTypeArgumentsAsTypes()
|
val typeArguments = userType.getTypeArgumentsAsTypes()
|
||||||
|
|
||||||
val project = userType.getProject()
|
|
||||||
|
|
||||||
val name = userType.getReferencedName() ?: return Collections.emptyList()
|
val name = userType.getReferencedName() ?: return Collections.emptyList()
|
||||||
|
|
||||||
val typeRefParent = userType.getParent()?.getParent()
|
val typeRefParent = userType.getParent()?.getParent()
|
||||||
@@ -45,31 +38,7 @@ public object CreateClassFromTypeReferenceActionFactory: JetIntentionActionsFact
|
|||||||
val qualifier = userType.getQualifier()?.getReferenceExpression()
|
val qualifier = userType.getQualifier()?.getReferenceExpression()
|
||||||
val qualifierDescriptor = qualifier?.let { context[BindingContext.REFERENCE_TARGET, it] }
|
val qualifierDescriptor = qualifier?.let { context[BindingContext.REFERENCE_TARGET, it] }
|
||||||
|
|
||||||
val targetParent =
|
val targetParent = getTargetParentByQualifier(file, qualifier != null, qualifierDescriptor) ?: return Collections.emptyList()
|
||||||
when {
|
|
||||||
qualifier == null -> file
|
|
||||||
|
|
||||||
qualifierDescriptor is ClassDescriptor -> {
|
|
||||||
DescriptorToDeclarationUtil.getDeclaration(project, qualifierDescriptor)
|
|
||||||
}
|
|
||||||
|
|
||||||
qualifierDescriptor is PackageViewDescriptor -> {
|
|
||||||
val currentModule = ModuleUtilCore.findModuleForPsiElement(file)
|
|
||||||
val targetFqName = qualifierDescriptor.getFqName()
|
|
||||||
if (targetFqName != file.getPackageFqName()) {
|
|
||||||
JavaPsiFacade.getInstance(project)
|
|
||||||
.findPackage(targetFqName.asString())
|
|
||||||
?.getDirectories()
|
|
||||||
?.firstOrNull { ModuleUtilCore.findModuleForPsiElement(it) == currentModule }
|
|
||||||
}
|
|
||||||
else file
|
|
||||||
}
|
|
||||||
|
|
||||||
else -> null
|
|
||||||
} ?: return Collections.emptyList()
|
|
||||||
|
|
||||||
if (!ProjectRootsUtil.isInProjectOrLibSource(targetParent)) return Collections.emptyList()
|
|
||||||
if (!(targetParent.isWritable() && (targetParent is PsiDirectory || targetParent is JetElement))) return Collections.emptyList()
|
|
||||||
|
|
||||||
val possibleKinds = when {
|
val possibleKinds = when {
|
||||||
traitExpected -> Collections.singletonList(ClassKind.TRAIT)
|
traitExpected -> Collections.singletonList(ClassKind.TRAIT)
|
||||||
|
|||||||
+99
@@ -0,0 +1,99 @@
|
|||||||
|
package org.jetbrains.jet.plugin.quickfix.createFromUsage.createClass
|
||||||
|
|
||||||
|
import org.jetbrains.jet.lang.psi.JetFile
|
||||||
|
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor
|
||||||
|
import com.intellij.psi.PsiElement
|
||||||
|
import org.jetbrains.jet.lang.descriptors.ClassDescriptor
|
||||||
|
import org.jetbrains.jet.lang.descriptors.PackageViewDescriptor
|
||||||
|
import org.jetbrains.jet.plugin.codeInsight.DescriptorToDeclarationUtil
|
||||||
|
import com.intellij.openapi.module.ModuleUtilCore
|
||||||
|
import com.intellij.psi.JavaPsiFacade
|
||||||
|
import com.intellij.psi.PsiDirectory
|
||||||
|
import org.jetbrains.jet.lang.psi.JetElement
|
||||||
|
import org.jetbrains.jet.lang.psi.JetExpression
|
||||||
|
import org.jetbrains.jet.plugin.quickfix.createFromUsage.callableBuilder.guessTypes
|
||||||
|
import org.jetbrains.jet.lang.resolve.BindingContext
|
||||||
|
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor
|
||||||
|
import org.jetbrains.jet.lang.types.TypeUtils
|
||||||
|
import org.jetbrains.jet.lang.types.checker.JetTypeChecker
|
||||||
|
import org.jetbrains.jet.lang.descriptors.TypeParameterDescriptor
|
||||||
|
import org.jetbrains.jet.plugin.quickfix.createFromUsage.callableBuilder.TypeInfo
|
||||||
|
import org.jetbrains.jet.lang.types.Variance
|
||||||
|
import org.jetbrains.jet.lang.psi.Call
|
||||||
|
import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverValue
|
||||||
|
import org.jetbrains.jet.lang.resolve.scopes.receivers.Qualifier
|
||||||
|
import org.jetbrains.jet.plugin.util.ProjectRootsUtil
|
||||||
|
import org.jetbrains.jet.lang.resolve.DescriptorUtils
|
||||||
|
import org.jetbrains.jet.lang.resolve.DescriptorToSourceUtils
|
||||||
|
|
||||||
|
private fun String.checkClassName(): Boolean = isNotEmpty() && Character.isUpperCase(first())
|
||||||
|
|
||||||
|
private fun getTargetParentByQualifier(
|
||||||
|
file: JetFile,
|
||||||
|
isQualified: Boolean,
|
||||||
|
qualifierDescriptor: DeclarationDescriptor?): PsiElement? {
|
||||||
|
val project = file.getProject()
|
||||||
|
|
||||||
|
val targetParent = when {
|
||||||
|
!isQualified -> file
|
||||||
|
|
||||||
|
qualifierDescriptor is ClassDescriptor -> {
|
||||||
|
DescriptorToDeclarationUtil.getDeclaration(project, qualifierDescriptor)
|
||||||
|
}
|
||||||
|
|
||||||
|
qualifierDescriptor is PackageViewDescriptor -> {
|
||||||
|
val currentModule = ModuleUtilCore.findModuleForPsiElement(file)
|
||||||
|
val targetFqName = qualifierDescriptor.getFqName()
|
||||||
|
if (targetFqName != file.getPackageFqName()) {
|
||||||
|
JavaPsiFacade.getInstance(project)
|
||||||
|
.findPackage(targetFqName.asString())
|
||||||
|
?.getDirectories()
|
||||||
|
?.firstOrNull { ModuleUtilCore.findModuleForPsiElement(it) == currentModule }
|
||||||
|
}
|
||||||
|
else file
|
||||||
|
}
|
||||||
|
|
||||||
|
else -> null
|
||||||
|
} ?: return null
|
||||||
|
return if (targetParent.isWritable()
|
||||||
|
&& ProjectRootsUtil.isInProjectOrLibSource(targetParent)
|
||||||
|
&& (targetParent is PsiDirectory || targetParent is JetElement)) return targetParent else null
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun getTargetParentByCall(call: Call, file: JetFile): PsiElement? {
|
||||||
|
val receiver = call.getExplicitReceiver()
|
||||||
|
return when (receiver) {
|
||||||
|
ReceiverValue.NO_RECEIVER -> getTargetParentByQualifier(file, false, null)
|
||||||
|
is Qualifier -> getTargetParentByQualifier(file, true, receiver.resultingDescriptor)
|
||||||
|
else -> getTargetParentByQualifier(file, true, receiver.getType().getConstructor().getDeclarationDescriptor())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun isInnerClassExpected(call: Call): Boolean {
|
||||||
|
val receiver = call.getExplicitReceiver()
|
||||||
|
return receiver != ReceiverValue.NO_RECEIVER && receiver !is Qualifier
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun JetExpression.getInheritableTypeInfo(
|
||||||
|
context: BindingContext,
|
||||||
|
moduleDescriptor: ModuleDescriptor,
|
||||||
|
containingDeclaration: PsiElement): Pair<TypeInfo, (ClassKind) -> Boolean> {
|
||||||
|
val types = guessTypes(context, moduleDescriptor, false)
|
||||||
|
if (types.size != 1) return TypeInfo.Empty to { classKind -> true }
|
||||||
|
|
||||||
|
val type = types.first()
|
||||||
|
val descriptor = type.getConstructor().getDeclarationDescriptor()
|
||||||
|
|
||||||
|
val canHaveSubtypes = TypeUtils.canHaveSubtypes(JetTypeChecker.DEFAULT, type)
|
||||||
|
val isEnum = DescriptorUtils.isEnumClass(descriptor)
|
||||||
|
|
||||||
|
if (!(canHaveSubtypes || isEnum)
|
||||||
|
|| descriptor is TypeParameterDescriptor) return TypeInfo.Empty to { classKind -> false }
|
||||||
|
|
||||||
|
return TypeInfo.ByType(type, Variance.OUT_VARIANCE) to { classKind ->
|
||||||
|
when (classKind) {
|
||||||
|
ClassKind.ENUM_ENTRY -> isEnum && containingDeclaration == DescriptorToSourceUtils.descriptorToDeclaration(descriptor)
|
||||||
|
else -> canHaveSubtypes
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
// "class com.intellij.codeInsight.daemon.impl.quickfix.ImportClassFixBase" "false"
|
// "class com.intellij.codeInsight.daemon.impl.quickfix.ImportClassFixBase" "false"
|
||||||
// ACTION: Create local variable 'PrivateClass'
|
// ACTION: Create local variable 'PrivateClass'
|
||||||
|
// ACTION: Create object 'PrivateClass'
|
||||||
// ACTION: Create parameter 'PrivateClass'
|
// ACTION: Create parameter 'PrivateClass'
|
||||||
// ACTION: Create property 'PrivateClass'
|
// ACTION: Create property 'PrivateClass'
|
||||||
// ERROR: Unresolved reference: PrivateClass
|
// ERROR: Unresolved reference: PrivateClass
|
||||||
|
|||||||
@@ -1,4 +1,9 @@
|
|||||||
// "class com.intellij.codeInsight.daemon.impl.quickfix.ImportClassFixBase" "false"
|
// "class com.intellij.codeInsight.daemon.impl.quickfix.ImportClassFixBase" "false"
|
||||||
|
// ACTION: Create annotation 'SomeTest'
|
||||||
|
// ACTION: Create class 'SomeTest'
|
||||||
|
// ACTION: Create enum 'SomeTest'
|
||||||
|
// ACTION: Create object 'SomeTest'
|
||||||
|
// ACTION: Create trait 'SomeTest'
|
||||||
// ERROR: Unresolved reference: SomeTest
|
// ERROR: Unresolved reference: SomeTest
|
||||||
|
|
||||||
package testing
|
package testing
|
||||||
|
|||||||
+6
@@ -0,0 +1,6 @@
|
|||||||
|
// "Create annotation 'A'" "true"
|
||||||
|
package p
|
||||||
|
|
||||||
|
import p.A
|
||||||
|
|
||||||
|
annotation class A
|
||||||
+10
@@ -0,0 +1,10 @@
|
|||||||
|
// "Create annotation 'A'" "true"
|
||||||
|
package p
|
||||||
|
|
||||||
|
import p.X.A
|
||||||
|
|
||||||
|
class X {
|
||||||
|
|
||||||
|
annotation class A
|
||||||
|
|
||||||
|
}
|
||||||
+8
@@ -0,0 +1,8 @@
|
|||||||
|
// "Create class 'A'" "true"
|
||||||
|
package p
|
||||||
|
|
||||||
|
import p.A
|
||||||
|
|
||||||
|
class A {
|
||||||
|
|
||||||
|
}
|
||||||
+12
@@ -0,0 +1,12 @@
|
|||||||
|
// "Create class 'A'" "true"
|
||||||
|
package p
|
||||||
|
|
||||||
|
import p.X.A
|
||||||
|
|
||||||
|
class X {
|
||||||
|
|
||||||
|
class A {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
+10
@@ -0,0 +1,10 @@
|
|||||||
|
// "Create enum constant 'A'" "true"
|
||||||
|
package p
|
||||||
|
|
||||||
|
import p.E.A
|
||||||
|
|
||||||
|
enum class E {
|
||||||
|
|
||||||
|
A
|
||||||
|
|
||||||
|
}
|
||||||
+8
@@ -0,0 +1,8 @@
|
|||||||
|
// "Create enum 'A'" "true"
|
||||||
|
package p
|
||||||
|
|
||||||
|
import p.A
|
||||||
|
|
||||||
|
enum class A {
|
||||||
|
|
||||||
|
}
|
||||||
+12
@@ -0,0 +1,12 @@
|
|||||||
|
// "Create enum 'A'" "true"
|
||||||
|
package p
|
||||||
|
|
||||||
|
import p.X.A
|
||||||
|
|
||||||
|
class X {
|
||||||
|
|
||||||
|
enum class A {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
+8
@@ -0,0 +1,8 @@
|
|||||||
|
// "Create object 'A'" "true"
|
||||||
|
package p
|
||||||
|
|
||||||
|
import p.A
|
||||||
|
|
||||||
|
object A {
|
||||||
|
|
||||||
|
}
|
||||||
+12
@@ -0,0 +1,12 @@
|
|||||||
|
// "Create object 'A'" "true"
|
||||||
|
package p
|
||||||
|
|
||||||
|
import p.X.A
|
||||||
|
|
||||||
|
class X {
|
||||||
|
|
||||||
|
object A {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
+8
@@ -0,0 +1,8 @@
|
|||||||
|
// "Create trait 'A'" "true"
|
||||||
|
package p
|
||||||
|
|
||||||
|
import p.A
|
||||||
|
|
||||||
|
trait A {
|
||||||
|
|
||||||
|
}
|
||||||
+12
@@ -0,0 +1,12 @@
|
|||||||
|
// "Create trait 'A'" "true"
|
||||||
|
package p
|
||||||
|
|
||||||
|
import p.X.A
|
||||||
|
|
||||||
|
class X {
|
||||||
|
|
||||||
|
trait A {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
+4
@@ -0,0 +1,4 @@
|
|||||||
|
// "Create annotation 'A'" "true"
|
||||||
|
package p
|
||||||
|
|
||||||
|
import p.<caret>A
|
||||||
+8
@@ -0,0 +1,8 @@
|
|||||||
|
// "Create annotation 'A'" "true"
|
||||||
|
package p
|
||||||
|
|
||||||
|
import p.X.<caret>A
|
||||||
|
|
||||||
|
class X {
|
||||||
|
|
||||||
|
}
|
||||||
+4
@@ -0,0 +1,4 @@
|
|||||||
|
// "Create class 'A'" "true"
|
||||||
|
package p
|
||||||
|
|
||||||
|
import p.<caret>A
|
||||||
+8
@@ -0,0 +1,8 @@
|
|||||||
|
// "Create class 'A'" "true"
|
||||||
|
package p
|
||||||
|
|
||||||
|
import p.X.<caret>A
|
||||||
|
|
||||||
|
class X {
|
||||||
|
|
||||||
|
}
|
||||||
+8
@@ -0,0 +1,8 @@
|
|||||||
|
// "Create enum constant 'A'" "true"
|
||||||
|
package p
|
||||||
|
|
||||||
|
import p.E.<caret>A
|
||||||
|
|
||||||
|
enum class E {
|
||||||
|
|
||||||
|
}
|
||||||
+10
@@ -0,0 +1,10 @@
|
|||||||
|
// "Create enum constant 'A'" "false"
|
||||||
|
// ACTION: Create class 'A'
|
||||||
|
// ACTION: Create trait 'A'
|
||||||
|
// ACTION: Create object 'A'
|
||||||
|
// ACTION: Create enum 'A'
|
||||||
|
// ACTION: Create annotation 'A'
|
||||||
|
// ERROR: Unresolved reference: A
|
||||||
|
package p
|
||||||
|
|
||||||
|
import p.<caret>A
|
||||||
+14
@@ -0,0 +1,14 @@
|
|||||||
|
// "Create enum constant 'A'" "false"
|
||||||
|
// ACTION: Create class 'A'
|
||||||
|
// ACTION: Create trait 'A'
|
||||||
|
// ACTION: Create object 'A'
|
||||||
|
// ACTION: Create enum 'A'
|
||||||
|
// ACTION: Create annotation 'A'
|
||||||
|
// ERROR: Unresolved reference: A
|
||||||
|
package p
|
||||||
|
|
||||||
|
import p.X.<caret>A
|
||||||
|
|
||||||
|
class X {
|
||||||
|
|
||||||
|
}
|
||||||
+4
@@ -0,0 +1,4 @@
|
|||||||
|
// "Create enum 'A'" "true"
|
||||||
|
package p
|
||||||
|
|
||||||
|
import p.<caret>A
|
||||||
+8
@@ -0,0 +1,8 @@
|
|||||||
|
// "Create enum 'A'" "true"
|
||||||
|
package p
|
||||||
|
|
||||||
|
import p.X.<caret>A
|
||||||
|
|
||||||
|
class X {
|
||||||
|
|
||||||
|
}
|
||||||
+4
@@ -0,0 +1,4 @@
|
|||||||
|
// "Create object 'A'" "true"
|
||||||
|
package p
|
||||||
|
|
||||||
|
import p.<caret>A
|
||||||
+8
@@ -0,0 +1,8 @@
|
|||||||
|
// "Create object 'A'" "true"
|
||||||
|
package p
|
||||||
|
|
||||||
|
import p.X.<caret>A
|
||||||
|
|
||||||
|
class X {
|
||||||
|
|
||||||
|
}
|
||||||
+4
@@ -0,0 +1,4 @@
|
|||||||
|
// "Create trait 'A'" "true"
|
||||||
|
package p
|
||||||
|
|
||||||
|
import p.<caret>A
|
||||||
+8
@@ -0,0 +1,8 @@
|
|||||||
|
// "Create trait 'A'" "true"
|
||||||
|
package p
|
||||||
|
|
||||||
|
import p.X.<caret>A
|
||||||
|
|
||||||
|
class X {
|
||||||
|
|
||||||
|
}
|
||||||
+13
@@ -0,0 +1,13 @@
|
|||||||
|
// "Create class 'B'" "true"
|
||||||
|
// ERROR: Unresolved reference: C
|
||||||
|
package p
|
||||||
|
|
||||||
|
fun foo() = A.B.C
|
||||||
|
|
||||||
|
class A {
|
||||||
|
|
||||||
|
class B {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
+9
@@ -0,0 +1,9 @@
|
|||||||
|
// "Create class 'A'" "true"
|
||||||
|
// ERROR: Unresolved reference: B
|
||||||
|
package p
|
||||||
|
|
||||||
|
fun foo() = A.B
|
||||||
|
|
||||||
|
class A {
|
||||||
|
|
||||||
|
}
|
||||||
+9
@@ -0,0 +1,9 @@
|
|||||||
|
// "Create enum 'A'" "true"
|
||||||
|
// ERROR: Unresolved reference: B
|
||||||
|
package p
|
||||||
|
|
||||||
|
fun foo() = A.B
|
||||||
|
|
||||||
|
enum class A {
|
||||||
|
|
||||||
|
}
|
||||||
+10
@@ -0,0 +1,10 @@
|
|||||||
|
// "Create enum constant 'A'" "true"
|
||||||
|
package p
|
||||||
|
|
||||||
|
fun foo() = X.A
|
||||||
|
|
||||||
|
enum class X {
|
||||||
|
|
||||||
|
A
|
||||||
|
|
||||||
|
}
|
||||||
+11
@@ -0,0 +1,11 @@
|
|||||||
|
// "Create enum constant 'A'" "true"
|
||||||
|
// ERROR: No value passed for parameter n
|
||||||
|
package p
|
||||||
|
|
||||||
|
fun foo() = X.A
|
||||||
|
|
||||||
|
enum class X(n: Int) {
|
||||||
|
|
||||||
|
A : X()
|
||||||
|
|
||||||
|
}
|
||||||
+10
@@ -0,0 +1,10 @@
|
|||||||
|
// "Create enum constant 'A'" "true"
|
||||||
|
package p
|
||||||
|
|
||||||
|
fun foo(): E = E.A
|
||||||
|
|
||||||
|
enum class E {
|
||||||
|
|
||||||
|
A
|
||||||
|
|
||||||
|
}
|
||||||
+9
@@ -0,0 +1,9 @@
|
|||||||
|
// "Create object 'A'" "true"
|
||||||
|
// ERROR: Unresolved reference: B
|
||||||
|
package p
|
||||||
|
|
||||||
|
fun foo() = A.B
|
||||||
|
|
||||||
|
object A {
|
||||||
|
|
||||||
|
}
|
||||||
+8
@@ -0,0 +1,8 @@
|
|||||||
|
// "Create object 'A'" "true"
|
||||||
|
package p
|
||||||
|
|
||||||
|
fun foo() = p.A
|
||||||
|
|
||||||
|
object A {
|
||||||
|
|
||||||
|
}
|
||||||
+8
@@ -0,0 +1,8 @@
|
|||||||
|
// "Create object 'A'" "true"
|
||||||
|
package p
|
||||||
|
|
||||||
|
fun foo() = A
|
||||||
|
|
||||||
|
object A {
|
||||||
|
|
||||||
|
}
|
||||||
+12
@@ -0,0 +1,12 @@
|
|||||||
|
// "Create object 'A'" "true"
|
||||||
|
package p
|
||||||
|
|
||||||
|
fun foo() = X.A
|
||||||
|
|
||||||
|
class X {
|
||||||
|
|
||||||
|
object A {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
+12
@@ -0,0 +1,12 @@
|
|||||||
|
// "Create object 'A'" "true"
|
||||||
|
package p
|
||||||
|
|
||||||
|
fun foo(): X = A
|
||||||
|
|
||||||
|
open class X {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
object A : X() {
|
||||||
|
|
||||||
|
}
|
||||||
+12
@@ -0,0 +1,12 @@
|
|||||||
|
// "Create object 'A'" "true"
|
||||||
|
package p
|
||||||
|
|
||||||
|
fun foo(): X = A
|
||||||
|
|
||||||
|
trait X {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
object A : X {
|
||||||
|
|
||||||
|
}
|
||||||
+9
@@ -0,0 +1,9 @@
|
|||||||
|
// "Create trait 'A'" "true"
|
||||||
|
// ERROR: Unresolved reference: B
|
||||||
|
package p
|
||||||
|
|
||||||
|
fun foo() = A.B
|
||||||
|
|
||||||
|
trait A {
|
||||||
|
|
||||||
|
}
|
||||||
+9
@@ -0,0 +1,9 @@
|
|||||||
|
// "Create object 'Foo'" "true"
|
||||||
|
|
||||||
|
fun test() {
|
||||||
|
Foo
|
||||||
|
}
|
||||||
|
|
||||||
|
object Foo {
|
||||||
|
|
||||||
|
}
|
||||||
+14
@@ -0,0 +1,14 @@
|
|||||||
|
// "Create object 'Foo'" "true"
|
||||||
|
// DISABLE-ERRORS
|
||||||
|
|
||||||
|
import kotlin.properties.ReadOnlyProperty
|
||||||
|
|
||||||
|
open class B
|
||||||
|
|
||||||
|
class A {
|
||||||
|
val x: B by Foo
|
||||||
|
}
|
||||||
|
|
||||||
|
object Foo : ReadOnlyProperty<A, B> {
|
||||||
|
|
||||||
|
}
|
||||||
+14
@@ -0,0 +1,14 @@
|
|||||||
|
// "Create object 'Foo'" "true"
|
||||||
|
// DISABLE-ERRORS
|
||||||
|
|
||||||
|
import kotlin.properties.ReadWriteProperty
|
||||||
|
|
||||||
|
open class B
|
||||||
|
|
||||||
|
class A {
|
||||||
|
var x: B by Foo
|
||||||
|
}
|
||||||
|
|
||||||
|
object Foo : ReadWriteProperty<A, B> {
|
||||||
|
|
||||||
|
}
|
||||||
+9
@@ -0,0 +1,9 @@
|
|||||||
|
// "Create annotation 'A'" "false"
|
||||||
|
// ACTION: Create object 'A'
|
||||||
|
// ACTION: Create local variable 'A'
|
||||||
|
// ACTION: Create parameter 'A'
|
||||||
|
// ACTION: Create property 'A'
|
||||||
|
// ERROR: Unresolved reference: A
|
||||||
|
package p
|
||||||
|
|
||||||
|
fun foo() = <caret>A
|
||||||
+9
@@ -0,0 +1,9 @@
|
|||||||
|
// "Create class 'B'" "true"
|
||||||
|
// ERROR: Unresolved reference: C
|
||||||
|
package p
|
||||||
|
|
||||||
|
fun foo() = A.<caret>B.C
|
||||||
|
|
||||||
|
class A {
|
||||||
|
|
||||||
|
}
|
||||||
+5
@@ -0,0 +1,5 @@
|
|||||||
|
// "Create class 'A'" "true"
|
||||||
|
// ERROR: Unresolved reference: B
|
||||||
|
package p
|
||||||
|
|
||||||
|
fun foo() = <caret>A.B
|
||||||
+6
@@ -0,0 +1,6 @@
|
|||||||
|
// "Create class 'A'" "false"
|
||||||
|
// ACTION: Create object 'A'
|
||||||
|
// ERROR: Unresolved reference: A
|
||||||
|
package p
|
||||||
|
|
||||||
|
fun foo() = p.<caret>A
|
||||||
+9
@@ -0,0 +1,9 @@
|
|||||||
|
// "Create class 'A'" "false"
|
||||||
|
// ACTION: Create object 'A'
|
||||||
|
// ACTION: Create local variable 'A'
|
||||||
|
// ACTION: Create parameter 'A'
|
||||||
|
// ACTION: Create property 'A'
|
||||||
|
// ERROR: Unresolved reference: A
|
||||||
|
package p
|
||||||
|
|
||||||
|
fun foo() = <caret>A
|
||||||
+10
@@ -0,0 +1,10 @@
|
|||||||
|
// "Create class 'A'" "false"
|
||||||
|
// ACTION: Create object 'A'
|
||||||
|
// ERROR: Unresolved reference: A
|
||||||
|
package p
|
||||||
|
|
||||||
|
fun foo() = X.<caret>A
|
||||||
|
|
||||||
|
class X {
|
||||||
|
|
||||||
|
}
|
||||||
+10
@@ -0,0 +1,10 @@
|
|||||||
|
// "Create class 'A'" "false"
|
||||||
|
// ACTION: Create property 'A'
|
||||||
|
// ERROR: Unresolved reference: A
|
||||||
|
package p
|
||||||
|
|
||||||
|
fun foo() = X().<caret>A
|
||||||
|
|
||||||
|
class X {
|
||||||
|
|
||||||
|
}
|
||||||
+5
@@ -0,0 +1,5 @@
|
|||||||
|
// "Create enum 'A'" "true"
|
||||||
|
// ERROR: Unresolved reference: B
|
||||||
|
package p
|
||||||
|
|
||||||
|
fun foo() = <caret>A.B
|
||||||
+9
@@ -0,0 +1,9 @@
|
|||||||
|
// "Create enum constant 'A'" "false"
|
||||||
|
// ACTION: Create object 'A'
|
||||||
|
// ACTION: Create local variable 'A'
|
||||||
|
// ACTION: Create parameter 'A'
|
||||||
|
// ACTION: Create property 'A'
|
||||||
|
// ERROR: Unresolved reference: A
|
||||||
|
package p
|
||||||
|
|
||||||
|
fun foo() = <caret>A
|
||||||
+8
@@ -0,0 +1,8 @@
|
|||||||
|
// "Create enum constant 'A'" "true"
|
||||||
|
package p
|
||||||
|
|
||||||
|
fun foo() = X.<caret>A
|
||||||
|
|
||||||
|
enum class X {
|
||||||
|
|
||||||
|
}
|
||||||
+9
@@ -0,0 +1,9 @@
|
|||||||
|
// "Create enum constant 'A'" "true"
|
||||||
|
// ERROR: No value passed for parameter n
|
||||||
|
package p
|
||||||
|
|
||||||
|
fun foo() = X.<caret>A
|
||||||
|
|
||||||
|
enum class X(n: Int) {
|
||||||
|
|
||||||
|
}
|
||||||
+8
@@ -0,0 +1,8 @@
|
|||||||
|
// "Create enum constant 'A'" "true"
|
||||||
|
package p
|
||||||
|
|
||||||
|
fun foo(): E = E.<caret>A
|
||||||
|
|
||||||
|
enum class E {
|
||||||
|
|
||||||
|
}
|
||||||
+10
@@ -0,0 +1,10 @@
|
|||||||
|
// "Create enum constant 'A'" "false"
|
||||||
|
// ACTION: Create object 'A'
|
||||||
|
// ERROR: Unresolved reference: A
|
||||||
|
package p
|
||||||
|
|
||||||
|
fun foo() = X.<caret>A
|
||||||
|
|
||||||
|
class X {
|
||||||
|
|
||||||
|
}
|
||||||
+10
@@ -0,0 +1,10 @@
|
|||||||
|
// "Create enum constant 'A'" "false"
|
||||||
|
// ACTION: Create property 'A'
|
||||||
|
// ERROR: Unresolved reference: A
|
||||||
|
package p
|
||||||
|
|
||||||
|
fun foo() = X().<caret>A
|
||||||
|
|
||||||
|
class X {
|
||||||
|
|
||||||
|
}
|
||||||
+15
@@ -0,0 +1,15 @@
|
|||||||
|
// "Create enum constant 'A'" "false"
|
||||||
|
// ACTION: Convert to block body
|
||||||
|
// ACTION: Create object 'A'
|
||||||
|
// ERROR: Unresolved reference: A
|
||||||
|
package p
|
||||||
|
|
||||||
|
fun foo(): X = E.<caret>A
|
||||||
|
|
||||||
|
enum class E {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
open class X {
|
||||||
|
|
||||||
|
}
|
||||||
+9
@@ -0,0 +1,9 @@
|
|||||||
|
// "Create enum 'A'" "false"
|
||||||
|
// ACTION: Create object 'A'
|
||||||
|
// ACTION: Create local variable 'A'
|
||||||
|
// ACTION: Create parameter 'A'
|
||||||
|
// ACTION: Create property 'A'
|
||||||
|
// ERROR: Unresolved reference: A
|
||||||
|
package p
|
||||||
|
|
||||||
|
fun foo() = <caret>A
|
||||||
+5
@@ -0,0 +1,5 @@
|
|||||||
|
// "Create object 'A'" "true"
|
||||||
|
// ERROR: Unresolved reference: B
|
||||||
|
package p
|
||||||
|
|
||||||
|
fun foo() = <caret>A.B
|
||||||
+4
@@ -0,0 +1,4 @@
|
|||||||
|
// "Create object 'A'" "true"
|
||||||
|
package p
|
||||||
|
|
||||||
|
fun foo() = p.<caret>A
|
||||||
+4
@@ -0,0 +1,4 @@
|
|||||||
|
// "Create object 'A'" "true"
|
||||||
|
package p
|
||||||
|
|
||||||
|
fun foo() = <caret>A
|
||||||
+8
@@ -0,0 +1,8 @@
|
|||||||
|
// "Create object 'A'" "true"
|
||||||
|
package p
|
||||||
|
|
||||||
|
fun foo() = X.<caret>A
|
||||||
|
|
||||||
|
class X {
|
||||||
|
|
||||||
|
}
|
||||||
+10
@@ -0,0 +1,10 @@
|
|||||||
|
// "Create object 'A'" "false"
|
||||||
|
// ACTION: Create property 'A'
|
||||||
|
// ERROR: Unresolved reference: A
|
||||||
|
package p
|
||||||
|
|
||||||
|
fun foo() = X().<caret>A
|
||||||
|
|
||||||
|
class X {
|
||||||
|
|
||||||
|
}
|
||||||
+8
@@ -0,0 +1,8 @@
|
|||||||
|
// "Create object 'A'" "true"
|
||||||
|
package p
|
||||||
|
|
||||||
|
fun foo(): X = <caret>A
|
||||||
|
|
||||||
|
open class X {
|
||||||
|
|
||||||
|
}
|
||||||
+8
@@ -0,0 +1,8 @@
|
|||||||
|
// "Create object 'A'" "true"
|
||||||
|
package p
|
||||||
|
|
||||||
|
fun foo(): X = <caret>A
|
||||||
|
|
||||||
|
trait X {
|
||||||
|
|
||||||
|
}
|
||||||
+5
@@ -0,0 +1,5 @@
|
|||||||
|
// "Create trait 'A'" "true"
|
||||||
|
// ERROR: Unresolved reference: B
|
||||||
|
package p
|
||||||
|
|
||||||
|
fun foo() = <caret>A.B
|
||||||
+9
@@ -0,0 +1,9 @@
|
|||||||
|
// "Create trait 'A'" "false"
|
||||||
|
// ACTION: Create object 'A'
|
||||||
|
// ACTION: Create local variable 'A'
|
||||||
|
// ACTION: Create parameter 'A'
|
||||||
|
// ACTION: Create property 'A'
|
||||||
|
// ERROR: Unresolved reference: A
|
||||||
|
package p
|
||||||
|
|
||||||
|
fun foo() = <caret>A
|
||||||
+5
@@ -0,0 +1,5 @@
|
|||||||
|
// "Create object 'Foo'" "true"
|
||||||
|
|
||||||
|
fun test() {
|
||||||
|
<caret>Foo
|
||||||
|
}
|
||||||
+8
@@ -0,0 +1,8 @@
|
|||||||
|
// "Create object 'Foo'" "true"
|
||||||
|
// DISABLE-ERRORS
|
||||||
|
|
||||||
|
open class B
|
||||||
|
|
||||||
|
class A {
|
||||||
|
val x: B by <caret>Foo
|
||||||
|
}
|
||||||
+8
@@ -0,0 +1,8 @@
|
|||||||
|
// "Create object 'Foo'" "true"
|
||||||
|
// DISABLE-ERRORS
|
||||||
|
|
||||||
|
open class B
|
||||||
|
|
||||||
|
class A {
|
||||||
|
var x: B by <caret>Foo
|
||||||
|
}
|
||||||
@@ -628,7 +628,7 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest {
|
|||||||
|
|
||||||
@TestMetadata("idea/testData/quickfix/createFromUsage/createClass")
|
@TestMetadata("idea/testData/quickfix/createFromUsage/createClass")
|
||||||
@TestDataPath("$PROJECT_ROOT")
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
@InnerTestClasses({CreateClass.DelegationSpecifier.class, CreateClass.TypeReference.class})
|
@InnerTestClasses({CreateClass.DelegationSpecifier.class, CreateClass.ImportDirective.class, CreateClass.ReferenceExpression.class, CreateClass.TypeReference.class})
|
||||||
@RunWith(JUnit3RunnerWithInners.class)
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
public static class CreateClass extends AbstractQuickFixTest {
|
public static class CreateClass extends AbstractQuickFixTest {
|
||||||
public void testAllFilesPresentInCreateClass() throws Exception {
|
public void testAllFilesPresentInCreateClass() throws Exception {
|
||||||
@@ -656,6 +656,270 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("idea/testData/quickfix/createFromUsage/createClass/importDirective")
|
||||||
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
|
public static class ImportDirective extends AbstractQuickFixTest {
|
||||||
|
public void testAllFilesPresentInImportDirective() throws Exception {
|
||||||
|
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/quickfix/createFromUsage/createClass/importDirective"), Pattern.compile("^before(\\w+)\\.kt$"), true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("beforeAnnotationInPackage.kt")
|
||||||
|
public void testAnnotationInPackage() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createClass/importDirective/beforeAnnotationInPackage.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("beforeAnnotationWithQualifier.kt")
|
||||||
|
public void testAnnotationWithQualifier() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createClass/importDirective/beforeAnnotationWithQualifier.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("beforeClassInPackage.kt")
|
||||||
|
public void testClassInPackage() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createClass/importDirective/beforeClassInPackage.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("beforeClassWithQualifier.kt")
|
||||||
|
public void testClassWithQualifier() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createClass/importDirective/beforeClassWithQualifier.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("beforeEnumEntryInEnum.kt")
|
||||||
|
public void testEnumEntryInEnum() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createClass/importDirective/beforeEnumEntryInEnum.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("beforeEnumEntryInPackage.kt")
|
||||||
|
public void testEnumEntryInPackage() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createClass/importDirective/beforeEnumEntryInPackage.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("beforeEnumEntryWithQualifier.kt")
|
||||||
|
public void testEnumEntryWithQualifier() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createClass/importDirective/beforeEnumEntryWithQualifier.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("beforeEnumInPackage.kt")
|
||||||
|
public void testEnumInPackage() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createClass/importDirective/beforeEnumInPackage.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("beforeEnumWithQualifier.kt")
|
||||||
|
public void testEnumWithQualifier() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createClass/importDirective/beforeEnumWithQualifier.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("beforeObjectInPackage.kt")
|
||||||
|
public void testObjectInPackage() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createClass/importDirective/beforeObjectInPackage.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("beforeObjectWithQualifier.kt")
|
||||||
|
public void testObjectWithQualifier() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createClass/importDirective/beforeObjectWithQualifier.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("beforeTraitInPackage.kt")
|
||||||
|
public void testTraitInPackage() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createClass/importDirective/beforeTraitInPackage.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("beforeTraitWithQualifier.kt")
|
||||||
|
public void testTraitWithQualifier() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createClass/importDirective/beforeTraitWithQualifier.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("idea/testData/quickfix/createFromUsage/createClass/referenceExpression")
|
||||||
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
|
public static class ReferenceExpression extends AbstractQuickFixTest {
|
||||||
|
public void testAllFilesPresentInReferenceExpression() throws Exception {
|
||||||
|
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/quickfix/createFromUsage/createClass/referenceExpression"), Pattern.compile("^before(\\w+)\\.kt$"), true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("beforeAnnotationNoReceiver.kt")
|
||||||
|
public void testAnnotationNoReceiver() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createClass/referenceExpression/beforeAnnotationNoReceiver.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("beforeClassByNestedQualifier.kt")
|
||||||
|
public void testClassByNestedQualifier() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createClass/referenceExpression/beforeClassByNestedQualifier.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("beforeClassByQualifier.kt")
|
||||||
|
public void testClassByQualifier() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createClass/referenceExpression/beforeClassByQualifier.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("beforeClassInPackage.kt")
|
||||||
|
public void testClassInPackage() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createClass/referenceExpression/beforeClassInPackage.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("beforeClassNoReceiver.kt")
|
||||||
|
public void testClassNoReceiver() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createClass/referenceExpression/beforeClassNoReceiver.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("beforeClassWithQualifier.kt")
|
||||||
|
public void testClassWithQualifier() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createClass/referenceExpression/beforeClassWithQualifier.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("beforeClassWithReceiver.kt")
|
||||||
|
public void testClassWithReceiver() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createClass/referenceExpression/beforeClassWithReceiver.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("beforeEnumByQualifier.kt")
|
||||||
|
public void testEnumByQualifier() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createClass/referenceExpression/beforeEnumByQualifier.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("beforeEnumEntryNoReceiver.kt")
|
||||||
|
public void testEnumEntryNoReceiver() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createClass/referenceExpression/beforeEnumEntryNoReceiver.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("beforeEnumEntryWithEnumQualifier.kt")
|
||||||
|
public void testEnumEntryWithEnumQualifier() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createClass/referenceExpression/beforeEnumEntryWithEnumQualifier.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("beforeEnumEntryWithEnumQualifierAndParams.kt")
|
||||||
|
public void testEnumEntryWithEnumQualifierAndParams() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createClass/referenceExpression/beforeEnumEntryWithEnumQualifierAndParams.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("beforeEnumEntryWithEnumSuperclass.kt")
|
||||||
|
public void testEnumEntryWithEnumSuperclass() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createClass/referenceExpression/beforeEnumEntryWithEnumSuperclass.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("beforeEnumEntryWithQualifier.kt")
|
||||||
|
public void testEnumEntryWithQualifier() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createClass/referenceExpression/beforeEnumEntryWithQualifier.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("beforeEnumEntryWithReceiver.kt")
|
||||||
|
public void testEnumEntryWithReceiver() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createClass/referenceExpression/beforeEnumEntryWithReceiver.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("beforeEnumEntryWithSuperclass.kt")
|
||||||
|
public void testEnumEntryWithSuperclass() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createClass/referenceExpression/beforeEnumEntryWithSuperclass.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("beforeEnumNoReceiver.kt")
|
||||||
|
public void testEnumNoReceiver() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createClass/referenceExpression/beforeEnumNoReceiver.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("beforeObjectByQualifier.kt")
|
||||||
|
public void testObjectByQualifier() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createClass/referenceExpression/beforeObjectByQualifier.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("beforeObjectInPackage.kt")
|
||||||
|
public void testObjectInPackage() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createClass/referenceExpression/beforeObjectInPackage.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("beforeObjectNoReceiver.kt")
|
||||||
|
public void testObjectNoReceiver() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createClass/referenceExpression/beforeObjectNoReceiver.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("beforeObjectWithQualifier.kt")
|
||||||
|
public void testObjectWithQualifier() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createClass/referenceExpression/beforeObjectWithQualifier.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("beforeObjectWithReceiver.kt")
|
||||||
|
public void testObjectWithReceiver() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createClass/referenceExpression/beforeObjectWithReceiver.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("beforeObjectWithSuperclass.kt")
|
||||||
|
public void testObjectWithSuperclass() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createClass/referenceExpression/beforeObjectWithSuperclass.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("beforeObjectWithSupertrait.kt")
|
||||||
|
public void testObjectWithSupertrait() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createClass/referenceExpression/beforeObjectWithSupertrait.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("beforeTraitByQualifier.kt")
|
||||||
|
public void testTraitByQualifier() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createClass/referenceExpression/beforeTraitByQualifier.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("beforeTraitNoReceiver.kt")
|
||||||
|
public void testTraitNoReceiver() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createClass/referenceExpression/beforeTraitNoReceiver.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("beforeUnusedReference.kt")
|
||||||
|
public void testUnusedReference() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createClass/referenceExpression/beforeUnusedReference.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("beforeValDelegateExpressionRuntime.kt")
|
||||||
|
public void testValDelegateExpressionRuntime() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createClass/referenceExpression/beforeValDelegateExpressionRuntime.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("beforeVarDelegateExpressionRuntime.kt")
|
||||||
|
public void testVarDelegateExpressionRuntime() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/createFromUsage/createClass/referenceExpression/beforeVarDelegateExpressionRuntime.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("idea/testData/quickfix/createFromUsage/createClass/typeReference")
|
@TestMetadata("idea/testData/quickfix/createFromUsage/createClass/typeReference")
|
||||||
@TestDataPath("$PROJECT_ROOT")
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
@RunWith(JUnit3RunnerWithInners.class)
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
|
|||||||
Reference in New Issue
Block a user