[FIR] Add a blackbox test for failure #2 of KT-65972

^KT-65972
This commit is contained in:
Nikolay Lunyak
2024-02-21 14:58:17 +02:00
committed by Space Team
parent 341a23d05c
commit 39cbe3fb35
11 changed files with 100 additions and 0 deletions
@@ -0,0 +1,41 @@
// TARGET_BACKEND: JVM
// SKIP_JDK6
// JVM_TARGET: 1.8
// FILE: ColoredTextContainer.java
public interface ColoredTextContainer {
default void setToolTipText(String text) {}
}
// FILE: JComponent.java
public abstract class JComponent {
public void setToolTipText(String text) {}
}
// FILE: SimpleColoredComponent.java
// IDEALLY:
// Provides `IO SimpleColoredComponent::setToolTipText`, because inherits
// `JComponent::setToolTipText` and `ColoredTextContainer::setToolTipText`,
// which don't sumbsume one another, but Java allows picking the class-based one in this case.
// REALITY:
// Contains an IO for the above. We check if this is green Java via a
// modified check that accounts for this case.
public class SimpleColoredComponent extends JComponent implements ColoredTextContainer {}
// FILE: Main.kt
// Not important, left for the record
interface TextFragment : ColoredTextContainer
// IDEALLY:
// Provides `JComponent::setToolTipText`, because inherits
// `ColoredTextContainer::setToolTipText` and `IO SimpleColoredComponent::setToolTipText`,
// and the latter subsumes the former.
// REALITY:
// Contains IO between `ColoredTextContainer::setToolTipText` and `IO SimpleColoredComponent::setToolTipText`.
// In this case `IO SimpleColoredComponent::setToolTipText` should not be unwrapped, otherwise
// we miss `nonSubsumed()` check and since this is a Kotlin class we are not allowed to implicitly choose
// between `JComponent::setToolTipText` and `ColoredTextContainer::setToolTipText`.
private class TextFragmentImpl : TextFragment, SimpleColoredComponent()
fun box() = "OK".also { TextFragmentImpl() }