[SLC] fix flaky test

This commit is contained in:
Dmitrii Gridin
2023-08-21 17:59:16 +02:00
committed by Space Team
parent 175ce94bb5
commit 51cc799204
4 changed files with 75 additions and 7 deletions
@@ -15,12 +15,12 @@ import org.jetbrains.kotlin.psi.KtFile
import java.nio.file.Path
internal inline fun <R> withExtendedTypeRenderer(testDataFile: Path, action: () -> R): R {
val extendedTypeRendererOld = PsiClassRenderer.extendedTypeRenderer
val extendedTypeRendererOld = PsiClassRenderer.extendedTypeRenderer.get()
return try {
PsiClassRenderer.extendedTypeRenderer = testDataFile.toString().endsWith("typeAnnotations.kt")
PsiClassRenderer.extendedTypeRenderer.set(testDataFile.toString().endsWith("typeAnnotations.kt"))
action()
} finally {
PsiClassRenderer.extendedTypeRenderer = extendedTypeRendererOld
PsiClassRenderer.extendedTypeRenderer.set(extendedTypeRendererOld)
}
}
@@ -22,10 +22,9 @@ class Y
class klass {
fun annotatedMethod(x: @A0 P<@A1 X, P<@A2 @A3 X, @A4 Y>>, y: Array<@A5 Y>): @A6 X {
return ""
return X()
}
val x: @A0 Int = 2
val y: List<@A0 Int>? = null
}
// COMPILATION_ERRORS
@@ -0,0 +1,69 @@
@java.lang.annotation.Retention(value = java.lang.annotation.RetentionPolicy.RUNTIME)
@java.lang.annotation.Target(value = {java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.TYPE_USE})
@kotlin.annotation.Target(allowedTargets = {kotlin.annotation.AnnotationTarget.VALUE_PARAMETER, kotlin.annotation.AnnotationTarget.TYPE})
public abstract @interface A0 /* A0*/ {
}
@java.lang.annotation.Retention(value = java.lang.annotation.RetentionPolicy.RUNTIME)
@java.lang.annotation.Target(value = {java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.TYPE_USE})
@kotlin.annotation.Target(allowedTargets = {kotlin.annotation.AnnotationTarget.VALUE_PARAMETER, kotlin.annotation.AnnotationTarget.TYPE})
public abstract @interface A1 /* A1*/ {
}
@java.lang.annotation.Retention(value = java.lang.annotation.RetentionPolicy.RUNTIME)
@java.lang.annotation.Target(value = {java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.TYPE_USE})
@kotlin.annotation.Target(allowedTargets = {kotlin.annotation.AnnotationTarget.VALUE_PARAMETER, kotlin.annotation.AnnotationTarget.TYPE})
public abstract @interface A2 /* A2*/ {
}
@java.lang.annotation.Retention(value = java.lang.annotation.RetentionPolicy.RUNTIME)
@java.lang.annotation.Target(value = {java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.TYPE_USE})
@kotlin.annotation.Target(allowedTargets = {kotlin.annotation.AnnotationTarget.VALUE_PARAMETER, kotlin.annotation.AnnotationTarget.TYPE})
public abstract @interface A3 /* A3*/ {
}
@java.lang.annotation.Retention(value = java.lang.annotation.RetentionPolicy.RUNTIME)
@java.lang.annotation.Target(value = {java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.TYPE_USE})
@kotlin.annotation.Target(allowedTargets = {kotlin.annotation.AnnotationTarget.VALUE_PARAMETER, kotlin.annotation.AnnotationTarget.TYPE})
public abstract @interface A4 /* A4*/ {
}
@java.lang.annotation.Retention(value = java.lang.annotation.RetentionPolicy.RUNTIME)
@java.lang.annotation.Target(value = {java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.TYPE_USE})
@kotlin.annotation.Target(allowedTargets = {kotlin.annotation.AnnotationTarget.VALUE_PARAMETER, kotlin.annotation.AnnotationTarget.TYPE})
public abstract @interface A5 /* A5*/ {
}
@java.lang.annotation.Retention(value = java.lang.annotation.RetentionPolicy.RUNTIME)
@java.lang.annotation.Target(value = {java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.TYPE_USE})
@kotlin.annotation.Target(allowedTargets = {kotlin.annotation.AnnotationTarget.VALUE_PARAMETER, kotlin.annotation.AnnotationTarget.TYPE})
public abstract @interface A6 /* A6*/ {
}
public abstract interface P /* P*/<T, K> {
}
public final class X /* X*/ {
public X();// .ctor()
}
public final class Y /* Y*/ {
public Y();// .ctor()
}
public final class klass /* klass*/ {
@org.jetbrains.annotations.Nullable()
private final java.util.List<java.lang.Integer> y;
private final int x;
@org.jetbrains.annotations.NotNull()
public final X annotatedMethod(@org.jetbrains.annotations.NotNull() P<X, P<X, Y>>, @org.jetbrains.annotations.NotNull() Y[]);// annotatedMethod(P<X, P<X, Y>>, Y[])
@org.jetbrains.annotations.Nullable()
public final java.util.List<java.lang.Integer> getY();// getY()
public klass();// .ctor()
public final int getX();// getX()
}
@@ -38,7 +38,7 @@ class PsiClassRenderer private constructor(
}
companion object {
var extendedTypeRenderer = false
var extendedTypeRenderer: ThreadLocal<Boolean> = ThreadLocal.withInitial { false }
fun renderClass(
psiClass: PsiClass,
@@ -85,7 +85,7 @@ class PsiClassRenderer private constructor(
private fun PsiType.renderType() = StringBuffer().also { renderType(it) }.toString()
private fun PsiType.renderType(sb: StringBuffer) {
if (extendedTypeRenderer && annotations.isNotEmpty()) {
if (extendedTypeRenderer.get() && annotations.isNotEmpty()) {
sb.append(annotations.joinToString(" ", postfix = " ") { it.renderAnnotation() })
}
when (this) {