diff --git a/idea/src/org/jetbrains/kotlin/idea/util/ImportInsertHelperImpl.kt b/idea/src/org/jetbrains/kotlin/idea/util/ImportInsertHelperImpl.kt index 71cb007a936..f9c6571ff3b 100644 --- a/idea/src/org/jetbrains/kotlin/idea/util/ImportInsertHelperImpl.kt +++ b/idea/src/org/jetbrains/kotlin/idea/util/ImportInsertHelperImpl.kt @@ -40,9 +40,7 @@ import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.scopes.getDescriptorsFiltered import org.jetbrains.kotlin.descriptors.ClassifierDescriptor import org.jetbrains.kotlin.idea.imports.importableFqName -import java.util.LinkedHashSet import org.jetbrains.kotlin.idea.imports.importableFqNameSafe -import java.util.ArrayList import org.jetbrains.kotlin.utils.addIfNotNull import org.jetbrains.kotlin.resolve.scopes.JetScope import org.jetbrains.kotlin.descriptors.ModuleDescriptor @@ -55,6 +53,7 @@ import org.jetbrains.kotlin.idea.util.ImportInsertHelper import org.jetbrains.kotlin.idea.util.ImportInsertHelper.ImportDescriptorResult import org.jetbrains.kotlin.descriptors.CallableDescriptor import org.jetbrains.kotlin.idea.refactoring.fqName.isImported +import java.util.* public class ImportInsertHelperImpl(private val project: Project) : ImportInsertHelper() { @@ -68,7 +67,7 @@ public class ImportInsertHelperImpl(private val project: Project) : ImportInsert } } - private fun writeImportToFile(importPath: ImportPath, file: JetFile): JetImportDirective { + private fun addImport(file: JetFile, importPath: ImportPath): JetImportDirective { val psiFactory = JetPsiFactory(project) if (file is JetCodeFragment) { val newDirective = psiFactory.createImportDirective(importPath) @@ -79,21 +78,53 @@ public class ImportInsertHelperImpl(private val project: Project) : ImportInsert val importList = file.getImportList() if (importList != null) { val newDirective = psiFactory.createImportDirective(importPath) - importList.add(psiFactory.createNewLine()) - return importList.add(newDirective) as JetImportDirective + val imports = importList.getImports() + if (imports.isEmpty()) { //TODO: strange hack + importList.add(psiFactory.createNewLine()) + return importList.add(newDirective) as JetImportDirective + } + else { + val insertAfter = imports + .reverse() + .firstOrNull { + val directivePath = it.getImportPath() + directivePath != null && ImportPathComparator.compare(directivePath, importPath) <= 0 + } + return importList.addAfter(newDirective, insertAfter) as JetImportDirective + } } else { val newImportList = psiFactory.createImportDirectiveWithImportList(importPath) val packageDirective = file.getPackageDirective() - if (packageDirective == null) { - throw IllegalStateException("Scripts are not supported: " + file.getName()) - } - + ?: throw IllegalStateException("Scripts are not supported: " + file.getName()) val addedImportList = packageDirective.getParent().addAfter(newImportList, packageDirective) as JetImportList return addedImportList.getImports().single() } } + private object ImportPathComparator : Comparator { + override fun compare(import1: ImportPath, import2: ImportPath): Int { + // alias imports placed last + if (import1.hasAlias() != import2.hasAlias()) { + return if (import1.hasAlias()) +1 else -1 + } + + // standard library imports last + val stdlib1 = isJavaOrKotlinStdlibImport(import1) + val stdlib2 = isJavaOrKotlinStdlibImport(import2) + if (stdlib1 != stdlib2) { + return if (stdlib1) +1 else -1 + } + + return import1.toString().compareTo(import2.toString()) + } + + private fun isJavaOrKotlinStdlibImport(path: ImportPath): Boolean { + val s = path.getPathStr() + return s.startsWith("java.") || s.startsWith("javax.")|| s.startsWith("kotlin.") + } + } + /** * Check that import is useless. */ @@ -383,7 +414,7 @@ public class ImportInsertHelperImpl(private val project: Project) : ImportInsert } private fun addImport(fqName: FqName, allUnder: Boolean): JetImportDirective { - return writeImportToFile(ImportPath(fqName, allUnder), file) + return addImport(file, ImportPath(fqName, allUnder)) } } } diff --git a/idea/testData/addImport/ConflictingNameAppearsAndHasUsage1.kt.after b/idea/testData/addImport/ConflictingNameAppearsAndHasUsage1.kt.after index 3084aae0512..85405d40612 100644 --- a/idea/testData/addImport/ConflictingNameAppearsAndHasUsage1.kt.after +++ b/idea/testData/addImport/ConflictingNameAppearsAndHasUsage1.kt.after @@ -2,7 +2,7 @@ package p import java.sql.* -import java.util.* import java.sql.Date +import java.util.* val d = Date() diff --git a/idea/testData/addImport/ConflictingNameAppearsAndHasUsage2.kt.after b/idea/testData/addImport/ConflictingNameAppearsAndHasUsage2.kt.after index 3d0530e803f..c8e4662dc8b 100644 --- a/idea/testData/addImport/ConflictingNameAppearsAndHasUsage2.kt.after +++ b/idea/testData/addImport/ConflictingNameAppearsAndHasUsage2.kt.after @@ -2,7 +2,7 @@ package p import java.sql.* -import java.util.* import java.sql.Date +import java.util.* val d: Date? = null diff --git a/idea/testData/addImport/ConflictingNameAppearsAndHasUsage3.kt.after b/idea/testData/addImport/ConflictingNameAppearsAndHasUsage3.kt.after index 1bc47329f0e..03a9602b88e 100644 --- a/idea/testData/addImport/ConflictingNameAppearsAndHasUsage3.kt.after +++ b/idea/testData/addImport/ConflictingNameAppearsAndHasUsage3.kt.after @@ -2,7 +2,7 @@ package p import dependency.* -import java.util.* import dependency.Date +import java.util.* val d = Date(1, 2) diff --git a/idea/testData/addImport/ConflictingNameAppearsAndHasUsage4.kt.after b/idea/testData/addImport/ConflictingNameAppearsAndHasUsage4.kt.after index e713080d2ca..7611254b766 100644 --- a/idea/testData/addImport/ConflictingNameAppearsAndHasUsage4.kt.after +++ b/idea/testData/addImport/ConflictingNameAppearsAndHasUsage4.kt.after @@ -2,7 +2,7 @@ package p import dependency.* -import java.util.* import dependency.Date +import java.util.* val d = Date.VALUE diff --git a/idea/testData/addImport/ConflictingNameAppearsAndHasUsage5.kt.after b/idea/testData/addImport/ConflictingNameAppearsAndHasUsage5.kt.after index bcc5d17bf1e..987b1ac2390 100644 --- a/idea/testData/addImport/ConflictingNameAppearsAndHasUsage5.kt.after +++ b/idea/testData/addImport/ConflictingNameAppearsAndHasUsage5.kt.after @@ -2,7 +2,7 @@ package p import dependency.AClass.* -import java.util.* import dependency.AClass.Date +import java.util.* val d = Date() diff --git a/idea/testData/addImport/ConflictingNameAppearsAndHasUsage6.kt.after b/idea/testData/addImport/ConflictingNameAppearsAndHasUsage6.kt.after index 8beff2bde44..41c9370fa4f 100644 --- a/idea/testData/addImport/ConflictingNameAppearsAndHasUsage6.kt.after +++ b/idea/testData/addImport/ConflictingNameAppearsAndHasUsage6.kt.after @@ -3,7 +3,7 @@ package p import java.sql.* import dependency.Date // import of function does not affect class name conflict -import java.util.* import java.sql.Date +import java.util.* val d = Date(1) diff --git a/idea/testData/addImport/ConflictingNameNoAllUnderImport.kt.after b/idea/testData/addImport/ConflictingNameNoAllUnderImport.kt.after index 6cfec32bd13..75a30186c68 100644 --- a/idea/testData/addImport/ConflictingNameNoAllUnderImport.kt.after +++ b/idea/testData/addImport/ConflictingNameNoAllUnderImport.kt.after @@ -1,5 +1,5 @@ // IMPORT: java.sql.Date package p -import java.util.* import java.sql.Date +import java.util.* diff --git a/idea/testData/addImport/ConflictingNameNoAllUnderImport3.kt.after b/idea/testData/addImport/ConflictingNameNoAllUnderImport3.kt.after index b473b9320df..70f6d9f341d 100644 --- a/idea/testData/addImport/ConflictingNameNoAllUnderImport3.kt.after +++ b/idea/testData/addImport/ConflictingNameNoAllUnderImport3.kt.after @@ -1,6 +1,6 @@ // IMPORT: dependency.Date package p +import dependency.Date import java.util.* import java.sql.* -import dependency.Date diff --git a/idea/testData/addImport/DropExplicitImports.kt.after b/idea/testData/addImport/DropExplicitImports.kt.after index 7746d48f660..dd73768403a 100644 --- a/idea/testData/addImport/DropExplicitImports.kt.after +++ b/idea/testData/addImport/DropExplicitImports.kt.after @@ -2,10 +2,10 @@ package p import java.sql.* -import java.util.HashSet as JavaHashSet // alias import should not be dropped -import java.util.concurrent // import of package should not be dropped because packages are not imported by * import java.util.* import java.util.Date +import java.util.HashSet as JavaHashSet // alias import should not be dropped +import java.util.concurrent // import of package should not be dropped because packages are not imported by * fun foo() { val v1 = JavaHashSet() diff --git a/idea/testData/addImport/NoConflictingNameForInaccessibleClass2.kt.after b/idea/testData/addImport/NoConflictingNameForInaccessibleClass2.kt.after index c7435f6df30..1a90537f02f 100644 --- a/idea/testData/addImport/NoConflictingNameForInaccessibleClass2.kt.after +++ b/idea/testData/addImport/NoConflictingNameForInaccessibleClass2.kt.after @@ -1,7 +1,7 @@ // IMPORT: dependency.X package p -import java.util.* import dependency.* +import java.util.* val d = Date(1, 2) diff --git a/idea/testData/addImport/StdlibImportsLast.dependency.kt b/idea/testData/addImport/StdlibImportsLast.dependency.kt new file mode 100644 index 00000000000..635777ad235 --- /dev/null +++ b/idea/testData/addImport/StdlibImportsLast.dependency.kt @@ -0,0 +1,3 @@ +package xxx + +trait Dependency \ No newline at end of file diff --git a/idea/testData/addImport/StdlibImportsLast.kt b/idea/testData/addImport/StdlibImportsLast.kt new file mode 100644 index 00000000000..106762a267c --- /dev/null +++ b/idea/testData/addImport/StdlibImportsLast.kt @@ -0,0 +1,6 @@ +// IMPORT: xxx.Dependency + +import a.* +import kotlin.math.* +import java.util.* +import javax.* diff --git a/idea/testData/addImport/StdlibImportsLast.kt.after b/idea/testData/addImport/StdlibImportsLast.kt.after new file mode 100644 index 00000000000..f695229e87c --- /dev/null +++ b/idea/testData/addImport/StdlibImportsLast.kt.after @@ -0,0 +1,7 @@ +// IMPORT: xxx.Dependency + +import a.* +import xxx.* +import kotlin.math.* +import java.util.* +import javax.* diff --git a/idea/testData/codeInsight/overrideImplement/checkNotImportedTypesFromJava/foo/Impl.kt.after b/idea/testData/codeInsight/overrideImplement/checkNotImportedTypesFromJava/foo/Impl.kt.after index e1dd792cf14..7c0da59b743 100644 --- a/idea/testData/codeInsight/overrideImplement/checkNotImportedTypesFromJava/foo/Impl.kt.after +++ b/idea/testData/codeInsight/overrideImplement/checkNotImportedTypesFromJava/foo/Impl.kt.after @@ -1,8 +1,8 @@ package foo -import java.util.ArrayList -import bar.Other import bar.Bar +import bar.Other +import java.util.ArrayList class Impl: Foo() { override fun foo(list: ArrayList?, other: Other?): Bar? { diff --git a/idea/testData/completion/handlers/multifile/TopLevelFunctionImport.kt.after b/idea/testData/completion/handlers/multifile/TopLevelFunctionImport.kt.after index 698776b1568..db0b284fc4a 100644 --- a/idea/testData/completion/handlers/multifile/TopLevelFunctionImport.kt.after +++ b/idea/testData/completion/handlers/multifile/TopLevelFunctionImport.kt.after @@ -1,7 +1,7 @@ package some -import java.util.SortedSet import jettesting.data.somefun +import java.util.SortedSet fun other() { somefun() diff --git a/idea/testData/copyPaste/imports/ClassObject.expected.kt b/idea/testData/copyPaste/imports/ClassObject.expected.kt index 957044080af..d9146d8e4de 100644 --- a/idea/testData/copyPaste/imports/ClassObject.expected.kt +++ b/idea/testData/copyPaste/imports/ClassObject.expected.kt @@ -1,8 +1,8 @@ package to -import a.T import a.A import a.B +import a.T fun g(t: T): Int { g(A) diff --git a/idea/testData/copyPaste/imports/DelegatedProperty.expected.kt b/idea/testData/copyPaste/imports/DelegatedProperty.expected.kt index b2e2f048899..0465b247c8b 100644 --- a/idea/testData/copyPaste/imports/DelegatedProperty.expected.kt +++ b/idea/testData/copyPaste/imports/DelegatedProperty.expected.kt @@ -1,8 +1,8 @@ package to +import a.A import a.get import a.set -import a.A class B { var v by A() diff --git a/idea/testData/copyPaste/imports/DependencyOnKotlinLibrary.expected.kt b/idea/testData/copyPaste/imports/DependencyOnKotlinLibrary.expected.kt index cc95da25940..fef1ed20083 100644 --- a/idea/testData/copyPaste/imports/DependencyOnKotlinLibrary.expected.kt +++ b/idea/testData/copyPaste/imports/DependencyOnKotlinLibrary.expected.kt @@ -1,15 +1,15 @@ package to -import d.ext import d.A -import d.T -import d.Outer -import d.c -import d.g +import d.ClassObject +import d.E import d.O1 import d.O2 -import d.E -import d.ClassObject +import d.Outer +import d.T +import d.c +import d.ext +import d.g fun f(a: A, t: T) { g(A(c).ext()) diff --git a/idea/testData/copyPaste/imports/Extension.expected.kt b/idea/testData/copyPaste/imports/Extension.expected.kt index 939e4a37e6a..d1d88d9914e 100644 --- a/idea/testData/copyPaste/imports/Extension.expected.kt +++ b/idea/testData/copyPaste/imports/Extension.expected.kt @@ -1,8 +1,8 @@ package to import a.f -import a.p import a.g +import a.p fun foo() { 3.f() diff --git a/idea/testData/copyPaste/imports/ExtensionAsInfixOrOperator.expected.kt b/idea/testData/copyPaste/imports/ExtensionAsInfixOrOperator.expected.kt index 43d298c3727..81dd5efcf7c 100644 --- a/idea/testData/copyPaste/imports/ExtensionAsInfixOrOperator.expected.kt +++ b/idea/testData/copyPaste/imports/ExtensionAsInfixOrOperator.expected.kt @@ -1,8 +1,8 @@ package to -import a.plus -import a.infix import a.A +import a.infix +import a.plus fun f(a: A) { a + a diff --git a/idea/testData/copyPaste/imports/ExtensionConflict.expected.kt b/idea/testData/copyPaste/imports/ExtensionConflict.expected.kt index 2f47ecd7394..7b10b41d96b 100644 --- a/idea/testData/copyPaste/imports/ExtensionConflict.expected.kt +++ b/idea/testData/copyPaste/imports/ExtensionConflict.expected.kt @@ -2,10 +2,10 @@ package to import a.A import a.ext -import a.plus import a.infix import a.minus import a.p +import a.plus fun A.ext() { } diff --git a/idea/testData/copyPaste/imports/ForLoop.expected.kt b/idea/testData/copyPaste/imports/ForLoop.expected.kt index b4c72f8096b..6185b00e168 100644 --- a/idea/testData/copyPaste/imports/ForLoop.expected.kt +++ b/idea/testData/copyPaste/imports/ForLoop.expected.kt @@ -1,9 +1,9 @@ package to +import a.A +import a.hasNext import a.iterator import a.next -import a.hasNext -import a.A fun f() { for (i in A()) { diff --git a/idea/testData/copyPaste/imports/GetExpression.expected.kt b/idea/testData/copyPaste/imports/GetExpression.expected.kt index 1c997491fcc..bdf02d32907 100644 --- a/idea/testData/copyPaste/imports/GetExpression.expected.kt +++ b/idea/testData/copyPaste/imports/GetExpression.expected.kt @@ -1,7 +1,7 @@ package to -import a.get import a.A +import a.get fun f() { A()[""] diff --git a/idea/testData/copyPaste/imports/ImportDependency.expected.kt b/idea/testData/copyPaste/imports/ImportDependency.expected.kt index cc95da25940..fef1ed20083 100644 --- a/idea/testData/copyPaste/imports/ImportDependency.expected.kt +++ b/idea/testData/copyPaste/imports/ImportDependency.expected.kt @@ -1,15 +1,15 @@ package to -import d.ext import d.A -import d.T -import d.Outer -import d.c -import d.g +import d.ClassObject +import d.E import d.O1 import d.O2 -import d.E -import d.ClassObject +import d.Outer +import d.T +import d.c +import d.ext +import d.g fun f(a: A, t: T) { g(A(c).ext()) diff --git a/idea/testData/copyPaste/imports/Invoke.expected.kt b/idea/testData/copyPaste/imports/Invoke.expected.kt index 3a9d031c87e..b8601895491 100644 --- a/idea/testData/copyPaste/imports/Invoke.expected.kt +++ b/idea/testData/copyPaste/imports/Invoke.expected.kt @@ -1,7 +1,7 @@ package to -import a.invoke import a.A +import a.invoke fun f(a: A) { a() diff --git a/idea/testData/copyPaste/imports/JavaStaticViaClass.expected.kt b/idea/testData/copyPaste/imports/JavaStaticViaClass.expected.kt index 50df72ea4ca..b00bde244a5 100644 --- a/idea/testData/copyPaste/imports/JavaStaticViaClass.expected.kt +++ b/idea/testData/copyPaste/imports/JavaStaticViaClass.expected.kt @@ -1,7 +1,7 @@ package to -import a.JavaM import a.JavaF +import a.JavaM fun f() { JavaM.staticMethod() diff --git a/idea/testData/copyPaste/imports/MultiDeclaration.expected.kt b/idea/testData/copyPaste/imports/MultiDeclaration.expected.kt index cb033ab2dfa..04e928d7d22 100644 --- a/idea/testData/copyPaste/imports/MultiDeclaration.expected.kt +++ b/idea/testData/copyPaste/imports/MultiDeclaration.expected.kt @@ -1,8 +1,8 @@ package to +import a.A import a.component1 import a.component2 -import a.A fun f() { val (a, b) = A() diff --git a/idea/testData/copyPaste/imports/MultiReferencePartiallyCopied.expected.kt b/idea/testData/copyPaste/imports/MultiReferencePartiallyCopied.expected.kt index 6a9d88ec45b..20f33e8a611 100644 --- a/idea/testData/copyPaste/imports/MultiReferencePartiallyCopied.expected.kt +++ b/idea/testData/copyPaste/imports/MultiReferencePartiallyCopied.expected.kt @@ -1,9 +1,9 @@ package to -import a.next -import a.hasNext import a.A import a.B +import a.hasNext +import a.next fun A.iterator() = B() diff --git a/idea/testData/copyPaste/imports/NoImportForBuiltIns.expected.kt b/idea/testData/copyPaste/imports/NoImportForBuiltIns.expected.kt index fe9bb974f64..5f848dde305 100644 --- a/idea/testData/copyPaste/imports/NoImportForBuiltIns.expected.kt +++ b/idea/testData/copyPaste/imports/NoImportForBuiltIns.expected.kt @@ -1,6 +1,6 @@ package to -import a.d import a.b +import a.d fun f(c: IntRange) = d + b \ No newline at end of file diff --git a/idea/testData/copyPaste/imports/Object.expected.kt b/idea/testData/copyPaste/imports/Object.expected.kt index 2c8220a1065..11f3f55bd63 100644 --- a/idea/testData/copyPaste/imports/Object.expected.kt +++ b/idea/testData/copyPaste/imports/Object.expected.kt @@ -1,8 +1,8 @@ package to -import a.T import a.A import a.B +import a.T fun g(t: T) { g(A) diff --git a/idea/testData/copyPaste/imports/TopLevelProperty.expected.kt b/idea/testData/copyPaste/imports/TopLevelProperty.expected.kt index f20e12c50d9..c7d682ce47b 100644 --- a/idea/testData/copyPaste/imports/TopLevelProperty.expected.kt +++ b/idea/testData/copyPaste/imports/TopLevelProperty.expected.kt @@ -1,6 +1,6 @@ package to -import a.c import a.b +import a.c fun f() = c + b \ No newline at end of file diff --git a/idea/testData/quickfix/override/nothingToOverride/import.after.kt b/idea/testData/quickfix/override/nothingToOverride/import.after.kt index 6798d7b9cee..2f3a95a2127 100644 --- a/idea/testData/quickfix/override/nothingToOverride/import.after.kt +++ b/idea/testData/quickfix/override/nothingToOverride/import.after.kt @@ -1,7 +1,7 @@ // "Change function signature to 'fun f(a: A)'" "true" // ERROR: 'f' overrides nothing -import a.B import a.A +import a.B class BB : B() { override fun f(a: A) {} diff --git a/idea/testData/quickfix/override/nothingToOverride/twoPackages.after.kt b/idea/testData/quickfix/override/nothingToOverride/twoPackages.after.kt index 79087ff32be..4210ffe74ed 100644 --- a/idea/testData/quickfix/override/nothingToOverride/twoPackages.after.kt +++ b/idea/testData/quickfix/override/nothingToOverride/twoPackages.after.kt @@ -1,8 +1,7 @@ // "Change function signature to 'fun f(a: A)'" "true" // ERROR: 'f' overrides nothing -import a.B import a.A - +import a.B class A {} class BB : B() { override fun f(a: A) {} diff --git a/idea/testData/quickfix/typeMismatch/afterChangeFunctionLiteralParameterTypeToFunctionTypeLongNameRuntime.kt b/idea/testData/quickfix/typeMismatch/afterChangeFunctionLiteralParameterTypeToFunctionTypeLongNameRuntime.kt index 62ea2a52bc9..93e13b4bb21 100644 --- a/idea/testData/quickfix/typeMismatch/afterChangeFunctionLiteralParameterTypeToFunctionTypeLongNameRuntime.kt +++ b/idea/testData/quickfix/typeMismatch/afterChangeFunctionLiteralParameterTypeToFunctionTypeLongNameRuntime.kt @@ -1,7 +1,7 @@ // "Change type from 'String' to '(ModuleBuilder) -> Module'" "true" -import kotlin.modules.ModuleBuilder import kotlin.modules.Module +import kotlin.modules.ModuleBuilder fun foo(f: ((kotlin.modules.ModuleBuilder) -> kotlin.modules.Module) -> String) { foo { diff --git a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/_a/noImports.kt b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/_a/noImports.kt index a3dfdc079d4..6d270e9c7b9 100644 --- a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/_a/noImports.kt +++ b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/_a/noImports.kt @@ -1,8 +1,8 @@ package a -import b.test import b.TEST import b.Test +import b.test fun bar() { val t: Test = Test() diff --git a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/a/noImports.kt b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/a/noImports.kt index a3dfdc079d4..6d270e9c7b9 100644 --- a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/a/noImports.kt +++ b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/a/noImports.kt @@ -1,8 +1,8 @@ package a -import b.test import b.TEST import b.Test +import b.test fun bar() { val t: Test = Test() diff --git a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/c/noImports.kt b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/c/noImports.kt index 379acf19964..a6e4e51d96f 100644 --- a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/c/noImports.kt +++ b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/c/noImports.kt @@ -1,8 +1,8 @@ package c +import b.TEST import b.Test import b.test -import b.TEST fun bar() { val t: Test = Test() diff --git a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/c/onDemandImport.kt b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/c/onDemandImport.kt index 81c92e2533e..d66011cba0f 100644 --- a/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/c/onDemandImport.kt +++ b/idea/testData/refactoring/move/kotlin/moveFile/moveFileWithPackageRename/after/c/onDemandImport.kt @@ -1,9 +1,9 @@ package c import a.* -import b.test import b.TEST import b.Test +import b.test fun bar() { val t: Test = Test() diff --git a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/internalReferences/after/target/A.kt b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/internalReferences/after/target/A.kt index 8a61c2a9e87..eb5527b6fdc 100644 --- a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/internalReferences/after/target/A.kt +++ b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/internalReferences/after/target/A.kt @@ -1,7 +1,7 @@ package target -import library.bar import library.B +import library.bar public class A: B() { fun test() { diff --git a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/moveClassWithImportsRetained/after/first/Test.kt b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/moveClassWithImportsRetained/after/first/Test.kt index 87ac8708819..12305812d63 100644 --- a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/moveClassWithImportsRetained/after/first/Test.kt +++ b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/moveClassWithImportsRetained/after/first/Test.kt @@ -1,9 +1,9 @@ package first +import fourth.X import second.A import third.B import third.D -import fourth.X class Test { val a = A() diff --git a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/moveFunctionWithImportsRetained/after/first/test.kt b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/moveFunctionWithImportsRetained/after/first/test.kt index d9eb999e23d..f173710f753 100644 --- a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/moveFunctionWithImportsRetained/after/first/test.kt +++ b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/moveFunctionWithImportsRetained/after/first/test.kt @@ -1,9 +1,9 @@ package first +import fourth.X import second.A import third.B import third.D -import fourth.X fun test() { val a = A() diff --git a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/singletonsAndStatics/after/target/Foo.kt b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/singletonsAndStatics/after/target/Foo.kt index 57b35f3525e..545ab700bca 100644 --- a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/singletonsAndStatics/after/target/Foo.kt +++ b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/singletonsAndStatics/after/target/Foo.kt @@ -1,8 +1,8 @@ package target import library.JavaClass -import library.KtObject import library.KtClass +import library.KtObject class Foo { val jv1 = JavaClass.foo() diff --git a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/syntheticMembers/after/target/Foo.kt b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/syntheticMembers/after/target/Foo.kt index dacfb67f328..c0212ada283 100644 --- a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/syntheticMembers/after/target/Foo.kt +++ b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/syntheticMembers/after/target/Foo.kt @@ -1,8 +1,8 @@ package target import library.JavaEnum -import library.KtEnum import library.KtData +import library.KtEnum class Foo { val javaEnum = JavaEnum.values() diff --git a/idea/testData/shortenRefs/constructor/LeaveQualified.kt.after b/idea/testData/shortenRefs/constructor/LeaveQualified.kt.after index 1c28b5801d8..598f17649c7 100644 --- a/idea/testData/shortenRefs/constructor/LeaveQualified.kt.after +++ b/idea/testData/shortenRefs/constructor/LeaveQualified.kt.after @@ -1,4 +1,4 @@ -import java.util.Date import java.sql +import java.util.Date val x = sql.Date(1) diff --git a/idea/testData/shortenRefs/imports/importGlobalCallables.kt.after b/idea/testData/shortenRefs/imports/importGlobalCallables.kt.after index 07572ec3a87..5772968499b 100644 --- a/idea/testData/shortenRefs/imports/importGlobalCallables.kt.after +++ b/idea/testData/shortenRefs/imports/importGlobalCallables.kt.after @@ -1,5 +1,5 @@ -import p.globalVal import p.globalFun +import p.globalVal fun foo() { globalFun(globalVal) diff --git a/idea/testData/shortenRefs/type/FunctionType.kt.after b/idea/testData/shortenRefs/type/FunctionType.kt.after index 77bf7832303..2fa9f9b7e45 100644 --- a/idea/testData/shortenRefs/type/FunctionType.kt.after +++ b/idea/testData/shortenRefs/type/FunctionType.kt.after @@ -1,6 +1,6 @@ +import java.awt.Container import java.io.File import java.util.ArrayList -import java.awt.Container class A { var x: ((File, ArrayList) -> Container)? = null diff --git a/idea/testData/shortenRefs/type/LeaveQualified.kt.after b/idea/testData/shortenRefs/type/LeaveQualified.kt.after index db9aa1c7774..5ca06872d01 100644 --- a/idea/testData/shortenRefs/type/LeaveQualified.kt.after +++ b/idea/testData/shortenRefs/type/LeaveQualified.kt.after @@ -1,4 +1,4 @@ -import java.util.Date import java.sql +import java.util.Date class A : sql.Date diff --git a/idea/testData/shortenRefs/type/OtherClassWithThisNameImported.kt.after b/idea/testData/shortenRefs/type/OtherClassWithThisNameImported.kt.after index 48d879f0885..9a827a1069a 100644 --- a/idea/testData/shortenRefs/type/OtherClassWithThisNameImported.kt.after +++ b/idea/testData/shortenRefs/type/OtherClassWithThisNameImported.kt.after @@ -1,4 +1,4 @@ -import java.util.* import java.sql.Date +import java.util.* val v: ArrayList \ No newline at end of file diff --git a/idea/testData/shortenRefs/type/TwoClassesSameNames.kt.after b/idea/testData/shortenRefs/type/TwoClassesSameNames.kt.after index 4097b8279e5..9843a31dff8 100644 --- a/idea/testData/shortenRefs/type/TwoClassesSameNames.kt.after +++ b/idea/testData/shortenRefs/type/TwoClassesSameNames.kt.after @@ -1,6 +1,6 @@ +import java.sql import java.util.Date import java.util.HashMap -import java.sql class A { val x: HashMap diff --git a/idea/tests/org/jetbrains/kotlin/addImport/AddImportTestGenerated.java b/idea/tests/org/jetbrains/kotlin/addImport/AddImportTestGenerated.java index 922efe15bf1..d5f74dbd229 100644 --- a/idea/tests/org/jetbrains/kotlin/addImport/AddImportTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/addImport/AddImportTestGenerated.java @@ -221,4 +221,10 @@ public class AddImportTestGenerated extends AbstractAddImportTest { String fileName = JetTestUtils.navigationMetadata("idea/testData/addImport/PropertyAlreadyImported2.kt"); doTest(fileName); } + + @TestMetadata("StdlibImportsLast.kt") + public void testStdlibImportsLast() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/addImport/StdlibImportsLast.kt"); + doTest(fileName); + } }