diff --git a/compiler/frontend/src/org/jetbrains/kotlin/psi/JetPsiFactory.kt b/compiler/frontend/src/org/jetbrains/kotlin/psi/JetPsiFactory.kt index 27472481142..6a638573606 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/psi/JetPsiFactory.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/psi/JetPsiFactory.kt @@ -31,6 +31,7 @@ import java.io.PrintWriter import java.io.StringWriter import com.intellij.openapi.application.ApplicationManager import com.intellij.psi.PsiComment +import org.jetbrains.kotlin.name.FqName public fun JetPsiFactory(project: Project?): JetPsiFactory = JetPsiFactory(project!!) public fun JetPsiFactory(contextElement: JetElement): JetPsiFactory = JetPsiFactory(contextElement.getProject()) @@ -266,6 +267,10 @@ public class JetPsiFactory(private val project: Project) { return stringTemplateExpression.getEntries()[0] as JetStringTemplateEntryWithExpression } + public fun createPackageDirectiveIfNeeded(fqName: FqName): JetPackageDirective? { + return if (fqName.isRoot()) null else createFile("package ${fqName.asString()}").getPackageDirective() + } + public fun createImportDirective(path: String): JetImportDirective { return createImportDirective(ImportPath(path)) } diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/CallableBuilder.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/CallableBuilder.kt index 72ddc335557..35d7b8c1180 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/CallableBuilder.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/CallableBuilder.kt @@ -18,7 +18,6 @@ package org.jetbrains.kotlin.idea.quickfix.createFromUsage.callableBuilder import com.intellij.codeInsight.navigation.NavigationUtil import com.intellij.codeInsight.template.* -import com.intellij.codeInsight.template.impl.TemplateImpl import com.intellij.ide.fileTemplates.FileTemplate import com.intellij.ide.fileTemplates.FileTemplateManager import com.intellij.openapi.application.ApplicationManager @@ -36,7 +35,6 @@ import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.resolve.scopes.JetScope import org.jetbrains.kotlin.types.* import org.jetbrains.kotlin.builtins.KotlinBuiltIns -import org.jetbrains.kotlin.idea.util.ShortenReferences import kotlin.properties.Delegates import java.util.LinkedHashSet import java.util.Collections @@ -48,7 +46,6 @@ import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils import com.intellij.psi.PsiWhiteSpace import com.intellij.psi.PsiElement import org.jetbrains.kotlin.lexer.JetTokens -import org.jetbrains.kotlin.idea.util.application.runWriteAction import org.jetbrains.kotlin.types.checker.JetTypeChecker import com.intellij.psi.SmartPointerManager import org.jetbrains.kotlin.descriptors.impl.SimpleFunctionDescriptorImpl @@ -57,12 +54,9 @@ import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.descriptors.impl.MutablePackageFragmentDescriptor import org.jetbrains.kotlin.descriptors.impl.TypeParameterDescriptorImpl import java.util.LinkedHashMap -import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers import org.jetbrains.kotlin.idea.quickfix.createFromUsage.createClass.ClassKind -import org.jetbrains.kotlin.idea.util.isAny import org.jetbrains.kotlin.utils.addToStdlib.singletonOrEmptyList import org.jetbrains.kotlin.psi.psiUtil.siblings -import org.jetbrains.kotlin.idea.util.isUnit import com.intellij.openapi.editor.ScrollType import org.jetbrains.kotlin.psi.psiUtil.isAncestor import org.jetbrains.kotlin.load.java.descriptors.JavaClassDescriptor @@ -75,14 +69,17 @@ import com.intellij.psi.PsiModifier import com.intellij.psi.PsiField import com.intellij.psi.PsiMember import org.jetbrains.kotlin.idea.caches.resolve.getJavaClassDescriptor -import com.intellij.psi.PsiNamedElement -import com.intellij.psi.PsiMethodCallExpression -import com.intellij.psi.PsiExpressionStatement import org.jetbrains.kotlin.resolve.scopes.ChainedScope import org.jetbrains.kotlin.resolve.scopes.WritableScopeImpl import org.jetbrains.kotlin.resolve.scopes.RedeclarationHandler import org.jetbrains.kotlin.resolve.scopes.WritableScope +import com.intellij.psi.PsiMethodCallExpression +import com.intellij.psi.PsiExpressionStatement import org.jetbrains.kotlin.idea.refactoring.* +import org.jetbrains.kotlin.idea.util.* +import com.intellij.openapi.ui.* +import com.intellij.codeInsight.template.impl.* +import org.jetbrains.kotlin.idea.util.application.* private val TYPE_PARAMETER_LIST_VARIABLE_NAME = "typeParameterList" private val TEMPLATE_FROM_USAGE_FUNCTION_BODY = "New Kotlin Function Body.kt" @@ -201,6 +198,7 @@ class CallableBuilder(val config: CallableBuilderConfiguration) { if (iterator.hasNext()) { val context = Context(iterator.next()) runWriteAction { context.buildAndRunTemplate { buildNext(iterator) } } + ApplicationManager.getApplication().invokeLater { context.showDialogIfNeeded() } } else { ShortenReferences.DEFAULT.process(elementsToShorten) @@ -220,14 +218,16 @@ class CallableBuilder(val config: CallableBuilderConfiguration) { private inner class Context(val callableInfo: CallableInfo) { val skipReturnType: Boolean - val containingFile: JetFile + val jetFileToEdit: JetFile val containingFileEditor: Editor - val containingElement: JetElement + val containingElement: PsiElement + val dialogWithEditor: DialogWithEditor? val receiverClassDescriptor: ClassDescriptor? val typeParameterNameMap: Map val receiverTypeCandidate: TypeCandidate? val mandatoryTypeParametersAsCandidates: List val substitutions: List + var released: Boolean = false { // gather relevant information @@ -235,7 +235,7 @@ class CallableBuilder(val config: CallableBuilderConfiguration) { val placement = placement when { placement is CallablePlacement.NoReceiver -> { - containingElement = placement.containingElement as? JetElement ?: config.currentFile + containingElement = placement.containingElement receiverClassDescriptor = with (placement.containingElement) { when (this) { is JetClassOrObject -> currentFileContext[BindingContext.CLASS, this] @@ -248,22 +248,44 @@ class CallableBuilder(val config: CallableBuilderConfiguration) { receiverClassDescriptor = placement.receiverTypeCandidate.theType.getConstructor().getDeclarationDescriptor() as? ClassDescriptor val classDeclaration = receiverClassDescriptor?.let { DescriptorToSourceUtils.classDescriptorToDeclaration(it) } - containingElement = when { - !config.isExtension && classDeclaration is JetElement -> classDeclaration - else -> config.currentFile - } + containingElement = if (!config.isExtension && classDeclaration != null) classDeclaration else config.currentFile } else -> throw IllegalArgumentException("Unexpected placement: $placement") } val receiverType = receiverClassDescriptor?.getDefaultType() - containingFile = containingElement.getContainingJetFile() - if (containingFile != config.currentFile) { + val project = config.currentFile.getProject() + + if (containingElement.getContainingFile() != config.currentFile) { NavigationUtil.activateFileWithPsiElement(containingElement) - containingFileEditor = FileEditorManager.getInstance(config.currentFile.getProject())!!.getSelectedTextEditor()!! } - else { - containingFileEditor = config.currentEditor!! + + if (containingElement is JetElement) { + jetFileToEdit = containingElement.getContainingJetFile() + if (jetFileToEdit != config.currentFile) { + containingFileEditor = FileEditorManager.getInstance(project).getSelectedTextEditor() + } + else { + containingFileEditor = config.currentEditor!! + } + dialogWithEditor = null + } else { + val dialog = object: DialogWithEditor(project, "Create from usage", "") { + override fun doOKAction() { + project.executeWriteCommand("Premature end of template") { + TemplateManagerImpl.getTemplateState(editor)?.gotoEnd(false) + } + super.doOKAction() + } + } + containingFileEditor = dialog.editor + with(containingFileEditor.getSettings()) { + setAdditionalColumnsCount(config.currentEditor!!.getSettings().getRightMargin(project)) + setAdditionalLinesCount(5) + } + jetFileToEdit = PsiDocumentManager.getInstance(project).getPsiFile(containingFileEditor.getDocument()) as JetFile + jetFileToEdit.analysisContext = config.currentFile + dialogWithEditor = dialog } val scope = getDeclarationScope() @@ -510,6 +532,8 @@ class CallableBuilder(val config: CallableBuilderConfiguration) { val declarationInPlace = when (containingElement) { is JetFile -> containingElement.add(declaration) as JetNamedDeclaration + is PsiClass -> jetFileToEdit.add(declaration) as JetNamedDeclaration + is JetClassOrObject -> { var classBody = containingElement.getBody() if (classBody == null) { @@ -779,6 +803,36 @@ class CallableBuilder(val config: CallableBuilderConfiguration) { } private fun transformToJavaMemberIfApplicable(declaration: JetNamedDeclaration): Boolean { + fun convertToJava(targetClass: PsiClass): PsiMember? { + val psiFactory = JetPsiFactory(declaration) + + psiFactory.createPackageDirectiveIfNeeded(config.currentFile.getPackageFqName())?.let { + declaration.getContainingFile().addBefore(it, null) + } + + val adjustedDeclaration = when (declaration) { + is JetNamedFunction, is JetProperty -> { + val klass = psiFactory.createClass("class Foo {}") + klass.getBody().add(declaration) + (declaration.replace(klass) as JetClass).getBody().getDeclarations().first() + } + else -> declaration + } + + return when (adjustedDeclaration) { + is JetNamedFunction -> { + createJavaMethod(adjustedDeclaration, targetClass) + } + is JetProperty -> { + createJavaField(adjustedDeclaration, targetClass) + } + is JetClass -> { + createJavaClass(adjustedDeclaration, targetClass) + } + else -> null + } + } + if (config.isExtension || receiverClassDescriptor !is JavaClassDescriptor) return false val targetClass = DescriptorToSourceUtils.classDescriptorToDeclaration(receiverClassDescriptor) as? PsiClass @@ -786,26 +840,13 @@ class CallableBuilder(val config: CallableBuilderConfiguration) { val project = declaration.getProject() - val newJavaMember: PsiMember = when (declaration) { - is JetNamedFunction -> { - createJavaMethod(declaration, targetClass) - } - is JetProperty -> { - createJavaField(declaration, targetClass) - } - is JetClass -> { - createJavaClass(declaration, targetClass) - } - else -> return false - } + val newJavaMember = convertToJava(targetClass) ?: return false val modifierList = newJavaMember.getModifierList() if (newJavaMember is PsiMethod || newJavaMember is PsiClass) { modifierList.setModifierProperty(PsiModifier.FINAL, false) } - declaration.delete() - val needStatic = when (callableInfo) { is ConstructorInfo -> with(callableInfo.classInfo) { !inner && kind != ClassKind.ENUM_ENTRY && kind != ClassKind.ENUM_CLASS @@ -881,11 +922,11 @@ class CallableBuilder(val config: CallableBuilderConfiguration) { PsiDocumentManager.getInstance(project).doPostponedOperationsAndUnblockDocument(containingFileEditor.getDocument()) val caretModel = containingFileEditor.getCaretModel() - caretModel.moveToOffset(containingFile.getNode().getStartOffset()) + caretModel.moveToOffset(jetFileToEdit.getNode().getStartOffset()) val declaration = declarationPointer.getElement() - val builder = TemplateBuilderImpl(containingFile) + val builder = TemplateBuilderImpl(jetFileToEdit) if (declaration is JetProperty) { setupValVarTemplate(builder, declaration) } @@ -918,38 +959,70 @@ class CallableBuilder(val config: CallableBuilderConfiguration) { // run the template TemplateManager.getInstance(project).startTemplate(containingFileEditor, templateImpl, object : TemplateEditingAdapter() { - override fun templateFinished(template: Template?, brokenOff: Boolean) { - PsiDocumentManager.getInstance(project).commitDocument(containingFileEditor.getDocument()) + private fun finishTemplate(brokenOff: Boolean) { + try { + PsiDocumentManager.getInstance(project).commitDocument(containingFileEditor.getDocument()) - // file templates - val newDeclaration = if (templateImpl.getSegmentsCount() > 0) { - PsiTreeUtil.findElementOfClassAtOffset(containingFile, templateImpl.getSegmentOffset(0), declaration.javaClass, false)!! - } - else declarationPointer.getElement()!! + dialogWithEditor?.close(DialogWrapper.OK_EXIT_CODE) + if (brokenOff && !ApplicationManager.getApplication().isUnitTestMode()) { + NavigationUtil.activateFileWithPsiElement(config.originalElement) + return + } - ApplicationManager.getApplication()!!.runWriteAction { // file templates - if (newDeclaration is JetNamedFunction) { - setupFunctionBody(newDeclaration) + val newDeclaration = if (templateImpl.getSegmentsCount() > 0) { + PsiTreeUtil.findElementOfClassAtOffset(jetFileToEdit, templateImpl.getSegmentOffset(0), declaration.javaClass, false)!! + } + else declarationPointer.getElement()!! + + runWriteAction { + // file templates + if (newDeclaration is JetNamedFunction) { + setupFunctionBody(newDeclaration) + } + + val callElement = config.originalElement as? JetCallElement + if (callElement != null) { + setupCallTypeArguments(callElement, expression?.currentTypeParameters ?: Collections.emptyList()) + } } - val callElement = config.originalElement as? JetCallElement - if (callElement != null) { - setupCallTypeArguments(callElement, expression?.currentTypeParameters ?: Collections.emptyList()) + // change short type names to fully qualified ones (to be shortened below) + val typeRefsToShorten = setupTypeReferencesForShortening(newDeclaration, parameterTypeExpressions) + if (!transformToJavaMemberIfApplicable(newDeclaration)) { + elementsToShorten.addAll(typeRefsToShorten) + setupEditor(newDeclaration) } } - - // change short type names to fully qualified ones (to be shortened below) - val typeRefsToShorten = setupTypeReferencesForShortening(newDeclaration, parameterTypeExpressions) - if (!transformToJavaMemberIfApplicable(newDeclaration)) { - elementsToShorten.addAll(typeRefsToShorten) - setupEditor(newDeclaration) + finally { + release() + onFinish() } + } - onFinish() + override fun templateCancelled(template: Template?) { + finishTemplate(true) + } + + override fun templateFinished(template: Template?, brokenOff: Boolean) { + finishTemplate(brokenOff) } }) } + + fun showDialogIfNeeded() { + if (!ApplicationManager.getApplication().isUnitTestMode() && dialogWithEditor != null && !released) { + dialogWithEditor.show() + } + } + + private fun release() { + if (released) return + dialogWithEditor?.let { + jetFileToEdit.delete() + released = true + } + } } } diff --git a/idea/src/org/jetbrains/kotlin/idea/util/DialogWithEditor.kt b/idea/src/org/jetbrains/kotlin/idea/util/DialogWithEditor.kt new file mode 100644 index 00000000000..871c046162e --- /dev/null +++ b/idea/src/org/jetbrains/kotlin/idea/util/DialogWithEditor.kt @@ -0,0 +1,82 @@ +/* + * Copyright 2010-2015 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.kotlin.idea.util + +import com.intellij.openapi.ui.DialogWrapper + +import javax.swing.* +import com.intellij.openapi.project.* +import com.intellij.openapi.editor.* +import java.awt.* +import com.intellij.testFramework.* +import org.jetbrains.kotlin.idea.* +import com.intellij.openapi.fileEditor.* +import com.intellij.openapi.editor.ex.* +import com.intellij.openapi.editor.colors.* +import java.awt.event.* +import com.intellij.psi.* + +public open class DialogWithEditor( + val project: Project, + title: String, + val initialText: String +) : DialogWrapper(project, true) { + val editor: Editor = createEditor() + + ;{ + init() + setTitle(title) + } + + private fun createEditor(): Editor { + val editorFactory = EditorFactory.getInstance()!! + val virtualFile = LightVirtualFile("dummy.kt", JetFileType.INSTANCE, initialText) + val document = FileDocumentManager.getInstance().getDocument(virtualFile)!! + + val editor = editorFactory.createEditor(document, project, JetFileType.INSTANCE, false) + val settings = editor.getSettings() + settings.setVirtualSpace(false) + settings.setLineMarkerAreaShown(false) + settings.setFoldingOutlineShown(false) + settings.setRightMarginShown(false) + settings.setAdditionalPageAtBottom(false) + settings.setAdditionalLinesCount(2) + settings.setAdditionalColumnsCount(12) + + assert(editor is EditorEx) + (editor as EditorEx).setEmbeddedIntoDialogWrapper(true) + + editor.getColorsScheme().setColor(EditorColors.CARET_ROW_COLOR, editor.getColorsScheme().getDefaultBackground()) + + return editor + } + + override fun createCenterPanel(): JComponent { + val panel = JPanel(BorderLayout()) + panel.add(editor.getComponent(), BorderLayout.CENTER) + return panel + } + + override fun getPreferredFocusedComponent(): JComponent { + return editor.getContentComponent() + } + + override fun dispose() { + super.dispose() + EditorFactory.getInstance()!!.releaseEditor(editor) + } +} diff --git a/idea/testData/quickfix/createFromUsage/createClass/annotationEntry/nestedJavaAnnotation.after.kt b/idea/testData/quickfix/createFromUsage/createClass/annotationEntry/nestedJavaAnnotation.after.kt index c9b3c3bdec7..7ee99cb9255 100644 --- a/idea/testData/quickfix/createFromUsage/createClass/annotationEntry/nestedJavaAnnotation.after.kt +++ b/idea/testData/quickfix/createFromUsage/createClass/annotationEntry/nestedJavaAnnotation.after.kt @@ -3,5 +3,4 @@ J.foo(1, "2") fun test() { -} - +} \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createClass/annotationEntry/nestedJavaAnnotationWithNamedArgs.after.kt b/idea/testData/quickfix/createFromUsage/createClass/annotationEntry/nestedJavaAnnotationWithNamedArgs.after.kt index e0a4660fccd..ee5ade7c445 100644 --- a/idea/testData/quickfix/createFromUsage/createClass/annotationEntry/nestedJavaAnnotationWithNamedArgs.after.kt +++ b/idea/testData/quickfix/createFromUsage/createClass/annotationEntry/nestedJavaAnnotationWithNamedArgs.after.kt @@ -3,5 +3,4 @@ J.foo(count = 1, name = "2") fun test() { -} - +} \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createClass/callExpression/callInAnnotationEntryWithJavaQualifier.after.kt b/idea/testData/quickfix/createFromUsage/createClass/callExpression/callInAnnotationEntryWithJavaQualifier.after.kt index da1912c95dd..1810781f6e5 100644 --- a/idea/testData/quickfix/createFromUsage/createClass/callExpression/callInAnnotationEntryWithJavaQualifier.after.kt +++ b/idea/testData/quickfix/createFromUsage/createClass/callExpression/callInAnnotationEntryWithJavaQualifier.after.kt @@ -4,5 +4,4 @@ [foo(1, "2", J.bar("3", 4))] fun test() { -} - +} \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createClass/callExpression/callWithExplicitParamNamesAndJavaQualifier.after.kt b/idea/testData/quickfix/createFromUsage/createClass/callExpression/callWithExplicitParamNamesAndJavaQualifier.after.kt index 60ca2e735da..3226449ffd3 100644 --- a/idea/testData/quickfix/createFromUsage/createClass/callExpression/callWithExplicitParamNamesAndJavaQualifier.after.kt +++ b/idea/testData/quickfix/createFromUsage/createClass/callExpression/callWithExplicitParamNamesAndJavaQualifier.after.kt @@ -3,5 +3,4 @@ class A(val n: Int) -fun test() = J.Foo(abc = 1, ghi = A(2), def = "s") - +fun test() = J.Foo(abc = 1, ghi = A(2), def = "s") \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createClass/callExpression/callWithGenericJavaReceiver.after.kt b/idea/testData/quickfix/createFromUsage/createClass/callExpression/callWithGenericJavaReceiver.after.kt index a3707445e7f..78a9c9da881 100644 --- a/idea/testData/quickfix/createFromUsage/createClass/callExpression/callWithGenericJavaReceiver.after.kt +++ b/idea/testData/quickfix/createFromUsage/createClass/callExpression/callWithGenericJavaReceiver.after.kt @@ -3,5 +3,4 @@ fun test(u: U) { val a = J(u).Foo(u) -} - +} \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createClass/callExpression/callWithJavaClassQualifier.after.kt b/idea/testData/quickfix/createFromUsage/createClass/callExpression/callWithJavaClassQualifier.after.kt index 126bc831b54..5b86ac6f8ea 100644 --- a/idea/testData/quickfix/createFromUsage/createClass/callExpression/callWithJavaClassQualifier.after.kt +++ b/idea/testData/quickfix/createFromUsage/createClass/callExpression/callWithJavaClassQualifier.after.kt @@ -3,5 +3,4 @@ fun test() { val a = J.Foo(2) -} - +} \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createClass/callExpression/callWithJavaClassReceiver.after.kt b/idea/testData/quickfix/createFromUsage/createClass/callExpression/callWithJavaClassReceiver.after.kt index 95347131680..be137402b0f 100644 --- a/idea/testData/quickfix/createFromUsage/createClass/callExpression/callWithJavaClassReceiver.after.kt +++ b/idea/testData/quickfix/createFromUsage/createClass/callExpression/callWithJavaClassReceiver.after.kt @@ -3,5 +3,4 @@ fun test() { val a = J().Foo(2) -} - +} \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createClass/callExpression/callWithJavaQualifierInMemberValDelegate.after.kt b/idea/testData/quickfix/createFromUsage/createClass/callExpression/callWithJavaQualifierInMemberValDelegate.after.kt index 12f4e60b4d2..7a05209f9d6 100644 --- a/idea/testData/quickfix/createFromUsage/createClass/callExpression/callWithJavaQualifierInMemberValDelegate.after.kt +++ b/idea/testData/quickfix/createFromUsage/createClass/callExpression/callWithJavaQualifierInMemberValDelegate.after.kt @@ -7,4 +7,3 @@ open class B class A(val t: T) { val x: B by J.Foo(t, "") } - diff --git a/idea/testData/quickfix/createFromUsage/createClass/callExpression/callWithSuperclassAndJavaReceiverNoConstructorParams.after.kt b/idea/testData/quickfix/createFromUsage/createClass/callExpression/callWithSuperclassAndJavaReceiverNoConstructorParams.after.kt index 8a01d7e8f7c..c129a6e11f2 100644 --- a/idea/testData/quickfix/createFromUsage/createClass/callExpression/callWithSuperclassAndJavaReceiverNoConstructorParams.after.kt +++ b/idea/testData/quickfix/createFromUsage/createClass/callExpression/callWithSuperclassAndJavaReceiverNoConstructorParams.after.kt @@ -3,5 +3,4 @@ open class A -fun test(): A = J.Foo(2, "2") - +fun test(): A = J.Foo(2, "2") \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createClass/callExpression/callWithSuperclassConstructorParamsAndJavaReceiver.after.kt b/idea/testData/quickfix/createFromUsage/createClass/callExpression/callWithSuperclassConstructorParamsAndJavaReceiver.after.kt index 53a956154bf..2eda35aca5f 100644 --- a/idea/testData/quickfix/createFromUsage/createClass/callExpression/callWithSuperclassConstructorParamsAndJavaReceiver.after.kt +++ b/idea/testData/quickfix/createFromUsage/createClass/callExpression/callWithSuperclassConstructorParamsAndJavaReceiver.after.kt @@ -3,5 +3,4 @@ open class A(val n: Int) -fun test(): A = J.Foo(2, "2") - +fun test(): A = J.Foo(2, "2") \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createClass/callExpression/callWithSupertraitAndJavaReceiver.after.kt b/idea/testData/quickfix/createFromUsage/createClass/callExpression/callWithSupertraitAndJavaReceiver.after.kt index a088cbcaef1..9aa72e47b88 100644 --- a/idea/testData/quickfix/createFromUsage/createClass/callExpression/callWithSupertraitAndJavaReceiver.after.kt +++ b/idea/testData/quickfix/createFromUsage/createClass/callExpression/callWithSupertraitAndJavaReceiver.after.kt @@ -3,5 +3,4 @@ trait T -fun test(): T = J.Foo(2, "2") - +fun test(): T = J.Foo(2, "2") \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createClass/callExpression/typeArguments/javaClassMember.after.kt b/idea/testData/quickfix/createFromUsage/createClass/callExpression/typeArguments/javaClassMember.after.kt index b5ab0300d0a..bf7e8450e47 100644 --- a/idea/testData/quickfix/createFromUsage/createClass/callExpression/typeArguments/javaClassMember.after.kt +++ b/idea/testData/quickfix/createFromUsage/createClass/callExpression/typeArguments/javaClassMember.after.kt @@ -3,5 +3,4 @@ class A(val b: B) { fun test() = B.Foo(2, "2") -} - +} \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createClass/callExpression/typeArguments/javaClassMemberInner.after.kt b/idea/testData/quickfix/createFromUsage/createClass/callExpression/typeArguments/javaClassMemberInner.after.kt index b32b3747174..7b943cf1b8f 100644 --- a/idea/testData/quickfix/createFromUsage/createClass/callExpression/typeArguments/javaClassMemberInner.after.kt +++ b/idea/testData/quickfix/createFromUsage/createClass/callExpression/typeArguments/javaClassMemberInner.after.kt @@ -3,5 +3,4 @@ class A(val b: B) { fun test() = b.Foo(2, "2") -} - +} \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createClass/callExpression/typeArguments/javaClassMemberInnerPartialSubstitution.after.kt b/idea/testData/quickfix/createFromUsage/createClass/callExpression/typeArguments/javaClassMemberInnerPartialSubstitution.after.kt index 29122cc564a..0e52c1210f0 100644 --- a/idea/testData/quickfix/createFromUsage/createClass/callExpression/typeArguments/javaClassMemberInnerPartialSubstitution.after.kt +++ b/idea/testData/quickfix/createFromUsage/createClass/callExpression/typeArguments/javaClassMemberInnerPartialSubstitution.after.kt @@ -3,5 +3,4 @@ class A(val b: B) { fun test() = b.Foo(2, "2") -} - +} \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createClass/callExpression/typeArguments/javaClassMemberInnerWithReceiverArg.after.kt b/idea/testData/quickfix/createFromUsage/createClass/callExpression/typeArguments/javaClassMemberInnerWithReceiverArg.after.kt index 598dcc82da3..2890fa4f9e3 100644 --- a/idea/testData/quickfix/createFromUsage/createClass/callExpression/typeArguments/javaClassMemberInnerWithReceiverArg.after.kt +++ b/idea/testData/quickfix/createFromUsage/createClass/callExpression/typeArguments/javaClassMemberInnerWithReceiverArg.after.kt @@ -3,5 +3,4 @@ class A(val b: B) { fun test() = b.Foo(2, "2") -} - +} \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createClass/callExpression/typeArguments/javaClassMemberPartialSubstitution.after.kt b/idea/testData/quickfix/createFromUsage/createClass/callExpression/typeArguments/javaClassMemberPartialSubstitution.after.kt index 8abe40641b1..d56d3fce959 100644 --- a/idea/testData/quickfix/createFromUsage/createClass/callExpression/typeArguments/javaClassMemberPartialSubstitution.after.kt +++ b/idea/testData/quickfix/createFromUsage/createClass/callExpression/typeArguments/javaClassMemberPartialSubstitution.after.kt @@ -3,5 +3,4 @@ class A(val b: B) { fun test() = B.Foo(2, "2") -} - +} \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createClass/delegationSpecifier/delegatorToNestedJavaSupercall.after.kt b/idea/testData/quickfix/createFromUsage/createClass/delegationSpecifier/delegatorToNestedJavaSupercall.after.kt index eb8de1bb97e..11e260c2a1f 100644 --- a/idea/testData/quickfix/createFromUsage/createClass/delegationSpecifier/delegatorToNestedJavaSupercall.after.kt +++ b/idea/testData/quickfix/createFromUsage/createClass/delegationSpecifier/delegatorToNestedJavaSupercall.after.kt @@ -6,5 +6,4 @@ class B { class Foo: J.A(1, "2", B()) { -} - +} \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createClass/delegationSpecifier/delegatorToNestedJavaSupercallWithParamNames.after.kt b/idea/testData/quickfix/createFromUsage/createClass/delegationSpecifier/delegatorToNestedJavaSupercallWithParamNames.after.kt index 2914265f40d..cfda189fa52 100644 --- a/idea/testData/quickfix/createFromUsage/createClass/delegationSpecifier/delegatorToNestedJavaSupercallWithParamNames.after.kt +++ b/idea/testData/quickfix/createFromUsage/createClass/delegationSpecifier/delegatorToNestedJavaSupercallWithParamNames.after.kt @@ -6,5 +6,4 @@ class B { class Foo: J.A(abc = 1, ghi = "2", def = B()) { -} - +} \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createClass/delegationSpecifier/traitDelegatorToNestedJavaSuperclass.after.kt b/idea/testData/quickfix/createFromUsage/createClass/delegationSpecifier/traitDelegatorToNestedJavaSuperclass.after.kt index a681bf35d83..721e5d294c3 100644 --- a/idea/testData/quickfix/createFromUsage/createClass/delegationSpecifier/traitDelegatorToNestedJavaSuperclass.after.kt +++ b/idea/testData/quickfix/createFromUsage/createClass/delegationSpecifier/traitDelegatorToNestedJavaSuperclass.after.kt @@ -2,5 +2,4 @@ // ERROR: Unresolved reference: A class Foo: J.A { -} - +} \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createClass/importDirective/annotationWithJavaQualifier.after.kt b/idea/testData/quickfix/createFromUsage/createClass/importDirective/annotationWithJavaQualifier.after.kt index 171c56c0e0e..88b71bff12d 100644 --- a/idea/testData/quickfix/createFromUsage/createClass/importDirective/annotationWithJavaQualifier.after.kt +++ b/idea/testData/quickfix/createFromUsage/createClass/importDirective/annotationWithJavaQualifier.after.kt @@ -4,5 +4,4 @@ import J.A class X { -} - +} \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createClass/importDirective/classWithJavaQualifier.after.kt b/idea/testData/quickfix/createFromUsage/createClass/importDirective/classWithJavaQualifier.after.kt index 2634d76ae14..3c36b591dc8 100644 --- a/idea/testData/quickfix/createFromUsage/createClass/importDirective/classWithJavaQualifier.after.kt +++ b/idea/testData/quickfix/createFromUsage/createClass/importDirective/classWithJavaQualifier.after.kt @@ -4,5 +4,4 @@ import J.A class X { -} - +} \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createClass/importDirective/enumWithJavaQualifier.after.kt b/idea/testData/quickfix/createFromUsage/createClass/importDirective/enumWithJavaQualifier.after.kt index 66052afd1b5..656b9bb13b4 100644 --- a/idea/testData/quickfix/createFromUsage/createClass/importDirective/enumWithJavaQualifier.after.kt +++ b/idea/testData/quickfix/createFromUsage/createClass/importDirective/enumWithJavaQualifier.after.kt @@ -4,5 +4,4 @@ import J.A class X { -} - +} \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createClass/importDirective/traitWithJavaQualifier.after.kt b/idea/testData/quickfix/createFromUsage/createClass/importDirective/traitWithJavaQualifier.after.kt index 8bab38e77b7..fdd8d88b5d5 100644 --- a/idea/testData/quickfix/createFromUsage/createClass/importDirective/traitWithJavaQualifier.after.kt +++ b/idea/testData/quickfix/createFromUsage/createClass/importDirective/traitWithJavaQualifier.after.kt @@ -4,5 +4,4 @@ import J.A class X { -} - +} \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createClass/referenceExpression/classByNestedJavaQualifier.after.kt b/idea/testData/quickfix/createFromUsage/createClass/referenceExpression/classByNestedJavaQualifier.after.kt index f195dcf89f1..266f33b9beb 100644 --- a/idea/testData/quickfix/createFromUsage/createClass/referenceExpression/classByNestedJavaQualifier.after.kt +++ b/idea/testData/quickfix/createFromUsage/createClass/referenceExpression/classByNestedJavaQualifier.after.kt @@ -1,4 +1,3 @@ // "Create class 'A'" "true" // ERROR: Unresolved reference: A fun foo() = J.A.B - diff --git a/idea/testData/quickfix/createFromUsage/createClass/referenceExpression/enumByNestedJavaQualifier.after.kt b/idea/testData/quickfix/createFromUsage/createClass/referenceExpression/enumByNestedJavaQualifier.after.kt index 2df320b2a06..c3876d55268 100644 --- a/idea/testData/quickfix/createFromUsage/createClass/referenceExpression/enumByNestedJavaQualifier.after.kt +++ b/idea/testData/quickfix/createFromUsage/createClass/referenceExpression/enumByNestedJavaQualifier.after.kt @@ -1,4 +1,3 @@ // "Create enum 'A'" "true" // ERROR: Unresolved reference: A fun foo() = J.A.B - diff --git a/idea/testData/quickfix/createFromUsage/createClass/referenceExpression/traitByNestedJavaQualifier.after.kt b/idea/testData/quickfix/createFromUsage/createClass/referenceExpression/traitByNestedJavaQualifier.after.kt index 2054be2aa12..f3442cedc89 100644 --- a/idea/testData/quickfix/createFromUsage/createClass/referenceExpression/traitByNestedJavaQualifier.after.kt +++ b/idea/testData/quickfix/createFromUsage/createClass/referenceExpression/traitByNestedJavaQualifier.after.kt @@ -1,4 +1,3 @@ // "Create trait 'A'" "true" // ERROR: Unresolved reference: A fun foo() = J.A.B - diff --git a/idea/testData/quickfix/createFromUsage/createClass/typeReference/annotationJavaTypeReceiver.after.kt b/idea/testData/quickfix/createFromUsage/createClass/typeReference/annotationJavaTypeReceiver.after.kt index b73e0d031c6..84f27aca5a6 100644 --- a/idea/testData/quickfix/createFromUsage/createClass/typeReference/annotationJavaTypeReceiver.after.kt +++ b/idea/testData/quickfix/createFromUsage/createClass/typeReference/annotationJavaTypeReceiver.after.kt @@ -1,4 +1,3 @@ // "Create annotation 'A'" "true" // ERROR: Unresolved reference: A -fun foo(): J.A = throw Throwable("") - +fun foo(): J.A = throw Throwable("") \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createClass/typeReference/classJavaTypeReceiver.after.kt b/idea/testData/quickfix/createFromUsage/createClass/typeReference/classJavaTypeReceiver.after.kt index 6153fb0c1da..e7abceb311a 100644 --- a/idea/testData/quickfix/createFromUsage/createClass/typeReference/classJavaTypeReceiver.after.kt +++ b/idea/testData/quickfix/createFromUsage/createClass/typeReference/classJavaTypeReceiver.after.kt @@ -1,4 +1,3 @@ // "Create class 'A'" "true" // ERROR: Unresolved reference: A -fun foo(): J.A = throw Throwable("") - +fun foo(): J.A = throw Throwable("") \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createClass/typeReference/enumJavaTypeReceiver.after.kt b/idea/testData/quickfix/createFromUsage/createClass/typeReference/enumJavaTypeReceiver.after.kt index 4ab446e5365..c844d3f279a 100644 --- a/idea/testData/quickfix/createFromUsage/createClass/typeReference/enumJavaTypeReceiver.after.kt +++ b/idea/testData/quickfix/createFromUsage/createClass/typeReference/enumJavaTypeReceiver.after.kt @@ -1,4 +1,3 @@ // "Create enum 'A'" "true" // ERROR: Unresolved reference: A -fun foo(): J.A = throw Throwable("") - +fun foo(): J.A = throw Throwable("") \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createClass/typeReference/traitJavaTypeReceiver.after.kt b/idea/testData/quickfix/createFromUsage/createClass/typeReference/traitJavaTypeReceiver.after.kt index 573ff7fcf07..cae3116a795 100644 --- a/idea/testData/quickfix/createFromUsage/createClass/typeReference/traitJavaTypeReceiver.after.kt +++ b/idea/testData/quickfix/createFromUsage/createClass/typeReference/traitJavaTypeReceiver.after.kt @@ -1,4 +1,3 @@ // "Create trait 'A'" "true" // ERROR: Unresolved reference: A -fun foo(): J.A = throw Throwable("") - +fun foo(): J.A = throw Throwable("") \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createFunction/call/funOnJavaInterface.after.kt b/idea/testData/quickfix/createFromUsage/createFunction/call/funOnJavaInterface.after.kt index 3165148c7be..2093e112694 100644 --- a/idea/testData/quickfix/createFromUsage/createFunction/call/funOnJavaInterface.after.kt +++ b/idea/testData/quickfix/createFromUsage/createFunction/call/funOnJavaInterface.after.kt @@ -3,5 +3,4 @@ fun test(a: A): Int? { return a.foo(1, "2") -} - +} \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createFunction/call/funOnJavaType.after.kt b/idea/testData/quickfix/createFromUsage/createFunction/call/funOnJavaType.after.kt index d0ceab6ef7b..3ffed58543e 100644 --- a/idea/testData/quickfix/createFromUsage/createFunction/call/funOnJavaType.after.kt +++ b/idea/testData/quickfix/createFromUsage/createFunction/call/funOnJavaType.after.kt @@ -3,5 +3,4 @@ fun test(): Int? { return A().foo(1, "2") -} - +} \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createFunction/call/genericFunOnJavaType.after.kt b/idea/testData/quickfix/createFromUsage/createFunction/call/genericFunOnJavaType.after.kt index d4e1910e254..c0cd8e07eaf 100644 --- a/idea/testData/quickfix/createFromUsage/createFunction/call/genericFunOnJavaType.after.kt +++ b/idea/testData/quickfix/createFromUsage/createFunction/call/genericFunOnJavaType.after.kt @@ -3,5 +3,4 @@ fun test(): Int { return A().foo(1, "2") -} - +} \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createFunction/call/staticFunOnJavaClass.before.Main.kt b/idea/testData/quickfix/createFromUsage/createFunction/call/staticFunOnJavaClass.before.Main.kt index 9bd29e10e87..70c9df19138 100644 --- a/idea/testData/quickfix/createFromUsage/createFunction/call/staticFunOnJavaClass.before.Main.kt +++ b/idea/testData/quickfix/createFromUsage/createFunction/call/staticFunOnJavaClass.before.Main.kt @@ -4,3 +4,4 @@ fun test() { val a: Int = J.foo("1", 2) } + diff --git a/idea/testData/quickfix/createFromUsage/createFunction/call/typeArguments/javaClassMemberWithReceiverArg.after.data.Sample.java b/idea/testData/quickfix/createFromUsage/createFunction/call/typeArguments/javaClassMemberWithReceiverArg.after.data.Sample.java index cbd98d5a721..9269545c4fc 100644 --- a/idea/testData/quickfix/createFromUsage/createFunction/call/typeArguments/javaClassMemberWithReceiverArg.after.data.Sample.java +++ b/idea/testData/quickfix/createFromUsage/createFunction/call/typeArguments/javaClassMemberWithReceiverArg.after.data.Sample.java @@ -1,7 +1,7 @@ class B{ final T t; - public U foo(V v, W w) { + public U foo(U u, V v) { return null; } } \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createVariable/property/staticValOnJavaClass.before.Main.kt b/idea/testData/quickfix/createFromUsage/createVariable/property/staticValOnJavaClass.before.Main.kt index 349980d8d22..52aa478b60a 100644 --- a/idea/testData/quickfix/createFromUsage/createVariable/property/staticValOnJavaClass.before.Main.kt +++ b/idea/testData/quickfix/createFromUsage/createVariable/property/staticValOnJavaClass.before.Main.kt @@ -4,3 +4,4 @@ fun test() { val a: Int = J.foo } + diff --git a/idea/testData/quickfix/createFromUsage/createVariable/property/staticValOnJavaInterface.before.Main.kt b/idea/testData/quickfix/createFromUsage/createVariable/property/staticValOnJavaInterface.before.Main.kt index 349980d8d22..52aa478b60a 100644 --- a/idea/testData/quickfix/createFromUsage/createVariable/property/staticValOnJavaInterface.before.Main.kt +++ b/idea/testData/quickfix/createFromUsage/createVariable/property/staticValOnJavaInterface.before.Main.kt @@ -4,3 +4,4 @@ fun test() { val a: Int = J.foo } + diff --git a/idea/testData/quickfix/createFromUsage/createVariable/property/valOnJavaType.after.kt b/idea/testData/quickfix/createFromUsage/createVariable/property/valOnJavaType.after.kt index 54f47725fa9..bf4722f974c 100644 --- a/idea/testData/quickfix/createFromUsage/createVariable/property/valOnJavaType.after.kt +++ b/idea/testData/quickfix/createFromUsage/createVariable/property/valOnJavaType.after.kt @@ -3,5 +3,4 @@ fun test(): String? { return A().foo -} - +} \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createVariable/property/varOnJavaType.after.kt b/idea/testData/quickfix/createFromUsage/createVariable/property/varOnJavaType.after.kt index 2fd5e6c8810..70e18b70a1c 100644 --- a/idea/testData/quickfix/createFromUsage/createVariable/property/varOnJavaType.after.kt +++ b/idea/testData/quickfix/createFromUsage/createVariable/property/varOnJavaType.after.kt @@ -3,5 +3,4 @@ fun test() { A().foo = "" -} - +} \ No newline at end of file