FIR checker: reproduce a false alarm on type mismatch of overridden property

This commit is contained in:
Jinseong Jeon
2021-02-03 15:02:57 -08:00
committed by Dmitriy Novozhilov
parent 64c5608f31
commit 065d0c66ab
5 changed files with 96 additions and 0 deletions
@@ -30644,6 +30644,12 @@ public class FirOldFrontendDiagnosticsTestGenerated extends AbstractFirDiagnosti
runTest("compiler/testData/diagnostics/testsWithStdLib/assignedInSynchronized.kt");
}
@Test
@TestMetadata("buildLazyValueForMap.kt")
public void testBuildLazyValueForMap() throws Exception {
runTest("compiler/testData/diagnostics/testsWithStdLib/buildLazyValueForMap.kt");
}
@Test
@TestMetadata("CallCompanionProtectedNonStatic.kt")
public void testCallCompanionProtectedNonStatic() throws Exception {
@@ -0,0 +1,23 @@
// !WITH_NEW_INFERENCE
interface ClassId
interface JavaAnnotation {
val classId: ClassId?
}
interface JavaAnnotationOwner {
val annotations: Collection<JavaAnnotation>
}
interface MapBasedJavaAnnotationOwner : JavaAnnotationOwner {
val annotationsByFqNameHash: Map<Int?, JavaAnnotation>
}
fun JavaAnnotationOwner.buildLazyValueForMap() = lazy {
annotations.associateBy { it.classId?.hashCode() }
}
abstract class BinaryJavaMethodBase(): MapBasedJavaAnnotationOwner {
override val <!PROPERTY_TYPE_MISMATCH_ON_OVERRIDE!>annotationsByFqNameHash<!> by buildLazyValueForMap()
}
@@ -0,0 +1,21 @@
interface ClassId
interface JavaAnnotation {
val classId: ClassId?
}
interface JavaAnnotationOwner {
val annotations: Collection<JavaAnnotation>
}
interface MapBasedJavaAnnotationOwner : JavaAnnotationOwner {
val annotationsByFqNameHash: Map<Int?, JavaAnnotation>
}
fun JavaAnnotationOwner.buildLazyValueForMap() = lazy {
annotations.associateBy { it.classId?.hashCode() }
}
abstract class BinaryJavaMethodBase(): MapBasedJavaAnnotationOwner {
override val annotationsByFqNameHash by buildLazyValueForMap()
}
@@ -0,0 +1,40 @@
package
public fun JavaAnnotationOwner.buildLazyValueForMap(): kotlin.Lazy<kotlin.collections.Map<kotlin.Int?, JavaAnnotation>>
public abstract class BinaryJavaMethodBase : MapBasedJavaAnnotationOwner {
public constructor BinaryJavaMethodBase()
public abstract override /*1*/ /*fake_override*/ val annotations: kotlin.collections.Collection<JavaAnnotation>
public open override /*1*/ val annotationsByFqNameHash: kotlin.collections.Map<kotlin.Int?, JavaAnnotation>
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public interface ClassId {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public interface JavaAnnotation {
public abstract val classId: ClassId?
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public interface JavaAnnotationOwner {
public abstract val annotations: kotlin.collections.Collection<JavaAnnotation>
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public interface MapBasedJavaAnnotationOwner : JavaAnnotationOwner {
public abstract override /*1*/ /*fake_override*/ val annotations: kotlin.collections.Collection<JavaAnnotation>
public abstract val annotationsByFqNameHash: kotlin.collections.Map<kotlin.Int?, JavaAnnotation>
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@@ -30740,6 +30740,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest {
runTest("compiler/testData/diagnostics/testsWithStdLib/assignedInSynchronized.kt");
}
@Test
@TestMetadata("buildLazyValueForMap.kt")
public void testBuildLazyValueForMap() throws Exception {
runTest("compiler/testData/diagnostics/testsWithStdLib/buildLazyValueForMap.kt");
}
@Test
@TestMetadata("CallCompanionProtectedNonStatic.kt")
public void testCallCompanionProtectedNonStatic() throws Exception {