CreateExpect: should prefer type aliases
#KT-32571 Fixed
This commit is contained in:
-2
@@ -231,13 +231,11 @@ private val EXPECT_RENDERER = OVERRIDE_RENDERER.withOptions {
|
|||||||
secondaryConstructorsAsPrimary = false
|
secondaryConstructorsAsPrimary = false
|
||||||
renderDefaultVisibility = false
|
renderDefaultVisibility = false
|
||||||
renderDefaultModality = false
|
renderDefaultModality = false
|
||||||
renderTypeExpansions = true
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private val ACTUAL_RENDERER = EXPECT_RENDERER.withOptions {
|
private val ACTUAL_RENDERER = EXPECT_RENDERER.withOptions {
|
||||||
modifiers = modifiers + ACTUAL
|
modifiers = modifiers + ACTUAL
|
||||||
actualPropertiesInPrimaryConstructor = true
|
actualPropertiesInPrimaryConstructor = true
|
||||||
renderTypeExpansions = false
|
|
||||||
renderConstructorDelegation = true
|
renderConstructorDelegation = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ import org.jetbrains.kotlin.resolve.checkers.ExpectedActualDeclarationChecker
|
|||||||
import org.jetbrains.kotlin.resolve.checkers.ExperimentalUsageChecker
|
import org.jetbrains.kotlin.resolve.checkers.ExperimentalUsageChecker
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameOrNull
|
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameOrNull
|
||||||
import org.jetbrains.kotlin.resolve.source.KotlinSourceElement
|
import org.jetbrains.kotlin.resolve.source.KotlinSourceElement
|
||||||
|
import org.jetbrains.kotlin.types.AbbreviatedType
|
||||||
import org.jetbrains.kotlin.types.KotlinType
|
import org.jetbrains.kotlin.types.KotlinType
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||||
|
|
||||||
@@ -329,4 +330,8 @@ class KotlinTypeInaccessibleException(fqNames: Collection<FqName?>) : Exception(
|
|||||||
fun KtNamedDeclaration.isAlwaysActual(): Boolean = safeAs<KtParameter>()?.parent?.parent?.safeAs<KtPrimaryConstructor>()
|
fun KtNamedDeclaration.isAlwaysActual(): Boolean = safeAs<KtParameter>()?.parent?.parent?.safeAs<KtPrimaryConstructor>()
|
||||||
?.mustHaveValOrVar() ?: false
|
?.mustHaveValOrVar() ?: false
|
||||||
|
|
||||||
val KotlinType.fqName: FqName? get() = constructor.declarationDescriptor?.fqNameOrNull()
|
val KotlinType.fqName: FqName?
|
||||||
|
get() = when (this) {
|
||||||
|
is AbbreviatedType -> abbreviation.fqName
|
||||||
|
else -> constructor.declarationDescriptor?.fqNameOrNull()
|
||||||
|
}
|
||||||
|
|||||||
+1
-1
@@ -1,3 +1,3 @@
|
|||||||
expect class SomeString
|
expect class SomeString
|
||||||
// It would be great to have SomeString in foo() below, but it's problematic
|
// It would be great to have SomeString in foo() below, but it's problematic
|
||||||
expect fun foo(): String
|
expect fun foo(): SomeString
|
||||||
Vendored
-1
@@ -1 +0,0 @@
|
|||||||
expect fun foo(): String
|
|
||||||
+1
@@ -1,4 +1,5 @@
|
|||||||
// "Create expected function in common module testModule_Common" "true"
|
// "Create expected function in common module testModule_Common" "true"
|
||||||
|
// SHOULD_FAIL_WITH: You cannot create the expect declaration from:,fun foo() = ""
|
||||||
// DISABLE-ERRORS
|
// DISABLE-ERRORS
|
||||||
|
|
||||||
typealias SomeString = String
|
typealias SomeString = String
|
||||||
|
|||||||
Vendored
-6
@@ -1,6 +0,0 @@
|
|||||||
// "Create expected function in common module testModule_Common" "true"
|
|
||||||
// DISABLE-ERRORS
|
|
||||||
|
|
||||||
typealias SomeString = String
|
|
||||||
|
|
||||||
actual fun foo(): SomeString = ""
|
|
||||||
-1
@@ -1 +0,0 @@
|
|||||||
expect fun <T> createList(): java.util.ArrayList<T>
|
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
expect val some: HashMap<Int, Int>
|
||||||
Vendored
+4
@@ -0,0 +1,4 @@
|
|||||||
|
// "Create expected property in common module proj_Common" "true"
|
||||||
|
// DISABLE-ERRORS
|
||||||
|
|
||||||
|
actual val some<caret>: HashMap<Int, Int> = TODO()
|
||||||
Vendored
+4
@@ -0,0 +1,4 @@
|
|||||||
|
// "Create expected property in common module proj_Common" "true"
|
||||||
|
// DISABLE-ERRORS
|
||||||
|
|
||||||
|
actual val some: HashMap<Int, Int> = TODO()
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
expect class <caret>A : HashMap<Int, Int>
|
||||||
Vendored
+4
@@ -0,0 +1,4 @@
|
|||||||
|
// "Create expected class in common module proj_Common" "true"
|
||||||
|
// DISABLE-ERRORS
|
||||||
|
|
||||||
|
actual class <caret>A : HashMap<Int, Int>()
|
||||||
@@ -1,5 +1,4 @@
|
|||||||
expect class My {
|
expect class My {
|
||||||
fun foo(): Int
|
|
||||||
val some: Double
|
val some: Double
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -6,7 +6,7 @@ import kotlin.Double as MyDouble
|
|||||||
typealias MyInt = Int
|
typealias MyInt = Int
|
||||||
|
|
||||||
actual class <caret>My {
|
actual class <caret>My {
|
||||||
actual fun foo(): MyInt = 42
|
fun foo(): MyInt = 42
|
||||||
|
|
||||||
actual val some: MyDouble = 4.0
|
actual val some: MyDouble = 4.0
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,2 @@
|
|||||||
|
These declarations cannot be transformed:
|
||||||
|
fun foo() = 42
|
||||||
+10
@@ -477,6 +477,16 @@ public class QuickFixMultiModuleTestGenerated extends AbstractQuickFixMultiModul
|
|||||||
runTest("idea/testData/multiModuleQuickFix/createExpect/sealedClass/");
|
runTest("idea/testData/multiModuleQuickFix/createExpect/sealedClass/");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("stdlibWithJavaAlias")
|
||||||
|
public void testStdlibWithJavaAlias() throws Exception {
|
||||||
|
runTest("idea/testData/multiModuleQuickFix/createExpect/stdlibWithJavaAlias/");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("superTypeFromStdlib")
|
||||||
|
public void testSuperTypeFromStdlib() throws Exception {
|
||||||
|
runTest("idea/testData/multiModuleQuickFix/createExpect/superTypeFromStdlib/");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("topLevelFunctionWithAnnotations")
|
@TestMetadata("topLevelFunctionWithAnnotations")
|
||||||
public void testTopLevelFunctionWithAnnotations() throws Exception {
|
public void testTopLevelFunctionWithAnnotations() throws Exception {
|
||||||
runTest("idea/testData/multiModuleQuickFix/createExpect/topLevelFunctionWithAnnotations/");
|
runTest("idea/testData/multiModuleQuickFix/createExpect/topLevelFunctionWithAnnotations/");
|
||||||
|
|||||||
Reference in New Issue
Block a user