6a03f31e50
Previously unsafe call is reported as part of InapplicableWrongReceiver. This makes it difficult for the downstream checkers to report different diagnostics.
160 lines
4.9 KiB
Plaintext
Vendored
160 lines
4.9 KiB
Plaintext
Vendored
FILE: boundSmartcastsInBranches.kt
|
|
public final class A : R|kotlin/Any| {
|
|
public constructor(): R|A| {
|
|
super<R|kotlin/Any|>()
|
|
}
|
|
|
|
public final val s: R|kotlin/String| = String()
|
|
public get(): R|kotlin/String|
|
|
|
|
}
|
|
public final fun test_0(list: R|kotlin/collections/List<A>|): R|kotlin/Unit| {
|
|
lvar goodA: R|A?| = Null(null)
|
|
{
|
|
lval <iterator>: R|kotlin/collections/Iterator<A>| = R|<local>/list|.R|SubstitutionOverride<kotlin/collections/List.iterator: R|kotlin/collections/Iterator<A>|>|()
|
|
while(R|<local>/<iterator>|.R|kotlin/collections/Iterator.hasNext|()) {
|
|
lval a: R|A| = R|<local>/<iterator>|.R|SubstitutionOverride<kotlin/collections/Iterator.next: R|A|>|()
|
|
when () {
|
|
==(R|<local>/goodA|, Null(null)) -> {
|
|
R|<local>/goodA| = R|<local>/a|
|
|
continue@@@[R|<local>/<iterator>|.R|kotlin/collections/Iterator.hasNext|()]
|
|
}
|
|
}
|
|
|
|
R|<local>/goodA|.R|/A.s|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
public final fun test_1(a: R|A|, b: R|kotlin/Boolean|): R|kotlin/Unit| {
|
|
lval x: R|kotlin/Any|
|
|
when () {
|
|
R|<local>/b| -> {
|
|
R|<local>/x| = R|/A.A|()
|
|
}
|
|
else -> {
|
|
R|<local>/x| = R|<local>/a|
|
|
}
|
|
}
|
|
|
|
R|<local>/x|.R|/A.s|
|
|
}
|
|
public final fun test_2(a: R|kotlin/Any|, b: R|kotlin/Boolean|): R|kotlin/Unit| {
|
|
lval x: R|kotlin/Any|
|
|
when () {
|
|
R|<local>/b| -> {
|
|
R|<local>/x| = R|/A.A|()
|
|
}
|
|
else -> {
|
|
R|<local>/x| = R|<local>/a|
|
|
(R|<local>/a| as R|A|)
|
|
}
|
|
}
|
|
|
|
R|<local>/x|.R|/A.s|
|
|
}
|
|
public final fun test_3(a: R|kotlin/Any|, b: R|kotlin/Boolean|): R|kotlin/Unit| {
|
|
lval x: R|kotlin/Any|
|
|
when () {
|
|
R|<local>/b| -> {
|
|
R|<local>/x| = R|/A.A|()
|
|
}
|
|
else -> {
|
|
(R|<local>/a| as R|A|)
|
|
R|<local>/x| = R|<local>/a|
|
|
}
|
|
}
|
|
|
|
R|<local>/x|.R|/A.s|
|
|
}
|
|
public final fun test_4(a: R|kotlin/Any|, b: R|kotlin/Boolean|): R|kotlin/Unit| {
|
|
lval x: R|kotlin/Any|
|
|
when () {
|
|
R|<local>/b| -> {
|
|
R|<local>/x| = R|<local>/a|
|
|
}
|
|
else -> {
|
|
R|<local>/x| = R|<local>/a|
|
|
}
|
|
}
|
|
|
|
(R|<local>/x| as R|A|)
|
|
R|<local>/x|.R|/A.s|
|
|
R|<local>/a|.R|/A.s|
|
|
}
|
|
public final fun test_5(a: R|kotlin/Any|, b: R|kotlin/Boolean|): R|kotlin/Unit| {
|
|
lval x: R|kotlin/Any|
|
|
when () {
|
|
R|<local>/b| -> {
|
|
R|<local>/x| = R|<local>/a|
|
|
}
|
|
else -> {
|
|
R|<local>/x| = R|<local>/a|
|
|
}
|
|
}
|
|
|
|
(R|<local>/a| as R|A|)
|
|
R|<local>/x|.R|/A.s|
|
|
R|<local>/a|.R|/A.s|
|
|
}
|
|
public final fun test_6(a: R|A|): R|kotlin/Unit| {
|
|
lval x: R|kotlin/Any|
|
|
R|<local>/x| = R|<local>/a|
|
|
R|<local>/x|.R|/A.s|
|
|
}
|
|
public final fun test_7(): R|kotlin/Unit| {
|
|
lval z: R|kotlin/String?| = Null(null)
|
|
lvar y: R|kotlin/String?| = R|<local>/z|
|
|
lval x: R|kotlin/String?| = R|<local>/y|
|
|
when () {
|
|
!=(R|<local>/x|, Null(null)) -> {
|
|
R|<local>/x|.R|kotlin/String.length|
|
|
R|<local>/y|.R|kotlin/String.length|
|
|
R|<local>/z|.R|kotlin/String.length|
|
|
}
|
|
}
|
|
|
|
when () {
|
|
!=(R|<local>/y|, Null(null)) -> {
|
|
R|<local>/x|.R|kotlin/String.length|
|
|
R|<local>/y|.R|kotlin/String.length|
|
|
R|<local>/z|.R|kotlin/String.length|
|
|
}
|
|
}
|
|
|
|
when () {
|
|
!=(R|<local>/z|, Null(null)) -> {
|
|
R|<local>/x|.R|kotlin/String.length|
|
|
R|<local>/y|.R|kotlin/String.length|
|
|
R|<local>/z|.R|kotlin/String.length|
|
|
}
|
|
}
|
|
|
|
R|<local>/y| = Null(null)
|
|
when () {
|
|
!=(R|<local>/x|, Null(null)) -> {
|
|
R|<local>/x|.R|kotlin/String.length|
|
|
R|<local>/y|.<Inapplicable(UNSAFE_CALL): kotlin/String.length>#
|
|
R|<local>/z|.R|kotlin/String.length|
|
|
}
|
|
}
|
|
|
|
when () {
|
|
!=(R|<local>/y|, Null(null)) -> {
|
|
R|<local>/x|.<Inapplicable(UNSAFE_CALL): kotlin/String.length>#
|
|
R|<local>/y|.R|kotlin/String.length|
|
|
R|<local>/z|.<Inapplicable(UNSAFE_CALL): kotlin/String.length>#
|
|
}
|
|
}
|
|
|
|
when () {
|
|
!=(R|<local>/z|, Null(null)) -> {
|
|
R|<local>/x|.R|kotlin/String.length|
|
|
R|<local>/y|.<Inapplicable(UNSAFE_CALL): kotlin/String.length>#
|
|
R|<local>/z|.R|kotlin/String.length|
|
|
}
|
|
}
|
|
|
|
}
|