From d587bb2ea6824e9075d8e4bb0e735f535f0d8846 Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Thu, 11 Feb 2016 12:12:03 +0300 Subject: [PATCH] Change Signature: Support Change Signature quick-fix for Java -> Kotlin case #KT-9401 Fixed --- .../org/jetbrains/kotlin/psi/KtPsiFactory.kt | 3 +- .../caches/resolve/JavaResolveExtension.kt | 15 ++++ .../idea/caches/resolve/getModuleInfo.kt | 2 + .../changeSignature/KotlinChangeInfo.kt | 9 ++- .../KotlinChangeSignatureUsageProcessor.kt | 57 ++++++++++----- .../changeSignature/changeSignatureUtils.kt | 5 +- ...jkAddFunctionParameter.after.Dependency.kt | 5 ++ .../jk/jkAddFunctionParameter.after.java | 7 ++ ...kAddFunctionParameter.before.Dependency.kt | 5 ++ .../jkAddFunctionParameter.before.Main.java | 7 ++ ...ryConstructorParameter.after.Dependency.kt | 5 ++ ...icitPrimaryConstructorParameter.after.java | 7 ++ ...yConstructorParameter.before.Dependency.kt | 5 ++ ...imaryConstructorParameter.before.Main.java | 7 ++ ...ryConstructorParameter.after.Dependency.kt | 5 ++ ...kAddPrimaryConstructorParameter.after.java | 7 ++ ...yConstructorParameter.before.Dependency.kt | 5 ++ ...imaryConstructorParameter.before.Main.java | 7 ++ ...ryConstructorParameter.after.Dependency.kt | 7 ++ ...ddSecondaryConstructorParameter.after.java | 7 ++ ...yConstructorParameter.before.Dependency.kt | 7 ++ ...ndaryConstructorParameter.before.Main.java | 7 ++ ...hangeFunctionParameter.after.Dependency.kt | 5 ++ .../jk/jkChangeFunctionParameter.after.java | 7 ++ ...angeFunctionParameter.before.Dependency.kt | 5 ++ ...jkChangeFunctionParameter.before.Main.java | 7 ++ ...ryConstructorParameter.after.Dependency.kt | 5 ++ ...angePrimaryConstructorParameter.after.java | 7 ++ ...yConstructorParameter.before.Dependency.kt | 5 ++ ...imaryConstructorParameter.before.Main.java | 7 ++ ...ryConstructorParameter.after.Dependency.kt | 7 ++ ...geSecondaryConstructorParameter.after.java | 7 ++ ...yConstructorParameter.before.Dependency.kt | 7 ++ ...ndaryConstructorParameter.before.Main.java | 7 ++ ...emoveFunctionParameter.after.Dependency.kt | 5 ++ .../jk/jkRemoveFunctionParameter.after.java | 7 ++ ...moveFunctionParameter.before.Dependency.kt | 5 ++ ...jkRemoveFunctionParameter.before.Main.java | 7 ++ ...ryConstructorParameter.after.Dependency.kt | 5 ++ ...movePrimaryConstructorParameter.after.java | 7 ++ ...yConstructorParameter.before.Dependency.kt | 5 ++ ...imaryConstructorParameter.before.Main.java | 7 ++ ...ryConstructorParameter.after.Dependency.kt | 7 ++ ...veSecondaryConstructorParameter.after.java | 7 ++ ...yConstructorParameter.before.Dependency.kt | 7 ++ ...ndaryConstructorParameter.before.Main.java | 7 ++ .../QuickFixMultiFileTestGenerated.java | 69 +++++++++++++++++++ 47 files changed, 390 insertions(+), 22 deletions(-) create mode 100644 idea/testData/quickfix/changeSignature/jk/jkAddFunctionParameter.after.Dependency.kt create mode 100644 idea/testData/quickfix/changeSignature/jk/jkAddFunctionParameter.after.java create mode 100644 idea/testData/quickfix/changeSignature/jk/jkAddFunctionParameter.before.Dependency.kt create mode 100644 idea/testData/quickfix/changeSignature/jk/jkAddFunctionParameter.before.Main.java create mode 100644 idea/testData/quickfix/changeSignature/jk/jkAddImplicitPrimaryConstructorParameter.after.Dependency.kt create mode 100644 idea/testData/quickfix/changeSignature/jk/jkAddImplicitPrimaryConstructorParameter.after.java create mode 100644 idea/testData/quickfix/changeSignature/jk/jkAddImplicitPrimaryConstructorParameter.before.Dependency.kt create mode 100644 idea/testData/quickfix/changeSignature/jk/jkAddImplicitPrimaryConstructorParameter.before.Main.java create mode 100644 idea/testData/quickfix/changeSignature/jk/jkAddPrimaryConstructorParameter.after.Dependency.kt create mode 100644 idea/testData/quickfix/changeSignature/jk/jkAddPrimaryConstructorParameter.after.java create mode 100644 idea/testData/quickfix/changeSignature/jk/jkAddPrimaryConstructorParameter.before.Dependency.kt create mode 100644 idea/testData/quickfix/changeSignature/jk/jkAddPrimaryConstructorParameter.before.Main.java create mode 100644 idea/testData/quickfix/changeSignature/jk/jkAddSecondaryConstructorParameter.after.Dependency.kt create mode 100644 idea/testData/quickfix/changeSignature/jk/jkAddSecondaryConstructorParameter.after.java create mode 100644 idea/testData/quickfix/changeSignature/jk/jkAddSecondaryConstructorParameter.before.Dependency.kt create mode 100644 idea/testData/quickfix/changeSignature/jk/jkAddSecondaryConstructorParameter.before.Main.java create mode 100644 idea/testData/quickfix/changeSignature/jk/jkChangeFunctionParameter.after.Dependency.kt create mode 100644 idea/testData/quickfix/changeSignature/jk/jkChangeFunctionParameter.after.java create mode 100644 idea/testData/quickfix/changeSignature/jk/jkChangeFunctionParameter.before.Dependency.kt create mode 100644 idea/testData/quickfix/changeSignature/jk/jkChangeFunctionParameter.before.Main.java create mode 100644 idea/testData/quickfix/changeSignature/jk/jkChangePrimaryConstructorParameter.after.Dependency.kt create mode 100644 idea/testData/quickfix/changeSignature/jk/jkChangePrimaryConstructorParameter.after.java create mode 100644 idea/testData/quickfix/changeSignature/jk/jkChangePrimaryConstructorParameter.before.Dependency.kt create mode 100644 idea/testData/quickfix/changeSignature/jk/jkChangePrimaryConstructorParameter.before.Main.java create mode 100644 idea/testData/quickfix/changeSignature/jk/jkChangeSecondaryConstructorParameter.after.Dependency.kt create mode 100644 idea/testData/quickfix/changeSignature/jk/jkChangeSecondaryConstructorParameter.after.java create mode 100644 idea/testData/quickfix/changeSignature/jk/jkChangeSecondaryConstructorParameter.before.Dependency.kt create mode 100644 idea/testData/quickfix/changeSignature/jk/jkChangeSecondaryConstructorParameter.before.Main.java create mode 100644 idea/testData/quickfix/changeSignature/jk/jkRemoveFunctionParameter.after.Dependency.kt create mode 100644 idea/testData/quickfix/changeSignature/jk/jkRemoveFunctionParameter.after.java create mode 100644 idea/testData/quickfix/changeSignature/jk/jkRemoveFunctionParameter.before.Dependency.kt create mode 100644 idea/testData/quickfix/changeSignature/jk/jkRemoveFunctionParameter.before.Main.java create mode 100644 idea/testData/quickfix/changeSignature/jk/jkRemovePrimaryConstructorParameter.after.Dependency.kt create mode 100644 idea/testData/quickfix/changeSignature/jk/jkRemovePrimaryConstructorParameter.after.java create mode 100644 idea/testData/quickfix/changeSignature/jk/jkRemovePrimaryConstructorParameter.before.Dependency.kt create mode 100644 idea/testData/quickfix/changeSignature/jk/jkRemovePrimaryConstructorParameter.before.Main.java create mode 100644 idea/testData/quickfix/changeSignature/jk/jkRemoveSecondaryConstructorParameter.after.Dependency.kt create mode 100644 idea/testData/quickfix/changeSignature/jk/jkRemoveSecondaryConstructorParameter.after.java create mode 100644 idea/testData/quickfix/changeSignature/jk/jkRemoveSecondaryConstructorParameter.before.Dependency.kt create mode 100644 idea/testData/quickfix/changeSignature/jk/jkRemoveSecondaryConstructorParameter.before.Main.java diff --git a/compiler/frontend/src/org/jetbrains/kotlin/psi/KtPsiFactory.kt b/compiler/frontend/src/org/jetbrains/kotlin/psi/KtPsiFactory.kt index 0313fda423d..c2fccc067f7 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/psi/KtPsiFactory.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/psi/KtPsiFactory.kt @@ -21,6 +21,7 @@ import com.intellij.openapi.project.Project import com.intellij.openapi.util.Key import com.intellij.psi.PsiComment import com.intellij.psi.PsiElement +import com.intellij.psi.PsiFile import com.intellij.psi.PsiFileFactory import com.intellij.psi.util.PsiTreeUtil import com.intellij.util.LocalTimeCounter @@ -39,7 +40,7 @@ private val DO_NOT_ANALYZE_NOTIFICATION = "This file was created by KtPsiFactory var KtFile.doNotAnalyze: String? by UserDataProperty(Key.create("DO_NOT_ANALYZE")) var KtFile.analysisContext: PsiElement? by UserDataProperty(Key.create("ANALYSIS_CONTEXT")) -var KtFile.moduleInfo: ModuleInfo? by UserDataProperty(Key.create("MODULE_INFO")) +var PsiFile.moduleInfo: ModuleInfo? by UserDataProperty(Key.create("MODULE_INFO")) class KtPsiFactory(private val project: Project) { diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/JavaResolveExtension.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/JavaResolveExtension.kt index c667f7ba2ec..9e4fc28515f 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/JavaResolveExtension.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/JavaResolveExtension.kt @@ -20,6 +20,7 @@ package org.jetbrains.kotlin.idea.caches.resolve import com.intellij.psi.* import org.jetbrains.kotlin.asJava.KtLightClass +import org.jetbrains.kotlin.asJava.unwrapped import org.jetbrains.kotlin.caches.resolve.KotlinCacheService import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.idea.resolve.ResolutionFacade @@ -30,6 +31,7 @@ import org.jetbrains.kotlin.load.java.structure.* import org.jetbrains.kotlin.load.java.structure.impl.* import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.psi.KtClassOrObject +import org.jetbrains.kotlin.psi.KtDeclaration import org.jetbrains.kotlin.resolve.jvm.JavaDescriptorResolver import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform import org.jetbrains.kotlin.resolve.scopes.MemberScope @@ -67,6 +69,19 @@ fun PsiMember.getJavaMemberDescriptor(resolutionFacade: ResolutionFacade? = null } } +@JvmOverloads +fun PsiMember.getJavaOrKotlinMemberDescriptor(resolutionFacade: ResolutionFacade? = null): DeclarationDescriptor? { + val callable = unwrapped + return when (callable) { + is PsiMember -> getJavaMemberDescriptor(resolutionFacade) + is KtDeclaration -> { + val descriptor = resolutionFacade?.resolveToDescriptor(callable) ?: callable.resolveToDescriptor() + if (descriptor is ClassDescriptor && this is PsiMethod) descriptor.unsubstitutedPrimaryConstructor else descriptor + } + else -> null + } +} + fun PsiClass.resolveToDescriptor( resolutionFacade: ResolutionFacade, declarationTranslator: (KtClassOrObject) -> KtClassOrObject? = { it } diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/getModuleInfo.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/getModuleInfo.kt index 843d3f1dbd3..f73c249eff4 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/getModuleInfo.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/getModuleInfo.kt @@ -42,6 +42,8 @@ fun PsiElement.getNullableModuleInfo(): IdeaModuleInfo? = this.getModuleInfo { r } private fun PsiElement.getModuleInfo(onFailure: (String) -> IdeaModuleInfo?): IdeaModuleInfo? { + (containingFile.moduleInfo as? IdeaModuleInfo)?.let { return it } + if (this is KtLightElement<*, *>) return this.getModuleInfoForLightElement(onFailure) val containingJetFile = (this as? KtElement)?.containingFile as? KtFile diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeInfo.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeInfo.kt index d3a38d07e62..750bf435691 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeInfo.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeInfo.kt @@ -36,11 +36,13 @@ import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.idea.KotlinLanguage import org.jetbrains.kotlin.idea.caches.resolve.getJavaMethodDescriptor +import org.jetbrains.kotlin.idea.caches.resolve.getJavaOrKotlinMemberDescriptor import org.jetbrains.kotlin.idea.project.ProjectStructureUtil import org.jetbrains.kotlin.idea.refactoring.changeSignature.KotlinMethodDescriptor.Kind import org.jetbrains.kotlin.idea.refactoring.changeSignature.usages.KotlinCallableDefinitionUsage import org.jetbrains.kotlin.idea.refactoring.changeSignature.usages.KotlinCallerUsage import org.jetbrains.kotlin.idea.refactoring.j2k +import org.jetbrains.kotlin.idea.resolve.ResolutionFacade import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.load.java.JvmAbi import org.jetbrains.kotlin.psi.* @@ -518,10 +520,13 @@ val KotlinChangeInfo.oldName: String? fun KotlinChangeInfo.getAffectedCallables(): Collection = methodDescriptor.affectedCallables + propagationTargetUsageInfos -fun ChangeInfo.toJetChangeInfo(originalChangeSignatureDescriptor: KotlinMethodDescriptor): KotlinChangeInfo { +fun ChangeInfo.toJetChangeInfo( + originalChangeSignatureDescriptor: KotlinMethodDescriptor, + resolutionFacade: ResolutionFacade? = null +): KotlinChangeInfo { val method = method as PsiMethod - val functionDescriptor = method.getJavaMethodDescriptor()!! + val functionDescriptor = method.getJavaOrKotlinMemberDescriptor(resolutionFacade) as CallableDescriptor val parameterDescriptors = functionDescriptor.valueParameters //noinspection ConstantConditions diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeSignatureUsageProcessor.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeSignatureUsageProcessor.kt index aed613351a2..309abdabe12 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeSignatureUsageProcessor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeSignatureUsageProcessor.kt @@ -38,20 +38,15 @@ import com.intellij.util.containers.MultiMap import org.jetbrains.kotlin.asJava.KtLightMethod import org.jetbrains.kotlin.asJava.namedUnwrappedElement import org.jetbrains.kotlin.asJava.toLightMethods +import org.jetbrains.kotlin.asJava.unwrapped import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.idea.analysis.analyzeInContext -import org.jetbrains.kotlin.idea.caches.resolve.analyze -import org.jetbrains.kotlin.idea.caches.resolve.getJavaMethodDescriptor -import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade -import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny +import org.jetbrains.kotlin.idea.caches.resolve.* import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde import org.jetbrains.kotlin.idea.codeInsight.KotlinFileReferencesResolver import org.jetbrains.kotlin.idea.core.compareDescriptors -import org.jetbrains.kotlin.idea.refactoring.createTempCopy -import org.jetbrains.kotlin.idea.refactoring.isTrueJavaMethod +import org.jetbrains.kotlin.idea.refactoring.* import org.jetbrains.kotlin.idea.refactoring.changeSignature.usages.* -import org.jetbrains.kotlin.idea.refactoring.getBodyScope -import org.jetbrains.kotlin.idea.refactoring.getContainingScope import org.jetbrains.kotlin.idea.references.KtSimpleNameReference import org.jetbrains.kotlin.idea.references.mainReference import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinReferencesSearchOptions @@ -435,10 +430,9 @@ class KotlinChangeSignatureUsageProcessor : ChangeSignatureUsageProcessor { } private fun findKotlinOverrides(changeInfo: ChangeInfo, result: MutableSet) { - val method = changeInfo.method - if (!method.isTrueJavaMethod()) return + val method = changeInfo.method as? PsiMethod ?: return - for (overridingMethod in OverridingMethodsSearch.search(method as PsiMethod)) { + for (overridingMethod in OverridingMethodsSearch.search(method)) { val unwrappedElement = overridingMethod.namedUnwrappedElement as? KtNamedFunction ?: continue val functionDescriptor = unwrappedElement.resolveToDescriptorIfAny() as? FunctionDescriptor ?: continue result.add(DeferredJavaMethodOverrideOrSAMUsage(unwrappedElement, functionDescriptor, null)) @@ -856,8 +850,12 @@ class KotlinChangeSignatureUsageProcessor : ChangeSignatureUsageProcessor { val descriptorWrapper = usages.firstIsInstanceOrNull() if (descriptorWrapper == null || descriptorWrapper.originalJavaMethodDescriptor != null) return true - val methodDescriptor = method.getJavaMethodDescriptor()?.createDeepCopy() ?: return false - descriptorWrapper.originalJavaMethodDescriptor = KotlinChangeSignatureData(methodDescriptor, method, listOf(methodDescriptor)) + val baseDeclaration = method.unwrapped ?: return false + val baseDeclarationDescriptor = method.getJavaOrKotlinMemberDescriptor()?.createDeepCopy() as CallableDescriptor? + ?: return false + descriptorWrapper.originalJavaMethodDescriptor = KotlinChangeSignatureData(baseDeclarationDescriptor, + baseDeclaration, + listOf(baseDeclarationDescriptor)) // This change info is used as a placeholder before primary method update // It gets replaced with real change info afterwards @@ -910,12 +908,37 @@ class KotlinChangeSignatureUsageProcessor : ChangeSignatureUsageProcessor { } override fun processPrimaryMethod(changeInfo: ChangeInfo): Boolean { - if (changeInfo !is KotlinChangeInfo) return false + val ktChangeInfo = when (changeInfo) { + is KotlinChangeInfo -> changeInfo + is JavaChangeInfo -> { + val method = changeInfo.method as? KtLightMethod ?: return false + var baseFunction = method.getOrigin() ?: return false + if (baseFunction is KtClass) { + baseFunction = baseFunction.createPrimaryConstructorIfAbsent() + } + val resolutionFacade = baseFunction.getResolutionFacade() + val baseFunctionDescriptor = resolutionFacade.resolveToDescriptor(baseFunction) as FunctionDescriptor + val methodDescriptor = KotlinChangeSignatureData(baseFunctionDescriptor, baseFunction, listOf(baseFunctionDescriptor)) - for (primaryFunction in changeInfo.methodDescriptor.primaryCallables) { - primaryFunction.processUsage(changeInfo, primaryFunction.declaration, UsageInfo.EMPTY_ARRAY) + val dummyClass = JavaPsiFacade.getElementFactory(method.project).createClass("Dummy") + val dummyMethod = createJavaMethod(method, dummyClass) + dummyMethod.containingFile.moduleInfo = baseFunction.getModuleInfo() + try { + changeInfo.updateMethod(dummyMethod) + JavaChangeSignatureUsageProcessor().processPrimaryMethod(changeInfo) + changeInfo.toJetChangeInfo(methodDescriptor, resolutionFacade) + } + finally { + changeInfo.updateMethod(method) + } + } + else -> return false } - changeInfo.primaryMethodUpdated() + + for (primaryFunction in ktChangeInfo.methodDescriptor.primaryCallables) { + primaryFunction.processUsage(ktChangeInfo, primaryFunction.declaration, UsageInfo.EMPTY_ARRAY) + } + ktChangeInfo.primaryMethodUpdated() return true } diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/changeSignatureUtils.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/changeSignatureUtils.kt index 66808354118..e56100555ad 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/changeSignatureUtils.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/changeSignatureUtils.kt @@ -20,12 +20,13 @@ import com.intellij.psi.PsiElement import com.intellij.refactoring.changeSignature.CallerUsageInfo import com.intellij.refactoring.changeSignature.OverriderUsageInfo import com.intellij.usageView.UsageInfo -import org.jetbrains.kotlin.descriptors.FunctionDescriptor +import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.idea.refactoring.changeSignature.usages.DeferredJavaMethodKotlinCallerUsage import org.jetbrains.kotlin.idea.refactoring.changeSignature.usages.JavaMethodKotlinUsageWithDelegate import org.jetbrains.kotlin.idea.refactoring.changeSignature.usages.KotlinCallableDefinitionUsage import org.jetbrains.kotlin.idea.refactoring.changeSignature.usages.KotlinCallerUsage import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers +import org.jetbrains.kotlin.load.java.descriptors.JavaMethodDescriptor import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.parentsWithSelf import org.jetbrains.kotlin.types.* @@ -82,7 +83,7 @@ fun KotlinType.renderTypeWithSubstitution(substitutor: TypeSubstitutor?, default // This method is used to create full copies of functions (including copies of all types) // It's needed to prevent accesses to PSI (e.g. using LazyJavaClassifierType properties) when Change signature invalidates it // See KotlinChangeSignatureTest.testSAMChangeMethodReturnType -fun FunctionDescriptor.createDeepCopy() = substitute(TypeSubstitutor.create(ForceTypeCopySubstitution)) +fun DeclarationDescriptor.createDeepCopy() = (this as? JavaMethodDescriptor)?.substitute(TypeSubstitutor.create(ForceTypeCopySubstitution)) ?: this private object ForceTypeCopySubstitution : TypeSubstitution() { override fun get(key: KotlinType) = diff --git a/idea/testData/quickfix/changeSignature/jk/jkAddFunctionParameter.after.Dependency.kt b/idea/testData/quickfix/changeSignature/jk/jkAddFunctionParameter.after.Dependency.kt new file mode 100644 index 00000000000..308526a1582 --- /dev/null +++ b/idea/testData/quickfix/changeSignature/jk/jkAddFunctionParameter.after.Dependency.kt @@ -0,0 +1,5 @@ +open class K { + open fun foo(i: Int) { + + } +} \ No newline at end of file diff --git a/idea/testData/quickfix/changeSignature/jk/jkAddFunctionParameter.after.java b/idea/testData/quickfix/changeSignature/jk/jkAddFunctionParameter.after.java new file mode 100644 index 00000000000..4e0e01a1ea5 --- /dev/null +++ b/idea/testData/quickfix/changeSignature/jk/jkAddFunctionParameter.after.java @@ -0,0 +1,7 @@ +// "Add 'int' as 1st parameter to method 'foo'" "true" + +public class J { + void foo() { + new K().foo(1); + } +} \ No newline at end of file diff --git a/idea/testData/quickfix/changeSignature/jk/jkAddFunctionParameter.before.Dependency.kt b/idea/testData/quickfix/changeSignature/jk/jkAddFunctionParameter.before.Dependency.kt new file mode 100644 index 00000000000..f29db860696 --- /dev/null +++ b/idea/testData/quickfix/changeSignature/jk/jkAddFunctionParameter.before.Dependency.kt @@ -0,0 +1,5 @@ +open class K { + open fun foo() { + + } +} \ No newline at end of file diff --git a/idea/testData/quickfix/changeSignature/jk/jkAddFunctionParameter.before.Main.java b/idea/testData/quickfix/changeSignature/jk/jkAddFunctionParameter.before.Main.java new file mode 100644 index 00000000000..e671b78c4ca --- /dev/null +++ b/idea/testData/quickfix/changeSignature/jk/jkAddFunctionParameter.before.Main.java @@ -0,0 +1,7 @@ +// "Add 'int' as 1st parameter to method 'foo'" "true" + +public class J { + void foo() { + new K().foo(1); + } +} \ No newline at end of file diff --git a/idea/testData/quickfix/changeSignature/jk/jkAddImplicitPrimaryConstructorParameter.after.Dependency.kt b/idea/testData/quickfix/changeSignature/jk/jkAddImplicitPrimaryConstructorParameter.after.Dependency.kt new file mode 100644 index 00000000000..eba41abefdd --- /dev/null +++ b/idea/testData/quickfix/changeSignature/jk/jkAddImplicitPrimaryConstructorParameter.after.Dependency.kt @@ -0,0 +1,5 @@ +open class K(i: Int) { + open fun foo() { + + } +} \ No newline at end of file diff --git a/idea/testData/quickfix/changeSignature/jk/jkAddImplicitPrimaryConstructorParameter.after.java b/idea/testData/quickfix/changeSignature/jk/jkAddImplicitPrimaryConstructorParameter.after.java new file mode 100644 index 00000000000..7d4eed9812d --- /dev/null +++ b/idea/testData/quickfix/changeSignature/jk/jkAddImplicitPrimaryConstructorParameter.after.java @@ -0,0 +1,7 @@ +// "Add 'int' as 1st parameter to method 'K'" "true" + +public class J { + void foo() { + new K(1); + } +} \ No newline at end of file diff --git a/idea/testData/quickfix/changeSignature/jk/jkAddImplicitPrimaryConstructorParameter.before.Dependency.kt b/idea/testData/quickfix/changeSignature/jk/jkAddImplicitPrimaryConstructorParameter.before.Dependency.kt new file mode 100644 index 00000000000..f29db860696 --- /dev/null +++ b/idea/testData/quickfix/changeSignature/jk/jkAddImplicitPrimaryConstructorParameter.before.Dependency.kt @@ -0,0 +1,5 @@ +open class K { + open fun foo() { + + } +} \ No newline at end of file diff --git a/idea/testData/quickfix/changeSignature/jk/jkAddImplicitPrimaryConstructorParameter.before.Main.java b/idea/testData/quickfix/changeSignature/jk/jkAddImplicitPrimaryConstructorParameter.before.Main.java new file mode 100644 index 00000000000..bf76052dcb8 --- /dev/null +++ b/idea/testData/quickfix/changeSignature/jk/jkAddImplicitPrimaryConstructorParameter.before.Main.java @@ -0,0 +1,7 @@ +// "Add 'int' as 1st parameter to method 'K'" "true" + +public class J { + void foo() { + new K(1); + } +} \ No newline at end of file diff --git a/idea/testData/quickfix/changeSignature/jk/jkAddPrimaryConstructorParameter.after.Dependency.kt b/idea/testData/quickfix/changeSignature/jk/jkAddPrimaryConstructorParameter.after.Dependency.kt new file mode 100644 index 00000000000..eba41abefdd --- /dev/null +++ b/idea/testData/quickfix/changeSignature/jk/jkAddPrimaryConstructorParameter.after.Dependency.kt @@ -0,0 +1,5 @@ +open class K(i: Int) { + open fun foo() { + + } +} \ No newline at end of file diff --git a/idea/testData/quickfix/changeSignature/jk/jkAddPrimaryConstructorParameter.after.java b/idea/testData/quickfix/changeSignature/jk/jkAddPrimaryConstructorParameter.after.java new file mode 100644 index 00000000000..7d4eed9812d --- /dev/null +++ b/idea/testData/quickfix/changeSignature/jk/jkAddPrimaryConstructorParameter.after.java @@ -0,0 +1,7 @@ +// "Add 'int' as 1st parameter to method 'K'" "true" + +public class J { + void foo() { + new K(1); + } +} \ No newline at end of file diff --git a/idea/testData/quickfix/changeSignature/jk/jkAddPrimaryConstructorParameter.before.Dependency.kt b/idea/testData/quickfix/changeSignature/jk/jkAddPrimaryConstructorParameter.before.Dependency.kt new file mode 100644 index 00000000000..1a0ebfccad1 --- /dev/null +++ b/idea/testData/quickfix/changeSignature/jk/jkAddPrimaryConstructorParameter.before.Dependency.kt @@ -0,0 +1,5 @@ +open class K() { + open fun foo() { + + } +} \ No newline at end of file diff --git a/idea/testData/quickfix/changeSignature/jk/jkAddPrimaryConstructorParameter.before.Main.java b/idea/testData/quickfix/changeSignature/jk/jkAddPrimaryConstructorParameter.before.Main.java new file mode 100644 index 00000000000..bf76052dcb8 --- /dev/null +++ b/idea/testData/quickfix/changeSignature/jk/jkAddPrimaryConstructorParameter.before.Main.java @@ -0,0 +1,7 @@ +// "Add 'int' as 1st parameter to method 'K'" "true" + +public class J { + void foo() { + new K(1); + } +} \ No newline at end of file diff --git a/idea/testData/quickfix/changeSignature/jk/jkAddSecondaryConstructorParameter.after.Dependency.kt b/idea/testData/quickfix/changeSignature/jk/jkAddSecondaryConstructorParameter.after.Dependency.kt new file mode 100644 index 00000000000..7a8ce692f95 --- /dev/null +++ b/idea/testData/quickfix/changeSignature/jk/jkAddSecondaryConstructorParameter.after.Dependency.kt @@ -0,0 +1,7 @@ +open class K { + constructor(i: Int) + + open fun foo() { + + } +} \ No newline at end of file diff --git a/idea/testData/quickfix/changeSignature/jk/jkAddSecondaryConstructorParameter.after.java b/idea/testData/quickfix/changeSignature/jk/jkAddSecondaryConstructorParameter.after.java new file mode 100644 index 00000000000..7d4eed9812d --- /dev/null +++ b/idea/testData/quickfix/changeSignature/jk/jkAddSecondaryConstructorParameter.after.java @@ -0,0 +1,7 @@ +// "Add 'int' as 1st parameter to method 'K'" "true" + +public class J { + void foo() { + new K(1); + } +} \ No newline at end of file diff --git a/idea/testData/quickfix/changeSignature/jk/jkAddSecondaryConstructorParameter.before.Dependency.kt b/idea/testData/quickfix/changeSignature/jk/jkAddSecondaryConstructorParameter.before.Dependency.kt new file mode 100644 index 00000000000..749dcb4c041 --- /dev/null +++ b/idea/testData/quickfix/changeSignature/jk/jkAddSecondaryConstructorParameter.before.Dependency.kt @@ -0,0 +1,7 @@ +open class K { + constructor() + + open fun foo() { + + } +} \ No newline at end of file diff --git a/idea/testData/quickfix/changeSignature/jk/jkAddSecondaryConstructorParameter.before.Main.java b/idea/testData/quickfix/changeSignature/jk/jkAddSecondaryConstructorParameter.before.Main.java new file mode 100644 index 00000000000..bf76052dcb8 --- /dev/null +++ b/idea/testData/quickfix/changeSignature/jk/jkAddSecondaryConstructorParameter.before.Main.java @@ -0,0 +1,7 @@ +// "Add 'int' as 1st parameter to method 'K'" "true" + +public class J { + void foo() { + new K(1); + } +} \ No newline at end of file diff --git a/idea/testData/quickfix/changeSignature/jk/jkChangeFunctionParameter.after.Dependency.kt b/idea/testData/quickfix/changeSignature/jk/jkChangeFunctionParameter.after.Dependency.kt new file mode 100644 index 00000000000..ea2a62295ef --- /dev/null +++ b/idea/testData/quickfix/changeSignature/jk/jkChangeFunctionParameter.after.Dependency.kt @@ -0,0 +1,5 @@ +open class K { + open fun foo(n: Int, b: String) { + + } +} \ No newline at end of file diff --git a/idea/testData/quickfix/changeSignature/jk/jkChangeFunctionParameter.after.java b/idea/testData/quickfix/changeSignature/jk/jkChangeFunctionParameter.after.java new file mode 100644 index 00000000000..1730e68bdab --- /dev/null +++ b/idea/testData/quickfix/changeSignature/jk/jkChangeFunctionParameter.after.java @@ -0,0 +1,7 @@ +// "Change 2nd parameter of method 'foo' from 'boolean' to 'String'" "true" + +public class J { + void foo() { + new K().foo(1, "2"); + } +} \ No newline at end of file diff --git a/idea/testData/quickfix/changeSignature/jk/jkChangeFunctionParameter.before.Dependency.kt b/idea/testData/quickfix/changeSignature/jk/jkChangeFunctionParameter.before.Dependency.kt new file mode 100644 index 00000000000..0baa1ccc1d8 --- /dev/null +++ b/idea/testData/quickfix/changeSignature/jk/jkChangeFunctionParameter.before.Dependency.kt @@ -0,0 +1,5 @@ +open class K { + open fun foo(n: Int, b: Boolean) { + + } +} \ No newline at end of file diff --git a/idea/testData/quickfix/changeSignature/jk/jkChangeFunctionParameter.before.Main.java b/idea/testData/quickfix/changeSignature/jk/jkChangeFunctionParameter.before.Main.java new file mode 100644 index 00000000000..1730e68bdab --- /dev/null +++ b/idea/testData/quickfix/changeSignature/jk/jkChangeFunctionParameter.before.Main.java @@ -0,0 +1,7 @@ +// "Change 2nd parameter of method 'foo' from 'boolean' to 'String'" "true" + +public class J { + void foo() { + new K().foo(1, "2"); + } +} \ No newline at end of file diff --git a/idea/testData/quickfix/changeSignature/jk/jkChangePrimaryConstructorParameter.after.Dependency.kt b/idea/testData/quickfix/changeSignature/jk/jkChangePrimaryConstructorParameter.after.Dependency.kt new file mode 100644 index 00000000000..30955cef1ba --- /dev/null +++ b/idea/testData/quickfix/changeSignature/jk/jkChangePrimaryConstructorParameter.after.Dependency.kt @@ -0,0 +1,5 @@ +open class K(n: Int, b: String) { + open fun foo() { + + } +} \ No newline at end of file diff --git a/idea/testData/quickfix/changeSignature/jk/jkChangePrimaryConstructorParameter.after.java b/idea/testData/quickfix/changeSignature/jk/jkChangePrimaryConstructorParameter.after.java new file mode 100644 index 00000000000..5ce3da92778 --- /dev/null +++ b/idea/testData/quickfix/changeSignature/jk/jkChangePrimaryConstructorParameter.after.java @@ -0,0 +1,7 @@ +// "Change 2nd parameter of method 'K' from 'boolean' to 'String'" "true" + +public class J { + void foo() { + new K(1, "2"); + } +} \ No newline at end of file diff --git a/idea/testData/quickfix/changeSignature/jk/jkChangePrimaryConstructorParameter.before.Dependency.kt b/idea/testData/quickfix/changeSignature/jk/jkChangePrimaryConstructorParameter.before.Dependency.kt new file mode 100644 index 00000000000..cb1ba8303d2 --- /dev/null +++ b/idea/testData/quickfix/changeSignature/jk/jkChangePrimaryConstructorParameter.before.Dependency.kt @@ -0,0 +1,5 @@ +open class K(n: Int, b: Boolean) { + open fun foo() { + + } +} \ No newline at end of file diff --git a/idea/testData/quickfix/changeSignature/jk/jkChangePrimaryConstructorParameter.before.Main.java b/idea/testData/quickfix/changeSignature/jk/jkChangePrimaryConstructorParameter.before.Main.java new file mode 100644 index 00000000000..5ce3da92778 --- /dev/null +++ b/idea/testData/quickfix/changeSignature/jk/jkChangePrimaryConstructorParameter.before.Main.java @@ -0,0 +1,7 @@ +// "Change 2nd parameter of method 'K' from 'boolean' to 'String'" "true" + +public class J { + void foo() { + new K(1, "2"); + } +} \ No newline at end of file diff --git a/idea/testData/quickfix/changeSignature/jk/jkChangeSecondaryConstructorParameter.after.Dependency.kt b/idea/testData/quickfix/changeSignature/jk/jkChangeSecondaryConstructorParameter.after.Dependency.kt new file mode 100644 index 00000000000..b57b2fee627 --- /dev/null +++ b/idea/testData/quickfix/changeSignature/jk/jkChangeSecondaryConstructorParameter.after.Dependency.kt @@ -0,0 +1,7 @@ +open class K { + constructor(n: Int, b: String) + + open fun foo() { + + } +} \ No newline at end of file diff --git a/idea/testData/quickfix/changeSignature/jk/jkChangeSecondaryConstructorParameter.after.java b/idea/testData/quickfix/changeSignature/jk/jkChangeSecondaryConstructorParameter.after.java new file mode 100644 index 00000000000..5ce3da92778 --- /dev/null +++ b/idea/testData/quickfix/changeSignature/jk/jkChangeSecondaryConstructorParameter.after.java @@ -0,0 +1,7 @@ +// "Change 2nd parameter of method 'K' from 'boolean' to 'String'" "true" + +public class J { + void foo() { + new K(1, "2"); + } +} \ No newline at end of file diff --git a/idea/testData/quickfix/changeSignature/jk/jkChangeSecondaryConstructorParameter.before.Dependency.kt b/idea/testData/quickfix/changeSignature/jk/jkChangeSecondaryConstructorParameter.before.Dependency.kt new file mode 100644 index 00000000000..717504ce324 --- /dev/null +++ b/idea/testData/quickfix/changeSignature/jk/jkChangeSecondaryConstructorParameter.before.Dependency.kt @@ -0,0 +1,7 @@ +open class K { + constructor(n: Int, b: Boolean) + + open fun foo() { + + } +} \ No newline at end of file diff --git a/idea/testData/quickfix/changeSignature/jk/jkChangeSecondaryConstructorParameter.before.Main.java b/idea/testData/quickfix/changeSignature/jk/jkChangeSecondaryConstructorParameter.before.Main.java new file mode 100644 index 00000000000..5ce3da92778 --- /dev/null +++ b/idea/testData/quickfix/changeSignature/jk/jkChangeSecondaryConstructorParameter.before.Main.java @@ -0,0 +1,7 @@ +// "Change 2nd parameter of method 'K' from 'boolean' to 'String'" "true" + +public class J { + void foo() { + new K(1, "2"); + } +} \ No newline at end of file diff --git a/idea/testData/quickfix/changeSignature/jk/jkRemoveFunctionParameter.after.Dependency.kt b/idea/testData/quickfix/changeSignature/jk/jkRemoveFunctionParameter.after.Dependency.kt new file mode 100644 index 00000000000..f29db860696 --- /dev/null +++ b/idea/testData/quickfix/changeSignature/jk/jkRemoveFunctionParameter.after.Dependency.kt @@ -0,0 +1,5 @@ +open class K { + open fun foo() { + + } +} \ No newline at end of file diff --git a/idea/testData/quickfix/changeSignature/jk/jkRemoveFunctionParameter.after.java b/idea/testData/quickfix/changeSignature/jk/jkRemoveFunctionParameter.after.java new file mode 100644 index 00000000000..841696a311c --- /dev/null +++ b/idea/testData/quickfix/changeSignature/jk/jkRemoveFunctionParameter.after.java @@ -0,0 +1,7 @@ +// "Remove 1st parameter from method 'foo'" "true" + +public class J { + void foo() { + new K().foo(); + } +} \ No newline at end of file diff --git a/idea/testData/quickfix/changeSignature/jk/jkRemoveFunctionParameter.before.Dependency.kt b/idea/testData/quickfix/changeSignature/jk/jkRemoveFunctionParameter.before.Dependency.kt new file mode 100644 index 00000000000..99dcabb1553 --- /dev/null +++ b/idea/testData/quickfix/changeSignature/jk/jkRemoveFunctionParameter.before.Dependency.kt @@ -0,0 +1,5 @@ +open class K { + open fun foo(n: Int) { + + } +} \ No newline at end of file diff --git a/idea/testData/quickfix/changeSignature/jk/jkRemoveFunctionParameter.before.Main.java b/idea/testData/quickfix/changeSignature/jk/jkRemoveFunctionParameter.before.Main.java new file mode 100644 index 00000000000..841696a311c --- /dev/null +++ b/idea/testData/quickfix/changeSignature/jk/jkRemoveFunctionParameter.before.Main.java @@ -0,0 +1,7 @@ +// "Remove 1st parameter from method 'foo'" "true" + +public class J { + void foo() { + new K().foo(); + } +} \ No newline at end of file diff --git a/idea/testData/quickfix/changeSignature/jk/jkRemovePrimaryConstructorParameter.after.Dependency.kt b/idea/testData/quickfix/changeSignature/jk/jkRemovePrimaryConstructorParameter.after.Dependency.kt new file mode 100644 index 00000000000..1a0ebfccad1 --- /dev/null +++ b/idea/testData/quickfix/changeSignature/jk/jkRemovePrimaryConstructorParameter.after.Dependency.kt @@ -0,0 +1,5 @@ +open class K() { + open fun foo() { + + } +} \ No newline at end of file diff --git a/idea/testData/quickfix/changeSignature/jk/jkRemovePrimaryConstructorParameter.after.java b/idea/testData/quickfix/changeSignature/jk/jkRemovePrimaryConstructorParameter.after.java new file mode 100644 index 00000000000..da2e824b7dd --- /dev/null +++ b/idea/testData/quickfix/changeSignature/jk/jkRemovePrimaryConstructorParameter.after.java @@ -0,0 +1,7 @@ +// "Remove 1st parameter from method 'K'" "true" + +public class J { + void foo() { + new K(); + } +} \ No newline at end of file diff --git a/idea/testData/quickfix/changeSignature/jk/jkRemovePrimaryConstructorParameter.before.Dependency.kt b/idea/testData/quickfix/changeSignature/jk/jkRemovePrimaryConstructorParameter.before.Dependency.kt new file mode 100644 index 00000000000..a34ce1c9e9b --- /dev/null +++ b/idea/testData/quickfix/changeSignature/jk/jkRemovePrimaryConstructorParameter.before.Dependency.kt @@ -0,0 +1,5 @@ +open class K(n: Int) { + open fun foo() { + + } +} \ No newline at end of file diff --git a/idea/testData/quickfix/changeSignature/jk/jkRemovePrimaryConstructorParameter.before.Main.java b/idea/testData/quickfix/changeSignature/jk/jkRemovePrimaryConstructorParameter.before.Main.java new file mode 100644 index 00000000000..da2e824b7dd --- /dev/null +++ b/idea/testData/quickfix/changeSignature/jk/jkRemovePrimaryConstructorParameter.before.Main.java @@ -0,0 +1,7 @@ +// "Remove 1st parameter from method 'K'" "true" + +public class J { + void foo() { + new K(); + } +} \ No newline at end of file diff --git a/idea/testData/quickfix/changeSignature/jk/jkRemoveSecondaryConstructorParameter.after.Dependency.kt b/idea/testData/quickfix/changeSignature/jk/jkRemoveSecondaryConstructorParameter.after.Dependency.kt new file mode 100644 index 00000000000..749dcb4c041 --- /dev/null +++ b/idea/testData/quickfix/changeSignature/jk/jkRemoveSecondaryConstructorParameter.after.Dependency.kt @@ -0,0 +1,7 @@ +open class K { + constructor() + + open fun foo() { + + } +} \ No newline at end of file diff --git a/idea/testData/quickfix/changeSignature/jk/jkRemoveSecondaryConstructorParameter.after.java b/idea/testData/quickfix/changeSignature/jk/jkRemoveSecondaryConstructorParameter.after.java new file mode 100644 index 00000000000..da2e824b7dd --- /dev/null +++ b/idea/testData/quickfix/changeSignature/jk/jkRemoveSecondaryConstructorParameter.after.java @@ -0,0 +1,7 @@ +// "Remove 1st parameter from method 'K'" "true" + +public class J { + void foo() { + new K(); + } +} \ No newline at end of file diff --git a/idea/testData/quickfix/changeSignature/jk/jkRemoveSecondaryConstructorParameter.before.Dependency.kt b/idea/testData/quickfix/changeSignature/jk/jkRemoveSecondaryConstructorParameter.before.Dependency.kt new file mode 100644 index 00000000000..dbe7a4b6d55 --- /dev/null +++ b/idea/testData/quickfix/changeSignature/jk/jkRemoveSecondaryConstructorParameter.before.Dependency.kt @@ -0,0 +1,7 @@ +open class K { + constructor(n: Int) + + open fun foo() { + + } +} \ No newline at end of file diff --git a/idea/testData/quickfix/changeSignature/jk/jkRemoveSecondaryConstructorParameter.before.Main.java b/idea/testData/quickfix/changeSignature/jk/jkRemoveSecondaryConstructorParameter.before.Main.java new file mode 100644 index 00000000000..da2e824b7dd --- /dev/null +++ b/idea/testData/quickfix/changeSignature/jk/jkRemoveSecondaryConstructorParameter.before.Main.java @@ -0,0 +1,7 @@ +// "Remove 1st parameter from method 'K'" "true" + +public class J { + void foo() { + new K(); + } +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiFileTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiFileTestGenerated.java index 48a17a5140a..cc0163e85c9 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiFileTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiFileTestGenerated.java @@ -463,6 +463,75 @@ public class QuickFixMultiFileTestGenerated extends AbstractQuickFixMultiFileTes String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/changeSignature/removeJavaMethodParameter.before.Main.kt"); doTestWithExtraFile(fileName); } + + @TestMetadata("idea/testData/quickfix/changeSignature/jk") + @TestDataPath("$PROJECT_ROOT") + @RunWith(JUnit3RunnerWithInners.class) + public static class Jk extends AbstractQuickFixMultiFileTest { + public void testAllFilesPresentInJk() throws Exception { + KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/quickfix/changeSignature/jk"), Pattern.compile("^(\\w+)\\.((before\\.Main\\.\\w+)|(test))$"), true); + } + + @TestMetadata("jkAddFunctionParameter.before.Main.java") + public void testJkAddFunctionParameter() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/changeSignature/jk/jkAddFunctionParameter.before.Main.java"); + doTestWithExtraFile(fileName); + } + + @TestMetadata("jkAddImplicitPrimaryConstructorParameter.before.Main.java") + public void testJkAddImplicitPrimaryConstructorParameter() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/changeSignature/jk/jkAddImplicitPrimaryConstructorParameter.before.Main.java"); + doTestWithExtraFile(fileName); + } + + @TestMetadata("jkAddPrimaryConstructorParameter.before.Main.java") + public void testJkAddPrimaryConstructorParameter() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/changeSignature/jk/jkAddPrimaryConstructorParameter.before.Main.java"); + doTestWithExtraFile(fileName); + } + + @TestMetadata("jkAddSecondaryConstructorParameter.before.Main.java") + public void testJkAddSecondaryConstructorParameter() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/changeSignature/jk/jkAddSecondaryConstructorParameter.before.Main.java"); + doTestWithExtraFile(fileName); + } + + @TestMetadata("jkChangeFunctionParameter.before.Main.java") + public void testJkChangeFunctionParameter() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/changeSignature/jk/jkChangeFunctionParameter.before.Main.java"); + doTestWithExtraFile(fileName); + } + + @TestMetadata("jkChangePrimaryConstructorParameter.before.Main.java") + public void testJkChangePrimaryConstructorParameter() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/changeSignature/jk/jkChangePrimaryConstructorParameter.before.Main.java"); + doTestWithExtraFile(fileName); + } + + @TestMetadata("jkChangeSecondaryConstructorParameter.before.Main.java") + public void testJkChangeSecondaryConstructorParameter() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/changeSignature/jk/jkChangeSecondaryConstructorParameter.before.Main.java"); + doTestWithExtraFile(fileName); + } + + @TestMetadata("jkRemoveFunctionParameter.before.Main.java") + public void testJkRemoveFunctionParameter() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/changeSignature/jk/jkRemoveFunctionParameter.before.Main.java"); + doTestWithExtraFile(fileName); + } + + @TestMetadata("jkRemovePrimaryConstructorParameter.before.Main.java") + public void testJkRemovePrimaryConstructorParameter() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/changeSignature/jk/jkRemovePrimaryConstructorParameter.before.Main.java"); + doTestWithExtraFile(fileName); + } + + @TestMetadata("jkRemoveSecondaryConstructorParameter.before.Main.java") + public void testJkRemoveSecondaryConstructorParameter() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/changeSignature/jk/jkRemoveSecondaryConstructorParameter.before.Main.java"); + doTestWithExtraFile(fileName); + } + } } @TestMetadata("idea/testData/quickfix/checkArguments")