diff --git a/idea/testData/copyPaste/conversion/SeveralMethodsSample.expected.kt.as36 b/idea/testData/copyPaste/conversion/SeveralMethodsSample.expected.kt.as36 new file mode 100644 index 00000000000..550aadfcec2 --- /dev/null +++ b/idea/testData/copyPaste/conversion/SeveralMethodsSample.expected.kt.as36 @@ -0,0 +1,45 @@ +class A { + fun someOther() = false + + private fun formatElement(element: PsiElement): String { + var element = element + element = JetPsiUtil.ascendIfPropertyAccessor(element) + if (element is JetNamedFunction || element is JetProperty) { + val bindingContext = + AnalyzerFacadeWithCache.analyzeFileWithCache(element.getContainingJetFile()) + .getBindingContext() + + val declarationDescriptor = + bindingContext.get(BindingContext.DECLARATION_TO_DESCRIPTOR, element) + if (declarationDescriptor is CallableMemberDescriptor) { + val containingDescriptor = declarationDescriptor.getContainingDeclaration() + if (containingDescriptor is ClassDescriptor) { + return JetBundle.message( + "override.declaration.x.in.y", + DescriptorRenderer.COMPACT.render(declarationDescriptor), + IdeDescriptorRenderers.SOURCE_CODE_SHORT_NAMES_NO_ANNOTATIONS.render( + containingDescriptor + ) + ) + } + } + } + + assert(element is PsiMethod) { "Method accepts only kotlin functions/properties and java methods, but '" + element.getText() + "' was found" } + return JetRefactoringUtil.formatPsiMethod(element as PsiMethod, true, false) + } + + protected fun getDimensionServiceKey(): String { + return "#org.jetbrains.kotlin.idea.refactoring.safeDelete.KotlinOverridingDialog" + } + + fun getSelected(): ArrayList { + val result = ArrayList() + for (i in 0 until myChecked.length) { + if (myChecked[i]) { + result.add(myOverridingMethods.get(i)) + } + } + return result + } +} \ No newline at end of file diff --git a/idea/testData/copyPaste/plainTextConversion/ImportResolve.expected.kt.as36 b/idea/testData/copyPaste/plainTextConversion/ImportResolve.expected.kt.as36 new file mode 100644 index 00000000000..9dced4fc00d --- /dev/null +++ b/idea/testData/copyPaste/plainTextConversion/ImportResolve.expected.kt.as36 @@ -0,0 +1,35 @@ +import test.ToBeImportedJava.staticMethod +import test.ToBeImportedJava.TO_BE_IMPORTED_CONST +import test.ToBeImportedJava +import test.ToBeImportedKotlin +import java.util.HashMap +import java.util.ArrayList + +class Target { + var listOfPlatformType: List = ArrayList() + + var unresolved: UnresolvedInterface = + UnresolvedImplementation() // Should not add import + + var hashMapOfNotImported: Map = HashMap() + + fun acceptKotlinClass(tbi: ToBeImportedKotlin) { + + } + + fun acceptJavaClass(tbi: ToBeImportedJava) { + + } + + var ambiguousKotlin: IAmbiguousKotlin = + AmbiguousKotlin() // Should not add import in case of 2 declarations in Kotlin + var ambiguous: IAmbiguous = + Ambiguous() // Should not add import in case of ambiguous declarations in Kotlin and in Java + var ambiguousJava: IAmbiguousJava = + AmbiguousJava() // Should not add import in case of 2 declarations in Java + + fun workWithStatics() { + val a = TO_BE_IMPORTED_CONST + staticMethod() + } +} \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/collections/convertCallChainIntoSequence/termination/mapIndexedTo.kt.after.as36 b/idea/testData/inspectionsLocal/collections/convertCallChainIntoSequence/termination/mapIndexedTo.kt.after.as36 new file mode 100644 index 00000000000..1f924fd18df --- /dev/null +++ b/idea/testData/inspectionsLocal/collections/convertCallChainIntoSequence/termination/mapIndexedTo.kt.after.as36 @@ -0,0 +1,6 @@ +// WITH_RUNTIME + +fun test(list: List) { + val mapIndexedTo: MutableList = list.asSequence().filter { it > 1 } + .mapIndexedTo(mutableListOf()) { index, i -> i } +} \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/collections/convertCallChainIntoSequence/termination/unzip.kt.after.as36 b/idea/testData/inspectionsLocal/collections/convertCallChainIntoSequence/termination/unzip.kt.after.as36 new file mode 100644 index 00000000000..a45c2f412c5 --- /dev/null +++ b/idea/testData/inspectionsLocal/collections/convertCallChainIntoSequence/termination/unzip.kt.after.as36 @@ -0,0 +1,6 @@ +// WITH_RUNTIME + +fun test() { + val pair: Pair, List> = listOf(1 to 2, 3 to 4).asSequence().filter { it.first > 1 } + .filter { it.second > 2 }.unzip() +} \ No newline at end of file diff --git a/idea/testData/intentions/convertSecondaryConstructorToPrimary/defaultValueChain.kt.after.as36 b/idea/testData/intentions/convertSecondaryConstructorToPrimary/defaultValueChain.kt.after.as36 new file mode 100644 index 00000000000..aa4d535196e --- /dev/null +++ b/idea/testData/intentions/convertSecondaryConstructorToPrimary/defaultValueChain.kt.after.as36 @@ -0,0 +1,9 @@ +class DefaultValueChain( + val x1: Int, + x2: Int = x1, + val x3: Int = x2, + x4: Int = x3, + val x5: Int = x4 +) { + +} diff --git a/idea/testData/intentions/loopToCallChain/firstOrNull/KT14292.kt.after.as36 b/idea/testData/intentions/loopToCallChain/firstOrNull/KT14292.kt.after.as36 new file mode 100644 index 00000000000..40feaa94f0c --- /dev/null +++ b/idea/testData/intentions/loopToCallChain/firstOrNull/KT14292.kt.after.as36 @@ -0,0 +1,12 @@ +// WITH_RUNTIME +// INTENTION_TEXT: "Replace with 'firstOrNull{}'" +// IS_APPLICABLE_2: false + +fun getFirstValue() = "value" + +fun foo(list: List): String? { + val value = getFirstValue() + val found: String? = + list.firstOrNull { it != null && !it.startsWith("IMG:") && it.contains(value) } + return found +} \ No newline at end of file diff --git a/idea/testData/intentions/movePropertyToConstructor/annotationTarget.kt.after.as36 b/idea/testData/intentions/movePropertyToConstructor/annotationTarget.kt.after.as36 new file mode 100644 index 00000000000..c36997c80f1 --- /dev/null +++ b/idea/testData/intentions/movePropertyToConstructor/annotationTarget.kt.after.as36 @@ -0,0 +1,21 @@ +annotation class Ann1(val i: Int, val j: Int) + +@Target(AnnotationTarget.PROPERTY) +annotation class Ann2(val i: Int, val j: Int) + +@Target(AnnotationTarget.FIELD) +annotation class Ann3(val i: Int, val j: Int) + +@Target(AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.FIELD, AnnotationTarget.PROPERTY) +annotation class Ann4(val i: Int, val j: Int) + +@Target(AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.FIELD) +annotation class Ann5(val i: Int, val j: Int) + +class Test( + @get:Ann1(0, 0) @property:Ann1(1, 11) @Ann2(2, 22) @Ann3(3, 33) @property:Ann4( + 4, + 44 + ) @field:Ann5(5, 55) val foo: String = "" +) { +} \ No newline at end of file diff --git a/idea/testData/intentions/movePropertyToConstructor/annotationWithUseSite.kt.after.as36 b/idea/testData/intentions/movePropertyToConstructor/annotationWithUseSite.kt.after.as36 new file mode 100644 index 00000000000..995c433a5a5 --- /dev/null +++ b/idea/testData/intentions/movePropertyToConstructor/annotationWithUseSite.kt.after.as36 @@ -0,0 +1,11 @@ +annotation class Annotation1(val a: Int = 0) +annotation class Annotation2(val a: Int = 0) +annotation class Annotation3(val a: Int = 0) + + +class TestClass( + private @property:Annotation1(42) @field:Annotation2(42) @Annotation1(42) @Annotation3( + 42 + ) val text: String = "LoremIpsum" +) { +} \ No newline at end of file diff --git a/idea/testData/multiModuleQuickFix/createActual/annotation/jvm/Ann.kt.after.as36 b/idea/testData/multiModuleQuickFix/createActual/annotation/jvm/Ann.kt.after.as36 new file mode 100644 index 00000000000..1bffbc474a6 --- /dev/null +++ b/idea/testData/multiModuleQuickFix/createActual/annotation/jvm/Ann.kt.after.as36 @@ -0,0 +1,5 @@ +// Ann: to be implemented +actual annotation class Ann actual constructor( + actual val x: Int, + actual val y: String +) \ No newline at end of file diff --git a/idea/testData/quickfix/migration/conflictingExtension/markHiddenAndDeprecated.kt.after.as36 b/idea/testData/quickfix/migration/conflictingExtension/markHiddenAndDeprecated.kt.after.as36 new file mode 100644 index 00000000000..3f17887f36d --- /dev/null +++ b/idea/testData/quickfix/migration/conflictingExtension/markHiddenAndDeprecated.kt.after.as36 @@ -0,0 +1,10 @@ +// "Mark as @Deprecated(..., level = DeprecationLevel.HIDDEN)" "true" +import java.io.File + +@Deprecated( + "Is replaced with automatic synthetic extension", + ReplaceWith("name"), + level = DeprecationLevel.HIDDEN +) +val File.name: String + get() = getName() \ No newline at end of file diff --git a/idea/testData/refactoring/extractFunction/controlFlow/outputValues/outputValuesWithExpression.kt.after.as36 b/idea/testData/refactoring/extractFunction/controlFlow/outputValues/outputValuesWithExpression.kt.after.as36 new file mode 100644 index 00000000000..bf1cebe9e4e --- /dev/null +++ b/idea/testData/refactoring/extractFunction/controlFlow/outputValues/outputValuesWithExpression.kt.after.as36 @@ -0,0 +1,38 @@ +// WITH_RUNTIME +// SUGGESTED_NAMES: triple, getT +// PARAM_TYPES: kotlin.Int +// PARAM_TYPES: kotlin.Int +// PARAM_TYPES: kotlin.Int +// PARAM_DESCRIPTOR: value-parameter a: kotlin.Int defined in foo +// PARAM_DESCRIPTOR: var b: kotlin.Int defined in foo +// PARAM_DESCRIPTOR: var c: kotlin.Int defined in foo +// SIBLING: +fun foo(a: Int): Int { + var b: Int = 1 + var c: Int = 2 + + val triple = triple(a, b, c) + b = triple.second + c = triple.third + val t = triple.first + println(b + c) + + return t +} + +private fun triple( + a: Int, + b: Int, + c: Int +): Triple { + var b1 = b + var c1 = c + val i = if (a > 0) { + b1 += a + c1 -= b1 + b1 + } else { + a + } + return Triple(i, b1, c1) +} \ No newline at end of file diff --git a/idea/testData/refactoring/introduceParameter/lambdaArgument.kt.after.as36 b/idea/testData/refactoring/introduceParameter/lambdaArgument.kt.after.as36 new file mode 100644 index 00000000000..0523bf603f2 --- /dev/null +++ b/idea/testData/refactoring/introduceParameter/lambdaArgument.kt.after.as36 @@ -0,0 +1,4 @@ +// WITH_RUNTIME +fun foo(list: List, function: (String) -> Boolean = { it.length > 6 }) = list.filter( + function +) \ No newline at end of file diff --git a/j2k/testData/fileOrElement/annotations/annotationInterface1.kt.as36 b/j2k/testData/fileOrElement/annotations/annotationInterface1.kt.as36 new file mode 100644 index 00000000000..aa307375f16 --- /dev/null +++ b/j2k/testData/fileOrElement/annotations/annotationInterface1.kt.as36 @@ -0,0 +1,18 @@ +internal annotation class Anon( + val stringArray: Array, val intArray: IntArray, // string + val string: String +) + +@Anon(string = "a", stringArray = ["a", "b"], intArray = [1, 2]) +@Target(AnnotationTarget.CONSTRUCTOR, AnnotationTarget.FIELD) +internal annotation class I + +@Target( + AnnotationTarget.FUNCTION, + AnnotationTarget.PROPERTY_GETTER, + AnnotationTarget.PROPERTY_SETTER +) +internal annotation class J + +@Target +internal annotation class K diff --git a/j2k/testData/fileOrElement/annotations/annotationInterface2.kt.as36 b/j2k/testData/fileOrElement/annotations/annotationInterface2.kt.as36 new file mode 100644 index 00000000000..35f8fddbfa5 --- /dev/null +++ b/j2k/testData/fileOrElement/annotations/annotationInterface2.kt.as36 @@ -0,0 +1,8 @@ +internal annotation class Anon( + val s: String = "a", + val stringArray: Array = ["a", "b"], + val intArray: IntArray +) + +@Anon(intArray = [1, 2]) +internal class A diff --git a/j2k/testData/fileOrElement/classExpression/complexExample.kt.as36 b/j2k/testData/fileOrElement/classExpression/complexExample.kt.as36 new file mode 100644 index 00000000000..3c3abb3a244 --- /dev/null +++ b/j2k/testData/fileOrElement/classExpression/complexExample.kt.as36 @@ -0,0 +1,6 @@ +val constrArgTypes = arrayOf>( + Array::class.java, + String::class.java, + Int::class.java, + Double::class.java +) \ No newline at end of file diff --git a/j2k/testData/fileOrElement/constructors/parameterDefaults1.kt.as36 b/j2k/testData/fileOrElement/constructors/parameterDefaults1.kt.as36 new file mode 100644 index 00000000000..9c2d497a879 --- /dev/null +++ b/j2k/testData/fileOrElement/constructors/parameterDefaults1.kt.as36 @@ -0,0 +1,12 @@ +package pack + +internal class C @JvmOverloads constructor( + a: Int = 0, + b: Int = 0, + c: Int = 0, + d: Int = 0, + e: Int = 0 +) { + + constructor(a: Int) : this(a, 0, 0, 0, 1) {} +} diff --git a/j2k/testData/fileOrElement/constructors/parameterDefaults2.kt.as36 b/j2k/testData/fileOrElement/constructors/parameterDefaults2.kt.as36 new file mode 100644 index 00000000000..331ba2293d2 --- /dev/null +++ b/j2k/testData/fileOrElement/constructors/parameterDefaults2.kt.as36 @@ -0,0 +1,14 @@ +package pack + +internal class C @JvmOverloads constructor( + a: Int = 0, + b: Int = 0, + c: Int = 0, + d: Int = 0, + e: Int = 0 +) { + + constructor(a1: Int, b1: Int, c1: Int) : this(a1, b1, c1, 0, 0) {} + + constructor(b: Byte) : this(b.toInt(), 0, 0, 0, 0) {} +} diff --git a/j2k/testData/fileOrElement/constructors/parameterDefaults3.kt.as36 b/j2k/testData/fileOrElement/constructors/parameterDefaults3.kt.as36 new file mode 100644 index 00000000000..53cf378f32c --- /dev/null +++ b/j2k/testData/fileOrElement/constructors/parameterDefaults3.kt.as36 @@ -0,0 +1,12 @@ +package pack + +internal class C @JvmOverloads constructor( + a: Int = 0, + b: Int = 0, + c: Int = 0, + d: Int = 0, + e: Int = 0 +) { + + constructor(a: Int, b: Int, c: Int) : this(b, a, c, 0, 0) {} +} diff --git a/j2k/testData/fileOrElement/constructors/parameterDefaults4.kt.as36 b/j2k/testData/fileOrElement/constructors/parameterDefaults4.kt.as36 new file mode 100644 index 00000000000..7686c67f033 --- /dev/null +++ b/j2k/testData/fileOrElement/constructors/parameterDefaults4.kt.as36 @@ -0,0 +1,9 @@ +package pack + +internal class C @JvmOverloads constructor( + a: Int = 1, + b: Int = 2, + c: Int = 3, + d: Int = 4, + e: Int = 5 +) diff --git a/j2k/testData/fileOrElement/constructors/parameterDefaults5.kt.as36 b/j2k/testData/fileOrElement/constructors/parameterDefaults5.kt.as36 new file mode 100644 index 00000000000..7686c67f033 --- /dev/null +++ b/j2k/testData/fileOrElement/constructors/parameterDefaults5.kt.as36 @@ -0,0 +1,9 @@ +package pack + +internal class C @JvmOverloads constructor( + a: Int = 1, + b: Int = 2, + c: Int = 3, + d: Int = 4, + e: Int = 5 +) diff --git a/j2k/testData/fileOrElement/issues/kt-14248.kt.as36 b/j2k/testData/fileOrElement/issues/kt-14248.kt.as36 new file mode 100644 index 00000000000..db868769676 --- /dev/null +++ b/j2k/testData/fileOrElement/issues/kt-14248.kt.as36 @@ -0,0 +1,6 @@ +class AppInfo( + internal var mName: String, + internal var mIcon: String, + internal var mLastUpdateTime: Long +) + diff --git a/j2k/testData/fileOrElement/mutableCollections/Iterator.kt.as36 b/j2k/testData/fileOrElement/mutableCollections/Iterator.kt.as36 new file mode 100644 index 00000000000..a4b0113d6a5 --- /dev/null +++ b/j2k/testData/fileOrElement/mutableCollections/Iterator.kt.as36 @@ -0,0 +1,23 @@ +import java.util.* + +internal class Iterator { + + var mutableMap1: MutableMap = HashMap() + var mutableMap2: MutableMap = HashMap() + + fun testFields() { + mutableMap1.values.add("") + mutableMap2.entries.iterator().remove() + } + + fun testFunctionParameters( + immutableCollection: Collection, + mutableList: MutableList + ) { + val it = immutableCollection.iterator() + while (it.hasNext()) { + it.next() + } + mutableList.listIterator().add(2) + } +} \ No newline at end of file