mirror of
https://github.com/jlengrand/kotlin.git
synced 2026-05-09 00:21:47 +00:00
Simplify test case on deterministic null-checks
This commit is contained in:
@@ -1,109 +1,20 @@
|
||||
// FILE: test/DeclarationDescriptor.java
|
||||
|
||||
package test;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
public interface DeclarationDescriptor {
|
||||
@NotNull
|
||||
DeclarationDescriptor getOriginal();
|
||||
|
||||
@Nullable
|
||||
DeclarationDescriptor getContainingDeclaration();
|
||||
}
|
||||
|
||||
// FILE: test/DeclarationDescriptorWithVisibility.java
|
||||
package test;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
public interface DeclarationDescriptorWithVisibility extends DeclarationDescriptor {
|
||||
}
|
||||
|
||||
// FILE: test/DeclarationDescriptorWithSource.java
|
||||
package test;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
public interface DeclarationDescriptorWithSource extends DeclarationDescriptor {
|
||||
@Override
|
||||
@NotNull
|
||||
DeclarationDescriptorWithSource getOriginal();
|
||||
}
|
||||
|
||||
// FILE: test/DeclarationDescriptorNonRoot.java
|
||||
package test;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
public interface DeclarationDescriptorNonRoot extends DeclarationDescriptorWithSource {
|
||||
}
|
||||
|
||||
// FILE: test/CallableDescriptor.java
|
||||
package test;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
public interface CallableDescriptor extends DeclarationDescriptorWithVisibility, DeclarationDescriptorNonRoot {
|
||||
public interface CallableDescriptor {
|
||||
@NotNull
|
||||
@Override
|
||||
CallableDescriptor getOriginal();
|
||||
|
||||
@NotNull
|
||||
Collection<? extends CallableDescriptor> getOverriddenDescriptors();
|
||||
}
|
||||
|
||||
// FILE: test/k.kt
|
||||
package test
|
||||
|
||||
fun <D : CallableDescriptor> D.overriddenTreeUniqueAsSequenceA(useOriginal: Boolean): Sequence<D> {
|
||||
val set = hashSetOf<D>()
|
||||
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
fun D.doBuildOverriddenTreeAsSequence(): Sequence<D> {
|
||||
return with(if (useOriginal) original as D else this) {
|
||||
if (original in set)
|
||||
emptySequence()
|
||||
else {
|
||||
emptySequence()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return doBuildOverriddenTreeAsSequence()
|
||||
fun <D : CallableDescriptor> D.overriddenTreeUniqueAsSequenceA(): Boolean {
|
||||
return original in emptySet<D>()
|
||||
}
|
||||
|
||||
fun <D : CallableDescriptor> D.overriddenTreeUniqueAsSequenceB(useOriginal: Boolean): Sequence<D> {
|
||||
val set = hashSetOf<D>()
|
||||
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
fun D.doBuildOverriddenTreeAsSequence(): Sequence<D> {
|
||||
return with(if (useOriginal) original as D else this) {
|
||||
if (original in set)
|
||||
emptySequence()
|
||||
else {
|
||||
emptySequence()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return doBuildOverriddenTreeAsSequence()
|
||||
}
|
||||
|
||||
// @KKt.class:
|
||||
// TODO: in fact, there should be an assertion, but it's missing because of https://youtrack.jetbrains.com/issue/KT-24210.
|
||||
// (This test's aim is not to check whether or not the assertion is generated, but to ensure that the behavior is deterministic.)
|
||||
// 0 checkExpressionValueIsNotNull
|
||||
|
||||
Reference in New Issue
Block a user