[AllOpen] Private properties can be considered stable even when open

The AllOpen plugin can make private members open. But for private
properties, they can be considered stable for smart-casting if they do
not have a custom getter.

#KT-58049 Fixed
This commit is contained in:
Brian Norman
2023-07-12 08:50:44 -05:00
committed by Space Team
parent feed740415
commit 70662007a5
10 changed files with 134 additions and 3 deletions
@@ -0,0 +1,19 @@
/*
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.allopen
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.runners.AbstractDiagnosticTest
abstract class AbstractDiagnosticTestForAllOpenBase : AbstractDiagnosticTest() {
override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder)
with(builder) {
useConfigurators(::AllOpenEnvironmentConfigurator)
}
}
}
+9
View File
@@ -0,0 +1,9 @@
// WITH_STDLIB
annotation class AllOpen
@AllOpen
annotation class ConsoleCommands(
val <!NON_FINAL_MEMBER_IN_FINAL_CLASS!>value<!>: String = "",
val <!NON_FINAL_MEMBER_IN_FINAL_CLASS!>scope<!>: String
)
+2 -3
View File
@@ -1,10 +1,9 @@
// FIR_IDENTICAL
// WITH_STDLIB
annotation class AllOpen
@AllOpen
annotation class ConsoleCommands(
val <!NON_FINAL_MEMBER_IN_FINAL_CLASS!>value<!>: String = "",
val <!NON_FINAL_MEMBER_IN_FINAL_CLASS!>scope<!>: String
val value: String = "",
val scope: String
)
+24
View File
@@ -0,0 +1,24 @@
// WITH_STDLIB
// ISSUE: KT-58049
annotation class AllOpen
@AllOpen
class Test(
val publicProp: String?,
protected val protectedProp: String?,
internal val internalProp: String?,
private val privateProp: String?,
) {
fun test() {
checkNotNull(publicProp)
checkNotNull(protectedProp)
checkNotNull(internalProp)
checkNotNull(privateProp)
println(<!SMARTCAST_IMPOSSIBLE!>publicProp<!>.length)
println(<!SMARTCAST_IMPOSSIBLE!>protectedProp<!>.length)
println(<!SMARTCAST_IMPOSSIBLE!>internalProp<!>.length)
println(privateProp.length)
}
}
+24
View File
@@ -0,0 +1,24 @@
// WITH_STDLIB
// ISSUE: KT-58049
annotation class AllOpen
@AllOpen
class Test(
val publicProp: String?,
protected val protectedProp: String?,
internal val internalProp: String?,
private val privateProp: String?,
) {
fun test() {
checkNotNull(publicProp)
checkNotNull(protectedProp)
checkNotNull(internalProp)
checkNotNull(privateProp)
println(<!SMARTCAST_IMPOSSIBLE!>publicProp<!>.length)
println(<!SMARTCAST_IMPOSSIBLE!>protectedProp<!>.length)
println(<!SMARTCAST_IMPOSSIBLE!>internalProp<!>.length)
println(<!DEBUG_INFO_SMARTCAST!>privateProp<!>.length)
}
}
@@ -0,0 +1,38 @@
/*
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.allopen;
import com.intellij.testFramework.TestDataPath;
import org.jetbrains.kotlin.test.util.KtTestUtil;
import org.jetbrains.kotlin.test.TestMetadata;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import java.io.File;
import java.util.regex.Pattern;
/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.GenerateTestsKt}. DO NOT MODIFY MANUALLY */
@SuppressWarnings("all")
@TestMetadata("plugins/allopen/testData/diagnostics")
@TestDataPath("$PROJECT_ROOT")
public class DiagnosticTestForAllOpenBaseGenerated extends AbstractDiagnosticTestForAllOpenBase {
@Test
public void testAllFilesPresentInDiagnostics() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/allopen/testData/diagnostics"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.fir\\.kts?$"), true);
}
@Test
@TestMetadata("kt54260.kt")
public void testKt54260() throws Exception {
runTest("plugins/allopen/testData/diagnostics/kt54260.kt");
}
@Test
@TestMetadata("smartcast.kt")
public void testSmartcast() throws Exception {
runTest("plugins/allopen/testData/diagnostics/smartcast.kt");
}
}
@@ -29,4 +29,10 @@ public class FirLightTreeDiagnosticTestForAllOpenGenerated extends AbstractFirLi
public void testKt54260() throws Exception {
runTest("plugins/allopen/testData/diagnostics/kt54260.kt");
}
@Test
@TestMetadata("smartcast.kt")
public void testSmartcast() throws Exception {
runTest("plugins/allopen/testData/diagnostics/smartcast.kt");
}
}
@@ -29,4 +29,10 @@ public class FirPsiDiagnosticTestForAllOpenGenerated extends AbstractFirPsiDiagn
public void testKt54260() throws Exception {
runTest("plugins/allopen/testData/diagnostics/kt54260.kt");
}
@Test
@TestMetadata("smartcast.kt")
public void testSmartcast() throws Exception {
runTest("plugins/allopen/testData/diagnostics/smartcast.kt");
}
}