Files
kotlin-fork/compiler/fir/analysis-tests/testData/resolve/localClasses/implicitInLocalClasses.txt
T
Denis Zharkov d869ae7826 FIR: Make resolution logic for local classes the same as for top-level
Run different phases through common transformers sequentially
It should make code more reusable and may help with avoid common bugs
2020-03-25 15:36:17 +03:00

76 lines
2.7 KiB
Plaintext
Vendored

FILE: implicitInLocalClasses.kt
public final fun useBoolean(b: R|kotlin/Boolean|): R|kotlin/Unit| {
}
public final fun main(): R|kotlin/Unit| {
local final class A : R|kotlin/Any| {
public[local] constructor(): R|A| {
super<R|kotlin/Any|>()
}
public[local] final fun foo(x: R|kotlin/Int|): R|kotlin/Boolean| {
^foo this@R|/A|.R|/A.bar|(R|<local>/x|)
}
public[local] final fun bar(y: R|kotlin/Int|): R|kotlin/Boolean| {
^bar CMP(>, this@R|/A|.R|kotlin/Any.hashCode|().R|kotlin/Int.plus|(R|<local>/y|).R|kotlin/Int.compareTo|(Int(0)))
}
public[local] final val w: R|kotlin/Boolean|
public get(): R|kotlin/Boolean| {
^ this@R|/A|.R|/A.z|
}
public[local] final val z: R|kotlin/Boolean|
public get(): R|kotlin/Boolean| {
^ ==(this@R|/A|.R|kotlin/Any.hashCode|(), Int(0))
}
}
lval a: R|A| = R|/A.A|()
R|/useBoolean|(R|<local>/a|.R|/A.foo|(Int(1)))
R|/useBoolean|(R|<local>/a|.R|/A.bar|(Int(1)))
R|/useBoolean|(R|<local>/a|.R|/A.w|)
R|/useBoolean|(R|<local>/a|.R|/A.z|)
local final class B : R|kotlin/Any| {
public[local] constructor(): R|B| {
super<R|kotlin/Any|>()
}
public[local] final fun foo(x: R|kotlin/Int|): R|kotlin/Boolean| {
^foo this@R|/B|.R|/B.inner|.R|/B.Inner.w|
}
public[local] final fun bar(y: R|kotlin/Int|): R|kotlin/Boolean| {
^bar CMP(>, this@R|/B|.R|kotlin/Any.hashCode|().R|kotlin/Int.plus|(R|<local>/y|).R|kotlin/Int.compareTo|(Int(0)))
}
public[local] final val inner: R|B.Inner| = this@R|/B|.R|/B.Inner.Inner|()
public get(): R|B.Inner|
local final inner class Inner : R|kotlin/Any| {
public[local] constructor(): R|B.Inner| {
super<R|kotlin/Any|>()
}
public[local] final val w: R|kotlin/Boolean|
public get(): R|kotlin/Boolean| {
^ this@R|/B.Inner|.R|/B.Inner.z|
}
public[local] final val z: R|kotlin/Boolean|
public get(): R|kotlin/Boolean| {
^ this@R|/B|.R|/B.bar|(Int(1))
}
}
}
lval b: R|B| = R|/B.B|()
R|/useBoolean|(R|<local>/b|.R|/B.foo|(Int(1)))
R|/useBoolean|(R|<local>/b|.R|/B.bar|(Int(1)))
R|/useBoolean|(R|<local>/b|.R|/B.inner|.R|/B.Inner.w|)
R|/useBoolean|(R|<local>/b|.R|/B.inner|.R|/B.Inner.z|)
}