[FIR] Create CFG for files to track top-level property initialization

In order to properly analyze top-level property initialization, a
control-flow graph must be created for FirFiles. This change adds the
foundation for the file CFG and updates body resolve to create the CFG.
Checking the CFG for proper initialization is separated into a following
change to ease code review.

KT-56683
This commit is contained in:
Brian Norman
2023-07-25 10:23:22 -05:00
committed by Space Team
parent 0b7eb32064
commit b55fda0c55
127 changed files with 19565 additions and 18746 deletions
@@ -42,7 +42,7 @@ sealed class LLFirResolveTarget(
abstract fun forEachTarget(action: (FirElementWithResolveState) -> Unit)
override fun toString(): String = buildString {
append(this::class.simpleName)
append(this@LLFirResolveTarget::class.simpleName)
append("(")
buildList {
add(firFile.name)
@@ -161,5 +161,5 @@ private fun KtNamedFunction.isReanalyzableContainer(): Boolean = hasBlockBody()
private fun KtPropertyAccessor.isReanalyzableContainer(): Boolean = isSetter || hasBlockBody() || property.typeReference != null
private fun KtProperty.isReanalyzableContainer(): Boolean = typeReference != null && (isTopLevel || !hasDelegateExpressionOrInitializer())
private fun KtProperty.isReanalyzableContainer(): Boolean = typeReference != null && !hasDelegateExpressionOrInitializer()
@@ -115,6 +115,8 @@ internal class FileStructure private constructor(
}
fun getAllDiagnosticsForFile(diagnosticCheckerFilter: DiagnosticCheckerFilter): Collection<KtPsiDiagnostic> {
// TODO, KT-60799: Add a new FileStructure for file diagnostics
firFile.lazyResolveToPhase(FirResolvePhase.BODY_RESOLVE)
val structureElements = getAllStructureElements()
return buildList {
collectDiagnosticsFromStructureElements(structureElements, diagnosticCheckerFilter)
@@ -44,6 +44,7 @@ import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirResolveCont
import org.jetbrains.kotlin.fir.resolve.transformers.contracts.FirContractsDslNames
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
import org.jetbrains.kotlin.fir.resolve.dfa.cfg.isUsedInControlFlowGraphBuilderForClass
import org.jetbrains.kotlin.fir.resolve.dfa.cfg.isUsedInControlFlowGraphBuilderForFile
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
import org.jetbrains.kotlin.fir.types.ConeKotlinType
import org.jetbrains.kotlin.psi.KtCodeFragment
@@ -114,6 +115,19 @@ private class LLFirBodyTargetResolver(
return true
}
is FirFile -> {
if (target.resolvePhase >= resolverPhase) return true
resolveFileAnnotationContainerIfNeeded(target)
// resolve file CFG graph here, to do this we need to have property blocks resoled
resolveMembersForControlFlowGraph(target)
performCustomResolveUnderLock(target) {
calculateControlFlowGraph(target)
}
return true
}
is FirCodeFragment -> {
resolveCodeFragmentContext(target)
performCustomResolveUnderLock(target) {
@@ -156,6 +170,35 @@ private class LLFirBodyTargetResolver(
}
}
private fun calculateControlFlowGraph(target: FirFile) {
checkWithAttachment(
target.controlFlowGraphReference == null,
{ "'controlFlowGraphReference' should be 'null' if the file phase < $resolverPhase)" },
) {
withFirEntry("firFile", target)
}
val dataFlowAnalyzer = transformer.declarationsTransformer.dataFlowAnalyzer
dataFlowAnalyzer.enterFile(target, buildGraph = true)
val controlFlowGraph = dataFlowAnalyzer.exitFile()
?: errorWithAttachment("CFG should not be 'null' as 'buildGraph' is specified") {
withFirEntry("firFile", target)
}
target.replaceControlFlowGraphReference(FirControlFlowGraphReferenceImpl(controlFlowGraph))
}
private fun resolveMembersForControlFlowGraph(target: FirFile) {
withFile(target) {
for (member in target.declarations) {
if (member is FirControlFlowGraphOwner && member.isUsedInControlFlowGraphBuilderForFile) {
member.lazyResolveToPhase(resolverPhase.previous)
performResolve(member)
}
}
}
}
private fun resolveCodeFragmentContext(firCodeFragment: FirCodeFragment) {
val ktCodeFragment = firCodeFragment.psi as? KtCodeFragment
?: errorWithAttachment("Code fragment source not found") {
@@ -191,7 +234,7 @@ private class LLFirBodyTargetResolver(
override fun doLazyResolveUnderLock(target: FirElementWithResolveState) {
when (target) {
is FirRegularClass, is FirCodeFragment -> error("Should have been resolved in ${::doResolveWithoutLock.name}")
is FirFile, is FirRegularClass, is FirCodeFragment -> error("Should have been resolved in ${::doResolveWithoutLock.name}")
is FirConstructor -> resolve(target, BodyStateKeepers.CONSTRUCTOR)
is FirFunction -> resolve(target, BodyStateKeepers.FUNCTION)
is FirProperty -> resolve(target, BodyStateKeepers.PROPERTY)
@@ -202,7 +245,6 @@ private class LLFirBodyTargetResolver(
is FirDanglingModifierList,
is FirFileAnnotationsContainer,
is FirTypeAlias,
is FirFile,
-> {
// No bodies here
}
@@ -190,6 +190,9 @@ var KtFile.originalKtFile by UserDataProperty(ORIGINAL_KT_FILE_KEY)
private fun KtClassLikeDeclaration.findFir(provider: FirProvider): FirClassLikeDeclaration? {
// TODO, KTIJ-26848: this is a workaround for IDE index inconsistency for unnamed classes
if (name == null) return null
return if (provider is LLFirProvider) {
provider.getFirClassifierByDeclaration(this)
} else {
@@ -6,4 +6,4 @@ var x: Int/* ReanalyzablePropertyStructureElement */
val y = 42/* NonReanalyzableNonClassDeclarationStructureElement */
var z: Int = 15/* ReanalyzablePropertyStructureElement */
var z: Int = 15/* NonReanalyzableNonClassDeclarationStructureElement */
@@ -4,7 +4,7 @@ fun () {/* ReanalyzableFunctionStructureElement */
}
val : Int = 4/* ReanalyzablePropertyStructureElement */
val : Int = 4/* NonReanalyzableNonClassDeclarationStructureElement */
var : Int/* ReanalyzablePropertyStructureElement */
get() = 4
@@ -1,7 +1 @@
BEFORE MODIFICATION:
public final [ResolvedTo(BODY_RESOLVE)] val i: R|kotlin/Int| = Int(42)
public [ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/Int|
AFTER MODIFICATION:
public final [ResolvedTo(ANNOTATIONS_ARGUMENTS_MAPPING)] val i: R|kotlin/Int| = LAZY_EXPRESSION
public [ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/Int|
IN-BLOCK MODIFICATION IS NOT APPLICABLE FOR THIS PLACE
@@ -1,18 +1 @@
BEFORE MODIFICATION:
public final [ResolvedTo(BODY_RESOLVE)] val x: R|kotlin/Int|by <Unresolved name: lazy>#(<L> = [ResolvedTo(BODY_RESOLVE)] lazy@fun <anonymous>(): R|kotlin/Int| <inline=Unknown> {
local final [ResolvedTo(BODY_RESOLVE)] fun doSmth([ResolvedTo(BODY_RESOLVE)] i: R|kotlin/String|): R|kotlin/Int| {
^doSmth Int(4)
}
^ R|<local>/doSmth|(String(str))
}
)
public [ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/Int| {
^ D|/x|.<Unresolved name: getValue>#(Null(null), ::R|/x|)
}
AFTER MODIFICATION:
public final [ResolvedTo(ANNOTATIONS_ARGUMENTS_MAPPING)] val x: R|kotlin/Int|by LAZY_EXPRESSION
public [ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/Int| {
^ D|/x|.<Unresolved name: getValue>#(Null(null), ::R|/x|)
}
IN-BLOCK MODIFICATION IS NOT APPLICABLE FOR THIS PLACE
@@ -1,18 +1 @@
BEFORE MODIFICATION:
public final [ResolvedTo(BODY_RESOLVE)] val <no name provided>: R|kotlin/Int|by <Unresolved name: lazy>#(<L> = [ResolvedTo(BODY_RESOLVE)] lazy@fun <anonymous>(): R|kotlin/Int| <inline=Unknown> {
local final [ResolvedTo(BODY_RESOLVE)] fun doSmth([ResolvedTo(BODY_RESOLVE)] i: R|kotlin/String|): R|kotlin/Int| {
^doSmth Int(4)
}
^ R|<local>/doSmth|(String(str))
}
)
public [ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/Int| {
^ D|/<no name provided>|.<Unresolved name: getValue>#(Null(null), ::R|/<no name provided>|)
}
AFTER MODIFICATION:
public final [ResolvedTo(ANNOTATIONS_ARGUMENTS_MAPPING)] val <no name provided>: R|kotlin/Int|by LAZY_EXPRESSION
public [ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/Int| {
^ D|/<no name provided>|.<Unresolved name: getValue>#(Null(null), ::R|/<no name provided>|)
}
IN-BLOCK MODIFICATION IS NOT APPLICABLE FOR THIS PLACE
@@ -1,11 +1 @@
BEFORE MODIFICATION:
public final [ResolvedTo(BODY_RESOLVE)] val x: R|kotlin/Int|by <Unresolved name: ErrorDelegate>#()
public [ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/Int| {
^ D|/x|.<Unresolved name: getValue>#(Null(null), ::R|/x|)
}
AFTER MODIFICATION:
public final [ResolvedTo(ANNOTATIONS_ARGUMENTS_MAPPING)] val x: R|kotlin/Int|by LAZY_EXPRESSION
public [ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/Int| {
^ D|/x|.<Unresolved name: getValue>#(Null(null), ::R|/x|)
}
IN-BLOCK MODIFICATION IS NOT APPLICABLE FOR THIS PLACE
@@ -1,7 +1 @@
BEFORE MODIFICATION:
public final [ResolvedTo(BODY_RESOLVE)] val x: R|kotlin/Int| = R|/doSmth|(String(str))
public [ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/Int|
AFTER MODIFICATION:
public final [ResolvedTo(ANNOTATIONS_ARGUMENTS_MAPPING)] val x: R|kotlin/Int| = LAZY_EXPRESSION
public [ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/Int|
IN-BLOCK MODIFICATION IS NOT APPLICABLE FOR THIS PLACE
@@ -1,7 +1 @@
BEFORE MODIFICATION:
public final [ResolvedTo(BODY_RESOLVE)] val <no name provided>: R|kotlin/Int| = R|/doSmth|(String(str))
public [ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/Int|
AFTER MODIFICATION:
public final [ResolvedTo(ANNOTATIONS_ARGUMENTS_MAPPING)] val <no name provided>: R|kotlin/Int| = LAZY_EXPRESSION
public [ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/Int|
IN-BLOCK MODIFICATION IS NOT APPLICABLE FOR THIS PLACE
@@ -480,12 +480,12 @@ FILE: [ResolvedTo(BODY_RESOLVE)] fileElements.kt
public [ResolvedTo(STATUS)] [ContainingClassKey=Anno] get(): R|kotlin/Int|
}
public? final? [ResolvedTo(RAW_FIR)] val a: <implicit> = LAZY_EXPRESSION
public? [ResolvedTo(RAW_FIR)] get(): <implicit>
public? final? [ResolvedTo(RAW_FIR)] val b: <implicit> = LAZY_EXPRESSION
public? [ResolvedTo(RAW_FIR)] get(): <implicit>
public? final? [ResolvedTo(RAW_FIR)] val c: <implicit> = LAZY_EXPRESSION
public? [ResolvedTo(RAW_FIR)] get(): <implicit>
public final [ResolvedTo(BODY_RESOLVE)] val a: R|kotlin/Int| = Int(1)
public [ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/Int|
public final [ResolvedTo(BODY_RESOLVE)] val b: R|kotlin/Int| = Int(2).R|kotlin/Int.plus|(R|one/a|)
public [ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/Int|
public final [ResolvedTo(BODY_RESOLVE)] val c: R|kotlin/Int| = R|one/b|.R|kotlin/Int.plus|(R|one/a|)
public [ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/Int|
public? final? [ResolvedTo(RAW_FIR)] fun test1(): R|kotlin/Unit| { LAZY_BLOCK }
@Deprecated[Unresolved](String()) @Anno[Unresolved](IntegerLiteral(2)) public? final? [ResolvedTo(RAW_FIR)] fun test2(): R|kotlin/Unit| { LAZY_BLOCK }
public? final? [ResolvedTo(RAW_FIR)] class A : R|kotlin/Any| {
@@ -5,99 +5,104 @@ digraph initializationInTry_kt {
subgraph cluster_0 {
color=red
0 [label="Enter function getNullableString" style="filled" fillcolor=red];
subgraph cluster_1 {
color=blue
1 [label="Enter block"];
2 [label="Const: Null(null)"];
3 [label="Jump: ^getNullableString Null(null)"];
4 [label="Stub" style="filled" fillcolor=gray];
5 [label="Exit block" style="filled" fillcolor=gray];
}
6 [label="Exit function getNullableString" style="filled" fillcolor=red];
0 [label="Enter file initializationInTry.kt" style="filled" fillcolor=red];
1 [label="Exit file initializationInTry.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter function getNullableString" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
3 [label="Enter block"];
4 [label="Const: Null(null)"];
5 [label="Jump: ^getNullableString Null(null)"];
6 [label="Stub" style="filled" fillcolor=gray];
7 [label="Exit block" style="filled" fillcolor=gray];
}
8 [label="Exit function getNullableString" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
2 -> {3};
3 -> {6};
3 -> {4} [style=dotted];
4 -> {5} [style=dotted];
3 -> {4};
4 -> {5};
5 -> {8};
5 -> {6} [style=dotted];
6 -> {7} [style=dotted];
7 -> {8} [style=dotted];
subgraph cluster_2 {
subgraph cluster_3 {
color=red
7 [label="Enter function takeNullableString" style="filled" fillcolor=red];
subgraph cluster_3 {
9 [label="Enter function takeNullableString" style="filled" fillcolor=red];
subgraph cluster_4 {
color=blue
8 [label="Enter block"];
9 [label="Exit block"];
10 [label="Enter block"];
11 [label="Exit block"];
}
10 [label="Exit function takeNullableString" style="filled" fillcolor=red];
12 [label="Exit function takeNullableString" style="filled" fillcolor=red];
}
7 -> {8};
8 -> {9};
9 -> {10};
subgraph cluster_4 {
color=red
11 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_5 {
color=blue
12 [label="Enter block"];
13 [label="Variable declaration: lval x: R|kotlin/String?|"];
subgraph cluster_6 {
color=blue
14 [label="Try expression enter"];
subgraph cluster_7 {
color=blue
15 [label="Try main block enter"];
subgraph cluster_8 {
color=blue
16 [label="Enter block"];
17 [label="Function call: R|/getNullableString|()" style="filled" fillcolor=yellow];
18 [label="Check not null: R|/getNullableString|()!!" style="filled" fillcolor=yellow];
19 [label="Variable declaration: lval y: R|kotlin/String|"];
20 [label="Function call: R|/getNullableString|()" style="filled" fillcolor=yellow];
21 [label="Assignment: R|<local>/x|"];
22 [label="Exit block"];
}
23 [label="Try main block exit"];
}
subgraph cluster_9 {
color=blue
24 [label="Enter finally"];
subgraph cluster_10 {
color=blue
25 [label="Enter block"];
26 [label="Access qualifier kotlin/Unit"];
27 [label="Exit block"];
}
28 [label="Exit finally"];
}
29 [label="Try expression exit"];
}
30 [label="Access variable R|<local>/x|"];
31 [label="Function call: R|/takeNullableString|(...)" style="filled" fillcolor=yellow];
32 [label="Exit block"];
}
33 [label="Exit function test_1" style="filled" fillcolor=red];
}
10 -> {11};
11 -> {12};
12 -> {13};
subgraph cluster_5 {
color=red
13 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_6 {
color=blue
14 [label="Enter block"];
15 [label="Variable declaration: lval x: R|kotlin/String?|"];
subgraph cluster_7 {
color=blue
16 [label="Try expression enter"];
subgraph cluster_8 {
color=blue
17 [label="Try main block enter"];
subgraph cluster_9 {
color=blue
18 [label="Enter block"];
19 [label="Function call: R|/getNullableString|()" style="filled" fillcolor=yellow];
20 [label="Check not null: R|/getNullableString|()!!" style="filled" fillcolor=yellow];
21 [label="Variable declaration: lval y: R|kotlin/String|"];
22 [label="Function call: R|/getNullableString|()" style="filled" fillcolor=yellow];
23 [label="Assignment: R|<local>/x|"];
24 [label="Exit block"];
}
25 [label="Try main block exit"];
}
subgraph cluster_10 {
color=blue
26 [label="Enter finally"];
subgraph cluster_11 {
color=blue
27 [label="Enter block"];
28 [label="Access qualifier kotlin/Unit"];
29 [label="Exit block"];
}
30 [label="Exit finally"];
}
31 [label="Try expression exit"];
}
32 [label="Access variable R|<local>/x|"];
33 [label="Function call: R|/takeNullableString|(...)" style="filled" fillcolor=yellow];
34 [label="Exit block"];
}
35 [label="Exit function test_1" style="filled" fillcolor=red];
}
13 -> {14};
14 -> {15};
14 -> {24} [label="onUncaughtException"];
15 -> {16};
16 -> {17};
16 -> {26} [label="onUncaughtException"];
17 -> {18};
17 -> {24} [label="onUncaughtException"];
18 -> {19};
18 -> {24} [label="onUncaughtException"];
19 -> {20};
19 -> {26} [label="onUncaughtException"];
20 -> {21};
20 -> {24} [label="onUncaughtException"];
20 -> {26} [label="onUncaughtException"];
21 -> {22};
22 -> {23};
22 -> {26} [label="onUncaughtException"];
23 -> {24};
24 -> {25};
25 -> {26};
@@ -108,64 +113,64 @@ digraph initializationInTry_kt {
30 -> {31};
31 -> {32};
32 -> {33};
subgraph cluster_11 {
color=red
34 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_12 {
color=blue
35 [label="Enter block"];
36 [label="Variable declaration: lval x: R|kotlin/String?|"];
subgraph cluster_13 {
color=blue
37 [label="Try expression enter"];
subgraph cluster_14 {
color=blue
38 [label="Try main block enter"];
subgraph cluster_15 {
color=blue
39 [label="Enter block"];
40 [label="Function call: R|/getNullableString|()" style="filled" fillcolor=yellow];
41 [label="Variable declaration: lval y: R|kotlin/String?|"];
42 [label="Function call: R|/getNullableString|()" style="filled" fillcolor=yellow];
43 [label="Assignment: R|<local>/x|"];
44 [label="Exit block"];
}
45 [label="Try main block exit"];
}
subgraph cluster_16 {
color=blue
46 [label="Enter finally"];
subgraph cluster_17 {
color=blue
47 [label="Enter block"];
48 [label="Access qualifier kotlin/Unit"];
49 [label="Exit block"];
}
50 [label="Exit finally"];
}
51 [label="Try expression exit"];
}
52 [label="Access variable R|<local>/x|"];
53 [label="Function call: R|/takeNullableString|(...)" style="filled" fillcolor=yellow];
54 [label="Exit block"];
}
55 [label="Exit function test_2" style="filled" fillcolor=red];
}
33 -> {34};
34 -> {35};
35 -> {36};
subgraph cluster_12 {
color=red
36 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_13 {
color=blue
37 [label="Enter block"];
38 [label="Variable declaration: lval x: R|kotlin/String?|"];
subgraph cluster_14 {
color=blue
39 [label="Try expression enter"];
subgraph cluster_15 {
color=blue
40 [label="Try main block enter"];
subgraph cluster_16 {
color=blue
41 [label="Enter block"];
42 [label="Function call: R|/getNullableString|()" style="filled" fillcolor=yellow];
43 [label="Variable declaration: lval y: R|kotlin/String?|"];
44 [label="Function call: R|/getNullableString|()" style="filled" fillcolor=yellow];
45 [label="Assignment: R|<local>/x|"];
46 [label="Exit block"];
}
47 [label="Try main block exit"];
}
subgraph cluster_17 {
color=blue
48 [label="Enter finally"];
subgraph cluster_18 {
color=blue
49 [label="Enter block"];
50 [label="Access qualifier kotlin/Unit"];
51 [label="Exit block"];
}
52 [label="Exit finally"];
}
53 [label="Try expression exit"];
}
54 [label="Access variable R|<local>/x|"];
55 [label="Function call: R|/takeNullableString|(...)" style="filled" fillcolor=yellow];
56 [label="Exit block"];
}
57 [label="Exit function test_2" style="filled" fillcolor=red];
}
36 -> {37};
37 -> {38};
37 -> {46} [label="onUncaughtException"];
38 -> {39};
39 -> {40};
39 -> {48} [label="onUncaughtException"];
40 -> {41};
40 -> {46} [label="onUncaughtException"];
41 -> {42};
42 -> {43};
42 -> {46} [label="onUncaughtException"];
42 -> {48} [label="onUncaughtException"];
43 -> {44};
44 -> {45};
44 -> {48} [label="onUncaughtException"];
45 -> {46};
46 -> {47};
47 -> {48};
@@ -176,5 +181,7 @@ digraph initializationInTry_kt {
52 -> {53};
53 -> {54};
54 -> {55};
55 -> {56};
56 -> {57};
}
@@ -5,104 +5,111 @@ digraph annotatedLocalClass_kt {
subgraph cluster_0 {
color=red
0 [label="Enter class Ann" style="filled" fillcolor=red];
subgraph cluster_1 {
color=blue
1 [label="Enter function <init>" style="filled" fillcolor=red];
2 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
3 [label="Exit function <init>" style="filled" fillcolor=red];
}
4 [label="Exit class Ann" style="filled" fillcolor=red];
0 [label="Enter file annotatedLocalClass.kt" style="filled" fillcolor=red];
1 [label="Exit file annotatedLocalClass.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
0 -> {4} [style=dotted];
0 -> {1} [style=dashed];
1 -> {2};
2 -> {3};
3 -> {4} [color=green];
subgraph cluster_2 {
subgraph cluster_1 {
color=red
5 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_3 {
2 [label="Enter class Ann" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
6 [label="Enter block"];
subgraph cluster_4 {
3 [label="Enter function <init>" style="filled" fillcolor=red];
4 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
5 [label="Exit function <init>" style="filled" fillcolor=red];
}
6 [label="Exit class Ann" style="filled" fillcolor=red];
}
2 -> {3} [color=green];
2 -> {6} [style=dotted];
2 -> {3} [style=dashed];
3 -> {4};
4 -> {5};
5 -> {6} [color=green];
subgraph cluster_3 {
color=red
7 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_4 {
color=blue
8 [label="Enter block"];
subgraph cluster_5 {
color=blue
7 [label="Enter when"];
subgraph cluster_5 {
color=blue
8 [label="Enter when branch condition "];
9 [label="Access variable R|<local>/b|"];
10 [label="Exit when branch condition"];
}
11 [label="Synthetic else branch"];
12 [label="Enter when branch result"];
9 [label="Enter when"];
subgraph cluster_6 {
color=blue
13 [label="Enter block"];
14 [label="Jump: ^foo Unit"];
15 [label="Stub" style="filled" fillcolor=gray];
16 [label="Exit block" style="filled" fillcolor=gray];
10 [label="Enter when branch condition "];
11 [label="Access variable R|<local>/b|"];
12 [label="Exit when branch condition"];
}
17 [label="Exit when branch result" style="filled" fillcolor=gray];
18 [label="Exit when"];
13 [label="Synthetic else branch"];
14 [label="Enter when branch result"];
subgraph cluster_7 {
color=blue
15 [label="Enter block"];
16 [label="Jump: ^foo Unit"];
17 [label="Stub" style="filled" fillcolor=gray];
18 [label="Exit block" style="filled" fillcolor=gray];
}
19 [label="Exit when branch result" style="filled" fillcolor=gray];
20 [label="Exit when"];
}
19 [label="Local class declaration"];
20 [label="Function call: R|/bar|()" style="filled" fillcolor=yellow];
21 [label="Exit block"];
21 [label="Local class declaration"];
22 [label="Function call: R|/bar|()" style="filled" fillcolor=yellow];
23 [label="Exit block"];
}
22 [label="Exit function foo" style="filled" fillcolor=red];
24 [label="Exit function foo" style="filled" fillcolor=red];
}
subgraph cluster_7 {
subgraph cluster_8 {
color=blue
23 [label="Enter class Local" style="filled" fillcolor=red];
subgraph cluster_8 {
25 [label="Enter class Local" style="filled" fillcolor=red];
subgraph cluster_9 {
color=blue
24 [label="Enter function <init>" style="filled" fillcolor=red];
25 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
26 [label="Exit function <init>" style="filled" fillcolor=red];
26 [label="Enter function <init>" style="filled" fillcolor=red];
27 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
28 [label="Exit function <init>" style="filled" fillcolor=red];
}
27 [label="Exit class Local" style="filled" fillcolor=red];
29 [label="Exit class Local" style="filled" fillcolor=red];
}
5 -> {6};
6 -> {7};
7 -> {8};
8 -> {9};
9 -> {10};
10 -> {11 12};
11 -> {18};
12 -> {13};
13 -> {14};
14 -> {22};
14 -> {15} [style=dotted];
15 -> {16} [style=dotted];
10 -> {11};
11 -> {12};
12 -> {13 14};
13 -> {20};
14 -> {15};
15 -> {16};
16 -> {24};
16 -> {17} [style=dotted];
17 -> {18} [style=dotted];
18 -> {19};
19 -> {20 23};
19 -> {23} [style=dashed];
18 -> {19} [style=dotted];
19 -> {20} [style=dotted];
20 -> {21};
21 -> {22};
21 -> {22 25};
21 -> {25} [style=dashed];
22 -> {23};
23 -> {24};
23 -> {27} [style=dotted];
23 -> {24} [style=dashed];
24 -> {25};
25 -> {26};
26 -> {27} [color=green];
25 -> {29} [style=dotted];
25 -> {26} [style=dashed];
26 -> {27};
27 -> {28};
28 -> {29} [color=green];
subgraph cluster_9 {
subgraph cluster_10 {
color=red
28 [label="Enter function bar" style="filled" fillcolor=red];
subgraph cluster_10 {
30 [label="Enter function bar" style="filled" fillcolor=red];
subgraph cluster_11 {
color=blue
29 [label="Enter block"];
30 [label="Exit block"];
31 [label="Enter block"];
32 [label="Exit block"];
}
31 [label="Exit function bar" style="filled" fillcolor=red];
33 [label="Exit function bar" style="filled" fillcolor=red];
}
28 -> {29};
29 -> {30};
30 -> {31};
31 -> {32};
32 -> {33};
}
@@ -5,260 +5,267 @@ digraph binaryOperations_kt {
subgraph cluster_0 {
color=red
0 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_1 {
color=blue
1 [label="Enter block"];
subgraph cluster_2 {
color=blue
2 [label="Enter when"];
subgraph cluster_3 {
color=blue
3 [label="Enter when branch condition "];
subgraph cluster_4 {
color=blue
4 [label="Enter ||"];
5 [label="Access variable R|<local>/b1|"];
6 [label="Exit left part of ||"];
7 [label="Enter right part of ||"];
8 [label="Access variable R|<local>/b2|"];
9 [label="Exit ||"];
}
10 [label="Exit when branch condition"];
}
11 [label="Synthetic else branch"];
12 [label="Enter when branch result"];
subgraph cluster_5 {
color=blue
13 [label="Enter block"];
14 [label="Const: Int(1)"];
15 [label="Exit block"];
}
16 [label="Exit when branch result"];
17 [label="Exit when"];
}
18 [label="Exit block"];
}
19 [label="Exit function test_1" style="filled" fillcolor=red];
0 [label="Enter file binaryOperations.kt" style="filled" fillcolor=red];
1 [label="Exit file binaryOperations.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
3 [label="Enter block"];
subgraph cluster_3 {
color=blue
4 [label="Enter when"];
subgraph cluster_4 {
color=blue
5 [label="Enter when branch condition "];
subgraph cluster_5 {
color=blue
6 [label="Enter ||"];
7 [label="Access variable R|<local>/b1|"];
8 [label="Exit left part of ||"];
9 [label="Enter right part of ||"];
10 [label="Access variable R|<local>/b2|"];
11 [label="Exit ||"];
}
12 [label="Exit when branch condition"];
}
13 [label="Synthetic else branch"];
14 [label="Enter when branch result"];
subgraph cluster_6 {
color=blue
15 [label="Enter block"];
16 [label="Const: Int(1)"];
17 [label="Exit block"];
}
18 [label="Exit when branch result"];
19 [label="Exit when"];
}
20 [label="Exit block"];
}
21 [label="Exit function test_1" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
2 -> {3};
3 -> {4};
4 -> {5};
5 -> {6};
6 -> {7 9};
6 -> {7};
7 -> {8};
8 -> {9};
8 -> {9 11};
9 -> {10};
10 -> {11 12};
11 -> {17};
12 -> {13};
13 -> {14};
10 -> {11};
11 -> {12};
12 -> {13 14};
13 -> {19};
14 -> {15};
15 -> {16};
16 -> {17};
17 -> {18};
18 -> {19};
subgraph cluster_6 {
color=red
20 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_7 {
color=blue
21 [label="Enter block"];
subgraph cluster_8 {
color=blue
22 [label="Enter when"];
subgraph cluster_9 {
color=blue
23 [label="Enter when branch condition "];
subgraph cluster_10 {
color=blue
24 [label="Enter &&"];
25 [label="Access variable R|<local>/b1|"];
26 [label="Exit left part of &&"];
27 [label="Enter right part of &&"];
28 [label="Access variable R|<local>/b2|"];
29 [label="Exit &&"];
}
30 [label="Exit when branch condition"];
}
31 [label="Synthetic else branch"];
32 [label="Enter when branch result"];
subgraph cluster_11 {
color=blue
33 [label="Enter block"];
34 [label="Const: Int(1)"];
35 [label="Exit block"];
}
36 [label="Exit when branch result"];
37 [label="Exit when"];
}
38 [label="Exit block"];
}
39 [label="Exit function test_2" style="filled" fillcolor=red];
}
19 -> {20};
20 -> {21};
21 -> {22};
subgraph cluster_7 {
color=red
22 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_8 {
color=blue
23 [label="Enter block"];
subgraph cluster_9 {
color=blue
24 [label="Enter when"];
subgraph cluster_10 {
color=blue
25 [label="Enter when branch condition "];
subgraph cluster_11 {
color=blue
26 [label="Enter &&"];
27 [label="Access variable R|<local>/b1|"];
28 [label="Exit left part of &&"];
29 [label="Enter right part of &&"];
30 [label="Access variable R|<local>/b2|"];
31 [label="Exit &&"];
}
32 [label="Exit when branch condition"];
}
33 [label="Synthetic else branch"];
34 [label="Enter when branch result"];
subgraph cluster_12 {
color=blue
35 [label="Enter block"];
36 [label="Const: Int(1)"];
37 [label="Exit block"];
}
38 [label="Exit when branch result"];
39 [label="Exit when"];
}
40 [label="Exit block"];
}
41 [label="Exit function test_2" style="filled" fillcolor=red];
}
22 -> {23};
23 -> {24};
24 -> {25};
25 -> {26};
26 -> {27 29};
26 -> {27};
27 -> {28};
28 -> {29};
28 -> {29 31};
29 -> {30};
30 -> {31 32};
31 -> {37};
32 -> {33};
33 -> {34};
30 -> {31};
31 -> {32};
32 -> {33 34};
33 -> {39};
34 -> {35};
35 -> {36};
36 -> {37};
37 -> {38};
38 -> {39};
subgraph cluster_12 {
color=red
40 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_13 {
color=blue
41 [label="Enter block"];
subgraph cluster_14 {
color=blue
42 [label="Enter when"];
subgraph cluster_15 {
color=blue
43 [label="Enter when branch condition "];
subgraph cluster_16 {
color=blue
44 [label="Enter ||"];
subgraph cluster_17 {
color=blue
45 [label="Enter &&"];
46 [label="Access variable R|<local>/b1|"];
47 [label="Exit left part of &&"];
48 [label="Enter right part of &&"];
49 [label="Access variable R|<local>/b2|"];
50 [label="Exit &&"];
}
51 [label="Exit left part of ||"];
52 [label="Enter right part of ||"];
53 [label="Access variable R|<local>/b3|"];
54 [label="Exit ||"];
}
55 [label="Exit when branch condition"];
}
56 [label="Synthetic else branch"];
57 [label="Enter when branch result"];
subgraph cluster_18 {
color=blue
58 [label="Enter block"];
59 [label="Const: Int(1)"];
60 [label="Exit block"];
}
61 [label="Exit when branch result"];
62 [label="Exit when"];
}
63 [label="Exit block"];
}
64 [label="Exit function test_3" style="filled" fillcolor=red];
}
39 -> {40};
40 -> {41};
41 -> {42};
subgraph cluster_13 {
color=red
42 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_14 {
color=blue
43 [label="Enter block"];
subgraph cluster_15 {
color=blue
44 [label="Enter when"];
subgraph cluster_16 {
color=blue
45 [label="Enter when branch condition "];
subgraph cluster_17 {
color=blue
46 [label="Enter ||"];
subgraph cluster_18 {
color=blue
47 [label="Enter &&"];
48 [label="Access variable R|<local>/b1|"];
49 [label="Exit left part of &&"];
50 [label="Enter right part of &&"];
51 [label="Access variable R|<local>/b2|"];
52 [label="Exit &&"];
}
53 [label="Exit left part of ||"];
54 [label="Enter right part of ||"];
55 [label="Access variable R|<local>/b3|"];
56 [label="Exit ||"];
}
57 [label="Exit when branch condition"];
}
58 [label="Synthetic else branch"];
59 [label="Enter when branch result"];
subgraph cluster_19 {
color=blue
60 [label="Enter block"];
61 [label="Const: Int(1)"];
62 [label="Exit block"];
}
63 [label="Exit when branch result"];
64 [label="Exit when"];
}
65 [label="Exit block"];
}
66 [label="Exit function test_3" style="filled" fillcolor=red];
}
42 -> {43};
43 -> {44};
44 -> {45};
45 -> {46};
46 -> {47};
47 -> {48 50};
47 -> {48};
48 -> {49};
49 -> {50};
49 -> {50 52};
50 -> {51};
51 -> {52 54};
51 -> {52};
52 -> {53};
53 -> {54};
53 -> {54 56};
54 -> {55};
55 -> {56 57};
56 -> {62};
57 -> {58};
58 -> {59};
55 -> {56};
56 -> {57};
57 -> {58 59};
58 -> {64};
59 -> {60};
60 -> {61};
61 -> {62};
62 -> {63};
63 -> {64};
subgraph cluster_19 {
color=red
65 [label="Enter function test_4" style="filled" fillcolor=red];
subgraph cluster_20 {
color=blue
66 [label="Enter block"];
subgraph cluster_21 {
color=blue
67 [label="Enter when"];
subgraph cluster_22 {
color=blue
68 [label="Enter when branch condition "];
subgraph cluster_23 {
color=blue
69 [label="Enter ||"];
70 [label="Access variable R|<local>/b1|"];
71 [label="Exit left part of ||"];
72 [label="Enter right part of ||"];
subgraph cluster_24 {
color=blue
73 [label="Enter &&"];
74 [label="Access variable R|<local>/b2|"];
75 [label="Exit left part of &&"];
76 [label="Enter right part of &&"];
77 [label="Access variable R|<local>/b3|"];
78 [label="Exit &&"];
}
79 [label="Exit ||"];
}
80 [label="Exit when branch condition"];
}
81 [label="Synthetic else branch"];
82 [label="Enter when branch result"];
subgraph cluster_25 {
color=blue
83 [label="Enter block"];
84 [label="Const: Int(1)"];
85 [label="Exit block"];
}
86 [label="Exit when branch result"];
87 [label="Exit when"];
}
88 [label="Exit block"];
}
89 [label="Exit function test_4" style="filled" fillcolor=red];
}
64 -> {65};
65 -> {66};
66 -> {67};
subgraph cluster_20 {
color=red
67 [label="Enter function test_4" style="filled" fillcolor=red];
subgraph cluster_21 {
color=blue
68 [label="Enter block"];
subgraph cluster_22 {
color=blue
69 [label="Enter when"];
subgraph cluster_23 {
color=blue
70 [label="Enter when branch condition "];
subgraph cluster_24 {
color=blue
71 [label="Enter ||"];
72 [label="Access variable R|<local>/b1|"];
73 [label="Exit left part of ||"];
74 [label="Enter right part of ||"];
subgraph cluster_25 {
color=blue
75 [label="Enter &&"];
76 [label="Access variable R|<local>/b2|"];
77 [label="Exit left part of &&"];
78 [label="Enter right part of &&"];
79 [label="Access variable R|<local>/b3|"];
80 [label="Exit &&"];
}
81 [label="Exit ||"];
}
82 [label="Exit when branch condition"];
}
83 [label="Synthetic else branch"];
84 [label="Enter when branch result"];
subgraph cluster_26 {
color=blue
85 [label="Enter block"];
86 [label="Const: Int(1)"];
87 [label="Exit block"];
}
88 [label="Exit when branch result"];
89 [label="Exit when"];
}
90 [label="Exit block"];
}
91 [label="Exit function test_4" style="filled" fillcolor=red];
}
67 -> {68};
68 -> {69};
69 -> {70};
70 -> {71};
71 -> {72 79};
71 -> {72};
72 -> {73};
73 -> {74};
73 -> {74 81};
74 -> {75};
75 -> {76 78};
75 -> {76};
76 -> {77};
77 -> {78};
77 -> {78 80};
78 -> {79};
79 -> {80};
80 -> {81 82};
81 -> {87};
82 -> {83};
83 -> {84};
80 -> {81};
81 -> {82};
82 -> {83 84};
83 -> {89};
84 -> {85};
85 -> {86};
86 -> {87};
87 -> {88};
88 -> {89};
89 -> {90};
90 -> {91};
}
@@ -5,470 +5,477 @@ digraph booleanOperatorsWithConsts_kt {
subgraph cluster_0 {
color=red
0 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_1 {
color=blue
1 [label="Enter block"];
subgraph cluster_2 {
color=blue
2 [label="Enter when"];
subgraph cluster_3 {
color=blue
3 [label="Enter when branch condition "];
subgraph cluster_4 {
color=blue
4 [label="Enter ||"];
5 [label="Access variable R|<local>/b|"];
6 [label="Exit left part of ||"];
7 [label="Enter right part of ||"];
8 [label="Const: Boolean(false)"];
9 [label="Exit ||"];
}
10 [label="Exit when branch condition"];
}
11 [label="Synthetic else branch"];
12 [label="Enter when branch result"];
subgraph cluster_5 {
color=blue
13 [label="Enter block"];
14 [label="Const: Int(1)"];
15 [label="Exit block"];
}
16 [label="Exit when branch result"];
17 [label="Exit when"];
}
18 [label="Exit block"];
}
19 [label="Exit function test_1" style="filled" fillcolor=red];
0 [label="Enter file booleanOperatorsWithConsts.kt" style="filled" fillcolor=red];
1 [label="Exit file booleanOperatorsWithConsts.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
3 [label="Enter block"];
subgraph cluster_3 {
color=blue
4 [label="Enter when"];
subgraph cluster_4 {
color=blue
5 [label="Enter when branch condition "];
subgraph cluster_5 {
color=blue
6 [label="Enter ||"];
7 [label="Access variable R|<local>/b|"];
8 [label="Exit left part of ||"];
9 [label="Enter right part of ||"];
10 [label="Const: Boolean(false)"];
11 [label="Exit ||"];
}
12 [label="Exit when branch condition"];
}
13 [label="Synthetic else branch"];
14 [label="Enter when branch result"];
subgraph cluster_6 {
color=blue
15 [label="Enter block"];
16 [label="Const: Int(1)"];
17 [label="Exit block"];
}
18 [label="Exit when branch result"];
19 [label="Exit when"];
}
20 [label="Exit block"];
}
21 [label="Exit function test_1" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
2 -> {3};
3 -> {4};
4 -> {5};
5 -> {6};
6 -> {7 9};
6 -> {7};
7 -> {8};
8 -> {9};
8 -> {9 11};
9 -> {10};
10 -> {11 12};
11 -> {17};
12 -> {13};
13 -> {14};
10 -> {11};
11 -> {12};
12 -> {13 14};
13 -> {19};
14 -> {15};
15 -> {16};
16 -> {17};
17 -> {18};
18 -> {19};
subgraph cluster_6 {
color=red
20 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_7 {
color=blue
21 [label="Enter block"];
subgraph cluster_8 {
color=blue
22 [label="Enter when"];
subgraph cluster_9 {
color=blue
23 [label="Enter when branch condition "];
subgraph cluster_10 {
color=blue
24 [label="Enter ||"];
25 [label="Const: Boolean(false)"];
26 [label="Exit left part of ||"];
27 [label="Enter right part of ||"];
28 [label="Access variable R|<local>/b|"];
29 [label="Exit ||"];
}
30 [label="Exit when branch condition"];
}
31 [label="Synthetic else branch"];
32 [label="Enter when branch result"];
subgraph cluster_11 {
color=blue
33 [label="Enter block"];
34 [label="Const: Int(1)"];
35 [label="Exit block"];
}
36 [label="Exit when branch result"];
37 [label="Exit when"];
}
38 [label="Exit block"];
}
39 [label="Exit function test_2" style="filled" fillcolor=red];
}
19 -> {20};
20 -> {21};
21 -> {22};
subgraph cluster_7 {
color=red
22 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_8 {
color=blue
23 [label="Enter block"];
subgraph cluster_9 {
color=blue
24 [label="Enter when"];
subgraph cluster_10 {
color=blue
25 [label="Enter when branch condition "];
subgraph cluster_11 {
color=blue
26 [label="Enter ||"];
27 [label="Const: Boolean(false)"];
28 [label="Exit left part of ||"];
29 [label="Enter right part of ||"];
30 [label="Access variable R|<local>/b|"];
31 [label="Exit ||"];
}
32 [label="Exit when branch condition"];
}
33 [label="Synthetic else branch"];
34 [label="Enter when branch result"];
subgraph cluster_12 {
color=blue
35 [label="Enter block"];
36 [label="Const: Int(1)"];
37 [label="Exit block"];
}
38 [label="Exit when branch result"];
39 [label="Exit when"];
}
40 [label="Exit block"];
}
41 [label="Exit function test_2" style="filled" fillcolor=red];
}
22 -> {23};
23 -> {24};
24 -> {25};
25 -> {26};
26 -> {27};
26 -> {29} [style=dotted];
27 -> {28};
28 -> {29};
28 -> {31} [style=dotted];
29 -> {30};
30 -> {31 32};
31 -> {37};
32 -> {33};
33 -> {34};
30 -> {31};
31 -> {32};
32 -> {33 34};
33 -> {39};
34 -> {35};
35 -> {36};
36 -> {37};
37 -> {38};
38 -> {39};
subgraph cluster_12 {
color=red
40 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_13 {
color=blue
41 [label="Enter block"];
subgraph cluster_14 {
color=blue
42 [label="Enter when"];
subgraph cluster_15 {
color=blue
43 [label="Enter when branch condition "];
subgraph cluster_16 {
color=blue
44 [label="Enter ||"];
45 [label="Access variable R|<local>/b|"];
46 [label="Exit left part of ||"];
47 [label="Enter right part of ||"];
48 [label="Const: Boolean(true)"];
49 [label="Exit ||"];
}
50 [label="Exit when branch condition"];
}
51 [label="Synthetic else branch"];
52 [label="Enter when branch result"];
subgraph cluster_17 {
color=blue
53 [label="Enter block"];
54 [label="Const: Int(1)"];
55 [label="Exit block"];
}
56 [label="Exit when branch result"];
57 [label="Exit when"];
}
58 [label="Exit block"];
}
59 [label="Exit function test_3" style="filled" fillcolor=red];
}
39 -> {40};
40 -> {41};
41 -> {42};
subgraph cluster_13 {
color=red
42 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_14 {
color=blue
43 [label="Enter block"];
subgraph cluster_15 {
color=blue
44 [label="Enter when"];
subgraph cluster_16 {
color=blue
45 [label="Enter when branch condition "];
subgraph cluster_17 {
color=blue
46 [label="Enter ||"];
47 [label="Access variable R|<local>/b|"];
48 [label="Exit left part of ||"];
49 [label="Enter right part of ||"];
50 [label="Const: Boolean(true)"];
51 [label="Exit ||"];
}
52 [label="Exit when branch condition"];
}
53 [label="Synthetic else branch"];
54 [label="Enter when branch result"];
subgraph cluster_18 {
color=blue
55 [label="Enter block"];
56 [label="Const: Int(1)"];
57 [label="Exit block"];
}
58 [label="Exit when branch result"];
59 [label="Exit when"];
}
60 [label="Exit block"];
}
61 [label="Exit function test_3" style="filled" fillcolor=red];
}
42 -> {43};
43 -> {44};
44 -> {45};
45 -> {46};
46 -> {47 49};
46 -> {47};
47 -> {48};
48 -> {49};
48 -> {49 51};
49 -> {50};
50 -> {51 52};
51 -> {57};
52 -> {53};
53 -> {54};
50 -> {51};
51 -> {52};
52 -> {53 54};
53 -> {59};
54 -> {55};
55 -> {56};
56 -> {57};
57 -> {58};
58 -> {59};
subgraph cluster_18 {
color=red
60 [label="Enter function test_4" style="filled" fillcolor=red];
subgraph cluster_19 {
color=blue
61 [label="Enter block"];
subgraph cluster_20 {
color=blue
62 [label="Enter when"];
subgraph cluster_21 {
color=blue
63 [label="Enter when branch condition "];
subgraph cluster_22 {
color=blue
64 [label="Enter ||"];
65 [label="Const: Boolean(true)"];
66 [label="Exit left part of ||"];
67 [label="Enter right part of ||" style="filled" fillcolor=gray];
68 [label="Access variable R|<local>/b|" style="filled" fillcolor=gray];
69 [label="Exit ||"];
}
70 [label="Exit when branch condition"];
}
71 [label="Synthetic else branch"];
72 [label="Enter when branch result"];
subgraph cluster_23 {
color=blue
73 [label="Enter block"];
74 [label="Const: Int(1)"];
75 [label="Exit block"];
}
76 [label="Exit when branch result"];
77 [label="Exit when"];
}
78 [label="Exit block"];
}
79 [label="Exit function test_4" style="filled" fillcolor=red];
}
59 -> {60};
60 -> {61};
61 -> {62};
subgraph cluster_19 {
color=red
62 [label="Enter function test_4" style="filled" fillcolor=red];
subgraph cluster_20 {
color=blue
63 [label="Enter block"];
subgraph cluster_21 {
color=blue
64 [label="Enter when"];
subgraph cluster_22 {
color=blue
65 [label="Enter when branch condition "];
subgraph cluster_23 {
color=blue
66 [label="Enter ||"];
67 [label="Const: Boolean(true)"];
68 [label="Exit left part of ||"];
69 [label="Enter right part of ||" style="filled" fillcolor=gray];
70 [label="Access variable R|<local>/b|" style="filled" fillcolor=gray];
71 [label="Exit ||"];
}
72 [label="Exit when branch condition"];
}
73 [label="Synthetic else branch"];
74 [label="Enter when branch result"];
subgraph cluster_24 {
color=blue
75 [label="Enter block"];
76 [label="Const: Int(1)"];
77 [label="Exit block"];
}
78 [label="Exit when branch result"];
79 [label="Exit when"];
}
80 [label="Exit block"];
}
81 [label="Exit function test_4" style="filled" fillcolor=red];
}
62 -> {63};
63 -> {64};
64 -> {65};
65 -> {66};
66 -> {69};
66 -> {67} [style=dotted];
67 -> {68} [style=dotted];
66 -> {67};
67 -> {68};
68 -> {71};
68 -> {69} [style=dotted];
69 -> {70};
70 -> {71 72};
71 -> {77};
72 -> {73};
73 -> {74};
69 -> {70} [style=dotted];
70 -> {71} [style=dotted];
71 -> {72};
72 -> {73 74};
73 -> {79};
74 -> {75};
75 -> {76};
76 -> {77};
77 -> {78};
78 -> {79};
subgraph cluster_24 {
color=red
80 [label="Enter function test_5" style="filled" fillcolor=red];
subgraph cluster_25 {
color=blue
81 [label="Enter block"];
subgraph cluster_26 {
color=blue
82 [label="Enter when"];
subgraph cluster_27 {
color=blue
83 [label="Enter when branch condition "];
subgraph cluster_28 {
color=blue
84 [label="Enter &&"];
85 [label="Access variable R|<local>/b|"];
86 [label="Exit left part of &&"];
87 [label="Enter right part of &&"];
88 [label="Const: Boolean(false)"];
89 [label="Exit &&"];
}
90 [label="Exit when branch condition"];
}
91 [label="Synthetic else branch"];
92 [label="Enter when branch result"];
subgraph cluster_29 {
color=blue
93 [label="Enter block"];
94 [label="Const: Int(1)"];
95 [label="Exit block"];
}
96 [label="Exit when branch result"];
97 [label="Exit when"];
}
98 [label="Exit block"];
}
99 [label="Exit function test_5" style="filled" fillcolor=red];
}
79 -> {80};
80 -> {81};
81 -> {82};
subgraph cluster_25 {
color=red
82 [label="Enter function test_5" style="filled" fillcolor=red];
subgraph cluster_26 {
color=blue
83 [label="Enter block"];
subgraph cluster_27 {
color=blue
84 [label="Enter when"];
subgraph cluster_28 {
color=blue
85 [label="Enter when branch condition "];
subgraph cluster_29 {
color=blue
86 [label="Enter &&"];
87 [label="Access variable R|<local>/b|"];
88 [label="Exit left part of &&"];
89 [label="Enter right part of &&"];
90 [label="Const: Boolean(false)"];
91 [label="Exit &&"];
}
92 [label="Exit when branch condition"];
}
93 [label="Synthetic else branch"];
94 [label="Enter when branch result"];
subgraph cluster_30 {
color=blue
95 [label="Enter block"];
96 [label="Const: Int(1)"];
97 [label="Exit block"];
}
98 [label="Exit when branch result"];
99 [label="Exit when"];
}
100 [label="Exit block"];
}
101 [label="Exit function test_5" style="filled" fillcolor=red];
}
82 -> {83};
83 -> {84};
84 -> {85};
85 -> {86};
86 -> {87 89};
86 -> {87};
87 -> {88};
88 -> {89};
88 -> {89 91};
89 -> {90};
90 -> {91 92};
91 -> {97};
92 -> {93};
93 -> {94};
90 -> {91};
91 -> {92};
92 -> {93 94};
93 -> {99};
94 -> {95};
95 -> {96};
96 -> {97};
97 -> {98};
98 -> {99};
subgraph cluster_30 {
color=red
100 [label="Enter function test_6" style="filled" fillcolor=red];
subgraph cluster_31 {
color=blue
101 [label="Enter block"];
subgraph cluster_32 {
color=blue
102 [label="Enter when"];
subgraph cluster_33 {
color=blue
103 [label="Enter when branch condition "];
subgraph cluster_34 {
color=blue
104 [label="Enter &&"];
105 [label="Const: Boolean(false)"];
106 [label="Exit left part of &&"];
107 [label="Enter right part of &&" style="filled" fillcolor=gray];
108 [label="Access variable R|<local>/b|" style="filled" fillcolor=gray];
109 [label="Exit &&"];
}
110 [label="Exit when branch condition"];
}
111 [label="Synthetic else branch"];
112 [label="Enter when branch result"];
subgraph cluster_35 {
color=blue
113 [label="Enter block"];
114 [label="Const: Int(1)"];
115 [label="Exit block"];
}
116 [label="Exit when branch result"];
117 [label="Exit when"];
}
118 [label="Exit block"];
}
119 [label="Exit function test_6" style="filled" fillcolor=red];
}
99 -> {100};
100 -> {101};
101 -> {102};
subgraph cluster_31 {
color=red
102 [label="Enter function test_6" style="filled" fillcolor=red];
subgraph cluster_32 {
color=blue
103 [label="Enter block"];
subgraph cluster_33 {
color=blue
104 [label="Enter when"];
subgraph cluster_34 {
color=blue
105 [label="Enter when branch condition "];
subgraph cluster_35 {
color=blue
106 [label="Enter &&"];
107 [label="Const: Boolean(false)"];
108 [label="Exit left part of &&"];
109 [label="Enter right part of &&" style="filled" fillcolor=gray];
110 [label="Access variable R|<local>/b|" style="filled" fillcolor=gray];
111 [label="Exit &&"];
}
112 [label="Exit when branch condition"];
}
113 [label="Synthetic else branch"];
114 [label="Enter when branch result"];
subgraph cluster_36 {
color=blue
115 [label="Enter block"];
116 [label="Const: Int(1)"];
117 [label="Exit block"];
}
118 [label="Exit when branch result"];
119 [label="Exit when"];
}
120 [label="Exit block"];
}
121 [label="Exit function test_6" style="filled" fillcolor=red];
}
102 -> {103};
103 -> {104};
104 -> {105};
105 -> {106};
106 -> {109};
106 -> {107} [style=dotted];
107 -> {108} [style=dotted];
106 -> {107};
107 -> {108};
108 -> {111};
108 -> {109} [style=dotted];
109 -> {110};
110 -> {111 112};
111 -> {117};
112 -> {113};
113 -> {114};
109 -> {110} [style=dotted];
110 -> {111} [style=dotted];
111 -> {112};
112 -> {113 114};
113 -> {119};
114 -> {115};
115 -> {116};
116 -> {117};
117 -> {118};
118 -> {119};
subgraph cluster_36 {
color=red
120 [label="Enter function test_7" style="filled" fillcolor=red];
subgraph cluster_37 {
color=blue
121 [label="Enter block"];
subgraph cluster_38 {
color=blue
122 [label="Enter when"];
subgraph cluster_39 {
color=blue
123 [label="Enter when branch condition "];
subgraph cluster_40 {
color=blue
124 [label="Enter &&"];
125 [label="Access variable R|<local>/b|"];
126 [label="Exit left part of &&"];
127 [label="Enter right part of &&"];
128 [label="Const: Boolean(true)"];
129 [label="Exit &&"];
}
130 [label="Exit when branch condition"];
}
131 [label="Synthetic else branch"];
132 [label="Enter when branch result"];
subgraph cluster_41 {
color=blue
133 [label="Enter block"];
134 [label="Const: Int(1)"];
135 [label="Exit block"];
}
136 [label="Exit when branch result"];
137 [label="Exit when"];
}
138 [label="Exit block"];
}
139 [label="Exit function test_7" style="filled" fillcolor=red];
}
119 -> {120};
120 -> {121};
121 -> {122};
subgraph cluster_37 {
color=red
122 [label="Enter function test_7" style="filled" fillcolor=red];
subgraph cluster_38 {
color=blue
123 [label="Enter block"];
subgraph cluster_39 {
color=blue
124 [label="Enter when"];
subgraph cluster_40 {
color=blue
125 [label="Enter when branch condition "];
subgraph cluster_41 {
color=blue
126 [label="Enter &&"];
127 [label="Access variable R|<local>/b|"];
128 [label="Exit left part of &&"];
129 [label="Enter right part of &&"];
130 [label="Const: Boolean(true)"];
131 [label="Exit &&"];
}
132 [label="Exit when branch condition"];
}
133 [label="Synthetic else branch"];
134 [label="Enter when branch result"];
subgraph cluster_42 {
color=blue
135 [label="Enter block"];
136 [label="Const: Int(1)"];
137 [label="Exit block"];
}
138 [label="Exit when branch result"];
139 [label="Exit when"];
}
140 [label="Exit block"];
}
141 [label="Exit function test_7" style="filled" fillcolor=red];
}
122 -> {123};
123 -> {124};
124 -> {125};
125 -> {126};
126 -> {127 129};
126 -> {127};
127 -> {128};
128 -> {129};
128 -> {129 131};
129 -> {130};
130 -> {131 132};
131 -> {137};
132 -> {133};
133 -> {134};
130 -> {131};
131 -> {132};
132 -> {133 134};
133 -> {139};
134 -> {135};
135 -> {136};
136 -> {137};
137 -> {138};
138 -> {139};
subgraph cluster_42 {
color=red
140 [label="Enter function test_8" style="filled" fillcolor=red];
subgraph cluster_43 {
color=blue
141 [label="Enter block"];
subgraph cluster_44 {
color=blue
142 [label="Enter when"];
subgraph cluster_45 {
color=blue
143 [label="Enter when branch condition "];
subgraph cluster_46 {
color=blue
144 [label="Enter &&"];
145 [label="Const: Boolean(true)"];
146 [label="Exit left part of &&"];
147 [label="Enter right part of &&"];
148 [label="Access variable R|<local>/b|"];
149 [label="Exit &&"];
}
150 [label="Exit when branch condition"];
}
151 [label="Synthetic else branch"];
152 [label="Enter when branch result"];
subgraph cluster_47 {
color=blue
153 [label="Enter block"];
154 [label="Const: Int(1)"];
155 [label="Exit block"];
}
156 [label="Exit when branch result"];
157 [label="Exit when"];
}
158 [label="Exit block"];
}
159 [label="Exit function test_8" style="filled" fillcolor=red];
}
139 -> {140};
140 -> {141};
141 -> {142};
subgraph cluster_43 {
color=red
142 [label="Enter function test_8" style="filled" fillcolor=red];
subgraph cluster_44 {
color=blue
143 [label="Enter block"];
subgraph cluster_45 {
color=blue
144 [label="Enter when"];
subgraph cluster_46 {
color=blue
145 [label="Enter when branch condition "];
subgraph cluster_47 {
color=blue
146 [label="Enter &&"];
147 [label="Const: Boolean(true)"];
148 [label="Exit left part of &&"];
149 [label="Enter right part of &&"];
150 [label="Access variable R|<local>/b|"];
151 [label="Exit &&"];
}
152 [label="Exit when branch condition"];
}
153 [label="Synthetic else branch"];
154 [label="Enter when branch result"];
subgraph cluster_48 {
color=blue
155 [label="Enter block"];
156 [label="Const: Int(1)"];
157 [label="Exit block"];
}
158 [label="Exit when branch result"];
159 [label="Exit when"];
}
160 [label="Exit block"];
}
161 [label="Exit function test_8" style="filled" fillcolor=red];
}
142 -> {143};
143 -> {144};
144 -> {145};
145 -> {146};
146 -> {147};
146 -> {149} [style=dotted];
147 -> {148};
148 -> {149};
148 -> {151} [style=dotted];
149 -> {150};
150 -> {151 152};
151 -> {157};
152 -> {153};
153 -> {154};
150 -> {151};
151 -> {152};
152 -> {153 154};
153 -> {159};
154 -> {155};
155 -> {156};
156 -> {157};
157 -> {158};
158 -> {159};
159 -> {160};
160 -> {161};
}
+172 -165
View File
@@ -5,104 +5,111 @@ digraph complex_kt {
subgraph cluster_0 {
color=red
0 [label="Enter class AutoCloseable" style="filled" fillcolor=red];
1 [label="Exit class AutoCloseable" style="filled" fillcolor=red];
0 [label="Enter file complex.kt" style="filled" fillcolor=red];
1 [label="Exit file complex.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter function close" style="filled" fillcolor=red];
3 [label="Exit function close" style="filled" fillcolor=red];
2 [label="Enter class AutoCloseable" style="filled" fillcolor=red];
3 [label="Exit class AutoCloseable" style="filled" fillcolor=red];
}
2 -> {3};
2 -> {3} [color=green];
subgraph cluster_2 {
color=red
4 [label="Enter function closeFinally" style="filled" fillcolor=red];
subgraph cluster_3 {
4 [label="Enter function close" style="filled" fillcolor=red];
5 [label="Exit function close" style="filled" fillcolor=red];
}
4 -> {5};
subgraph cluster_3 {
color=red
6 [label="Enter function closeFinally" style="filled" fillcolor=red];
subgraph cluster_4 {
color=blue
5 [label="Enter block"];
subgraph cluster_4 {
7 [label="Enter block"];
subgraph cluster_5 {
color=blue
6 [label="Enter when"];
subgraph cluster_5 {
color=blue
7 [label="Enter when branch condition "];
8 [label="Access variable this@R|/closeFinally|"];
9 [label="Const: Null(null)"];
10 [label="Equality operator =="];
11 [label="Exit when branch condition"];
}
8 [label="Enter when"];
subgraph cluster_6 {
color=blue
12 [label="Enter when branch condition "];
13 [label="Access variable R|<local>/cause|"];
14 [label="Const: Null(null)"];
15 [label="Equality operator =="];
16 [label="Exit when branch condition"];
9 [label="Enter when branch condition "];
10 [label="Access variable this@R|/closeFinally|"];
11 [label="Const: Null(null)"];
12 [label="Equality operator =="];
13 [label="Exit when branch condition"];
}
subgraph cluster_7 {
color=blue
17 [label="Enter when branch condition else"];
14 [label="Enter when branch condition "];
15 [label="Access variable R|<local>/cause|"];
16 [label="Const: Null(null)"];
17 [label="Equality operator =="];
18 [label="Exit when branch condition"];
}
19 [label="Enter when branch result"];
subgraph cluster_8 {
color=blue
20 [label="Enter block"];
subgraph cluster_9 {
color=blue
21 [label="Try expression enter"];
subgraph cluster_10 {
color=blue
22 [label="Try main block enter"];
subgraph cluster_11 {
color=blue
23 [label="Enter block"];
24 [label="Function call: this@R|/closeFinally|.R|/AutoCloseable.close|()" style="filled" fillcolor=yellow];
25 [label="Exit block"];
}
26 [label="Try main block exit"];
}
subgraph cluster_12 {
color=blue
27 [label="Catch enter"];
28 [label="Variable declaration: closeException: R|kotlin/Throwable|"];
subgraph cluster_13 {
color=blue
29 [label="Enter block"];
30 [label="Access variable R|<local>/cause|"];
31 [label="Smart cast: R|<local>/cause|"];
32 [label="Access variable R|<local>/closeException|"];
33 [label="Function call: R|<local>/cause|.R|kotlin/Throwable.addSuppressed|(...)" style="filled" fillcolor=yellow];
34 [label="Exit block"];
}
35 [label="Catch exit"];
}
36 [label="Try expression exit"];
}
37 [label="Exit block"];
19 [label="Enter when branch condition else"];
20 [label="Exit when branch condition"];
}
38 [label="Exit when branch result"];
39 [label="Enter when branch result"];
subgraph cluster_14 {
21 [label="Enter when branch result"];
subgraph cluster_9 {
color=blue
40 [label="Enter block"];
41 [label="Function call: this@R|/closeFinally|.R|/AutoCloseable.close|()" style="filled" fillcolor=yellow];
42 [label="Exit block"];
22 [label="Enter block"];
subgraph cluster_10 {
color=blue
23 [label="Try expression enter"];
subgraph cluster_11 {
color=blue
24 [label="Try main block enter"];
subgraph cluster_12 {
color=blue
25 [label="Enter block"];
26 [label="Function call: this@R|/closeFinally|.R|/AutoCloseable.close|()" style="filled" fillcolor=yellow];
27 [label="Exit block"];
}
28 [label="Try main block exit"];
}
subgraph cluster_13 {
color=blue
29 [label="Catch enter"];
30 [label="Variable declaration: closeException: R|kotlin/Throwable|"];
subgraph cluster_14 {
color=blue
31 [label="Enter block"];
32 [label="Access variable R|<local>/cause|"];
33 [label="Smart cast: R|<local>/cause|"];
34 [label="Access variable R|<local>/closeException|"];
35 [label="Function call: R|<local>/cause|.R|kotlin/Throwable.addSuppressed|(...)" style="filled" fillcolor=yellow];
36 [label="Exit block"];
}
37 [label="Catch exit"];
}
38 [label="Try expression exit"];
}
39 [label="Exit block"];
}
43 [label="Exit when branch result"];
44 [label="Enter when branch result"];
40 [label="Exit when branch result"];
41 [label="Enter when branch result"];
subgraph cluster_15 {
color=blue
45 [label="Enter block"];
46 [label="Exit block"];
42 [label="Enter block"];
43 [label="Function call: this@R|/closeFinally|.R|/AutoCloseable.close|()" style="filled" fillcolor=yellow];
44 [label="Exit block"];
}
47 [label="Exit when branch result"];
48 [label="Exit when"];
45 [label="Exit when branch result"];
46 [label="Enter when branch result"];
subgraph cluster_16 {
color=blue
47 [label="Enter block"];
48 [label="Exit block"];
}
49 [label="Exit when branch result"];
50 [label="Exit when"];
}
49 [label="Jump: ^closeFinally when () {
51 [label="Jump: ^closeFinally when () {
==(this@R|/closeFinally|, Null(null)) -> {
}
==(R|<local>/cause|, Null(null)) -> {
@@ -119,36 +126,34 @@ digraph complex_kt {
}
}
"];
50 [label="Stub" style="filled" fillcolor=gray];
51 [label="Exit block" style="filled" fillcolor=gray];
52 [label="Stub" style="filled" fillcolor=gray];
53 [label="Exit block" style="filled" fillcolor=gray];
}
52 [label="Exit function closeFinally" style="filled" fillcolor=red];
54 [label="Exit function closeFinally" style="filled" fillcolor=red];
}
4 -> {5};
5 -> {6};
6 -> {7};
7 -> {8};
8 -> {9};
9 -> {10};
10 -> {11};
11 -> {12 44};
11 -> {12};
12 -> {13};
13 -> {14};
13 -> {14 46};
14 -> {15};
15 -> {16};
16 -> {17 39};
16 -> {17};
17 -> {18};
18 -> {19};
18 -> {19 41};
19 -> {20};
20 -> {21};
21 -> {22 27};
21 -> {22};
22 -> {23};
23 -> {24};
24 -> {25 27};
23 -> {24 29};
24 -> {25};
25 -> {26};
26 -> {27 36};
26 -> {27 29};
27 -> {28};
28 -> {29};
28 -> {29 38};
29 -> {30};
30 -> {31};
31 -> {32};
@@ -158,99 +163,99 @@ digraph complex_kt {
35 -> {36};
36 -> {37};
37 -> {38};
38 -> {48};
38 -> {39};
39 -> {40};
40 -> {41};
40 -> {50};
41 -> {42};
42 -> {43};
43 -> {48};
43 -> {44};
44 -> {45};
45 -> {46};
45 -> {50};
46 -> {47};
47 -> {48};
48 -> {49};
49 -> {52};
49 -> {50} [style=dotted];
50 -> {51} [style=dotted];
49 -> {50};
50 -> {51};
51 -> {54};
51 -> {52} [style=dotted];
52 -> {53} [style=dotted];
53 -> {54} [style=dotted];
subgraph cluster_16 {
subgraph cluster_17 {
color=red
53 [label="Enter function firstIsInstanceOrNull" style="filled" fillcolor=red];
subgraph cluster_17 {
55 [label="Enter function firstIsInstanceOrNull" style="filled" fillcolor=red];
subgraph cluster_18 {
color=blue
54 [label="Enter block"];
subgraph cluster_18 {
56 [label="Enter block"];
subgraph cluster_19 {
color=blue
55 [label="Enter block"];
56 [label="Access variable this@R|/firstIsInstanceOrNull|"];
57 [label="Function call: this@R|/firstIsInstanceOrNull|.R|SubstitutionOverride<kotlin/collections/List.iterator: R|kotlin/collections/Iterator<kotlin/Any?>|>|()" style="filled" fillcolor=yellow];
58 [label="Variable declaration: lval <iterator>: R|kotlin/collections/Iterator<kotlin/Any?>|"];
subgraph cluster_19 {
57 [label="Enter block"];
58 [label="Access variable this@R|/firstIsInstanceOrNull|"];
59 [label="Function call: this@R|/firstIsInstanceOrNull|.R|SubstitutionOverride<kotlin/collections/List.iterator: R|kotlin/collections/Iterator<kotlin/Any?>|>|()" style="filled" fillcolor=yellow];
60 [label="Variable declaration: lval <iterator>: R|kotlin/collections/Iterator<kotlin/Any?>|"];
subgraph cluster_20 {
color=blue
59 [label="Enter while loop"];
subgraph cluster_20 {
color=blue
60 [label="Enter loop condition"];
61 [label="Access variable R|<local>/<iterator>|"];
62 [label="Function call: R|<local>/<iterator>|.R|SubstitutionOverride<kotlin/collections/Iterator.hasNext: R|kotlin/Boolean|>|()" style="filled" fillcolor=yellow];
63 [label="Exit loop condition"];
}
61 [label="Enter while loop"];
subgraph cluster_21 {
color=blue
64 [label="Enter loop block"];
subgraph cluster_22 {
62 [label="Enter loop condition"];
63 [label="Access variable R|<local>/<iterator>|"];
64 [label="Function call: R|<local>/<iterator>|.R|SubstitutionOverride<kotlin/collections/Iterator.hasNext: R|kotlin/Boolean|>|()" style="filled" fillcolor=yellow];
65 [label="Exit loop condition"];
}
subgraph cluster_22 {
color=blue
66 [label="Enter loop block"];
subgraph cluster_23 {
color=blue
65 [label="Enter block"];
66 [label="Access variable R|<local>/<iterator>|"];
67 [label="Function call: R|<local>/<iterator>|.R|SubstitutionOverride<kotlin/collections/Iterator.next: R|kotlin/Any?|>|()" style="filled" fillcolor=yellow];
68 [label="Variable declaration: lval element: R|kotlin/Any?|"];
subgraph cluster_23 {
67 [label="Enter block"];
68 [label="Access variable R|<local>/<iterator>|"];
69 [label="Function call: R|<local>/<iterator>|.R|SubstitutionOverride<kotlin/collections/Iterator.next: R|kotlin/Any?|>|()" style="filled" fillcolor=yellow];
70 [label="Variable declaration: lval element: R|kotlin/Any?|"];
subgraph cluster_24 {
color=blue
69 [label="Enter block"];
subgraph cluster_24 {
71 [label="Enter block"];
subgraph cluster_25 {
color=blue
70 [label="Enter when"];
subgraph cluster_25 {
color=blue
71 [label="Enter when branch condition "];
72 [label="Access variable R|<local>/element|"];
73 [label="Type operator: (R|<local>/element| is R|T|)"];
74 [label="Exit when branch condition"];
}
75 [label="Synthetic else branch"];
76 [label="Enter when branch result"];
72 [label="Enter when"];
subgraph cluster_26 {
color=blue
77 [label="Enter block"];
78 [label="Access variable R|<local>/element|"];
79 [label="Smart cast: R|<local>/element|"];
80 [label="Jump: ^firstIsInstanceOrNull R|<local>/element|"];
81 [label="Stub" style="filled" fillcolor=gray];
82 [label="Exit block" style="filled" fillcolor=gray];
73 [label="Enter when branch condition "];
74 [label="Access variable R|<local>/element|"];
75 [label="Type operator: (R|<local>/element| is R|T|)"];
76 [label="Exit when branch condition"];
}
83 [label="Exit when branch result" style="filled" fillcolor=gray];
84 [label="Exit when"];
77 [label="Synthetic else branch"];
78 [label="Enter when branch result"];
subgraph cluster_27 {
color=blue
79 [label="Enter block"];
80 [label="Access variable R|<local>/element|"];
81 [label="Smart cast: R|<local>/element|"];
82 [label="Jump: ^firstIsInstanceOrNull R|<local>/element|"];
83 [label="Stub" style="filled" fillcolor=gray];
84 [label="Exit block" style="filled" fillcolor=gray];
}
85 [label="Exit when branch result" style="filled" fillcolor=gray];
86 [label="Exit when"];
}
85 [label="Exit block"];
87 [label="Exit block"];
}
86 [label="Exit block"];
88 [label="Exit block"];
}
87 [label="Exit loop block"];
89 [label="Exit loop block"];
}
88 [label="Exit while loop"];
90 [label="Exit while loop"];
}
89 [label="Exit block"];
91 [label="Exit block"];
}
90 [label="Const: Null(null)"];
91 [label="Jump: ^firstIsInstanceOrNull Null(null)"];
92 [label="Stub" style="filled" fillcolor=gray];
93 [label="Exit block" style="filled" fillcolor=gray];
92 [label="Const: Null(null)"];
93 [label="Jump: ^firstIsInstanceOrNull Null(null)"];
94 [label="Stub" style="filled" fillcolor=gray];
95 [label="Exit block" style="filled" fillcolor=gray];
}
94 [label="Exit function firstIsInstanceOrNull" style="filled" fillcolor=red];
96 [label="Exit function firstIsInstanceOrNull" style="filled" fillcolor=red];
}
53 -> {54};
54 -> {55};
55 -> {56};
56 -> {57};
57 -> {58};
@@ -259,9 +264,9 @@ digraph complex_kt {
60 -> {61};
61 -> {62};
62 -> {63};
63 -> {64 88};
63 -> {64};
64 -> {65};
65 -> {66};
65 -> {66 90};
66 -> {67};
67 -> {68};
68 -> {69};
@@ -270,27 +275,29 @@ digraph complex_kt {
71 -> {72};
72 -> {73};
73 -> {74};
74 -> {75 76};
75 -> {84};
76 -> {77};
77 -> {78};
74 -> {75};
75 -> {76};
76 -> {77 78};
77 -> {86};
78 -> {79};
79 -> {80};
80 -> {94};
80 -> {81} [style=dotted];
81 -> {82} [style=dotted];
80 -> {81};
81 -> {82};
82 -> {96};
82 -> {83} [style=dotted];
83 -> {84} [style=dotted];
84 -> {85};
85 -> {86};
84 -> {85} [style=dotted];
85 -> {86} [style=dotted];
86 -> {87};
87 -> {60} [color=green style=dashed];
87 -> {88};
88 -> {89};
89 -> {90};
89 -> {62} [color=green style=dashed];
90 -> {91};
91 -> {94};
91 -> {92} [style=dotted];
92 -> {93} [style=dotted];
91 -> {92};
92 -> {93};
93 -> {96};
93 -> {94} [style=dotted];
94 -> {95} [style=dotted];
95 -> {96} [style=dotted];
}
@@ -5,82 +5,87 @@ digraph defaultArguments_kt {
subgraph cluster_0 {
color=red
0 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_1 {
color=blue
1 [label="Enter block"];
2 [label="Const: Int(1)"];
3 [label="Jump: ^foo Int(1)"];
4 [label="Stub" style="filled" fillcolor=gray];
5 [label="Exit block" style="filled" fillcolor=gray];
}
6 [label="Exit function foo" style="filled" fillcolor=red];
0 [label="Enter file defaultArguments.kt" style="filled" fillcolor=red];
1 [label="Exit file defaultArguments.kt" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
2 -> {3};
3 -> {6};
3 -> {4} [style=dotted];
4 -> {5} [style=dotted];
5 -> {6} [style=dotted];
0 -> {1} [color=green];
subgraph cluster_2 {
subgraph cluster_1 {
color=red
7 [label="Enter function test" style="filled" fillcolor=red];
8 [label="Enter default value of y"];
subgraph cluster_3 {
2 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
9 [label="Enter default value of y" style="filled" fillcolor=red];
10 [label="Access variable R|<local>/x|"];
11 [label="Type operator: (R|<local>/x| as R|kotlin/String|)"];
12 [label="Exit default value of y" style="filled" fillcolor=red];
3 [label="Enter block"];
4 [label="Const: Int(1)"];
5 [label="Jump: ^foo Int(1)"];
6 [label="Stub" style="filled" fillcolor=gray];
7 [label="Exit block" style="filled" fillcolor=gray];
}
13 [label="Exit default value of y"];
14 [label="Enter default value of z"];
8 [label="Exit function foo" style="filled" fillcolor=red];
}
2 -> {3};
3 -> {4};
4 -> {5};
5 -> {8};
5 -> {6} [style=dotted];
6 -> {7} [style=dotted];
7 -> {8} [style=dotted];
subgraph cluster_3 {
color=red
9 [label="Enter function test" style="filled" fillcolor=red];
10 [label="Enter default value of y"];
subgraph cluster_4 {
color=blue
15 [label="Enter default value of z" style="filled" fillcolor=red];
16 [label="Postponed enter to lambda"];
subgraph cluster_5 {
color=blue
17 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_6 {
color=blue
18 [label="Enter block"];
19 [label="Function call: R|/foo|()" style="filled" fillcolor=yellow];
20 [label="Exit block"];
}
21 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
22 [label="Postponed exit from lambda"];
23 [label="Function call: R|kotlin/run|<R|kotlin/Int|>(...)" style="filled" fillcolor=yellow];
24 [label="Exit default value of z" style="filled" fillcolor=red];
11 [label="Enter default value of y" style="filled" fillcolor=red];
12 [label="Access variable R|<local>/x|"];
13 [label="Type operator: (R|<local>/x| as R|kotlin/String|)"];
14 [label="Exit default value of y" style="filled" fillcolor=red];
}
25 [label="Exit default value of z"];
subgraph cluster_7 {
15 [label="Exit default value of y"];
16 [label="Enter default value of z"];
subgraph cluster_5 {
color=blue
26 [label="Enter block"];
27 [label="Function call: R|/foo|()" style="filled" fillcolor=yellow];
28 [label="Exit block"];
17 [label="Enter default value of z" style="filled" fillcolor=red];
18 [label="Postponed enter to lambda"];
subgraph cluster_6 {
color=blue
19 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_7 {
color=blue
20 [label="Enter block"];
21 [label="Function call: R|/foo|()" style="filled" fillcolor=yellow];
22 [label="Exit block"];
}
23 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
24 [label="Postponed exit from lambda"];
25 [label="Function call: R|kotlin/run|<R|kotlin/Int|>(...)" style="filled" fillcolor=yellow];
26 [label="Exit default value of z" style="filled" fillcolor=red];
}
29 [label="Exit function test" style="filled" fillcolor=red];
27 [label="Exit default value of z"];
subgraph cluster_8 {
color=blue
28 [label="Enter block"];
29 [label="Function call: R|/foo|()" style="filled" fillcolor=yellow];
30 [label="Exit block"];
}
31 [label="Exit function test" style="filled" fillcolor=red];
}
7 -> {8};
8 -> {9 13};
8 -> {9} [style=dashed];
9 -> {10};
10 -> {11};
10 -> {11 15};
10 -> {11} [style=dashed];
11 -> {12};
12 -> {13};
13 -> {14};
14 -> {15 25};
14 -> {15} [style=dashed];
14 -> {15};
15 -> {16};
16 -> {17 23};
16 -> {22} [style=dotted];
16 -> {17 27};
16 -> {17} [style=dashed];
17 -> {18};
18 -> {19};
18 -> {19 25};
18 -> {24} [style=dotted];
18 -> {19} [style=dashed];
19 -> {20};
20 -> {21};
21 -> {22};
@@ -91,5 +96,7 @@ digraph defaultArguments_kt {
26 -> {27};
27 -> {28};
28 -> {29};
29 -> {30};
30 -> {31};
}
@@ -5,77 +5,84 @@ digraph emptyWhen_kt {
subgraph cluster_0 {
color=red
0 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_1 {
color=blue
1 [label="Enter block"];
subgraph cluster_2 {
color=blue
2 [label="Enter when"];
3 [label="Synthetic else branch"];
4 [label="Exit when"];
}
5 [label="Exit block"];
}
6 [label="Exit function test_1" style="filled" fillcolor=red];
0 [label="Enter file emptyWhen.kt" style="filled" fillcolor=red];
1 [label="Exit file emptyWhen.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
3 [label="Enter block"];
subgraph cluster_3 {
color=blue
4 [label="Enter when"];
5 [label="Synthetic else branch"];
6 [label="Exit when"];
}
7 [label="Exit block"];
}
8 [label="Exit function test_1" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
2 -> {3};
3 -> {4};
4 -> {5};
5 -> {6};
subgraph cluster_3 {
color=red
7 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_4 {
color=blue
8 [label="Enter block"];
subgraph cluster_5 {
color=blue
9 [label="Enter when"];
10 [label="Access variable R|<local>/x|"];
11 [label="Synthetic else branch"];
12 [label="Exit when"];
}
13 [label="Exit block"];
}
14 [label="Exit function test_2" style="filled" fillcolor=red];
}
6 -> {7};
7 -> {8};
8 -> {9};
subgraph cluster_4 {
color=red
9 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_5 {
color=blue
10 [label="Enter block"];
subgraph cluster_6 {
color=blue
11 [label="Enter when"];
12 [label="Access variable R|<local>/x|"];
13 [label="Synthetic else branch"];
14 [label="Exit when"];
}
15 [label="Exit block"];
}
16 [label="Exit function test_2" style="filled" fillcolor=red];
}
9 -> {10};
10 -> {11};
11 -> {12};
12 -> {13};
13 -> {14};
subgraph cluster_6 {
color=red
15 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_7 {
color=blue
16 [label="Enter block"];
subgraph cluster_8 {
color=blue
17 [label="Enter when"];
18 [label="Access variable R|<local>/x|"];
19 [label="Variable declaration: lval y: R|kotlin/Int|"];
20 [label="Synthetic else branch"];
21 [label="Exit when"];
}
22 [label="Exit block"];
}
23 [label="Exit function test_3" style="filled" fillcolor=red];
}
14 -> {15};
15 -> {16};
16 -> {17};
subgraph cluster_7 {
color=red
17 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_8 {
color=blue
18 [label="Enter block"];
subgraph cluster_9 {
color=blue
19 [label="Enter when"];
20 [label="Access variable R|<local>/x|"];
21 [label="Variable declaration: lval y: R|kotlin/Int|"];
22 [label="Synthetic else branch"];
23 [label="Exit when"];
}
24 [label="Exit block"];
}
25 [label="Exit function test_3" style="filled" fillcolor=red];
}
17 -> {18};
18 -> {19};
19 -> {20};
20 -> {21};
21 -> {22};
22 -> {23};
23 -> {24};
24 -> {25};
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -5,331 +5,336 @@ digraph flowFromInplaceLambda3_kt {
subgraph cluster_0 {
color=red
0 [label="Enter function unknown" style="filled" fillcolor=red];
subgraph cluster_1 {
color=blue
1 [label="Enter block"];
subgraph cluster_2 {
color=blue
2 [label="Enter block"];
3 [label="Exit block"];
}
4 [label="Function call: R|<local>/x|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
5 [label="Exit block"];
}
6 [label="Exit function unknown" style="filled" fillcolor=red];
0 [label="Enter file flowFromInplaceLambda3.kt" style="filled" fillcolor=red];
1 [label="Exit file flowFromInplaceLambda3.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter function unknown" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
3 [label="Enter block"];
subgraph cluster_3 {
color=blue
4 [label="Enter block"];
5 [label="Exit block"];
}
6 [label="Function call: R|<local>/x|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
7 [label="Exit block"];
}
8 [label="Exit function unknown" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
2 -> {3};
3 -> {4};
4 -> {5};
5 -> {6};
subgraph cluster_3 {
color=red
7 [label="Enter function atLeastOnce" style="filled" fillcolor=red];
subgraph cluster_4 {
color=blue
8 [label="Enter block"];
subgraph cluster_5 {
color=blue
9 [label="Enter block"];
10 [label="Exit block"];
}
11 [label="Function call: R|<local>/x|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
12 [label="Exit block"];
}
13 [label="Exit function atLeastOnce" style="filled" fillcolor=red];
}
6 -> {7};
7 -> {8};
8 -> {9};
subgraph cluster_4 {
color=red
9 [label="Enter function atLeastOnce" style="filled" fillcolor=red];
subgraph cluster_5 {
color=blue
10 [label="Enter block"];
subgraph cluster_6 {
color=blue
11 [label="Enter block"];
12 [label="Exit block"];
}
13 [label="Function call: R|<local>/x|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
14 [label="Exit block"];
}
15 [label="Exit function atLeastOnce" style="filled" fillcolor=red];
}
9 -> {10};
10 -> {11};
11 -> {12};
12 -> {13};
subgraph cluster_6 {
color=red
14 [label="Enter function exactlyOnce" style="filled" fillcolor=red];
subgraph cluster_7 {
color=blue
15 [label="Enter block"];
subgraph cluster_8 {
color=blue
16 [label="Enter block"];
17 [label="Exit block"];
}
18 [label="Function call: R|<local>/x|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
19 [label="Exit block"];
}
20 [label="Exit function exactlyOnce" style="filled" fillcolor=red];
}
13 -> {14};
14 -> {15};
15 -> {16};
subgraph cluster_7 {
color=red
16 [label="Enter function exactlyOnce" style="filled" fillcolor=red];
subgraph cluster_8 {
color=blue
17 [label="Enter block"];
subgraph cluster_9 {
color=blue
18 [label="Enter block"];
19 [label="Exit block"];
}
20 [label="Function call: R|<local>/x|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
21 [label="Exit block"];
}
22 [label="Exit function exactlyOnce" style="filled" fillcolor=red];
}
16 -> {17};
17 -> {18};
18 -> {19};
19 -> {20};
subgraph cluster_9 {
color=red
21 [label="Enter function atMostOnce" style="filled" fillcolor=red];
subgraph cluster_10 {
color=blue
22 [label="Enter block"];
subgraph cluster_11 {
color=blue
23 [label="Enter block"];
24 [label="Exit block"];
}
25 [label="Exit block"];
}
26 [label="Exit function atMostOnce" style="filled" fillcolor=red];
}
20 -> {21};
21 -> {22};
22 -> {23};
subgraph cluster_10 {
color=red
23 [label="Enter function atMostOnce" style="filled" fillcolor=red];
subgraph cluster_11 {
color=blue
24 [label="Enter block"];
subgraph cluster_12 {
color=blue
25 [label="Enter block"];
26 [label="Exit block"];
}
27 [label="Exit block"];
}
28 [label="Exit function atMostOnce" style="filled" fillcolor=red];
}
23 -> {24};
24 -> {25};
25 -> {26};
subgraph cluster_12 {
color=red
27 [label="Enter function test1" style="filled" fillcolor=red];
subgraph cluster_13 {
color=blue
28 [label="Enter block"];
29 [label="Variable declaration: lvar x: R|kotlin/Any?|"];
30 [label="Const: String()"];
31 [label="Assignment: R|<local>/x|"];
32 [label="Access variable R|<local>/x|"];
33 [label="Smart cast: R|<local>/x|"];
34 [label="Access variable R|kotlin/String.length|"];
35 [label="Postponed enter to lambda"];
subgraph cluster_14 {
color=blue
36 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_15 {
color=blue
37 [label="Enter block"];
38 [label="Const: Int(1)"];
39 [label="Assignment: R|<local>/x|"];
40 [label="Exit block"];
}
41 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
42 [label="Postponed exit from lambda"];
43 [label="Function call: R|/unknown|(...)" style="filled" fillcolor=yellow];
44 [label="Access variable R|<local>/x|"];
45 [label="Smart cast: R|<local>/x|"];
46 [label="Access variable <Unresolved name: length>#"];
47 [label="Access variable R|<local>/x|"];
48 [label="Smart cast: R|<local>/x|"];
49 [label="Function call: R|<local>/x|.<Unresolved name: inc>#()" style="filled" fillcolor=yellow];
50 [label="Exit block"];
}
51 [label="Exit function test1" style="filled" fillcolor=red];
}
26 -> {27};
27 -> {28};
28 -> {29};
subgraph cluster_13 {
color=red
29 [label="Enter function test1" style="filled" fillcolor=red];
subgraph cluster_14 {
color=blue
30 [label="Enter block"];
31 [label="Variable declaration: lvar x: R|kotlin/Any?|"];
32 [label="Const: String()"];
33 [label="Assignment: R|<local>/x|"];
34 [label="Access variable R|<local>/x|"];
35 [label="Smart cast: R|<local>/x|"];
36 [label="Access variable R|kotlin/String.length|"];
37 [label="Postponed enter to lambda"];
subgraph cluster_15 {
color=blue
38 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_16 {
color=blue
39 [label="Enter block"];
40 [label="Const: Int(1)"];
41 [label="Assignment: R|<local>/x|"];
42 [label="Exit block"];
}
43 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
44 [label="Postponed exit from lambda"];
45 [label="Function call: R|/unknown|(...)" style="filled" fillcolor=yellow];
46 [label="Access variable R|<local>/x|"];
47 [label="Smart cast: R|<local>/x|"];
48 [label="Access variable <Unresolved name: length>#"];
49 [label="Access variable R|<local>/x|"];
50 [label="Smart cast: R|<local>/x|"];
51 [label="Function call: R|<local>/x|.<Unresolved name: inc>#()" style="filled" fillcolor=yellow];
52 [label="Exit block"];
}
53 [label="Exit function test1" style="filled" fillcolor=red];
}
29 -> {30};
30 -> {31};
31 -> {32};
32 -> {33};
33 -> {34};
34 -> {35};
35 -> {36 42 43};
35 -> {36} [style=dashed];
35 -> {36};
36 -> {37};
37 -> {38};
37 -> {38 44 45};
37 -> {38} [style=dashed];
38 -> {39};
39 -> {40};
40 -> {41};
41 -> {42};
42 -> {43};
42 -> {35} [color=green style=dashed];
43 -> {44};
44 -> {45};
44 -> {37} [color=green style=dashed];
45 -> {46};
46 -> {47};
47 -> {48};
48 -> {49};
49 -> {50};
50 -> {51};
subgraph cluster_16 {
color=red
52 [label="Enter function test1m" style="filled" fillcolor=red];
subgraph cluster_17 {
color=blue
53 [label="Enter block"];
54 [label="Variable declaration: lvar x: R|kotlin/Any?|"];
55 [label="Const: String()"];
56 [label="Assignment: R|<local>/x|"];
57 [label="Access variable R|<local>/x|"];
58 [label="Smart cast: R|<local>/x|"];
59 [label="Access variable R|kotlin/String.length|"];
60 [label="Postponed enter to lambda"];
subgraph cluster_18 {
color=blue
61 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_19 {
color=blue
62 [label="Enter block"];
63 [label="Const: String()"];
64 [label="Assignment: R|<local>/x|"];
65 [label="Exit block"];
}
66 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
67 [label="Postponed exit from lambda"];
68 [label="Function call: R|/unknown|(...)" style="filled" fillcolor=yellow];
69 [label="Access variable R|<local>/x|"];
70 [label="Smart cast: R|<local>/x|"];
71 [label="Access variable R|kotlin/String.length|"];
72 [label="Exit block"];
}
73 [label="Exit function test1m" style="filled" fillcolor=red];
}
51 -> {52};
52 -> {53};
53 -> {54};
subgraph cluster_17 {
color=red
54 [label="Enter function test1m" style="filled" fillcolor=red];
subgraph cluster_18 {
color=blue
55 [label="Enter block"];
56 [label="Variable declaration: lvar x: R|kotlin/Any?|"];
57 [label="Const: String()"];
58 [label="Assignment: R|<local>/x|"];
59 [label="Access variable R|<local>/x|"];
60 [label="Smart cast: R|<local>/x|"];
61 [label="Access variable R|kotlin/String.length|"];
62 [label="Postponed enter to lambda"];
subgraph cluster_19 {
color=blue
63 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_20 {
color=blue
64 [label="Enter block"];
65 [label="Const: String()"];
66 [label="Assignment: R|<local>/x|"];
67 [label="Exit block"];
}
68 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
69 [label="Postponed exit from lambda"];
70 [label="Function call: R|/unknown|(...)" style="filled" fillcolor=yellow];
71 [label="Access variable R|<local>/x|"];
72 [label="Smart cast: R|<local>/x|"];
73 [label="Access variable R|kotlin/String.length|"];
74 [label="Exit block"];
}
75 [label="Exit function test1m" style="filled" fillcolor=red];
}
54 -> {55};
55 -> {56};
56 -> {57};
57 -> {58};
58 -> {59};
59 -> {60};
60 -> {61 67 68};
60 -> {61} [style=dashed];
60 -> {61};
61 -> {62};
62 -> {63};
62 -> {63 69 70};
62 -> {63} [style=dashed];
63 -> {64};
64 -> {65};
65 -> {66};
66 -> {67};
67 -> {68};
67 -> {60} [color=green style=dashed];
68 -> {69};
69 -> {70};
69 -> {62} [color=green style=dashed];
70 -> {71};
71 -> {72};
72 -> {73};
subgraph cluster_20 {
color=red
74 [label="Enter function test2" style="filled" fillcolor=red];
subgraph cluster_21 {
color=blue
75 [label="Enter block"];
76 [label="Variable declaration: lvar x: R|kotlin/Any?|"];
77 [label="Const: String()"];
78 [label="Assignment: R|<local>/x|"];
79 [label="Access variable R|<local>/x|"];
80 [label="Smart cast: R|<local>/x|"];
81 [label="Access variable R|kotlin/String.length|"];
82 [label="Postponed enter to lambda"];
subgraph cluster_22 {
color=blue
83 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_23 {
color=blue
84 [label="Enter block"];
85 [label="Const: Int(1)"];
86 [label="Assignment: R|<local>/x|"];
87 [label="Exit block"];
}
88 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
89 [label="Postponed exit from lambda"];
90 [label="Function call: R|/atLeastOnce|(...)" style="filled" fillcolor=yellow];
91 [label="Access variable R|<local>/x|"];
92 [label="Smart cast: R|<local>/x|"];
93 [label="Access variable <Unresolved name: length>#"];
94 [label="Access variable R|<local>/x|"];
95 [label="Smart cast: R|<local>/x|"];
96 [label="Function call: R|<local>/x|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
97 [label="Exit block"];
}
98 [label="Exit function test2" style="filled" fillcolor=red];
}
73 -> {74};
74 -> {75};
75 -> {76};
subgraph cluster_21 {
color=red
76 [label="Enter function test2" style="filled" fillcolor=red];
subgraph cluster_22 {
color=blue
77 [label="Enter block"];
78 [label="Variable declaration: lvar x: R|kotlin/Any?|"];
79 [label="Const: String()"];
80 [label="Assignment: R|<local>/x|"];
81 [label="Access variable R|<local>/x|"];
82 [label="Smart cast: R|<local>/x|"];
83 [label="Access variable R|kotlin/String.length|"];
84 [label="Postponed enter to lambda"];
subgraph cluster_23 {
color=blue
85 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_24 {
color=blue
86 [label="Enter block"];
87 [label="Const: Int(1)"];
88 [label="Assignment: R|<local>/x|"];
89 [label="Exit block"];
}
90 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
91 [label="Postponed exit from lambda"];
92 [label="Function call: R|/atLeastOnce|(...)" style="filled" fillcolor=yellow];
93 [label="Access variable R|<local>/x|"];
94 [label="Smart cast: R|<local>/x|"];
95 [label="Access variable <Unresolved name: length>#"];
96 [label="Access variable R|<local>/x|"];
97 [label="Smart cast: R|<local>/x|"];
98 [label="Function call: R|<local>/x|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
99 [label="Exit block"];
}
100 [label="Exit function test2" style="filled" fillcolor=red];
}
76 -> {77};
77 -> {78};
78 -> {79};
79 -> {80};
80 -> {81};
81 -> {82};
82 -> {83 90};
82 -> {89} [style=dotted];
82 -> {83} [style=dashed];
82 -> {83};
83 -> {84};
84 -> {85};
84 -> {85 92};
84 -> {91} [style=dotted];
84 -> {85} [style=dashed];
85 -> {86};
86 -> {87};
87 -> {88};
88 -> {89};
89 -> {90};
89 -> {82} [color=green style=dashed];
90 -> {91};
91 -> {92};
91 -> {84} [color=green style=dashed];
92 -> {93};
93 -> {94};
94 -> {95};
95 -> {96};
96 -> {97};
97 -> {98};
subgraph cluster_24 {
color=red
99 [label="Enter function test3" style="filled" fillcolor=red];
subgraph cluster_25 {
color=blue
100 [label="Enter block"];
101 [label="Variable declaration: lvar x: R|kotlin/Any?|"];
102 [label="Const: String()"];
103 [label="Assignment: R|<local>/x|"];
104 [label="Access variable R|<local>/x|"];
105 [label="Smart cast: R|<local>/x|"];
106 [label="Access variable R|kotlin/String.length|"];
107 [label="Postponed enter to lambda"];
subgraph cluster_26 {
color=blue
108 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_27 {
color=blue
109 [label="Enter block"];
110 [label="Const: Int(1)"];
111 [label="Assignment: R|<local>/x|"];
112 [label="Exit block"];
}
113 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
114 [label="Postponed exit from lambda"];
115 [label="Function call: R|/exactlyOnce|(...)" style="filled" fillcolor=yellow];
116 [label="Access variable R|<local>/x|"];
117 [label="Smart cast: R|<local>/x|"];
118 [label="Access variable <Unresolved name: length>#"];
119 [label="Access variable R|<local>/x|"];
120 [label="Smart cast: R|<local>/x|"];
121 [label="Function call: R|<local>/x|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
122 [label="Exit block"];
}
123 [label="Exit function test3" style="filled" fillcolor=red];
}
98 -> {99};
99 -> {100};
100 -> {101};
subgraph cluster_25 {
color=red
101 [label="Enter function test3" style="filled" fillcolor=red];
subgraph cluster_26 {
color=blue
102 [label="Enter block"];
103 [label="Variable declaration: lvar x: R|kotlin/Any?|"];
104 [label="Const: String()"];
105 [label="Assignment: R|<local>/x|"];
106 [label="Access variable R|<local>/x|"];
107 [label="Smart cast: R|<local>/x|"];
108 [label="Access variable R|kotlin/String.length|"];
109 [label="Postponed enter to lambda"];
subgraph cluster_27 {
color=blue
110 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_28 {
color=blue
111 [label="Enter block"];
112 [label="Const: Int(1)"];
113 [label="Assignment: R|<local>/x|"];
114 [label="Exit block"];
}
115 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
116 [label="Postponed exit from lambda"];
117 [label="Function call: R|/exactlyOnce|(...)" style="filled" fillcolor=yellow];
118 [label="Access variable R|<local>/x|"];
119 [label="Smart cast: R|<local>/x|"];
120 [label="Access variable <Unresolved name: length>#"];
121 [label="Access variable R|<local>/x|"];
122 [label="Smart cast: R|<local>/x|"];
123 [label="Function call: R|<local>/x|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
124 [label="Exit block"];
}
125 [label="Exit function test3" style="filled" fillcolor=red];
}
101 -> {102};
102 -> {103};
103 -> {104};
104 -> {105};
105 -> {106};
106 -> {107};
107 -> {108 115};
107 -> {114} [style=dotted];
107 -> {108} [style=dashed];
107 -> {108};
108 -> {109};
109 -> {110};
109 -> {110 117};
109 -> {116} [style=dotted];
109 -> {110} [style=dashed];
110 -> {111};
111 -> {112};
112 -> {113};
@@ -343,56 +348,56 @@ digraph flowFromInplaceLambda3_kt {
120 -> {121};
121 -> {122};
122 -> {123};
subgraph cluster_28 {
color=red
124 [label="Enter function test4" style="filled" fillcolor=red];
subgraph cluster_29 {
color=blue
125 [label="Enter block"];
126 [label="Variable declaration: lvar x: R|kotlin/Any?|"];
127 [label="Const: String()"];
128 [label="Assignment: R|<local>/x|"];
129 [label="Access variable R|<local>/x|"];
130 [label="Smart cast: R|<local>/x|"];
131 [label="Access variable R|kotlin/String.length|"];
132 [label="Postponed enter to lambda"];
subgraph cluster_30 {
color=blue
133 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_31 {
color=blue
134 [label="Enter block"];
135 [label="Const: Int(1)"];
136 [label="Assignment: R|<local>/x|"];
137 [label="Exit block"];
}
138 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
139 [label="Postponed exit from lambda"];
140 [label="Function call: R|/atMostOnce|(...)" style="filled" fillcolor=yellow];
141 [label="Access variable R|<local>/x|"];
142 [label="Smart cast: R|<local>/x|"];
143 [label="Access variable <Unresolved name: length>#"];
144 [label="Access variable R|<local>/x|"];
145 [label="Smart cast: R|<local>/x|"];
146 [label="Function call: R|<local>/x|.<Unresolved name: inc>#()" style="filled" fillcolor=yellow];
147 [label="Exit block"];
}
148 [label="Exit function test4" style="filled" fillcolor=red];
}
123 -> {124};
124 -> {125};
125 -> {126};
subgraph cluster_29 {
color=red
126 [label="Enter function test4" style="filled" fillcolor=red];
subgraph cluster_30 {
color=blue
127 [label="Enter block"];
128 [label="Variable declaration: lvar x: R|kotlin/Any?|"];
129 [label="Const: String()"];
130 [label="Assignment: R|<local>/x|"];
131 [label="Access variable R|<local>/x|"];
132 [label="Smart cast: R|<local>/x|"];
133 [label="Access variable R|kotlin/String.length|"];
134 [label="Postponed enter to lambda"];
subgraph cluster_31 {
color=blue
135 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_32 {
color=blue
136 [label="Enter block"];
137 [label="Const: Int(1)"];
138 [label="Assignment: R|<local>/x|"];
139 [label="Exit block"];
}
140 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
141 [label="Postponed exit from lambda"];
142 [label="Function call: R|/atMostOnce|(...)" style="filled" fillcolor=yellow];
143 [label="Access variable R|<local>/x|"];
144 [label="Smart cast: R|<local>/x|"];
145 [label="Access variable <Unresolved name: length>#"];
146 [label="Access variable R|<local>/x|"];
147 [label="Smart cast: R|<local>/x|"];
148 [label="Function call: R|<local>/x|.<Unresolved name: inc>#()" style="filled" fillcolor=yellow];
149 [label="Exit block"];
}
150 [label="Exit function test4" style="filled" fillcolor=red];
}
126 -> {127};
127 -> {128};
128 -> {129};
129 -> {130};
130 -> {131};
131 -> {132};
132 -> {133 139 140};
132 -> {133} [style=dashed];
132 -> {133};
133 -> {134};
134 -> {135};
134 -> {135 141 142};
134 -> {135} [style=dashed];
135 -> {136};
136 -> {137};
137 -> {138};
@@ -406,5 +411,7 @@ digraph flowFromInplaceLambda3_kt {
145 -> {146};
146 -> {147};
147 -> {148};
148 -> {149};
149 -> {150};
}
File diff suppressed because it is too large Load Diff
@@ -5,78 +5,83 @@ digraph initBlock_kt {
subgraph cluster_0 {
color=red
0 [label="Enter class Foo" style="filled" fillcolor=red];
subgraph cluster_1 {
color=blue
1 [label="Enter init block" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
2 [label="Enter block"];
3 [label="Const: Int(1)"];
4 [label="Variable declaration: lval x: R|kotlin/Int|"];
5 [label="Exit block"];
}
6 [label="Exit init block" style="filled" fillcolor=red];
}
subgraph cluster_3 {
color=blue
7 [label="Enter function <init>" style="filled" fillcolor=red];
8 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
9 [label="Exit function <init>" style="filled" fillcolor=red];
}
10 [label="Exit class Foo" style="filled" fillcolor=red];
0 [label="Enter file initBlock.kt" style="filled" fillcolor=red];
1 [label="Exit file initBlock.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
0 -> {10} [style=dotted];
0 -> {1 7} [style=dashed];
1 -> {2};
2 -> {3};
subgraph cluster_1 {
color=red
2 [label="Enter class Foo" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
3 [label="Enter init block" style="filled" fillcolor=red];
subgraph cluster_3 {
color=blue
4 [label="Enter block"];
5 [label="Const: Int(1)"];
6 [label="Variable declaration: lval x: R|kotlin/Int|"];
7 [label="Exit block"];
}
8 [label="Exit init block" style="filled" fillcolor=red];
}
subgraph cluster_4 {
color=blue
9 [label="Enter function <init>" style="filled" fillcolor=red];
10 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
11 [label="Exit function <init>" style="filled" fillcolor=red];
}
12 [label="Exit class Foo" style="filled" fillcolor=red];
}
2 -> {3} [color=green];
2 -> {12} [style=dotted];
2 -> {3 9} [style=dashed];
3 -> {4};
4 -> {5};
5 -> {6};
6 -> {7} [color=green];
6 -> {7};
7 -> {8};
8 -> {9};
9 -> {10} [color=green];
subgraph cluster_4 {
color=red
11 [label="Enter class Bar" style="filled" fillcolor=red];
subgraph cluster_5 {
color=blue
12 [label="Enter init block" style="filled" fillcolor=red];
subgraph cluster_6 {
color=blue
13 [label="Enter block"];
14 [label="Const: Int(1)"];
15 [label="Variable declaration: lval x: R|kotlin/Int|"];
16 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
17 [label="Throw: throw R|java/lang/Exception.Exception|()"];
18 [label="Stub" style="filled" fillcolor=gray];
19 [label="Const: Int(2)" style="filled" fillcolor=gray];
20 [label="Variable declaration: lval y: R|kotlin/Int|" style="filled" fillcolor=gray];
21 [label="Exit block" style="filled" fillcolor=gray];
}
22 [label="Exit init block" style="filled" fillcolor=gray];
}
subgraph cluster_7 {
color=blue
23 [label="Enter function <init>" style="filled" fillcolor=gray];
24 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=gray];
25 [label="Exit function <init>" style="filled" fillcolor=gray];
}
26 [label="Exit class Bar" style="filled" fillcolor=gray];
}
8 -> {9} [color=green];
9 -> {10};
10 -> {11};
11 -> {12} [color=green];
11 -> {26} [style=dotted];
11 -> {12 23} [style=dashed];
12 -> {13};
13 -> {14};
subgraph cluster_5 {
color=red
13 [label="Enter class Bar" style="filled" fillcolor=red];
subgraph cluster_6 {
color=blue
14 [label="Enter init block" style="filled" fillcolor=red];
subgraph cluster_7 {
color=blue
15 [label="Enter block"];
16 [label="Const: Int(1)"];
17 [label="Variable declaration: lval x: R|kotlin/Int|"];
18 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
19 [label="Throw: throw R|java/lang/Exception.Exception|()"];
20 [label="Stub" style="filled" fillcolor=gray];
21 [label="Const: Int(2)" style="filled" fillcolor=gray];
22 [label="Variable declaration: lval y: R|kotlin/Int|" style="filled" fillcolor=gray];
23 [label="Exit block" style="filled" fillcolor=gray];
}
24 [label="Exit init block" style="filled" fillcolor=gray];
}
subgraph cluster_8 {
color=blue
25 [label="Enter function <init>" style="filled" fillcolor=gray];
26 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=gray];
27 [label="Exit function <init>" style="filled" fillcolor=gray];
}
28 [label="Exit class Bar" style="filled" fillcolor=gray];
}
13 -> {14} [color=green];
13 -> {28} [style=dotted];
13 -> {14 25} [style=dashed];
14 -> {15};
15 -> {16};
16 -> {17};
17 -> {18} [style=dotted];
18 -> {19} [style=dotted];
17 -> {18};
18 -> {19};
19 -> {20} [style=dotted];
20 -> {21} [style=dotted];
21 -> {22} [style=dotted];
@@ -84,5 +89,7 @@ digraph initBlock_kt {
23 -> {24} [style=dotted];
24 -> {25} [style=dotted];
25 -> {26} [style=dotted];
26 -> {27} [style=dotted];
27 -> {28} [style=dotted];
}
@@ -5,73 +5,78 @@ digraph initBlockAndInPlaceLambda_kt {
subgraph cluster_0 {
color=red
0 [label="Enter class B" style="filled" fillcolor=red];
1 [label="Exit class B" style="filled" fillcolor=red];
0 [label="Enter file initBlockAndInPlaceLambda.kt" style="filled" fillcolor=red];
1 [label="Exit file initBlockAndInPlaceLambda.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter class A" style="filled" fillcolor=red];
3 [label="Exit class A" style="filled" fillcolor=red];
2 [label="Enter class B" style="filled" fillcolor=red];
3 [label="Exit class B" style="filled" fillcolor=red];
}
2 -> {3} [color=green];
subgraph cluster_2 {
color=red
4 [label="Enter class C" style="filled" fillcolor=red];
subgraph cluster_3 {
color=blue
5 [label="Enter init block" style="filled" fillcolor=red];
subgraph cluster_4 {
color=blue
6 [label="Enter block"];
7 [label="Access variable R|<local>/a|"];
8 [label="Access variable R|/A.b|"];
9 [label="Enter safe call"];
10 [label="Postponed enter to lambda"];
subgraph cluster_5 {
color=blue
11 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_6 {
color=blue
12 [label="Enter block"];
13 [label="Access variable R|<local>/a|"];
14 [label="Access variable R|<local>/it|"];
15 [label="Function call: R|/C.C|(...)" style="filled" fillcolor=yellow];
16 [label="Exit block"];
}
17 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
18 [label="Postponed exit from lambda"];
19 [label="Function call: $subj$.R|kotlin/let|<R|B|, R|C|>(...)" style="filled" fillcolor=yellow];
20 [label="Exit safe call"];
21 [label="Variable declaration: lval c: R|C?|"];
22 [label="Exit block"];
}
23 [label="Exit init block" style="filled" fillcolor=red];
}
subgraph cluster_7 {
color=blue
24 [label="Enter function <init>" style="filled" fillcolor=red];
25 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
26 [label="Exit function <init>" style="filled" fillcolor=red];
}
27 [label="Exit class C" style="filled" fillcolor=red];
4 [label="Enter class A" style="filled" fillcolor=red];
5 [label="Exit class A" style="filled" fillcolor=red];
}
4 -> {5} [color=green];
4 -> {27} [style=dotted];
4 -> {5 24} [style=dashed];
5 -> {6};
6 -> {7};
subgraph cluster_3 {
color=red
6 [label="Enter class C" style="filled" fillcolor=red];
subgraph cluster_4 {
color=blue
7 [label="Enter init block" style="filled" fillcolor=red];
subgraph cluster_5 {
color=blue
8 [label="Enter block"];
9 [label="Access variable R|<local>/a|"];
10 [label="Access variable R|/A.b|"];
11 [label="Enter safe call"];
12 [label="Postponed enter to lambda"];
subgraph cluster_6 {
color=blue
13 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_7 {
color=blue
14 [label="Enter block"];
15 [label="Access variable R|<local>/a|"];
16 [label="Access variable R|<local>/it|"];
17 [label="Function call: R|/C.C|(...)" style="filled" fillcolor=yellow];
18 [label="Exit block"];
}
19 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
20 [label="Postponed exit from lambda"];
21 [label="Function call: $subj$.R|kotlin/let|<R|B|, R|C|>(...)" style="filled" fillcolor=yellow];
22 [label="Exit safe call"];
23 [label="Variable declaration: lval c: R|C?|"];
24 [label="Exit block"];
}
25 [label="Exit init block" style="filled" fillcolor=red];
}
subgraph cluster_8 {
color=blue
26 [label="Enter function <init>" style="filled" fillcolor=red];
27 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
28 [label="Exit function <init>" style="filled" fillcolor=red];
}
29 [label="Exit class C" style="filled" fillcolor=red];
}
6 -> {7} [color=green];
6 -> {29} [style=dotted];
6 -> {7 26} [style=dashed];
7 -> {8};
8 -> {9 20};
8 -> {9};
9 -> {10};
10 -> {11 19};
10 -> {18} [style=dotted];
10 -> {11} [style=dashed];
10 -> {11 22};
11 -> {12};
12 -> {13};
12 -> {13 21};
12 -> {20} [style=dotted];
12 -> {13} [style=dashed];
13 -> {14};
14 -> {15};
15 -> {16};
@@ -82,9 +87,11 @@ digraph initBlockAndInPlaceLambda_kt {
20 -> {21};
21 -> {22};
22 -> {23};
23 -> {24} [color=green];
23 -> {24};
24 -> {25};
25 -> {26};
26 -> {27} [color=green];
25 -> {26} [color=green];
26 -> {27};
27 -> {28};
28 -> {29} [color=green];
}
@@ -5,69 +5,78 @@ digraph innerClassInAnonymousObject_kt {
subgraph cluster_0 {
color=red
0 [label="Enter property" style="filled" fillcolor=red];
1 [label="Enter anonymous object"];
0 [label="Enter file innerClassInAnonymousObject.kt" style="filled" fillcolor=red];
subgraph cluster_1 {
color=blue
2 [label="Enter class <anonymous object>" style="filled" fillcolor=red];
1 [label="Enter property" style="filled" fillcolor=red];
2 [label="Enter anonymous object"];
subgraph cluster_2 {
color=blue
3 [label="Enter function <init>" style="filled" fillcolor=red];
4 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
5 [label="Exit function <init>" style="filled" fillcolor=red];
3 [label="Enter class <anonymous object>" style="filled" fillcolor=red];
subgraph cluster_3 {
color=blue
4 [label="Enter function <init>" style="filled" fillcolor=red];
5 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
6 [label="Exit function <init>" style="filled" fillcolor=red];
}
7 [label="Exit class <anonymous object>" style="filled" fillcolor=red];
}
6 [label="Exit class <anonymous object>" style="filled" fillcolor=red];
8 [label="Exit anonymous object expression"];
9 [label="Exit property" style="filled" fillcolor=red];
}
7 [label="Exit anonymous object expression"];
8 [label="Exit property" style="filled" fillcolor=red];
10 [label="Exit file innerClassInAnonymousObject.kt" style="filled" fillcolor=red];
}
subgraph cluster_3 {
subgraph cluster_4 {
color=blue
9 [label="Enter class Nested" style="filled" fillcolor=red];
subgraph cluster_4 {
11 [label="Enter class Nested" style="filled" fillcolor=red];
subgraph cluster_5 {
color=blue
10 [label="Enter function <init>" style="filled" fillcolor=red];
11 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
12 [label="Exit function <init>" style="filled" fillcolor=red];
12 [label="Enter function <init>" style="filled" fillcolor=red];
13 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
14 [label="Exit function <init>" style="filled" fillcolor=red];
}
13 [label="Exit class Nested" style="filled" fillcolor=red];
15 [label="Exit class Nested" style="filled" fillcolor=red];
}
subgraph cluster_5 {
subgraph cluster_6 {
color=blue
14 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_6 {
16 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_7 {
color=blue
15 [label="Enter block"];
16 [label="Exit block"];
17 [label="Enter block"];
18 [label="Exit block"];
}
17 [label="Exit function foo" style="filled" fillcolor=red];
19 [label="Exit function foo" style="filled" fillcolor=red];
}
0 -> {1};
0 -> {1} [color=green];
0 -> {10} [style=dotted];
0 -> {1} [style=dashed];
1 -> {2};
1 -> {7} [style=dotted];
1 -> {2} [style=dashed];
2 -> {3};
2 -> {9} [color=red];
2 -> {6} [style=dotted];
2 -> {8} [style=dotted];
2 -> {3} [style=dashed];
3 -> {4};
3 -> {11} [color=red];
3 -> {7} [style=dotted];
3 -> {4} [style=dashed];
4 -> {5};
5 -> {6};
6 -> {7};
6 -> {9} [color=green];
6 -> {9} [style=dashed];
7 -> {8};
9 -> {10};
9 -> {14} [color=red];
9 -> {13} [style=dotted];
9 -> {10} [style=dashed];
10 -> {11};
7 -> {11} [color=green];
7 -> {11} [style=dashed];
8 -> {9};
9 -> {10} [color=green];
11 -> {12};
12 -> {13} [color=green];
13 -> {14} [color=green];
13 -> {14} [style=dashed];
14 -> {15};
15 -> {16};
11 -> {16} [color=red];
11 -> {15} [style=dotted];
11 -> {12} [style=dashed];
12 -> {13};
13 -> {14};
14 -> {15} [color=green];
15 -> {16} [color=green];
15 -> {16} [style=dashed];
16 -> {17};
17 -> {18};
18 -> {19};
}
@@ -5,188 +5,193 @@ digraph inplaceLambdaInControlFlowExpressions_kt {
subgraph cluster_0 {
color=red
0 [label="Enter function materialize" style="filled" fillcolor=red];
subgraph cluster_1 {
color=blue
1 [label="Enter block"];
2 [label="Const: Null(null)"];
3 [label="Check not null: Null(null)!!" style="filled" fillcolor=yellow];
4 [label="Stub" style="filled" fillcolor=gray];
5 [label="Jump: ^materialize Null(null)!!" style="filled" fillcolor=gray];
6 [label="Stub" style="filled" fillcolor=gray];
7 [label="Exit block" style="filled" fillcolor=gray];
}
8 [label="Exit function materialize" style="filled" fillcolor=gray];
0 [label="Enter file inplaceLambdaInControlFlowExpressions.kt" style="filled" fillcolor=red];
1 [label="Exit file inplaceLambdaInControlFlowExpressions.kt" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
2 -> {3};
3 -> {4} [style=dotted];
4 -> {5} [style=dotted];
5 -> {6 8} [style=dotted];
6 -> {7} [style=dotted];
7 -> {8} [style=dotted];
0 -> {1} [color=green];
subgraph cluster_2 {
subgraph cluster_1 {
color=red
9 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_3 {
2 [label="Enter function materialize" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
10 [label="Enter block"];
subgraph cluster_4 {
3 [label="Enter block"];
4 [label="Const: Null(null)"];
5 [label="Check not null: Null(null)!!" style="filled" fillcolor=yellow];
6 [label="Stub" style="filled" fillcolor=gray];
7 [label="Jump: ^materialize Null(null)!!" style="filled" fillcolor=gray];
8 [label="Stub" style="filled" fillcolor=gray];
9 [label="Exit block" style="filled" fillcolor=gray];
}
10 [label="Exit function materialize" style="filled" fillcolor=gray];
}
2 -> {3};
3 -> {4};
4 -> {5};
5 -> {6} [style=dotted];
6 -> {7} [style=dotted];
7 -> {8 10} [style=dotted];
8 -> {9} [style=dotted];
9 -> {10} [style=dotted];
subgraph cluster_3 {
color=red
11 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_4 {
color=blue
12 [label="Enter block"];
subgraph cluster_5 {
color=blue
11 [label="Enter when"];
subgraph cluster_5 {
color=blue
12 [label="Enter when branch condition "];
13 [label="Const: Boolean(true)"];
14 [label="Exit when branch condition"];
}
13 [label="Enter when"];
subgraph cluster_6 {
color=blue
15 [label="Enter when branch condition else"];
14 [label="Enter when branch condition "];
15 [label="Const: Boolean(true)"];
16 [label="Exit when branch condition"];
}
17 [label="Enter when branch result"];
subgraph cluster_7 {
color=blue
18 [label="Enter block"];
19 [label="Const: String()"];
20 [label="Exit block"];
17 [label="Enter when branch condition else"];
18 [label="Exit when branch condition"];
}
21 [label="Exit when branch result"];
22 [label="Enter when branch result"];
19 [label="Enter when branch result"];
subgraph cluster_8 {
color=blue
23 [label="Enter block"];
24 [label="Postponed enter to lambda"];
subgraph cluster_9 {
color=blue
25 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_10 {
color=blue
26 [label="Enter block"];
27 [label="Function call: R|/materialize|<R|kotlin/String|>()" style="filled" fillcolor=yellow];
28 [label="Exit block"];
}
29 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
30 [label="Postponed exit from lambda"];
31 [label="Function call: R|kotlin/run|<R|kotlin/String|>(...)" style="filled" fillcolor=yellow];
32 [label="Exit block"];
20 [label="Enter block"];
21 [label="Const: String()"];
22 [label="Exit block"];
}
33 [label="Exit when branch result"];
34 [label="Exit when"];
23 [label="Exit when branch result"];
24 [label="Enter when branch result"];
subgraph cluster_9 {
color=blue
25 [label="Enter block"];
26 [label="Postponed enter to lambda"];
subgraph cluster_10 {
color=blue
27 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_11 {
color=blue
28 [label="Enter block"];
29 [label="Function call: R|/materialize|<R|kotlin/String|>()" style="filled" fillcolor=yellow];
30 [label="Exit block"];
}
31 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
32 [label="Postponed exit from lambda"];
33 [label="Function call: R|kotlin/run|<R|kotlin/String|>(...)" style="filled" fillcolor=yellow];
34 [label="Exit block"];
}
35 [label="Exit when branch result"];
36 [label="Exit when"];
}
35 [label="Variable declaration: lval x: R|kotlin/String|"];
36 [label="Exit block"];
37 [label="Variable declaration: lval x: R|kotlin/String|"];
38 [label="Exit block"];
}
37 [label="Exit function test_1" style="filled" fillcolor=red];
39 [label="Exit function test_1" style="filled" fillcolor=red];
}
9 -> {10};
10 -> {11};
11 -> {12};
12 -> {13};
13 -> {14};
14 -> {15 22};
14 -> {15};
15 -> {16};
16 -> {17};
16 -> {17 24};
17 -> {18};
18 -> {19};
19 -> {20};
20 -> {21};
21 -> {34};
21 -> {22};
22 -> {23};
23 -> {24};
24 -> {25 31};
24 -> {30} [style=dotted];
24 -> {25} [style=dashed];
23 -> {36};
24 -> {25};
25 -> {26};
26 -> {27};
26 -> {27 33};
26 -> {32} [style=dotted];
26 -> {27} [style=dashed];
27 -> {28};
28 -> {29};
29 -> {30};
30 -> {31} [color=green];
30 -> {34} [color=red];
30 -> {31};
31 -> {32};
32 -> {33};
32 -> {33} [color=green];
32 -> {36} [color=red];
33 -> {34};
34 -> {35};
35 -> {36};
36 -> {37};
subgraph cluster_11 {
color=red
38 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_12 {
color=blue
39 [label="Enter block"];
subgraph cluster_13 {
color=blue
40 [label="Try expression enter"];
subgraph cluster_14 {
color=blue
41 [label="Try main block enter"];
subgraph cluster_15 {
color=blue
42 [label="Enter block"];
43 [label="Postponed enter to lambda"];
subgraph cluster_16 {
color=blue
44 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_17 {
color=blue
45 [label="Enter block"];
46 [label="Function call: R|/materialize|<R|kotlin/String|>()" style="filled" fillcolor=yellow];
47 [label="Exit block"];
}
48 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
49 [label="Postponed exit from lambda"];
50 [label="Function call: R|kotlin/run|<R|kotlin/String|>(...)" style="filled" fillcolor=yellow];
51 [label="Exit block"];
}
52 [label="Try main block exit"];
}
subgraph cluster_18 {
color=blue
53 [label="Catch enter"];
54 [label="Variable declaration: e: R|kotlin/Exception|"];
subgraph cluster_19 {
color=blue
55 [label="Enter block"];
56 [label="Const: String()"];
57 [label="Exit block"];
}
58 [label="Catch exit"];
}
59 [label="Try expression exit"];
}
60 [label="Variable declaration: lval x: R|kotlin/String|"];
61 [label="Exit block"];
}
62 [label="Exit function test_2" style="filled" fillcolor=red];
}
37 -> {38};
38 -> {39};
39 -> {40};
40 -> {41 53};
subgraph cluster_12 {
color=red
40 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_13 {
color=blue
41 [label="Enter block"];
subgraph cluster_14 {
color=blue
42 [label="Try expression enter"];
subgraph cluster_15 {
color=blue
43 [label="Try main block enter"];
subgraph cluster_16 {
color=blue
44 [label="Enter block"];
45 [label="Postponed enter to lambda"];
subgraph cluster_17 {
color=blue
46 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_18 {
color=blue
47 [label="Enter block"];
48 [label="Function call: R|/materialize|<R|kotlin/String|>()" style="filled" fillcolor=yellow];
49 [label="Exit block"];
}
50 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
51 [label="Postponed exit from lambda"];
52 [label="Function call: R|kotlin/run|<R|kotlin/String|>(...)" style="filled" fillcolor=yellow];
53 [label="Exit block"];
}
54 [label="Try main block exit"];
}
subgraph cluster_19 {
color=blue
55 [label="Catch enter"];
56 [label="Variable declaration: e: R|kotlin/Exception|"];
subgraph cluster_20 {
color=blue
57 [label="Enter block"];
58 [label="Const: String()"];
59 [label="Exit block"];
}
60 [label="Catch exit"];
}
61 [label="Try expression exit"];
}
62 [label="Variable declaration: lval x: R|kotlin/String|"];
63 [label="Exit block"];
}
64 [label="Exit function test_2" style="filled" fillcolor=red];
}
40 -> {41};
41 -> {42};
42 -> {43};
43 -> {44 50};
43 -> {49} [style=dotted];
43 -> {44} [style=dashed];
42 -> {43 55};
43 -> {44};
44 -> {45};
45 -> {46};
46 -> {47 53};
45 -> {46 52};
45 -> {51} [style=dotted];
45 -> {46} [style=dashed];
46 -> {47};
47 -> {48};
48 -> {49};
49 -> {50} [color=green];
49 -> {59} [color=red];
50 -> {51 53};
51 -> {52};
52 -> {53 59};
48 -> {49 55};
49 -> {50};
50 -> {51};
51 -> {52} [color=green];
51 -> {61} [color=red];
52 -> {53 55};
53 -> {54};
54 -> {55};
54 -> {55 61};
55 -> {56};
56 -> {57};
57 -> {58};
@@ -194,48 +199,50 @@ digraph inplaceLambdaInControlFlowExpressions_kt {
59 -> {60};
60 -> {61};
61 -> {62};
subgraph cluster_20 {
color=red
63 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_21 {
color=blue
64 [label="Enter block"];
65 [label="Postponed enter to lambda"];
subgraph cluster_22 {
color=blue
66 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_23 {
color=blue
67 [label="Enter block"];
68 [label="Function call: R|/materialize|<R|kotlin/String?|>()" style="filled" fillcolor=yellow];
69 [label="Exit block"];
}
70 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
71 [label="Postponed exit from lambda"];
72 [label="Function call: R|kotlin/run|<R|kotlin/String?|>(...)" style="filled" fillcolor=yellow];
73 [label="Check not null: R|kotlin/run|<R|kotlin/String?|>(...)!!" style="filled" fillcolor=yellow];
74 [label="Variable declaration: lval x: R|kotlin/String|"];
75 [label="Exit block"];
}
76 [label="Exit function test_3" style="filled" fillcolor=red];
}
62 -> {63};
63 -> {64};
64 -> {65};
65 -> {66 72};
65 -> {71} [style=dotted];
65 -> {66} [style=dashed];
subgraph cluster_21 {
color=red
65 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_22 {
color=blue
66 [label="Enter block"];
67 [label="Postponed enter to lambda"];
subgraph cluster_23 {
color=blue
68 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_24 {
color=blue
69 [label="Enter block"];
70 [label="Function call: R|/materialize|<R|kotlin/String?|>()" style="filled" fillcolor=yellow];
71 [label="Exit block"];
}
72 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
73 [label="Postponed exit from lambda"];
74 [label="Function call: R|kotlin/run|<R|kotlin/String?|>(...)" style="filled" fillcolor=yellow];
75 [label="Check not null: R|kotlin/run|<R|kotlin/String?|>(...)!!" style="filled" fillcolor=yellow];
76 [label="Variable declaration: lval x: R|kotlin/String|"];
77 [label="Exit block"];
}
78 [label="Exit function test_3" style="filled" fillcolor=red];
}
65 -> {66};
66 -> {67};
67 -> {68};
67 -> {68 74};
67 -> {73} [style=dotted];
67 -> {68} [style=dashed];
68 -> {69};
69 -> {70};
70 -> {71};
71 -> {72} [color=green];
71 -> {73} [color=red];
71 -> {72};
72 -> {73};
73 -> {74};
73 -> {74} [color=green];
73 -> {75} [color=red];
74 -> {75};
75 -> {76};
76 -> {77};
77 -> {78};
}
+276 -269
View File
@@ -5,156 +5,161 @@ digraph jumps_kt {
subgraph cluster_0 {
color=red
0 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_1 {
0 [label="Enter file jumps.kt" style="filled" fillcolor=red];
1 [label="Exit file jumps.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
1 [label="Enter block"];
subgraph cluster_2 {
3 [label="Enter block"];
subgraph cluster_3 {
color=blue
2 [label="Enter when"];
subgraph cluster_3 {
color=blue
3 [label="Enter when branch condition "];
4 [label="Access variable R|<local>/x|"];
5 [label="Const: Null(null)"];
6 [label="Equality operator =="];
7 [label="Exit when branch condition"];
}
4 [label="Enter when"];
subgraph cluster_4 {
color=blue
8 [label="Enter when branch condition else"];
5 [label="Enter when branch condition "];
6 [label="Access variable R|<local>/x|"];
7 [label="Const: Null(null)"];
8 [label="Equality operator =="];
9 [label="Exit when branch condition"];
}
10 [label="Enter when branch result"];
subgraph cluster_5 {
color=blue
11 [label="Enter block"];
12 [label="Access variable R|<local>/x|"];
13 [label="Smart cast: R|<local>/x|"];
14 [label="Exit block"];
10 [label="Enter when branch condition else"];
11 [label="Exit when branch condition"];
}
15 [label="Exit when branch result"];
16 [label="Enter when branch result"];
12 [label="Enter when branch result"];
subgraph cluster_6 {
color=blue
17 [label="Enter block"];
18 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
19 [label="Throw: throw R|java/lang/Exception.Exception|()"];
20 [label="Stub" style="filled" fillcolor=gray];
21 [label="Exit block" style="filled" fillcolor=gray];
13 [label="Enter block"];
14 [label="Access variable R|<local>/x|"];
15 [label="Smart cast: R|<local>/x|"];
16 [label="Exit block"];
}
22 [label="Exit when branch result" style="filled" fillcolor=gray];
23 [label="Exit when"];
17 [label="Exit when branch result"];
18 [label="Enter when branch result"];
subgraph cluster_7 {
color=blue
19 [label="Enter block"];
20 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
21 [label="Throw: throw R|java/lang/Exception.Exception|()"];
22 [label="Stub" style="filled" fillcolor=gray];
23 [label="Exit block" style="filled" fillcolor=gray];
}
24 [label="Exit when branch result" style="filled" fillcolor=gray];
25 [label="Exit when"];
}
24 [label="Variable declaration: lval y: R|kotlin/Int|"];
25 [label="Access variable R|<local>/y|"];
26 [label="Function call: R|<local>/y|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
27 [label="Access variable R|<local>/x|"];
28 [label="Smart cast: R|<local>/x|"];
29 [label="Function call: R|<local>/x|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
30 [label="Exit block"];
26 [label="Variable declaration: lval y: R|kotlin/Int|"];
27 [label="Access variable R|<local>/y|"];
28 [label="Function call: R|<local>/y|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
29 [label="Access variable R|<local>/x|"];
30 [label="Smart cast: R|<local>/x|"];
31 [label="Function call: R|<local>/x|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
32 [label="Exit block"];
}
31 [label="Exit function test_1" style="filled" fillcolor=red];
33 [label="Exit function test_1" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
2 -> {3};
3 -> {4};
4 -> {5};
5 -> {6};
6 -> {7};
7 -> {8 16};
7 -> {8};
8 -> {9};
9 -> {10};
9 -> {10 18};
10 -> {11};
11 -> {12};
12 -> {13};
13 -> {14};
14 -> {15};
15 -> {23};
15 -> {16};
16 -> {17};
17 -> {18};
17 -> {25};
18 -> {19};
19 -> {20} [style=dotted];
20 -> {21} [style=dotted];
19 -> {20};
20 -> {21};
21 -> {22} [style=dotted];
22 -> {23} [style=dotted];
23 -> {24};
24 -> {25};
23 -> {24} [style=dotted];
24 -> {25} [style=dotted];
25 -> {26};
26 -> {27};
27 -> {28};
28 -> {29};
29 -> {30};
30 -> {31};
31 -> {32};
32 -> {33};
subgraph cluster_7 {
subgraph cluster_8 {
color=red
32 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_8 {
34 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_9 {
color=blue
33 [label="Enter block"];
subgraph cluster_9 {
35 [label="Enter block"];
subgraph cluster_10 {
color=blue
34 [label="Enter when"];
subgraph cluster_10 {
color=blue
35 [label="Enter when branch condition "];
36 [label="Access variable R|<local>/x|"];
37 [label="Const: Null(null)"];
38 [label="Equality operator =="];
39 [label="Exit when branch condition"];
}
36 [label="Enter when"];
subgraph cluster_11 {
color=blue
40 [label="Enter when branch condition else"];
37 [label="Enter when branch condition "];
38 [label="Access variable R|<local>/x|"];
39 [label="Const: Null(null)"];
40 [label="Equality operator =="];
41 [label="Exit when branch condition"];
}
42 [label="Enter when branch result"];
subgraph cluster_12 {
color=blue
43 [label="Enter block"];
44 [label="Access variable R|<local>/x|"];
45 [label="Smart cast: R|<local>/x|"];
46 [label="Exit block"];
42 [label="Enter when branch condition else"];
43 [label="Exit when branch condition"];
}
47 [label="Exit when branch result"];
48 [label="Enter when branch result"];
44 [label="Enter when branch result"];
subgraph cluster_13 {
color=blue
49 [label="Enter block"];
50 [label="Access variable R|<local>/x|"];
51 [label="Smart cast: R|<local>/x|"];
52 [label="Exit block"];
45 [label="Enter block"];
46 [label="Access variable R|<local>/x|"];
47 [label="Smart cast: R|<local>/x|"];
48 [label="Exit block"];
}
53 [label="Exit when branch result"];
54 [label="Exit when"];
49 [label="Exit when branch result"];
50 [label="Enter when branch result"];
subgraph cluster_14 {
color=blue
51 [label="Enter block"];
52 [label="Access variable R|<local>/x|"];
53 [label="Smart cast: R|<local>/x|"];
54 [label="Exit block"];
}
55 [label="Exit when branch result"];
56 [label="Exit when"];
}
55 [label="Variable declaration: lval y: R|kotlin/Int?|"];
56 [label="Access variable R|<local>/y|"];
57 [label="Function call: R|<local>/y|.R|kotlin/Int.inc<Inapplicable(UNSAFE_CALL): kotlin/Int.inc>#|()" style="filled" fillcolor=yellow];
58 [label="Exit block"];
57 [label="Variable declaration: lval y: R|kotlin/Int?|"];
58 [label="Access variable R|<local>/y|"];
59 [label="Function call: R|<local>/y|.R|kotlin/Int.inc<Inapplicable(UNSAFE_CALL): kotlin/Int.inc>#|()" style="filled" fillcolor=yellow];
60 [label="Exit block"];
}
59 [label="Exit function test_2" style="filled" fillcolor=red];
61 [label="Exit function test_2" style="filled" fillcolor=red];
}
32 -> {33};
33 -> {34};
34 -> {35};
35 -> {36};
36 -> {37};
37 -> {38};
38 -> {39};
39 -> {40 48};
39 -> {40};
40 -> {41};
41 -> {42};
41 -> {42 50};
42 -> {43};
43 -> {44};
44 -> {45};
45 -> {46};
46 -> {47};
47 -> {54};
47 -> {48};
48 -> {49};
49 -> {50};
49 -> {56};
50 -> {51};
51 -> {52};
52 -> {53};
@@ -164,260 +169,262 @@ digraph jumps_kt {
56 -> {57};
57 -> {58};
58 -> {59};
59 -> {60};
60 -> {61};
subgraph cluster_14 {
subgraph cluster_15 {
color=red
60 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_15 {
62 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_16 {
color=blue
61 [label="Enter block"];
subgraph cluster_16 {
63 [label="Enter block"];
subgraph cluster_17 {
color=blue
62 [label="Enter while loop"];
subgraph cluster_17 {
color=blue
63 [label="Enter loop condition"];
64 [label="Const: Boolean(true)"];
65 [label="Exit loop condition"];
}
64 [label="Enter while loop"];
subgraph cluster_18 {
color=blue
66 [label="Enter loop block"];
subgraph cluster_19 {
color=blue
67 [label="Enter block"];
68 [label="Access variable R|<local>/x|"];
69 [label="Type operator: (R|<local>/x| as R|kotlin/Int|)"];
70 [label="Jump: break@@@[Boolean(true)] "];
71 [label="Stub" style="filled" fillcolor=gray];
72 [label="Exit block" style="filled" fillcolor=gray];
}
73 [label="Exit loop block" style="filled" fillcolor=gray];
65 [label="Enter loop condition"];
66 [label="Const: Boolean(true)"];
67 [label="Exit loop condition"];
}
74 [label="Exit while loop"];
subgraph cluster_19 {
color=blue
68 [label="Enter loop block"];
subgraph cluster_20 {
color=blue
69 [label="Enter block"];
70 [label="Access variable R|<local>/x|"];
71 [label="Type operator: (R|<local>/x| as R|kotlin/Int|)"];
72 [label="Jump: break@@@[Boolean(true)] "];
73 [label="Stub" style="filled" fillcolor=gray];
74 [label="Exit block" style="filled" fillcolor=gray];
}
75 [label="Exit loop block" style="filled" fillcolor=gray];
}
76 [label="Exit while loop"];
}
75 [label="Access variable R|<local>/x|"];
76 [label="Smart cast: R|<local>/x|"];
77 [label="Function call: R|<local>/x|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
78 [label="Exit block"];
77 [label="Access variable R|<local>/x|"];
78 [label="Smart cast: R|<local>/x|"];
79 [label="Function call: R|<local>/x|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
80 [label="Exit block"];
}
79 [label="Exit function test_3" style="filled" fillcolor=red];
81 [label="Exit function test_3" style="filled" fillcolor=red];
}
60 -> {61};
61 -> {62};
62 -> {63};
63 -> {64};
64 -> {65};
65 -> {66};
65 -> {74} [style=dotted];
66 -> {67};
67 -> {68};
67 -> {76} [style=dotted];
68 -> {69};
69 -> {70};
70 -> {74};
70 -> {71} [style=dotted];
71 -> {72} [style=dotted];
70 -> {71};
71 -> {72};
72 -> {76};
72 -> {73} [style=dotted];
73 -> {63} [color=green style=dotted];
74 -> {75};
75 -> {76};
73 -> {74} [style=dotted];
74 -> {75} [style=dotted];
75 -> {65} [color=green style=dotted];
76 -> {77};
77 -> {78};
78 -> {79};
subgraph cluster_20 {
color=red
80 [label="Enter function test_4" style="filled" fillcolor=red];
subgraph cluster_21 {
color=blue
81 [label="Enter block"];
subgraph cluster_22 {
color=blue
82 [label="Enter do-while loop"];
subgraph cluster_23 {
color=blue
83 [label="Enter loop block"];
subgraph cluster_24 {
color=blue
84 [label="Enter block"];
85 [label="Access variable R|<local>/x|"];
86 [label="Type operator: (R|<local>/x| as R|kotlin/Int|)"];
87 [label="Jump: break@@@[Boolean(true)] "];
88 [label="Stub" style="filled" fillcolor=gray];
89 [label="Exit block" style="filled" fillcolor=gray];
}
90 [label="Exit loop block" style="filled" fillcolor=gray];
}
subgraph cluster_25 {
color=blue
91 [label="Enter loop condition" style="filled" fillcolor=gray];
92 [label="Const: Boolean(true)" style="filled" fillcolor=gray];
93 [label="Exit loop condition" style="filled" fillcolor=gray];
}
94 [label="Exit do-while loop"];
}
95 [label="Access variable R|<local>/x|"];
96 [label="Smart cast: R|<local>/x|"];
97 [label="Function call: R|<local>/x|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
98 [label="Exit block"];
}
99 [label="Exit function test_4" style="filled" fillcolor=red];
}
79 -> {80};
80 -> {81};
81 -> {82};
subgraph cluster_21 {
color=red
82 [label="Enter function test_4" style="filled" fillcolor=red];
subgraph cluster_22 {
color=blue
83 [label="Enter block"];
subgraph cluster_23 {
color=blue
84 [label="Enter do-while loop"];
subgraph cluster_24 {
color=blue
85 [label="Enter loop block"];
subgraph cluster_25 {
color=blue
86 [label="Enter block"];
87 [label="Access variable R|<local>/x|"];
88 [label="Type operator: (R|<local>/x| as R|kotlin/Int|)"];
89 [label="Jump: break@@@[Boolean(true)] "];
90 [label="Stub" style="filled" fillcolor=gray];
91 [label="Exit block" style="filled" fillcolor=gray];
}
92 [label="Exit loop block" style="filled" fillcolor=gray];
}
subgraph cluster_26 {
color=blue
93 [label="Enter loop condition" style="filled" fillcolor=gray];
94 [label="Const: Boolean(true)" style="filled" fillcolor=gray];
95 [label="Exit loop condition" style="filled" fillcolor=gray];
}
96 [label="Exit do-while loop"];
}
97 [label="Access variable R|<local>/x|"];
98 [label="Smart cast: R|<local>/x|"];
99 [label="Function call: R|<local>/x|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
100 [label="Exit block"];
}
101 [label="Exit function test_4" style="filled" fillcolor=red];
}
82 -> {83};
83 -> {84};
84 -> {85};
85 -> {86};
86 -> {87};
87 -> {94};
87 -> {88} [style=dotted];
88 -> {89} [style=dotted];
87 -> {88};
88 -> {89};
89 -> {96};
89 -> {90} [style=dotted];
90 -> {91} [style=dotted];
91 -> {92} [style=dotted];
92 -> {93} [style=dotted];
93 -> {83} [color=green style=dotted];
93 -> {94} [style=dotted];
94 -> {95};
95 -> {96};
94 -> {95} [style=dotted];
95 -> {85} [color=green style=dotted];
95 -> {96} [style=dotted];
96 -> {97};
97 -> {98};
98 -> {99};
99 -> {100};
100 -> {101};
subgraph cluster_26 {
subgraph cluster_27 {
color=red
100 [label="Enter function test_5" style="filled" fillcolor=red];
subgraph cluster_27 {
102 [label="Enter function test_5" style="filled" fillcolor=red];
subgraph cluster_28 {
color=blue
101 [label="Enter block"];
subgraph cluster_28 {
103 [label="Enter block"];
subgraph cluster_29 {
color=blue
102 [label="Enter while loop"];
subgraph cluster_29 {
color=blue
103 [label="Enter loop condition"];
104 [label="Access variable R|<local>/b|"];
105 [label="Exit loop condition"];
}
104 [label="Enter while loop"];
subgraph cluster_30 {
color=blue
106 [label="Enter loop block"];
subgraph cluster_31 {
105 [label="Enter loop condition"];
106 [label="Access variable R|<local>/b|"];
107 [label="Exit loop condition"];
}
subgraph cluster_31 {
color=blue
108 [label="Enter loop block"];
subgraph cluster_32 {
color=blue
107 [label="Enter block"];
subgraph cluster_32 {
109 [label="Enter block"];
subgraph cluster_33 {
color=blue
108 [label="Enter when"];
subgraph cluster_33 {
color=blue
109 [label="Enter when branch condition "];
110 [label="Access variable R|<local>/b|"];
111 [label="Exit when branch condition"];
}
112 [label="Synthetic else branch"];
113 [label="Enter when branch result"];
110 [label="Enter when"];
subgraph cluster_34 {
color=blue
114 [label="Enter block"];
115 [label="Jump: continue@@@[R|<local>/b|] "];
116 [label="Stub" style="filled" fillcolor=gray];
117 [label="Exit block" style="filled" fillcolor=gray];
111 [label="Enter when branch condition "];
112 [label="Access variable R|<local>/b|"];
113 [label="Exit when branch condition"];
}
118 [label="Exit when branch result" style="filled" fillcolor=gray];
119 [label="Exit when"];
114 [label="Synthetic else branch"];
115 [label="Enter when branch result"];
subgraph cluster_35 {
color=blue
116 [label="Enter block"];
117 [label="Jump: continue@@@[R|<local>/b|] "];
118 [label="Stub" style="filled" fillcolor=gray];
119 [label="Exit block" style="filled" fillcolor=gray];
}
120 [label="Exit when branch result" style="filled" fillcolor=gray];
121 [label="Exit when"];
}
120 [label="Exit block"];
122 [label="Exit block"];
}
121 [label="Exit loop block"];
123 [label="Exit loop block"];
}
122 [label="Exit while loop"];
124 [label="Exit while loop"];
}
123 [label="Exit block"];
125 [label="Exit block"];
}
124 [label="Exit function test_5" style="filled" fillcolor=red];
126 [label="Exit function test_5" style="filled" fillcolor=red];
}
100 -> {101};
101 -> {102};
102 -> {103};
103 -> {104};
104 -> {105};
105 -> {106 122};
105 -> {106};
106 -> {107};
107 -> {108};
107 -> {108 124};
108 -> {109};
109 -> {110};
110 -> {111};
111 -> {112 113};
112 -> {119};
113 -> {114};
114 -> {115};
115 -> {103} [color=green style=dashed];
115 -> {116} [style=dotted];
116 -> {117} [style=dotted];
111 -> {112};
112 -> {113};
113 -> {114 115};
114 -> {121};
115 -> {116};
116 -> {117};
117 -> {105} [color=green style=dashed];
117 -> {118} [style=dotted];
118 -> {119} [style=dotted];
119 -> {120};
120 -> {121};
121 -> {103} [color=green style=dashed];
119 -> {120} [style=dotted];
120 -> {121} [style=dotted];
121 -> {122};
122 -> {123};
123 -> {124};
subgraph cluster_35 {
color=red
125 [label="Enter function run" style="filled" fillcolor=red];
subgraph cluster_36 {
color=blue
126 [label="Enter block"];
127 [label="Function call: R|<local>/block|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
128 [label="Exit block"];
}
129 [label="Exit function run" style="filled" fillcolor=red];
}
123 -> {105} [color=green style=dashed];
124 -> {125};
125 -> {126};
126 -> {127};
subgraph cluster_36 {
color=red
127 [label="Enter function run" style="filled" fillcolor=red];
subgraph cluster_37 {
color=blue
128 [label="Enter block"];
129 [label="Function call: R|<local>/block|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
130 [label="Exit block"];
}
131 [label="Exit function run" style="filled" fillcolor=red];
}
127 -> {128};
128 -> {129};
subgraph cluster_37 {
color=red
130 [label="Enter function test_6" style="filled" fillcolor=red];
subgraph cluster_38 {
color=blue
131 [label="Enter block"];
132 [label="Postponed enter to lambda"];
subgraph cluster_39 {
color=blue
133 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_40 {
color=blue
134 [label="Enter block"];
135 [label="Jump: ^@run Unit"];
136 [label="Stub" style="filled" fillcolor=gray];
137 [label="Exit block" style="filled" fillcolor=gray];
}
138 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
139 [label="Postponed exit from lambda"];
140 [label="Function call: R|/run|(...)" style="filled" fillcolor=yellow];
141 [label="Exit block"];
}
142 [label="Exit function test_6" style="filled" fillcolor=red];
}
129 -> {130};
130 -> {131};
131 -> {132};
132 -> {133 139 140};
132 -> {133} [style=dashed];
subgraph cluster_38 {
color=red
132 [label="Enter function test_6" style="filled" fillcolor=red];
subgraph cluster_39 {
color=blue
133 [label="Enter block"];
134 [label="Postponed enter to lambda"];
subgraph cluster_40 {
color=blue
135 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_41 {
color=blue
136 [label="Enter block"];
137 [label="Jump: ^@run Unit"];
138 [label="Stub" style="filled" fillcolor=gray];
139 [label="Exit block" style="filled" fillcolor=gray];
}
140 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
141 [label="Postponed exit from lambda"];
142 [label="Function call: R|/run|(...)" style="filled" fillcolor=yellow];
143 [label="Exit block"];
}
144 [label="Exit function test_6" style="filled" fillcolor=red];
}
132 -> {133};
133 -> {134};
134 -> {135};
135 -> {138};
135 -> {136} [style=dotted];
136 -> {137} [style=dotted];
134 -> {135 141 142};
134 -> {135} [style=dashed];
135 -> {136};
136 -> {137};
137 -> {140};
137 -> {138} [style=dotted];
138 -> {139};
139 -> {140};
139 -> {132} [color=green style=dashed];
138 -> {139} [style=dotted];
139 -> {140} [style=dotted];
140 -> {141};
141 -> {142};
141 -> {134} [color=green style=dashed];
142 -> {143};
143 -> {144};
}
@@ -5,92 +5,101 @@ digraph lambdaAsReturnOfLambda_kt {
subgraph cluster_0 {
color=red
0 [label="Enter property" style="filled" fillcolor=red];
1 [label="Postponed enter to lambda"];
0 [label="Enter file lambdaAsReturnOfLambda.kt" style="filled" fillcolor=red];
subgraph cluster_1 {
color=blue
2 [label="Enter function <anonymous>" style="filled" fillcolor=red];
1 [label="Enter property" style="filled" fillcolor=red];
2 [label="Postponed enter to lambda"];
subgraph cluster_2 {
color=blue
3 [label="Enter block"];
4 [label="Exit anonymous function expression"];
3 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_3 {
color=blue
5 [label="Enter function <anonymous>" style="filled" fillcolor=red];
4 [label="Enter block"];
5 [label="Exit anonymous function expression"];
subgraph cluster_4 {
color=blue
6 [label="Enter block"];
7 [label="Access variable R|<local>/foo|"];
8 [label="Function call: R|/bar|(...)" style="filled" fillcolor=yellow];
9 [label="Exit block"];
6 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_5 {
color=blue
7 [label="Enter block"];
8 [label="Access variable R|<local>/foo|"];
9 [label="Function call: R|/bar|(...)" style="filled" fillcolor=yellow];
10 [label="Exit block"];
}
11 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
10 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
11 [label="Jump: ^@run lambda@fun <anonymous>(foo: R|kotlin/String|): R|kotlin/Unit| <inline=Unknown> {
12 [label="Jump: ^@run lambda@fun <anonymous>(foo: R|kotlin/String|): R|kotlin/Unit| <inline=Unknown> {
R|/bar|(R|<local>/foo|)
}
"];
12 [label="Stub" style="filled" fillcolor=gray];
13 [label="Exit block" style="filled" fillcolor=gray];
13 [label="Stub" style="filled" fillcolor=gray];
14 [label="Exit block" style="filled" fillcolor=gray];
}
15 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
14 [label="Exit function <anonymous>" style="filled" fillcolor=red];
16 [label="Postponed exit from lambda"];
17 [label="Function call: R|/run|<R|(kotlin/String) -> kotlin/Unit|>(...)" style="filled" fillcolor=yellow];
18 [label="Exit property" style="filled" fillcolor=red];
}
15 [label="Postponed exit from lambda"];
16 [label="Function call: R|/run|<R|(kotlin/String) -> kotlin/Unit|>(...)" style="filled" fillcolor=yellow];
17 [label="Exit property" style="filled" fillcolor=red];
19 [label="Exit file lambdaAsReturnOfLambda.kt" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2 15 16};
1 -> {2} [style=dashed];
2 -> {3};
0 -> {1} [color=green];
0 -> {19} [style=dotted];
0 -> {1} [style=dashed];
1 -> {2};
2 -> {3 16 17};
2 -> {3} [style=dashed];
3 -> {4};
4 -> {5 11};
4 -> {5} [style=dashed];
5 -> {6};
4 -> {5};
5 -> {6 12};
5 -> {6} [style=dashed];
6 -> {7};
7 -> {8};
8 -> {9};
9 -> {10};
11 -> {14};
11 -> {12} [style=dotted];
10 -> {11};
12 -> {15};
12 -> {13} [style=dotted];
13 -> {14} [style=dotted];
15 -> {16};
14 -> {15} [style=dotted];
16 -> {17};
17 -> {18};
18 -> {19} [color=green];
subgraph cluster_5 {
subgraph cluster_6 {
color=red
18 [label="Enter function bar" style="filled" fillcolor=red];
subgraph cluster_6 {
20 [label="Enter function bar" style="filled" fillcolor=red];
subgraph cluster_7 {
color=blue
19 [label="Enter block"];
20 [label="Exit block"];
21 [label="Enter block"];
22 [label="Exit block"];
}
21 [label="Exit function bar" style="filled" fillcolor=red];
23 [label="Exit function bar" style="filled" fillcolor=red];
}
18 -> {19};
19 -> {20};
20 -> {21};
subgraph cluster_7 {
color=red
22 [label="Enter function run" style="filled" fillcolor=red];
subgraph cluster_8 {
color=blue
23 [label="Enter block"];
24 [label="Function call: R|<local>/block|.R|SubstitutionOverride<kotlin/Function0.invoke: R|R|>|()" style="filled" fillcolor=yellow];
25 [label="Jump: ^run R|<local>/block|.R|SubstitutionOverride<kotlin/Function0.invoke: R|R|>|()"];
26 [label="Stub" style="filled" fillcolor=gray];
27 [label="Exit block" style="filled" fillcolor=gray];
}
28 [label="Exit function run" style="filled" fillcolor=red];
}
21 -> {22};
22 -> {23};
23 -> {24};
subgraph cluster_8 {
color=red
24 [label="Enter function run" style="filled" fillcolor=red];
subgraph cluster_9 {
color=blue
25 [label="Enter block"];
26 [label="Function call: R|<local>/block|.R|SubstitutionOverride<kotlin/Function0.invoke: R|R|>|()" style="filled" fillcolor=yellow];
27 [label="Jump: ^run R|<local>/block|.R|SubstitutionOverride<kotlin/Function0.invoke: R|R|>|()"];
28 [label="Stub" style="filled" fillcolor=gray];
29 [label="Exit block" style="filled" fillcolor=gray];
}
30 [label="Exit function run" style="filled" fillcolor=red];
}
24 -> {25};
25 -> {28};
25 -> {26} [style=dotted];
26 -> {27} [style=dotted];
25 -> {26};
26 -> {27};
27 -> {30};
27 -> {28} [style=dotted];
28 -> {29} [style=dotted];
29 -> {30} [style=dotted];
}
@@ -5,109 +5,116 @@ digraph lambdaReturningObject_kt {
subgraph cluster_0 {
color=red
0 [label="Enter class Out" style="filled" fillcolor=red];
1 [label="Exit class Out" style="filled" fillcolor=red];
0 [label="Enter file lambdaReturningObject.kt" style="filled" fillcolor=red];
1 [label="Exit file lambdaReturningObject.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter function bar" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
3 [label="Enter block"];
4 [label="Exit block"];
}
5 [label="Exit function bar" style="filled" fillcolor=red];
2 [label="Enter class Out" style="filled" fillcolor=red];
3 [label="Exit class Out" style="filled" fillcolor=red];
}
2 -> {3};
3 -> {4};
4 -> {5};
2 -> {3} [color=green];
subgraph cluster_3 {
subgraph cluster_2 {
color=red
6 [label="Enter class IrTypeArgument" style="filled" fillcolor=red];
7 [label="Exit class IrTypeArgument" style="filled" fillcolor=red];
4 [label="Enter function bar" style="filled" fillcolor=red];
subgraph cluster_3 {
color=blue
5 [label="Enter block"];
6 [label="Exit block"];
}
7 [label="Exit function bar" style="filled" fillcolor=red];
}
6 -> {7} [color=green];
4 -> {5};
5 -> {6};
6 -> {7};
subgraph cluster_4 {
color=red
8 [label="Enter class IrStarProjectionImpl" style="filled" fillcolor=red];
subgraph cluster_5 {
color=blue
9 [label="Enter function <init>" style="filled" fillcolor=red];
10 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
11 [label="Exit function <init>" style="filled" fillcolor=red];
}
12 [label="Exit class IrStarProjectionImpl" style="filled" fillcolor=red];
8 [label="Enter class IrTypeArgument" style="filled" fillcolor=red];
9 [label="Exit class IrTypeArgument" style="filled" fillcolor=red];
}
8 -> {9} [color=green];
8 -> {12} [style=dotted];
8 -> {9} [style=dashed];
9 -> {10};
10 -> {11};
11 -> {12} [color=green];
subgraph cluster_6 {
subgraph cluster_5 {
color=red
13 [label="Enter function MyOut" style="filled" fillcolor=red];
subgraph cluster_7 {
10 [label="Enter class IrStarProjectionImpl" style="filled" fillcolor=red];
subgraph cluster_6 {
color=blue
14 [label="Enter block"];
15 [label="Function call: R|kotlin/TODO|()" style="filled" fillcolor=yellow];
16 [label="Stub" style="filled" fillcolor=gray];
17 [label="Jump: ^MyOut R|kotlin/TODO|()" style="filled" fillcolor=gray];
11 [label="Enter function <init>" style="filled" fillcolor=red];
12 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
13 [label="Exit function <init>" style="filled" fillcolor=red];
}
14 [label="Exit class IrStarProjectionImpl" style="filled" fillcolor=red];
}
10 -> {11} [color=green];
10 -> {14} [style=dotted];
10 -> {11} [style=dashed];
11 -> {12};
12 -> {13};
13 -> {14} [color=green];
subgraph cluster_7 {
color=red
15 [label="Enter function MyOut" style="filled" fillcolor=red];
subgraph cluster_8 {
color=blue
16 [label="Enter block"];
17 [label="Function call: R|kotlin/TODO|()" style="filled" fillcolor=yellow];
18 [label="Stub" style="filled" fillcolor=gray];
19 [label="Exit block" style="filled" fillcolor=gray];
19 [label="Jump: ^MyOut R|kotlin/TODO|()" style="filled" fillcolor=gray];
20 [label="Stub" style="filled" fillcolor=gray];
21 [label="Exit block" style="filled" fillcolor=gray];
}
20 [label="Exit function MyOut" style="filled" fillcolor=gray];
22 [label="Exit function MyOut" style="filled" fillcolor=gray];
}
13 -> {14};
14 -> {15};
15 -> {16} [style=dotted];
16 -> {17} [style=dotted];
17 -> {18 20} [style=dotted];
15 -> {16};
16 -> {17};
17 -> {18} [style=dotted];
18 -> {19} [style=dotted];
19 -> {20} [style=dotted];
19 -> {20 22} [style=dotted];
20 -> {21} [style=dotted];
21 -> {22} [style=dotted];
subgraph cluster_8 {
subgraph cluster_9 {
color=red
21 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_9 {
23 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_10 {
color=blue
22 [label="Enter block"];
23 [label="Postponed enter to lambda"];
subgraph cluster_10 {
24 [label="Enter block"];
25 [label="Postponed enter to lambda"];
subgraph cluster_11 {
color=blue
24 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_11 {
26 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_12 {
color=blue
25 [label="Enter block"];
26 [label="Access qualifier /IrStarProjectionImpl"];
27 [label="Exit block"];
27 [label="Enter block"];
28 [label="Access qualifier /IrStarProjectionImpl"];
29 [label="Exit block"];
}
28 [label="Exit function <anonymous>" style="filled" fillcolor=red];
30 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
29 [label="Postponed exit from lambda"];
30 [label="Function call: R|/MyOut|<R|IrStarProjectionImpl|>(...)" style="filled" fillcolor=yellow];
31 [label="Function call: R|/bar|(...)" style="filled" fillcolor=yellow];
32 [label="Exit block"];
31 [label="Postponed exit from lambda"];
32 [label="Function call: R|/MyOut|<R|IrStarProjectionImpl|>(...)" style="filled" fillcolor=yellow];
33 [label="Function call: R|/bar|(...)" style="filled" fillcolor=yellow];
34 [label="Exit block"];
}
33 [label="Exit function foo" style="filled" fillcolor=red];
35 [label="Exit function foo" style="filled" fillcolor=red];
}
21 -> {22};
22 -> {23};
23 -> {24 29 30};
23 -> {24} [style=dashed];
23 -> {24};
24 -> {25};
25 -> {26};
25 -> {26 31 32};
25 -> {26} [style=dashed];
26 -> {27};
27 -> {28};
29 -> {30} [color=green];
29 -> {31} [color=red];
30 -> {31};
31 -> {32};
28 -> {29};
29 -> {30};
31 -> {32} [color=green];
31 -> {33} [color=red];
32 -> {33};
33 -> {34};
34 -> {35};
}
+193 -186
View File
@@ -5,285 +5,292 @@ digraph lambdas_kt {
subgraph cluster_0 {
color=red
0 [label="Enter function run" style="filled" fillcolor=red];
subgraph cluster_1 {
color=blue
1 [label="Enter block"];
2 [label="Function call: R|<local>/block|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
3 [label="Exit block"];
}
4 [label="Exit function run" style="filled" fillcolor=red];
0 [label="Enter file lambdas.kt" style="filled" fillcolor=red];
1 [label="Exit file lambdas.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter function run" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
3 [label="Enter block"];
4 [label="Function call: R|<local>/block|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
5 [label="Exit block"];
}
6 [label="Exit function run" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
2 -> {3};
3 -> {4};
4 -> {5};
5 -> {6};
subgraph cluster_2 {
subgraph cluster_3 {
color=red
5 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_3 {
7 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_4 {
color=blue
6 [label="Enter block"];
subgraph cluster_4 {
8 [label="Enter block"];
subgraph cluster_5 {
color=blue
7 [label="Enter when"];
subgraph cluster_5 {
color=blue
8 [label="Enter when branch condition "];
9 [label="Access variable R|<local>/x|"];
10 [label="Type operator: (R|<local>/x| is R|kotlin/Int|)"];
11 [label="Exit when branch condition"];
}
12 [label="Synthetic else branch"];
13 [label="Enter when branch result"];
9 [label="Enter when"];
subgraph cluster_6 {
color=blue
14 [label="Enter block"];
15 [label="Postponed enter to lambda"];
subgraph cluster_7 {
color=blue
16 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_8 {
color=blue
17 [label="Enter block"];
18 [label="Access variable R|<local>/x|"];
19 [label="Smart cast: R|<local>/x|"];
20 [label="Function call: R|<local>/x|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
21 [label="Exit block"];
}
22 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
23 [label="Postponed exit from lambda"];
24 [label="Function call: R|/run|(...)" style="filled" fillcolor=yellow];
25 [label="Exit block"];
10 [label="Enter when branch condition "];
11 [label="Access variable R|<local>/x|"];
12 [label="Type operator: (R|<local>/x| is R|kotlin/Int|)"];
13 [label="Exit when branch condition"];
}
26 [label="Exit when branch result"];
27 [label="Exit when"];
14 [label="Synthetic else branch"];
15 [label="Enter when branch result"];
subgraph cluster_7 {
color=blue
16 [label="Enter block"];
17 [label="Postponed enter to lambda"];
subgraph cluster_8 {
color=blue
18 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_9 {
color=blue
19 [label="Enter block"];
20 [label="Access variable R|<local>/x|"];
21 [label="Smart cast: R|<local>/x|"];
22 [label="Function call: R|<local>/x|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
23 [label="Exit block"];
}
24 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
25 [label="Postponed exit from lambda"];
26 [label="Function call: R|/run|(...)" style="filled" fillcolor=yellow];
27 [label="Exit block"];
}
28 [label="Exit when branch result"];
29 [label="Exit when"];
}
28 [label="Exit block"];
30 [label="Exit block"];
}
29 [label="Exit function test_1" style="filled" fillcolor=red];
31 [label="Exit function test_1" style="filled" fillcolor=red];
}
5 -> {6};
6 -> {7};
7 -> {8};
8 -> {9};
9 -> {10};
10 -> {11};
11 -> {12 13};
12 -> {27};
13 -> {14};
14 -> {15};
15 -> {16 23 24};
15 -> {16} [style=dashed];
11 -> {12};
12 -> {13};
13 -> {14 15};
14 -> {29};
15 -> {16};
16 -> {17};
17 -> {18};
17 -> {18 25 26};
17 -> {18} [style=dashed];
18 -> {19};
19 -> {20};
20 -> {21};
21 -> {22};
22 -> {23};
23 -> {24};
23 -> {15} [color=green style=dashed];
24 -> {25};
25 -> {26};
25 -> {17} [color=green style=dashed];
26 -> {27};
27 -> {28};
28 -> {29};
29 -> {30};
30 -> {31};
subgraph cluster_9 {
subgraph cluster_10 {
color=red
30 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_10 {
32 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_11 {
color=blue
31 [label="Enter block"];
subgraph cluster_11 {
33 [label="Enter block"];
subgraph cluster_12 {
color=blue
32 [label="Enter when"];
subgraph cluster_12 {
color=blue
33 [label="Enter when branch condition "];
34 [label="Access variable R|<local>/x|"];
35 [label="Type operator: (R|<local>/x| is R|kotlin/Int|)"];
36 [label="Exit when branch condition"];
}
37 [label="Synthetic else branch"];
38 [label="Enter when branch result"];
34 [label="Enter when"];
subgraph cluster_13 {
color=blue
39 [label="Enter block"];
40 [label="Exit anonymous function expression"];
41 [label="Variable declaration: lval lambda: R|() -> kotlin/Int|"];
42 [label="Exit block"];
35 [label="Enter when branch condition "];
36 [label="Access variable R|<local>/x|"];
37 [label="Type operator: (R|<local>/x| is R|kotlin/Int|)"];
38 [label="Exit when branch condition"];
}
43 [label="Exit when branch result"];
44 [label="Exit when"];
39 [label="Synthetic else branch"];
40 [label="Enter when branch result"];
subgraph cluster_14 {
color=blue
41 [label="Enter block"];
42 [label="Exit anonymous function expression"];
43 [label="Variable declaration: lval lambda: R|() -> kotlin/Int|"];
44 [label="Exit block"];
}
45 [label="Exit when branch result"];
46 [label="Exit when"];
}
45 [label="Exit block"];
47 [label="Exit block"];
}
46 [label="Exit function test_2" style="filled" fillcolor=red];
48 [label="Exit function test_2" style="filled" fillcolor=red];
}
subgraph cluster_14 {
subgraph cluster_15 {
color=blue
47 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_15 {
49 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_16 {
color=blue
48 [label="Enter block"];
49 [label="Access variable R|<local>/x|"];
50 [label="Smart cast: R|<local>/x|"];
51 [label="Function call: R|<local>/x|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
52 [label="Exit block"];
50 [label="Enter block"];
51 [label="Access variable R|<local>/x|"];
52 [label="Smart cast: R|<local>/x|"];
53 [label="Function call: R|<local>/x|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
54 [label="Exit block"];
}
53 [label="Exit function <anonymous>" style="filled" fillcolor=red];
55 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
30 -> {31};
31 -> {32};
32 -> {33};
33 -> {34};
34 -> {35};
35 -> {36};
36 -> {37 38};
37 -> {44};
38 -> {39};
39 -> {40};
40 -> {41 47};
40 -> {47} [style=dashed];
36 -> {37};
37 -> {38};
38 -> {39 40};
39 -> {46};
40 -> {41};
41 -> {42};
42 -> {43};
42 -> {43 49};
42 -> {49} [style=dashed];
43 -> {44};
44 -> {45};
45 -> {46};
46 -> {47};
47 -> {48};
48 -> {49};
49 -> {50};
50 -> {51};
51 -> {52};
52 -> {53};
subgraph cluster_16 {
color=red
54 [label="Enter function getInt" style="filled" fillcolor=red];
subgraph cluster_17 {
color=blue
55 [label="Enter block"];
56 [label="Function call: R|<local>/block|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
57 [label="Const: Int(1)"];
58 [label="Jump: ^getInt Int(1)"];
59 [label="Stub" style="filled" fillcolor=gray];
60 [label="Exit block" style="filled" fillcolor=gray];
}
61 [label="Exit function getInt" style="filled" fillcolor=red];
}
53 -> {54};
54 -> {55};
55 -> {56};
subgraph cluster_17 {
color=red
56 [label="Enter function getInt" style="filled" fillcolor=red];
subgraph cluster_18 {
color=blue
57 [label="Enter block"];
58 [label="Function call: R|<local>/block|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
59 [label="Const: Int(1)"];
60 [label="Jump: ^getInt Int(1)"];
61 [label="Stub" style="filled" fillcolor=gray];
62 [label="Exit block" style="filled" fillcolor=gray];
}
63 [label="Exit function getInt" style="filled" fillcolor=red];
}
56 -> {57};
57 -> {58};
58 -> {61};
58 -> {59} [style=dotted];
59 -> {60} [style=dotted];
58 -> {59};
59 -> {60};
60 -> {63};
60 -> {61} [style=dotted];
61 -> {62} [style=dotted];
62 -> {63} [style=dotted];
subgraph cluster_18 {
subgraph cluster_19 {
color=red
62 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_19 {
64 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_20 {
color=blue
63 [label="Enter block"];
64 [label="Postponed enter to lambda"];
subgraph cluster_20 {
65 [label="Enter block"];
66 [label="Postponed enter to lambda"];
subgraph cluster_21 {
color=blue
65 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_21 {
67 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_22 {
color=blue
66 [label="Enter block"];
67 [label="Const: Int(1)"];
68 [label="Jump: ^test_3 Int(1)"];
69 [label="Stub" style="filled" fillcolor=gray];
70 [label="Exit block" style="filled" fillcolor=gray];
68 [label="Enter block"];
69 [label="Const: Int(1)"];
70 [label="Jump: ^test_3 Int(1)"];
71 [label="Stub" style="filled" fillcolor=gray];
72 [label="Exit block" style="filled" fillcolor=gray];
}
71 [label="Exit function <anonymous>" style="filled" fillcolor=gray];
73 [label="Exit function <anonymous>" style="filled" fillcolor=gray];
}
72 [label="Postponed exit from lambda"];
73 [label="Function call: R|/getInt|(...)" style="filled" fillcolor=yellow];
74 [label="Jump: ^test_3 R|/getInt|(<L> = getInt@fun <anonymous>(): R|kotlin/Unit| <inline=Inline, kind=UNKNOWN> {
74 [label="Postponed exit from lambda"];
75 [label="Function call: R|/getInt|(...)" style="filled" fillcolor=yellow];
76 [label="Jump: ^test_3 R|/getInt|(<L> = getInt@fun <anonymous>(): R|kotlin/Unit| <inline=Inline, kind=UNKNOWN> {
^test_3 Int(1)
}
)"];
75 [label="Stub" style="filled" fillcolor=gray];
76 [label="Exit block" style="filled" fillcolor=gray];
77 [label="Stub" style="filled" fillcolor=gray];
78 [label="Exit block" style="filled" fillcolor=gray];
}
77 [label="Exit function test_3" style="filled" fillcolor=red];
79 [label="Exit function test_3" style="filled" fillcolor=red];
}
62 -> {63};
63 -> {64};
64 -> {65 72 73};
64 -> {65} [style=dashed];
64 -> {65};
65 -> {66};
66 -> {67};
66 -> {67 74 75};
66 -> {67} [style=dashed];
67 -> {68};
68 -> {77};
68 -> {69} [style=dotted];
69 -> {70} [style=dotted];
68 -> {69};
69 -> {70};
70 -> {79};
70 -> {71} [style=dotted];
71 -> {72} [style=dotted];
72 -> {73};
72 -> {64} [color=green style=dashed];
73 -> {74};
74 -> {77};
74 -> {75} [style=dotted];
75 -> {76} [style=dotted];
72 -> {73} [style=dotted];
73 -> {74} [style=dotted];
74 -> {75};
74 -> {66} [color=green style=dashed];
75 -> {76};
76 -> {79};
76 -> {77} [style=dotted];
77 -> {78} [style=dotted];
78 -> {79} [style=dotted];
subgraph cluster_22 {
subgraph cluster_23 {
color=red
78 [label="Enter function test_4" style="filled" fillcolor=red];
subgraph cluster_23 {
80 [label="Enter function test_4" style="filled" fillcolor=red];
subgraph cluster_24 {
color=blue
79 [label="Enter block"];
80 [label="Postponed enter to lambda"];
subgraph cluster_24 {
81 [label="Enter block"];
82 [label="Postponed enter to lambda"];
subgraph cluster_25 {
color=blue
81 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_25 {
83 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_26 {
color=blue
82 [label="Enter block"];
83 [label="Const: Int(1)"];
84 [label="Jump: ^test_4 Int(1)"];
85 [label="Stub" style="filled" fillcolor=gray];
86 [label="Exit block" style="filled" fillcolor=gray];
84 [label="Enter block"];
85 [label="Const: Int(1)"];
86 [label="Jump: ^test_4 Int(1)"];
87 [label="Stub" style="filled" fillcolor=gray];
88 [label="Exit block" style="filled" fillcolor=gray];
}
87 [label="Exit function <anonymous>" style="filled" fillcolor=gray];
89 [label="Exit function <anonymous>" style="filled" fillcolor=gray];
}
88 [label="Postponed exit from lambda"];
89 [label="Function call: R|/getInt|(...)" style="filled" fillcolor=yellow];
90 [label="Jump: ^test_4 R|/getInt|(block = getInt@fun <anonymous>(): R|kotlin/Unit| <inline=Inline, kind=UNKNOWN> {
90 [label="Postponed exit from lambda"];
91 [label="Function call: R|/getInt|(...)" style="filled" fillcolor=yellow];
92 [label="Jump: ^test_4 R|/getInt|(block = getInt@fun <anonymous>(): R|kotlin/Unit| <inline=Inline, kind=UNKNOWN> {
^test_4 Int(1)
}
)"];
91 [label="Stub" style="filled" fillcolor=gray];
92 [label="Exit block" style="filled" fillcolor=gray];
93 [label="Stub" style="filled" fillcolor=gray];
94 [label="Exit block" style="filled" fillcolor=gray];
}
93 [label="Exit function test_4" style="filled" fillcolor=red];
95 [label="Exit function test_4" style="filled" fillcolor=red];
}
78 -> {79};
79 -> {80};
80 -> {81 88 89};
80 -> {81} [style=dashed];
80 -> {81};
81 -> {82};
82 -> {83};
82 -> {83 90 91};
82 -> {83} [style=dashed];
83 -> {84};
84 -> {93};
84 -> {85} [style=dotted];
85 -> {86} [style=dotted];
84 -> {85};
85 -> {86};
86 -> {95};
86 -> {87} [style=dotted];
87 -> {88} [style=dotted];
88 -> {89};
88 -> {80} [color=green style=dashed];
89 -> {90};
90 -> {93};
90 -> {91} [style=dotted];
91 -> {92} [style=dotted];
88 -> {89} [style=dotted];
89 -> {90} [style=dotted];
90 -> {91};
90 -> {82} [color=green style=dashed];
91 -> {92};
92 -> {95};
92 -> {93} [style=dotted];
93 -> {94} [style=dotted];
94 -> {95} [style=dotted];
}
@@ -5,180 +5,187 @@ digraph localClassesWithImplicit_kt {
subgraph cluster_0 {
color=red
0 [label="Enter function myRun" style="filled" fillcolor=red];
subgraph cluster_1 {
color=blue
1 [label="Enter block"];
2 [label="Function call: R|<local>/block|.R|SubstitutionOverride<kotlin/Function0.invoke: R|T|>|()" style="filled" fillcolor=yellow];
3 [label="Jump: ^myRun R|<local>/block|.R|SubstitutionOverride<kotlin/Function0.invoke: R|T|>|()"];
4 [label="Stub" style="filled" fillcolor=gray];
5 [label="Exit block" style="filled" fillcolor=gray];
}
6 [label="Exit function myRun" style="filled" fillcolor=red];
0 [label="Enter file localClassesWithImplicit.kt" style="filled" fillcolor=red];
1 [label="Exit file localClassesWithImplicit.kt" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
2 -> {3};
3 -> {6};
3 -> {4} [style=dotted];
4 -> {5} [style=dotted];
5 -> {6} [style=dotted];
0 -> {1} [color=green];
subgraph cluster_2 {
subgraph cluster_1 {
color=red
7 [label="Enter function test" style="filled" fillcolor=red];
subgraph cluster_3 {
2 [label="Enter function myRun" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
8 [label="Enter block"];
subgraph cluster_4 {
3 [label="Enter block"];
4 [label="Function call: R|<local>/block|.R|SubstitutionOverride<kotlin/Function0.invoke: R|T|>|()" style="filled" fillcolor=yellow];
5 [label="Jump: ^myRun R|<local>/block|.R|SubstitutionOverride<kotlin/Function0.invoke: R|T|>|()"];
6 [label="Stub" style="filled" fillcolor=gray];
7 [label="Exit block" style="filled" fillcolor=gray];
}
8 [label="Exit function myRun" style="filled" fillcolor=red];
}
2 -> {3};
3 -> {4};
4 -> {5};
5 -> {8};
5 -> {6} [style=dotted];
6 -> {7} [style=dotted];
7 -> {8} [style=dotted];
subgraph cluster_3 {
color=red
9 [label="Enter function test" style="filled" fillcolor=red];
subgraph cluster_4 {
color=blue
10 [label="Enter block"];
subgraph cluster_5 {
color=blue
9 [label="Enter when"];
subgraph cluster_5 {
color=blue
10 [label="Enter when branch condition "];
11 [label="Access variable R|<local>/a|"];
12 [label="Type operator: (R|<local>/a| !is R|kotlin/String|)"];
13 [label="Exit when branch condition"];
}
14 [label="Synthetic else branch"];
15 [label="Enter when branch result"];
11 [label="Enter when"];
subgraph cluster_6 {
color=blue
16 [label="Enter block"];
17 [label="Jump: ^test Unit"];
18 [label="Stub" style="filled" fillcolor=gray];
19 [label="Exit block" style="filled" fillcolor=gray];
12 [label="Enter when branch condition "];
13 [label="Access variable R|<local>/a|"];
14 [label="Type operator: (R|<local>/a| !is R|kotlin/String|)"];
15 [label="Exit when branch condition"];
}
20 [label="Exit when branch result" style="filled" fillcolor=gray];
21 [label="Exit when"];
}
22 [label="Local class declaration"];
23 [label="Enter anonymous object"];
subgraph cluster_7 {
color=blue
24 [label="Enter class <anonymous object>" style="filled" fillcolor=red];
subgraph cluster_8 {
16 [label="Synthetic else branch"];
17 [label="Enter when branch result"];
subgraph cluster_7 {
color=blue
25 [label="Enter function <init>" style="filled" fillcolor=red];
26 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
27 [label="Exit function <init>" style="filled" fillcolor=red];
18 [label="Enter block"];
19 [label="Jump: ^test Unit"];
20 [label="Stub" style="filled" fillcolor=gray];
21 [label="Exit block" style="filled" fillcolor=gray];
}
28 [label="Exit class <anonymous object>" style="filled" fillcolor=red];
22 [label="Exit when branch result" style="filled" fillcolor=gray];
23 [label="Exit when"];
}
29 [label="Exit anonymous object expression"];
30 [label="Variable declaration: lval x: R|<anonymous>|"];
31 [label="Exit block"];
}
32 [label="Exit function test" style="filled" fillcolor=red];
}
subgraph cluster_9 {
color=blue
33 [label="Enter function baz" style="filled" fillcolor=red];
subgraph cluster_10 {
color=blue
34 [label="Enter block"];
35 [label="Const: Int(1)"];
36 [label="Jump: ^baz Int(1)"];
37 [label="Stub" style="filled" fillcolor=gray];
38 [label="Exit block" style="filled" fillcolor=gray];
}
39 [label="Exit function baz" style="filled" fillcolor=red];
}
subgraph cluster_11 {
color=blue
40 [label="Enter function bar" style="filled" fillcolor=red];
subgraph cluster_12 {
color=blue
41 [label="Enter block"];
42 [label="Postponed enter to lambda"];
subgraph cluster_13 {
24 [label="Local class declaration"];
25 [label="Enter anonymous object"];
subgraph cluster_8 {
color=blue
43 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_14 {
26 [label="Enter class <anonymous object>" style="filled" fillcolor=red];
subgraph cluster_9 {
color=blue
44 [label="Enter block"];
45 [label="Access variable R|<local>/a|"];
46 [label="Smart cast: R|<local>/a|"];
47 [label="Access variable R|kotlin/String.length|"];
48 [label="Access variable R|<local>/b|"];
49 [label="Access variable <Unresolved name: length>#"];
50 [label="Function call: this@R|/<anonymous>|.R|/<anonymous>.baz|()" style="filled" fillcolor=yellow];
51 [label="Exit block"];
27 [label="Enter function <init>" style="filled" fillcolor=red];
28 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
29 [label="Exit function <init>" style="filled" fillcolor=red];
}
52 [label="Exit function <anonymous>" style="filled" fillcolor=red];
30 [label="Exit class <anonymous object>" style="filled" fillcolor=red];
}
53 [label="Postponed exit from lambda"];
54 [label="Function call: R|/myRun|<R|kotlin/Int|>(...)" style="filled" fillcolor=yellow];
55 [label="Jump: ^bar R|/myRun|<R|kotlin/Int|>(<L> = myRun@fun <anonymous>(): R|kotlin/Int| <inline=Inline, kind=UNKNOWN> {
31 [label="Exit anonymous object expression"];
32 [label="Variable declaration: lval x: R|<anonymous>|"];
33 [label="Exit block"];
}
34 [label="Exit function test" style="filled" fillcolor=red];
}
subgraph cluster_10 {
color=blue
35 [label="Enter function baz" style="filled" fillcolor=red];
subgraph cluster_11 {
color=blue
36 [label="Enter block"];
37 [label="Const: Int(1)"];
38 [label="Jump: ^baz Int(1)"];
39 [label="Stub" style="filled" fillcolor=gray];
40 [label="Exit block" style="filled" fillcolor=gray];
}
41 [label="Exit function baz" style="filled" fillcolor=red];
}
subgraph cluster_12 {
color=blue
42 [label="Enter function bar" style="filled" fillcolor=red];
subgraph cluster_13 {
color=blue
43 [label="Enter block"];
44 [label="Postponed enter to lambda"];
subgraph cluster_14 {
color=blue
45 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_15 {
color=blue
46 [label="Enter block"];
47 [label="Access variable R|<local>/a|"];
48 [label="Smart cast: R|<local>/a|"];
49 [label="Access variable R|kotlin/String.length|"];
50 [label="Access variable R|<local>/b|"];
51 [label="Access variable <Unresolved name: length>#"];
52 [label="Function call: this@R|/<anonymous>|.R|/<anonymous>.baz|()" style="filled" fillcolor=yellow];
53 [label="Exit block"];
}
54 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
55 [label="Postponed exit from lambda"];
56 [label="Function call: R|/myRun|<R|kotlin/Int|>(...)" style="filled" fillcolor=yellow];
57 [label="Jump: ^bar R|/myRun|<R|kotlin/Int|>(<L> = myRun@fun <anonymous>(): R|kotlin/Int| <inline=Inline, kind=UNKNOWN> {
R|<local>/a|.R|kotlin/String.length|
R|<local>/b|.<Unresolved name: length>#
^ this@R|/<anonymous>|.R|/<anonymous>.baz|()
}
)"];
56 [label="Stub" style="filled" fillcolor=gray];
57 [label="Exit block" style="filled" fillcolor=gray];
58 [label="Stub" style="filled" fillcolor=gray];
59 [label="Exit block" style="filled" fillcolor=gray];
}
58 [label="Exit function bar" style="filled" fillcolor=red];
60 [label="Exit function bar" style="filled" fillcolor=red];
}
subgraph cluster_15 {
subgraph cluster_16 {
color=blue
59 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_16 {
61 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_17 {
color=blue
60 [label="Enter block"];
61 [label="Postponed enter to lambda"];
subgraph cluster_17 {
62 [label="Enter block"];
63 [label="Postponed enter to lambda"];
subgraph cluster_18 {
color=blue
62 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_18 {
64 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_19 {
color=blue
63 [label="Enter block"];
64 [label="Access variable R|<local>/a|"];
65 [label="Smart cast: R|<local>/a|"];
66 [label="Access variable R|kotlin/String.length|"];
subgraph cluster_19 {
65 [label="Enter block"];
66 [label="Access variable R|<local>/a|"];
67 [label="Smart cast: R|<local>/a|"];
68 [label="Access variable R|kotlin/String.length|"];
subgraph cluster_20 {
color=blue
67 [label="Enter when"];
subgraph cluster_20 {
color=blue
68 [label="Enter when branch condition "];
69 [label="Access variable R|<local>/b|"];
70 [label="Type operator: (R|<local>/b| is R|kotlin/String|)"];
71 [label="Exit when branch condition"];
}
69 [label="Enter when"];
subgraph cluster_21 {
color=blue
72 [label="Enter when branch condition else"];
70 [label="Enter when branch condition "];
71 [label="Access variable R|<local>/b|"];
72 [label="Type operator: (R|<local>/b| is R|kotlin/String|)"];
73 [label="Exit when branch condition"];
}
74 [label="Enter when branch result"];
subgraph cluster_22 {
color=blue
75 [label="Enter block"];
76 [label="Const: Int(1)"];
77 [label="Exit block"];
74 [label="Enter when branch condition else"];
75 [label="Exit when branch condition"];
}
78 [label="Exit when branch result"];
79 [label="Enter when branch result"];
76 [label="Enter when branch result"];
subgraph cluster_23 {
color=blue
80 [label="Enter block"];
81 [label="Access variable R|<local>/b|"];
82 [label="Smart cast: R|<local>/b|"];
83 [label="Access variable R|kotlin/String.length|"];
84 [label="Function call: this@R|/<anonymous>|.R|/<anonymous>.bar|()" style="filled" fillcolor=yellow];
85 [label="Exit block"];
77 [label="Enter block"];
78 [label="Const: Int(1)"];
79 [label="Exit block"];
}
86 [label="Exit when branch result"];
87 [label="Exit when"];
80 [label="Exit when branch result"];
81 [label="Enter when branch result"];
subgraph cluster_24 {
color=blue
82 [label="Enter block"];
83 [label="Access variable R|<local>/b|"];
84 [label="Smart cast: R|<local>/b|"];
85 [label="Access variable R|kotlin/String.length|"];
86 [label="Function call: this@R|/<anonymous>|.R|/<anonymous>.bar|()" style="filled" fillcolor=yellow];
87 [label="Exit block"];
}
88 [label="Exit when branch result"];
89 [label="Exit when"];
}
88 [label="Exit block"];
90 [label="Exit block"];
}
89 [label="Exit function <anonymous>" style="filled" fillcolor=red];
91 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
90 [label="Postponed exit from lambda"];
91 [label="Function call: R|/myRun|<R|kotlin/Int|>(...)" style="filled" fillcolor=yellow];
92 [label="Jump: ^foo R|/myRun|<R|kotlin/Int|>(<L> = myRun@fun <anonymous>(): R|kotlin/Int| <inline=Inline, kind=UNKNOWN> {
92 [label="Postponed exit from lambda"];
93 [label="Function call: R|/myRun|<R|kotlin/Int|>(...)" style="filled" fillcolor=yellow];
94 [label="Jump: ^foo R|/myRun|<R|kotlin/Int|>(<L> = myRun@fun <anonymous>(): R|kotlin/Int| <inline=Inline, kind=UNKNOWN> {
R|<local>/a|.R|kotlin/String.length|
^ when () {
(R|<local>/b| is R|kotlin/String|) -> {
@@ -192,130 +199,130 @@ digraph localClassesWithImplicit_kt {
}
)"];
93 [label="Stub" style="filled" fillcolor=gray];
94 [label="Exit block" style="filled" fillcolor=gray];
95 [label="Stub" style="filled" fillcolor=gray];
96 [label="Exit block" style="filled" fillcolor=gray];
}
95 [label="Exit function foo" style="filled" fillcolor=red];
97 [label="Exit function foo" style="filled" fillcolor=red];
}
subgraph cluster_24 {
subgraph cluster_25 {
color=blue
96 [label="Enter class A" style="filled" fillcolor=red];
subgraph cluster_25 {
98 [label="Enter class A" style="filled" fillcolor=red];
subgraph cluster_26 {
color=blue
97 [label="Enter function <init>" style="filled" fillcolor=red];
98 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
99 [label="Exit function <init>" style="filled" fillcolor=red];
99 [label="Enter function <init>" style="filled" fillcolor=red];
100 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
101 [label="Exit function <init>" style="filled" fillcolor=red];
}
100 [label="Exit class A" style="filled" fillcolor=red];
102 [label="Exit class A" style="filled" fillcolor=red];
}
subgraph cluster_26 {
subgraph cluster_27 {
color=blue
101 [label="Enter function baz" style="filled" fillcolor=red];
subgraph cluster_27 {
103 [label="Enter function baz" style="filled" fillcolor=red];
subgraph cluster_28 {
color=blue
102 [label="Enter block"];
103 [label="Const: Int(1)"];
104 [label="Jump: ^baz Int(1)"];
105 [label="Stub" style="filled" fillcolor=gray];
106 [label="Exit block" style="filled" fillcolor=gray];
104 [label="Enter block"];
105 [label="Const: Int(1)"];
106 [label="Jump: ^baz Int(1)"];
107 [label="Stub" style="filled" fillcolor=gray];
108 [label="Exit block" style="filled" fillcolor=gray];
}
107 [label="Exit function baz" style="filled" fillcolor=red];
109 [label="Exit function baz" style="filled" fillcolor=red];
}
subgraph cluster_28 {
subgraph cluster_29 {
color=blue
108 [label="Enter function bar" style="filled" fillcolor=red];
subgraph cluster_29 {
110 [label="Enter function bar" style="filled" fillcolor=red];
subgraph cluster_30 {
color=blue
109 [label="Enter block"];
110 [label="Postponed enter to lambda"];
subgraph cluster_30 {
111 [label="Enter block"];
112 [label="Postponed enter to lambda"];
subgraph cluster_31 {
color=blue
111 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_31 {
113 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_32 {
color=blue
112 [label="Enter block"];
113 [label="Access variable R|<local>/b|"];
114 [label="Access variable <Unresolved name: length>#"];
115 [label="Access variable R|<local>/a|"];
116 [label="Smart cast: R|<local>/a|"];
117 [label="Access variable R|kotlin/String.length|"];
118 [label="Function call: this@R|<local>/A|.R|<local>/baz|()" style="filled" fillcolor=yellow];
119 [label="Exit block"];
114 [label="Enter block"];
115 [label="Access variable R|<local>/b|"];
116 [label="Access variable <Unresolved name: length>#"];
117 [label="Access variable R|<local>/a|"];
118 [label="Smart cast: R|<local>/a|"];
119 [label="Access variable R|kotlin/String.length|"];
120 [label="Function call: this@R|<local>/A|.R|<local>/baz|()" style="filled" fillcolor=yellow];
121 [label="Exit block"];
}
120 [label="Exit function <anonymous>" style="filled" fillcolor=red];
122 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
121 [label="Postponed exit from lambda"];
122 [label="Function call: R|/myRun|<R|kotlin/Int|>(...)" style="filled" fillcolor=yellow];
123 [label="Jump: ^bar R|/myRun|<R|kotlin/Int|>(<L> = myRun@fun <anonymous>(): R|kotlin/Int| <inline=Inline, kind=UNKNOWN> {
123 [label="Postponed exit from lambda"];
124 [label="Function call: R|/myRun|<R|kotlin/Int|>(...)" style="filled" fillcolor=yellow];
125 [label="Jump: ^bar R|/myRun|<R|kotlin/Int|>(<L> = myRun@fun <anonymous>(): R|kotlin/Int| <inline=Inline, kind=UNKNOWN> {
R|<local>/b|.<Unresolved name: length>#
R|<local>/a|.R|kotlin/String.length|
^ this@R|<local>/A|.R|<local>/baz|()
}
)"];
124 [label="Stub" style="filled" fillcolor=gray];
125 [label="Exit block" style="filled" fillcolor=gray];
126 [label="Stub" style="filled" fillcolor=gray];
127 [label="Exit block" style="filled" fillcolor=gray];
}
126 [label="Exit function bar" style="filled" fillcolor=red];
128 [label="Exit function bar" style="filled" fillcolor=red];
}
subgraph cluster_32 {
subgraph cluster_33 {
color=blue
127 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_33 {
129 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_34 {
color=blue
128 [label="Enter block"];
129 [label="Postponed enter to lambda"];
subgraph cluster_34 {
130 [label="Enter block"];
131 [label="Postponed enter to lambda"];
subgraph cluster_35 {
color=blue
130 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_35 {
132 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_36 {
color=blue
131 [label="Enter block"];
132 [label="Access variable R|<local>/a|"];
133 [label="Smart cast: R|<local>/a|"];
134 [label="Access variable R|kotlin/String.length|"];
subgraph cluster_36 {
133 [label="Enter block"];
134 [label="Access variable R|<local>/a|"];
135 [label="Smart cast: R|<local>/a|"];
136 [label="Access variable R|kotlin/String.length|"];
subgraph cluster_37 {
color=blue
135 [label="Enter when"];
subgraph cluster_37 {
color=blue
136 [label="Enter when branch condition "];
137 [label="Access variable R|<local>/b|"];
138 [label="Type operator: (R|<local>/b| is R|kotlin/String|)"];
139 [label="Exit when branch condition"];
}
137 [label="Enter when"];
subgraph cluster_38 {
color=blue
140 [label="Enter when branch condition else"];
138 [label="Enter when branch condition "];
139 [label="Access variable R|<local>/b|"];
140 [label="Type operator: (R|<local>/b| is R|kotlin/String|)"];
141 [label="Exit when branch condition"];
}
142 [label="Enter when branch result"];
subgraph cluster_39 {
color=blue
143 [label="Enter block"];
144 [label="Const: Int(1)"];
145 [label="Exit block"];
142 [label="Enter when branch condition else"];
143 [label="Exit when branch condition"];
}
146 [label="Exit when branch result"];
147 [label="Enter when branch result"];
144 [label="Enter when branch result"];
subgraph cluster_40 {
color=blue
148 [label="Enter block"];
149 [label="Access variable R|<local>/b|"];
150 [label="Smart cast: R|<local>/b|"];
151 [label="Access variable R|kotlin/String.length|"];
152 [label="Function call: this@R|<local>/A|.R|<local>/bar|()" style="filled" fillcolor=yellow];
153 [label="Exit block"];
145 [label="Enter block"];
146 [label="Const: Int(1)"];
147 [label="Exit block"];
}
154 [label="Exit when branch result"];
155 [label="Exit when"];
148 [label="Exit when branch result"];
149 [label="Enter when branch result"];
subgraph cluster_41 {
color=blue
150 [label="Enter block"];
151 [label="Access variable R|<local>/b|"];
152 [label="Smart cast: R|<local>/b|"];
153 [label="Access variable R|kotlin/String.length|"];
154 [label="Function call: this@R|<local>/A|.R|<local>/bar|()" style="filled" fillcolor=yellow];
155 [label="Exit block"];
}
156 [label="Exit when branch result"];
157 [label="Exit when"];
}
156 [label="Exit block"];
158 [label="Exit block"];
}
157 [label="Exit function <anonymous>" style="filled" fillcolor=red];
159 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
158 [label="Postponed exit from lambda"];
159 [label="Function call: R|/myRun|<R|kotlin/Int|>(...)" style="filled" fillcolor=yellow];
160 [label="Jump: ^foo R|/myRun|<R|kotlin/Int|>(<L> = myRun@fun <anonymous>(): R|kotlin/Int| <inline=Inline, kind=UNKNOWN> {
160 [label="Postponed exit from lambda"];
161 [label="Function call: R|/myRun|<R|kotlin/Int|>(...)" style="filled" fillcolor=yellow];
162 [label="Jump: ^foo R|/myRun|<R|kotlin/Int|>(<L> = myRun@fun <anonymous>(): R|kotlin/Int| <inline=Inline, kind=UNKNOWN> {
R|<local>/a|.R|kotlin/String.length|
^ when () {
(R|<local>/b| is R|kotlin/String|) -> {
@@ -329,58 +336,56 @@ digraph localClassesWithImplicit_kt {
}
)"];
161 [label="Stub" style="filled" fillcolor=gray];
162 [label="Exit block" style="filled" fillcolor=gray];
163 [label="Stub" style="filled" fillcolor=gray];
164 [label="Exit block" style="filled" fillcolor=gray];
}
163 [label="Exit function foo" style="filled" fillcolor=red];
165 [label="Exit function foo" style="filled" fillcolor=red];
}
7 -> {8};
8 -> {9};
9 -> {10};
10 -> {11};
11 -> {12};
12 -> {13};
13 -> {14 15};
14 -> {21};
15 -> {16};
16 -> {17};
17 -> {32};
17 -> {18} [style=dotted];
18 -> {19} [style=dotted];
13 -> {14};
14 -> {15};
15 -> {16 17};
16 -> {23};
17 -> {18};
18 -> {19};
19 -> {34};
19 -> {20} [style=dotted];
20 -> {21} [style=dotted];
21 -> {22};
22 -> {23 96};
22 -> {96} [style=dashed];
21 -> {22} [style=dotted];
22 -> {23} [style=dotted];
23 -> {24};
23 -> {29} [style=dotted];
23 -> {24} [style=dashed];
24 -> {25};
24 -> {33 40 59} [color=red];
24 -> {28} [style=dotted];
24 -> {25} [style=dashed];
24 -> {25 98};
24 -> {98} [style=dashed];
25 -> {26};
25 -> {31} [style=dotted];
25 -> {26} [style=dashed];
26 -> {27};
26 -> {35 42 61} [color=red];
26 -> {30} [style=dotted];
26 -> {27} [style=dashed];
27 -> {28};
28 -> {29};
28 -> {33 40 59} [color=green];
28 -> {33 40 59} [style=dashed];
29 -> {30};
30 -> {31};
30 -> {35 42 61} [color=green];
30 -> {35 42 61} [style=dashed];
31 -> {32};
32 -> {33};
33 -> {34};
34 -> {35};
35 -> {36};
36 -> {39};
36 -> {37} [style=dotted];
37 -> {38} [style=dotted];
36 -> {37};
37 -> {38};
38 -> {41};
38 -> {39} [style=dotted];
40 -> {41};
41 -> {42};
42 -> {43 53 54};
42 -> {43} [style=dashed];
39 -> {40} [style=dotted];
40 -> {41} [style=dotted];
42 -> {43};
43 -> {44};
44 -> {45};
44 -> {45 55 56};
44 -> {45} [style=dashed];
45 -> {46};
46 -> {47};
47 -> {48};
@@ -390,18 +395,18 @@ digraph localClassesWithImplicit_kt {
51 -> {52};
52 -> {53};
53 -> {54};
53 -> {42} [color=green style=dashed];
54 -> {55};
55 -> {58};
55 -> {56} [style=dotted];
56 -> {57} [style=dotted];
55 -> {56};
55 -> {44} [color=green style=dashed];
56 -> {57};
57 -> {60};
57 -> {58} [style=dotted];
59 -> {60};
60 -> {61};
61 -> {62 90 91};
61 -> {62} [style=dashed];
58 -> {59} [style=dotted];
59 -> {60} [style=dotted];
61 -> {62};
62 -> {63};
63 -> {64};
63 -> {64 92 93};
63 -> {64} [style=dashed];
64 -> {65};
65 -> {66};
66 -> {67};
@@ -409,16 +414,16 @@ digraph localClassesWithImplicit_kt {
68 -> {69};
69 -> {70};
70 -> {71};
71 -> {72 79};
71 -> {72};
72 -> {73};
73 -> {74};
73 -> {74 81};
74 -> {75};
75 -> {76};
76 -> {77};
77 -> {78};
78 -> {87};
78 -> {79};
79 -> {80};
80 -> {81};
80 -> {89};
81 -> {82};
82 -> {83};
83 -> {84};
@@ -429,34 +434,34 @@ digraph localClassesWithImplicit_kt {
88 -> {89};
89 -> {90};
90 -> {91};
90 -> {61} [color=green style=dashed];
91 -> {92};
92 -> {95};
92 -> {93} [style=dotted];
93 -> {94} [style=dotted];
92 -> {93};
92 -> {63} [color=green style=dashed];
93 -> {94};
94 -> {97};
94 -> {95} [style=dotted];
96 -> {97};
96 -> {101 108 127} [color=red];
96 -> {100} [style=dotted];
96 -> {97} [style=dashed];
97 -> {98};
95 -> {96} [style=dotted];
96 -> {97} [style=dotted];
98 -> {99};
99 -> {100} [color=green];
100 -> {101 108 127} [color=green];
100 -> {101 108 127} [style=dashed];
101 -> {102};
102 -> {103};
98 -> {103 110 129} [color=red];
98 -> {102} [style=dotted];
98 -> {99} [style=dashed];
99 -> {100};
100 -> {101};
101 -> {102} [color=green];
102 -> {103 110 129} [color=green];
102 -> {103 110 129} [style=dashed];
103 -> {104};
104 -> {107};
104 -> {105} [style=dotted];
105 -> {106} [style=dotted];
104 -> {105};
105 -> {106};
106 -> {109};
106 -> {107} [style=dotted];
108 -> {109};
109 -> {110};
110 -> {111 121 122};
110 -> {111} [style=dashed];
107 -> {108} [style=dotted];
108 -> {109} [style=dotted];
110 -> {111};
111 -> {112};
112 -> {113};
112 -> {113 123 124};
112 -> {113} [style=dashed];
113 -> {114};
114 -> {115};
115 -> {116};
@@ -466,18 +471,18 @@ digraph localClassesWithImplicit_kt {
119 -> {120};
120 -> {121};
121 -> {122};
121 -> {110} [color=green style=dashed];
122 -> {123};
123 -> {126};
123 -> {124} [style=dotted];
124 -> {125} [style=dotted];
123 -> {124};
123 -> {112} [color=green style=dashed];
124 -> {125};
125 -> {128};
125 -> {126} [style=dotted];
127 -> {128};
128 -> {129};
129 -> {130 158 159};
129 -> {130} [style=dashed];
126 -> {127} [style=dotted];
127 -> {128} [style=dotted];
129 -> {130};
130 -> {131};
131 -> {132};
131 -> {132 160 161};
131 -> {132} [style=dashed];
132 -> {133};
133 -> {134};
134 -> {135};
@@ -485,16 +490,16 @@ digraph localClassesWithImplicit_kt {
136 -> {137};
137 -> {138};
138 -> {139};
139 -> {140 147};
139 -> {140};
140 -> {141};
141 -> {142};
141 -> {142 149};
142 -> {143};
143 -> {144};
144 -> {145};
145 -> {146};
146 -> {155};
146 -> {147};
147 -> {148};
148 -> {149};
148 -> {157};
149 -> {150};
150 -> {151};
151 -> {152};
@@ -505,11 +510,13 @@ digraph localClassesWithImplicit_kt {
156 -> {157};
157 -> {158};
158 -> {159};
158 -> {129} [color=green style=dashed];
159 -> {160};
160 -> {163};
160 -> {161} [style=dotted];
161 -> {162} [style=dotted];
160 -> {161};
160 -> {131} [color=green style=dashed];
161 -> {162};
162 -> {165};
162 -> {163} [style=dotted];
163 -> {164} [style=dotted];
164 -> {165} [style=dotted];
}
+365 -358
View File
@@ -5,96 +5,101 @@ digraph loops_kt {
subgraph cluster_0 {
color=red
0 [label="Enter function testWhile" style="filled" fillcolor=red];
subgraph cluster_1 {
0 [label="Enter file loops.kt" style="filled" fillcolor=red];
1 [label="Exit file loops.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter function testWhile" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
1 [label="Enter block"];
subgraph cluster_2 {
3 [label="Enter block"];
subgraph cluster_3 {
color=blue
2 [label="Enter while loop"];
subgraph cluster_3 {
color=blue
3 [label="Enter loop condition"];
4 [label="Access variable R|<local>/b|"];
5 [label="Exit loop condition"];
}
4 [label="Enter while loop"];
subgraph cluster_4 {
color=blue
6 [label="Enter loop block"];
subgraph cluster_5 {
color=blue
7 [label="Enter block"];
8 [label="Access variable R|<local>/x|"];
9 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
10 [label="Variable declaration: lval y: R|kotlin/Boolean|"];
11 [label="Exit block"];
}
12 [label="Exit loop block"];
5 [label="Enter loop condition"];
6 [label="Access variable R|<local>/b|"];
7 [label="Exit loop condition"];
}
13 [label="Exit while loop"];
subgraph cluster_5 {
color=blue
8 [label="Enter loop block"];
subgraph cluster_6 {
color=blue
9 [label="Enter block"];
10 [label="Access variable R|<local>/x|"];
11 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
12 [label="Variable declaration: lval y: R|kotlin/Boolean|"];
13 [label="Exit block"];
}
14 [label="Exit loop block"];
}
15 [label="Exit while loop"];
}
14 [label="Access variable R|<local>/x|"];
15 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
16 [label="Exit block"];
16 [label="Access variable R|<local>/x|"];
17 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
18 [label="Exit block"];
}
17 [label="Exit function testWhile" style="filled" fillcolor=red];
19 [label="Exit function testWhile" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
2 -> {3};
3 -> {4};
4 -> {5};
5 -> {6 13};
5 -> {6};
6 -> {7};
7 -> {8};
7 -> {8 15};
8 -> {9};
9 -> {10};
10 -> {11};
11 -> {12};
12 -> {3} [color=green style=dashed];
12 -> {13};
13 -> {14};
14 -> {15};
14 -> {5} [color=green style=dashed];
15 -> {16};
16 -> {17};
subgraph cluster_6 {
color=red
18 [label="Enter function testDoWhile" style="filled" fillcolor=red];
subgraph cluster_7 {
color=blue
19 [label="Enter block"];
subgraph cluster_8 {
color=blue
20 [label="Enter do-while loop"];
subgraph cluster_9 {
color=blue
21 [label="Enter loop block"];
subgraph cluster_10 {
color=blue
22 [label="Enter block"];
23 [label="Access variable R|<local>/x|"];
24 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
25 [label="Variable declaration: lval y: R|kotlin/Boolean|"];
26 [label="Exit block"];
}
27 [label="Exit loop block"];
}
subgraph cluster_11 {
color=blue
28 [label="Enter loop condition"];
29 [label="Access variable R|<local>/b|"];
30 [label="Exit loop condition"];
}
31 [label="Exit do-while loop"];
}
32 [label="Access variable R|<local>/x|"];
33 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
34 [label="Exit block"];
}
35 [label="Exit function testDoWhile" style="filled" fillcolor=red];
}
17 -> {18};
18 -> {19};
19 -> {20};
subgraph cluster_7 {
color=red
20 [label="Enter function testDoWhile" style="filled" fillcolor=red];
subgraph cluster_8 {
color=blue
21 [label="Enter block"];
subgraph cluster_9 {
color=blue
22 [label="Enter do-while loop"];
subgraph cluster_10 {
color=blue
23 [label="Enter loop block"];
subgraph cluster_11 {
color=blue
24 [label="Enter block"];
25 [label="Access variable R|<local>/x|"];
26 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
27 [label="Variable declaration: lval y: R|kotlin/Boolean|"];
28 [label="Exit block"];
}
29 [label="Exit loop block"];
}
subgraph cluster_12 {
color=blue
30 [label="Enter loop condition"];
31 [label="Access variable R|<local>/b|"];
32 [label="Exit loop condition"];
}
33 [label="Exit do-while loop"];
}
34 [label="Access variable R|<local>/x|"];
35 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
36 [label="Exit block"];
}
37 [label="Exit function testDoWhile" style="filled" fillcolor=red];
}
20 -> {21};
21 -> {22};
22 -> {23};
@@ -106,69 +111,69 @@ digraph loops_kt {
28 -> {29};
29 -> {30};
30 -> {31};
30 -> {21} [color=green style=dashed];
31 -> {32};
32 -> {33};
32 -> {23} [color=green style=dashed];
33 -> {34};
34 -> {35};
35 -> {36};
36 -> {37};
subgraph cluster_12 {
subgraph cluster_13 {
color=red
36 [label="Enter function testFor" style="filled" fillcolor=red];
subgraph cluster_13 {
38 [label="Enter function testFor" style="filled" fillcolor=red];
subgraph cluster_14 {
color=blue
37 [label="Enter block"];
subgraph cluster_14 {
39 [label="Enter block"];
subgraph cluster_15 {
color=blue
38 [label="Enter block"];
39 [label="Const: Int(0)"];
40 [label="Const: Int(5)"];
41 [label="Function call: Int(0).R|kotlin/Int.rangeTo|(...)" style="filled" fillcolor=yellow];
42 [label="Function call: Int(0).R|kotlin/Int.rangeTo|(...).R|kotlin/ranges/IntProgression.iterator|()" style="filled" fillcolor=yellow];
43 [label="Variable declaration: lval <iterator>: R|kotlin/collections/IntIterator|"];
subgraph cluster_15 {
40 [label="Enter block"];
41 [label="Const: Int(0)"];
42 [label="Const: Int(5)"];
43 [label="Function call: Int(0).R|kotlin/Int.rangeTo|(...)" style="filled" fillcolor=yellow];
44 [label="Function call: Int(0).R|kotlin/Int.rangeTo|(...).R|kotlin/ranges/IntProgression.iterator|()" style="filled" fillcolor=yellow];
45 [label="Variable declaration: lval <iterator>: R|kotlin/collections/IntIterator|"];
subgraph cluster_16 {
color=blue
44 [label="Enter while loop"];
subgraph cluster_16 {
color=blue
45 [label="Enter loop condition"];
46 [label="Access variable R|<local>/<iterator>|"];
47 [label="Function call: R|<local>/<iterator>|.R|SubstitutionOverride<kotlin/collections/IntIterator.hasNext: R|kotlin/Boolean|>|()" style="filled" fillcolor=yellow];
48 [label="Exit loop condition"];
}
46 [label="Enter while loop"];
subgraph cluster_17 {
color=blue
49 [label="Enter loop block"];
subgraph cluster_18 {
color=blue
50 [label="Enter block"];
51 [label="Access variable R|<local>/<iterator>|"];
52 [label="Function call: R|<local>/<iterator>|.R|kotlin/collections/IntIterator.next|()" style="filled" fillcolor=yellow];
53 [label="Variable declaration: lval i: R|kotlin/Int|"];
subgraph cluster_19 {
color=blue
54 [label="Enter block"];
55 [label="Access variable R|<local>/x|"];
56 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
57 [label="Variable declaration: lval y: R|kotlin/Boolean|"];
58 [label="Exit block"];
}
59 [label="Exit block"];
}
60 [label="Exit loop block"];
47 [label="Enter loop condition"];
48 [label="Access variable R|<local>/<iterator>|"];
49 [label="Function call: R|<local>/<iterator>|.R|SubstitutionOverride<kotlin/collections/IntIterator.hasNext: R|kotlin/Boolean|>|()" style="filled" fillcolor=yellow];
50 [label="Exit loop condition"];
}
61 [label="Exit while loop"];
subgraph cluster_18 {
color=blue
51 [label="Enter loop block"];
subgraph cluster_19 {
color=blue
52 [label="Enter block"];
53 [label="Access variable R|<local>/<iterator>|"];
54 [label="Function call: R|<local>/<iterator>|.R|kotlin/collections/IntIterator.next|()" style="filled" fillcolor=yellow];
55 [label="Variable declaration: lval i: R|kotlin/Int|"];
subgraph cluster_20 {
color=blue
56 [label="Enter block"];
57 [label="Access variable R|<local>/x|"];
58 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
59 [label="Variable declaration: lval y: R|kotlin/Boolean|"];
60 [label="Exit block"];
}
61 [label="Exit block"];
}
62 [label="Exit loop block"];
}
63 [label="Exit while loop"];
}
62 [label="Exit block"];
64 [label="Exit block"];
}
63 [label="Access variable R|<local>/x|"];
64 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
65 [label="Exit block"];
65 [label="Access variable R|<local>/x|"];
66 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
67 [label="Exit block"];
}
66 [label="Exit function testFor" style="filled" fillcolor=red];
68 [label="Exit function testFor" style="filled" fillcolor=red];
}
36 -> {37};
37 -> {38};
38 -> {39};
39 -> {40};
40 -> {41};
@@ -179,9 +184,9 @@ digraph loops_kt {
45 -> {46};
46 -> {47};
47 -> {48};
48 -> {49 61};
48 -> {49};
49 -> {50};
50 -> {51};
50 -> {51 63};
51 -> {52};
52 -> {53};
53 -> {54};
@@ -191,227 +196,227 @@ digraph loops_kt {
57 -> {58};
58 -> {59};
59 -> {60};
60 -> {45} [color=green style=dashed];
60 -> {61};
61 -> {62};
62 -> {63};
62 -> {47} [color=green style=dashed];
63 -> {64};
64 -> {65};
65 -> {66};
66 -> {67};
67 -> {68};
subgraph cluster_20 {
subgraph cluster_21 {
color=red
67 [label="Enter function testWhileTrue" style="filled" fillcolor=red];
subgraph cluster_21 {
69 [label="Enter function testWhileTrue" style="filled" fillcolor=red];
subgraph cluster_22 {
color=blue
68 [label="Enter block"];
subgraph cluster_22 {
70 [label="Enter block"];
subgraph cluster_23 {
color=blue
69 [label="Enter while loop"];
subgraph cluster_23 {
color=blue
70 [label="Enter loop condition"];
71 [label="Const: Boolean(true)"];
72 [label="Exit loop condition"];
}
71 [label="Enter while loop"];
subgraph cluster_24 {
color=blue
73 [label="Enter loop block"];
subgraph cluster_25 {
color=blue
74 [label="Enter block"];
75 [label="Const: Int(1)"];
76 [label="Exit block"];
}
77 [label="Exit loop block"];
72 [label="Enter loop condition"];
73 [label="Const: Boolean(true)"];
74 [label="Exit loop condition"];
}
78 [label="Exit while loop" style="filled" fillcolor=gray];
subgraph cluster_25 {
color=blue
75 [label="Enter loop block"];
subgraph cluster_26 {
color=blue
76 [label="Enter block"];
77 [label="Const: Int(1)"];
78 [label="Exit block"];
}
79 [label="Exit loop block"];
}
80 [label="Exit while loop" style="filled" fillcolor=gray];
}
79 [label="Const: Int(1)" style="filled" fillcolor=gray];
80 [label="Exit block" style="filled" fillcolor=gray];
81 [label="Const: Int(1)" style="filled" fillcolor=gray];
82 [label="Exit block" style="filled" fillcolor=gray];
}
81 [label="Exit function testWhileTrue" style="filled" fillcolor=gray];
83 [label="Exit function testWhileTrue" style="filled" fillcolor=gray];
}
67 -> {68};
68 -> {69};
69 -> {70};
70 -> {71};
71 -> {72};
72 -> {73};
72 -> {78} [style=dotted];
73 -> {74};
74 -> {75};
74 -> {80} [style=dotted];
75 -> {76};
76 -> {77};
77 -> {70} [color=green style=dashed];
78 -> {79} [style=dotted];
79 -> {80} [style=dotted];
77 -> {78};
78 -> {79};
79 -> {72} [color=green style=dashed];
80 -> {81} [style=dotted];
81 -> {82} [style=dotted];
82 -> {83} [style=dotted];
subgraph cluster_26 {
subgraph cluster_27 {
color=red
82 [label="Enter function testWhileTrueWithBreak" style="filled" fillcolor=red];
subgraph cluster_27 {
84 [label="Enter function testWhileTrueWithBreak" style="filled" fillcolor=red];
subgraph cluster_28 {
color=blue
83 [label="Enter block"];
subgraph cluster_28 {
85 [label="Enter block"];
subgraph cluster_29 {
color=blue
84 [label="Enter while loop"];
subgraph cluster_29 {
color=blue
85 [label="Enter loop condition"];
86 [label="Const: Boolean(true)"];
87 [label="Exit loop condition"];
}
86 [label="Enter while loop"];
subgraph cluster_30 {
color=blue
88 [label="Enter loop block"];
subgraph cluster_31 {
87 [label="Enter loop condition"];
88 [label="Const: Boolean(true)"];
89 [label="Exit loop condition"];
}
subgraph cluster_31 {
color=blue
90 [label="Enter loop block"];
subgraph cluster_32 {
color=blue
89 [label="Enter block"];
subgraph cluster_32 {
91 [label="Enter block"];
subgraph cluster_33 {
color=blue
90 [label="Enter when"];
subgraph cluster_33 {
color=blue
91 [label="Enter when branch condition "];
92 [label="Access variable R|<local>/b|"];
93 [label="Exit when branch condition"];
}
94 [label="Synthetic else branch"];
95 [label="Enter when branch result"];
92 [label="Enter when"];
subgraph cluster_34 {
color=blue
96 [label="Enter block"];
97 [label="Jump: break@@@[Boolean(true)] "];
98 [label="Stub" style="filled" fillcolor=gray];
99 [label="Exit block" style="filled" fillcolor=gray];
93 [label="Enter when branch condition "];
94 [label="Access variable R|<local>/b|"];
95 [label="Exit when branch condition"];
}
100 [label="Exit when branch result" style="filled" fillcolor=gray];
101 [label="Exit when"];
96 [label="Synthetic else branch"];
97 [label="Enter when branch result"];
subgraph cluster_35 {
color=blue
98 [label="Enter block"];
99 [label="Jump: break@@@[Boolean(true)] "];
100 [label="Stub" style="filled" fillcolor=gray];
101 [label="Exit block" style="filled" fillcolor=gray];
}
102 [label="Exit when branch result" style="filled" fillcolor=gray];
103 [label="Exit when"];
}
102 [label="Exit block"];
104 [label="Exit block"];
}
103 [label="Exit loop block"];
105 [label="Exit loop block"];
}
104 [label="Exit while loop"];
106 [label="Exit while loop"];
}
105 [label="Const: Int(1)"];
106 [label="Exit block"];
107 [label="Const: Int(1)"];
108 [label="Exit block"];
}
107 [label="Exit function testWhileTrueWithBreak" style="filled" fillcolor=red];
109 [label="Exit function testWhileTrueWithBreak" style="filled" fillcolor=red];
}
82 -> {83};
83 -> {84};
84 -> {85};
85 -> {86};
86 -> {87};
87 -> {88};
87 -> {104} [style=dotted];
88 -> {89};
89 -> {90};
89 -> {106} [style=dotted];
90 -> {91};
91 -> {92};
92 -> {93};
93 -> {94 95};
94 -> {101};
95 -> {96};
96 -> {97};
97 -> {104};
97 -> {98} [style=dotted];
98 -> {99} [style=dotted];
93 -> {94};
94 -> {95};
95 -> {96 97};
96 -> {103};
97 -> {98};
98 -> {99};
99 -> {106};
99 -> {100} [style=dotted];
100 -> {101} [style=dotted];
101 -> {102};
102 -> {103};
103 -> {85} [color=green style=dashed];
101 -> {102} [style=dotted];
102 -> {103} [style=dotted];
103 -> {104};
104 -> {105};
105 -> {106};
105 -> {87} [color=green style=dashed];
106 -> {107};
107 -> {108};
108 -> {109};
subgraph cluster_35 {
subgraph cluster_36 {
color=red
108 [label="Enter function testWhileFalse" style="filled" fillcolor=red];
subgraph cluster_36 {
110 [label="Enter function testWhileFalse" style="filled" fillcolor=red];
subgraph cluster_37 {
color=blue
109 [label="Enter block"];
subgraph cluster_37 {
111 [label="Enter block"];
subgraph cluster_38 {
color=blue
110 [label="Enter while loop"];
subgraph cluster_38 {
color=blue
111 [label="Enter loop condition"];
112 [label="Const: Boolean(false)"];
113 [label="Exit loop condition"];
}
112 [label="Enter while loop"];
subgraph cluster_39 {
color=blue
114 [label="Enter loop block" style="filled" fillcolor=gray];
subgraph cluster_40 {
color=blue
115 [label="Enter block" style="filled" fillcolor=gray];
116 [label="Const: Int(1)" style="filled" fillcolor=gray];
117 [label="Exit block" style="filled" fillcolor=gray];
}
118 [label="Exit loop block" style="filled" fillcolor=gray];
113 [label="Enter loop condition"];
114 [label="Const: Boolean(false)"];
115 [label="Exit loop condition"];
}
119 [label="Exit while loop"];
subgraph cluster_40 {
color=blue
116 [label="Enter loop block" style="filled" fillcolor=gray];
subgraph cluster_41 {
color=blue
117 [label="Enter block" style="filled" fillcolor=gray];
118 [label="Const: Int(1)" style="filled" fillcolor=gray];
119 [label="Exit block" style="filled" fillcolor=gray];
}
120 [label="Exit loop block" style="filled" fillcolor=gray];
}
121 [label="Exit while loop"];
}
120 [label="Const: Int(1)"];
121 [label="Exit block"];
122 [label="Const: Int(1)"];
123 [label="Exit block"];
}
122 [label="Exit function testWhileFalse" style="filled" fillcolor=red];
124 [label="Exit function testWhileFalse" style="filled" fillcolor=red];
}
108 -> {109};
109 -> {110};
110 -> {111};
111 -> {112};
112 -> {113};
113 -> {119};
113 -> {114} [style=dotted];
114 -> {115} [style=dotted];
113 -> {114};
114 -> {115};
115 -> {121};
115 -> {116} [style=dotted];
116 -> {117} [style=dotted];
117 -> {118} [style=dotted];
118 -> {111} [color=green style=dotted];
119 -> {120};
120 -> {121};
118 -> {119} [style=dotted];
119 -> {120} [style=dotted];
120 -> {113} [color=green style=dotted];
121 -> {122};
subgraph cluster_41 {
color=red
123 [label="Enter function testDoWhileTrue" style="filled" fillcolor=red];
subgraph cluster_42 {
color=blue
124 [label="Enter block"];
subgraph cluster_43 {
color=blue
125 [label="Enter do-while loop"];
subgraph cluster_44 {
color=blue
126 [label="Enter loop block"];
subgraph cluster_45 {
color=blue
127 [label="Enter block"];
128 [label="Const: Int(1)"];
129 [label="Exit block"];
}
130 [label="Exit loop block"];
}
subgraph cluster_46 {
color=blue
131 [label="Enter loop condition"];
132 [label="Const: Boolean(true)"];
133 [label="Exit loop condition"];
}
134 [label="Exit do-while loop" style="filled" fillcolor=gray];
}
135 [label="Const: Int(1)" style="filled" fillcolor=gray];
136 [label="Exit block" style="filled" fillcolor=gray];
}
137 [label="Exit function testDoWhileTrue" style="filled" fillcolor=gray];
}
122 -> {123};
123 -> {124};
124 -> {125};
subgraph cluster_42 {
color=red
125 [label="Enter function testDoWhileTrue" style="filled" fillcolor=red];
subgraph cluster_43 {
color=blue
126 [label="Enter block"];
subgraph cluster_44 {
color=blue
127 [label="Enter do-while loop"];
subgraph cluster_45 {
color=blue
128 [label="Enter loop block"];
subgraph cluster_46 {
color=blue
129 [label="Enter block"];
130 [label="Const: Int(1)"];
131 [label="Exit block"];
}
132 [label="Exit loop block"];
}
subgraph cluster_47 {
color=blue
133 [label="Enter loop condition"];
134 [label="Const: Boolean(true)"];
135 [label="Exit loop condition"];
}
136 [label="Exit do-while loop" style="filled" fillcolor=gray];
}
137 [label="Const: Int(1)" style="filled" fillcolor=gray];
138 [label="Exit block" style="filled" fillcolor=gray];
}
139 [label="Exit function testDoWhileTrue" style="filled" fillcolor=gray];
}
125 -> {126};
126 -> {127};
127 -> {128};
@@ -420,128 +425,128 @@ digraph loops_kt {
130 -> {131};
131 -> {132};
132 -> {133};
133 -> {126} [color=green style=dashed];
133 -> {134} [style=dotted];
134 -> {135} [style=dotted];
133 -> {134};
134 -> {135};
135 -> {128} [color=green style=dashed];
135 -> {136} [style=dotted];
136 -> {137} [style=dotted];
137 -> {138} [style=dotted];
138 -> {139} [style=dotted];
subgraph cluster_47 {
subgraph cluster_48 {
color=red
138 [label="Enter function testDoWhileTrueWithBreak" style="filled" fillcolor=red];
subgraph cluster_48 {
140 [label="Enter function testDoWhileTrueWithBreak" style="filled" fillcolor=red];
subgraph cluster_49 {
color=blue
139 [label="Enter block"];
subgraph cluster_49 {
141 [label="Enter block"];
subgraph cluster_50 {
color=blue
140 [label="Enter do-while loop"];
subgraph cluster_50 {
142 [label="Enter do-while loop"];
subgraph cluster_51 {
color=blue
141 [label="Enter loop block"];
subgraph cluster_51 {
143 [label="Enter loop block"];
subgraph cluster_52 {
color=blue
142 [label="Enter block"];
subgraph cluster_52 {
144 [label="Enter block"];
subgraph cluster_53 {
color=blue
143 [label="Enter when"];
subgraph cluster_53 {
color=blue
144 [label="Enter when branch condition "];
145 [label="Access variable R|<local>/b|"];
146 [label="Exit when branch condition"];
}
147 [label="Synthetic else branch"];
148 [label="Enter when branch result"];
145 [label="Enter when"];
subgraph cluster_54 {
color=blue
149 [label="Enter block"];
150 [label="Jump: break@@@[Boolean(true)] "];
151 [label="Stub" style="filled" fillcolor=gray];
152 [label="Exit block" style="filled" fillcolor=gray];
146 [label="Enter when branch condition "];
147 [label="Access variable R|<local>/b|"];
148 [label="Exit when branch condition"];
}
153 [label="Exit when branch result" style="filled" fillcolor=gray];
154 [label="Exit when"];
149 [label="Synthetic else branch"];
150 [label="Enter when branch result"];
subgraph cluster_55 {
color=blue
151 [label="Enter block"];
152 [label="Jump: break@@@[Boolean(true)] "];
153 [label="Stub" style="filled" fillcolor=gray];
154 [label="Exit block" style="filled" fillcolor=gray];
}
155 [label="Exit when branch result" style="filled" fillcolor=gray];
156 [label="Exit when"];
}
155 [label="Exit block"];
157 [label="Exit block"];
}
156 [label="Exit loop block"];
158 [label="Exit loop block"];
}
subgraph cluster_55 {
subgraph cluster_56 {
color=blue
157 [label="Enter loop condition"];
158 [label="Const: Boolean(true)"];
159 [label="Exit loop condition"];
159 [label="Enter loop condition"];
160 [label="Const: Boolean(true)"];
161 [label="Exit loop condition"];
}
160 [label="Exit do-while loop"];
162 [label="Exit do-while loop"];
}
161 [label="Const: Int(1)"];
162 [label="Exit block"];
163 [label="Const: Int(1)"];
164 [label="Exit block"];
}
163 [label="Exit function testDoWhileTrueWithBreak" style="filled" fillcolor=red];
165 [label="Exit function testDoWhileTrueWithBreak" style="filled" fillcolor=red];
}
138 -> {139};
139 -> {140};
140 -> {141};
141 -> {142};
142 -> {143};
143 -> {144};
144 -> {145};
145 -> {146};
146 -> {147 148};
147 -> {154};
148 -> {149};
149 -> {150};
150 -> {160};
150 -> {151} [style=dotted];
151 -> {152} [style=dotted];
146 -> {147};
147 -> {148};
148 -> {149 150};
149 -> {156};
150 -> {151};
151 -> {152};
152 -> {162};
152 -> {153} [style=dotted];
153 -> {154} [style=dotted];
154 -> {155};
155 -> {156};
154 -> {155} [style=dotted];
155 -> {156} [style=dotted];
156 -> {157};
157 -> {158};
158 -> {159};
159 -> {141} [color=green style=dashed];
159 -> {160} [style=dotted];
159 -> {160};
160 -> {161};
161 -> {162};
161 -> {143} [color=green style=dashed];
161 -> {162} [style=dotted];
162 -> {163};
subgraph cluster_56 {
color=red
164 [label="Enter function testDoWhileFalse" style="filled" fillcolor=red];
subgraph cluster_57 {
color=blue
165 [label="Enter block"];
subgraph cluster_58 {
color=blue
166 [label="Enter do-while loop"];
subgraph cluster_59 {
color=blue
167 [label="Enter loop block"];
subgraph cluster_60 {
color=blue
168 [label="Enter block"];
169 [label="Const: Int(1)"];
170 [label="Exit block"];
}
171 [label="Exit loop block"];
}
subgraph cluster_61 {
color=blue
172 [label="Enter loop condition"];
173 [label="Const: Boolean(false)"];
174 [label="Exit loop condition"];
}
175 [label="Exit do-while loop"];
}
176 [label="Const: Int(1)"];
177 [label="Exit block"];
}
178 [label="Exit function testDoWhileFalse" style="filled" fillcolor=red];
}
163 -> {164};
164 -> {165};
165 -> {166};
subgraph cluster_57 {
color=red
166 [label="Enter function testDoWhileFalse" style="filled" fillcolor=red];
subgraph cluster_58 {
color=blue
167 [label="Enter block"];
subgraph cluster_59 {
color=blue
168 [label="Enter do-while loop"];
subgraph cluster_60 {
color=blue
169 [label="Enter loop block"];
subgraph cluster_61 {
color=blue
170 [label="Enter block"];
171 [label="Const: Int(1)"];
172 [label="Exit block"];
}
173 [label="Exit loop block"];
}
subgraph cluster_62 {
color=blue
174 [label="Enter loop condition"];
175 [label="Const: Boolean(false)"];
176 [label="Exit loop condition"];
}
177 [label="Exit do-while loop"];
}
178 [label="Const: Int(1)"];
179 [label="Exit block"];
}
180 [label="Exit function testDoWhileFalse" style="filled" fillcolor=red];
}
166 -> {167};
167 -> {168};
168 -> {169};
@@ -551,9 +556,11 @@ digraph loops_kt {
172 -> {173};
173 -> {174};
174 -> {175};
174 -> {167} [color=green style=dotted];
175 -> {176};
176 -> {177};
176 -> {169} [color=green style=dotted];
177 -> {178};
178 -> {179};
179 -> {180};
}
@@ -5,102 +5,109 @@ digraph nestedClass_kt {
subgraph cluster_0 {
color=red
0 [label="Enter class OuterClass" style="filled" fillcolor=red];
subgraph cluster_1 {
color=blue
1 [label="Enter property" style="filled" fillcolor=red];
2 [label="Const: Int(1)"];
3 [label="Exit property" style="filled" fillcolor=red];
}
0 [label="Enter file nestedClass.kt" style="filled" fillcolor=red];
1 [label="Exit file nestedClass.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter class OuterClass" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
4 [label="Enter property" style="filled" fillcolor=red];
5 [label="Access variable R|/OuterClass.outerProperty|"];
6 [label="Exit property" style="filled" fillcolor=red];
3 [label="Enter property" style="filled" fillcolor=red];
4 [label="Const: Int(1)"];
5 [label="Exit property" style="filled" fillcolor=red];
}
subgraph cluster_3 {
color=blue
7 [label="Enter function <init>" style="filled" fillcolor=red];
8 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
9 [label="Exit function <init>" style="filled" fillcolor=red];
6 [label="Enter property" style="filled" fillcolor=red];
7 [label="Access variable R|/OuterClass.outerProperty|"];
8 [label="Exit property" style="filled" fillcolor=red];
}
10 [label="Exit class OuterClass" style="filled" fillcolor=red];
subgraph cluster_4 {
color=blue
9 [label="Enter function <init>" style="filled" fillcolor=red];
10 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
11 [label="Exit function <init>" style="filled" fillcolor=red];
}
12 [label="Exit class OuterClass" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
0 -> {10} [style=dotted];
0 -> {1 4 7} [style=dashed];
1 -> {2};
2 -> {3};
3 -> {4} [color=green];
2 -> {3} [color=green];
2 -> {12} [style=dotted];
2 -> {3 6 9} [style=dashed];
3 -> {4};
4 -> {5};
5 -> {6};
6 -> {7} [color=green];
5 -> {6} [color=green];
6 -> {7};
7 -> {8};
8 -> {9};
9 -> {10} [color=green];
8 -> {9} [color=green];
9 -> {10};
10 -> {11};
11 -> {12} [color=green];
subgraph cluster_4 {
subgraph cluster_5 {
color=red
11 [label="Enter function outerFunction" style="filled" fillcolor=red];
subgraph cluster_5 {
13 [label="Enter function outerFunction" style="filled" fillcolor=red];
subgraph cluster_6 {
color=blue
12 [label="Enter block"];
13 [label="Exit block"];
14 [label="Enter block"];
15 [label="Exit block"];
}
14 [label="Exit function outerFunction" style="filled" fillcolor=red];
16 [label="Exit function outerFunction" style="filled" fillcolor=red];
}
11 -> {12};
12 -> {13};
13 -> {14};
14 -> {15};
15 -> {16};
subgraph cluster_6 {
subgraph cluster_7 {
color=red
15 [label="Enter class NestedClass" style="filled" fillcolor=red];
subgraph cluster_7 {
color=blue
16 [label="Enter property" style="filled" fillcolor=red];
17 [label="Const: Int(1)"];
18 [label="Exit property" style="filled" fillcolor=red];
}
17 [label="Enter class NestedClass" style="filled" fillcolor=red];
subgraph cluster_8 {
color=blue
19 [label="Enter property" style="filled" fillcolor=red];
20 [label="Access variable R|/OuterClass.NestedClass.nestedProperty|"];
21 [label="Exit property" style="filled" fillcolor=red];
18 [label="Enter property" style="filled" fillcolor=red];
19 [label="Const: Int(1)"];
20 [label="Exit property" style="filled" fillcolor=red];
}
subgraph cluster_9 {
color=blue
22 [label="Enter function <init>" style="filled" fillcolor=red];
23 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
24 [label="Exit function <init>" style="filled" fillcolor=red];
21 [label="Enter property" style="filled" fillcolor=red];
22 [label="Access variable R|/OuterClass.NestedClass.nestedProperty|"];
23 [label="Exit property" style="filled" fillcolor=red];
}
25 [label="Exit class NestedClass" style="filled" fillcolor=red];
}
15 -> {16} [color=green];
15 -> {25} [style=dotted];
15 -> {16 19 22} [style=dashed];
16 -> {17};
17 -> {18};
18 -> {19} [color=green];
19 -> {20};
20 -> {21};
21 -> {22} [color=green];
22 -> {23};
23 -> {24};
24 -> {25} [color=green];
subgraph cluster_10 {
color=red
26 [label="Enter function nestedFUnction" style="filled" fillcolor=red];
subgraph cluster_11 {
subgraph cluster_10 {
color=blue
27 [label="Enter block"];
28 [label="Exit block"];
24 [label="Enter function <init>" style="filled" fillcolor=red];
25 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
26 [label="Exit function <init>" style="filled" fillcolor=red];
}
29 [label="Exit function nestedFUnction" style="filled" fillcolor=red];
27 [label="Exit class NestedClass" style="filled" fillcolor=red];
}
17 -> {18} [color=green];
17 -> {27} [style=dotted];
17 -> {18 21 24} [style=dashed];
18 -> {19};
19 -> {20};
20 -> {21} [color=green];
21 -> {22};
22 -> {23};
23 -> {24} [color=green];
24 -> {25};
25 -> {26};
26 -> {27} [color=green];
subgraph cluster_11 {
color=red
28 [label="Enter function nestedFUnction" style="filled" fillcolor=red];
subgraph cluster_12 {
color=blue
29 [label="Enter block"];
30 [label="Exit block"];
}
31 [label="Exit function nestedFUnction" style="filled" fillcolor=red];
}
26 -> {27};
27 -> {28};
28 -> {29};
29 -> {30};
30 -> {31};
}
@@ -5,106 +5,113 @@ digraph postponedLambdaInConstructor_kt {
subgraph cluster_0 {
color=red
0 [label="Enter class A" style="filled" fillcolor=red];
subgraph cluster_1 {
color=blue
1 [label="Enter function <init>" style="filled" fillcolor=red];
2 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
3 [label="Exit function <init>" style="filled" fillcolor=red];
}
4 [label="Exit class A" style="filled" fillcolor=red];
0 [label="Enter file postponedLambdaInConstructor.kt" style="filled" fillcolor=red];
1 [label="Exit file postponedLambdaInConstructor.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
0 -> {4} [style=dotted];
0 -> {1} [style=dashed];
1 -> {2};
2 -> {3};
3 -> {4} [color=green];
subgraph cluster_2 {
subgraph cluster_1 {
color=red
5 [label="Enter class B" style="filled" fillcolor=red];
subgraph cluster_3 {
2 [label="Enter class A" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
6 [label="Enter property" style="filled" fillcolor=red];
7 [label="Access variable R|<local>/s|"];
8 [label="Exit property" style="filled" fillcolor=red];
3 [label="Enter function <init>" style="filled" fillcolor=red];
4 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
5 [label="Exit function <init>" style="filled" fillcolor=red];
}
6 [label="Exit class A" style="filled" fillcolor=red];
}
2 -> {3} [color=green];
2 -> {6} [style=dotted];
2 -> {3} [style=dashed];
3 -> {4};
4 -> {5};
5 -> {6} [color=green];
subgraph cluster_3 {
color=red
7 [label="Enter class B" style="filled" fillcolor=red];
subgraph cluster_4 {
color=blue
9 [label="Enter function <init>" style="filled" fillcolor=red];
10 [label="Access variable R|<local>/s|"];
11 [label="Postponed enter to lambda"];
subgraph cluster_5 {
color=blue
12 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_6 {
color=blue
13 [label="Enter block"];
14 [label="Exit anonymous function expression"];
subgraph cluster_7 {
color=blue
15 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_8 {
color=blue
16 [label="Enter block"];
17 [label="Access variable R|<local>/it|"];
18 [label="Exit block"];
}
19 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
20 [label="Exit block"];
}
21 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
22 [label="Postponed exit from lambda"];
23 [label="Function call: R|<local>/s|.R|kotlin/let|<R|kotlin/String|, R|() -> kotlin/String|>(...)" style="filled" fillcolor=yellow];
24 [label="Delegated constructor call: super<R|A|>(...)" style="filled" fillcolor=yellow];
25 [label="Exit function <init>" style="filled" fillcolor=red];
8 [label="Enter property" style="filled" fillcolor=red];
9 [label="Access variable R|<local>/s|"];
10 [label="Exit property" style="filled" fillcolor=red];
}
26 [label="Exit class B" style="filled" fillcolor=red];
subgraph cluster_5 {
color=blue
11 [label="Enter function <init>" style="filled" fillcolor=red];
12 [label="Access variable R|<local>/s|"];
13 [label="Postponed enter to lambda"];
subgraph cluster_6 {
color=blue
14 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_7 {
color=blue
15 [label="Enter block"];
16 [label="Exit anonymous function expression"];
subgraph cluster_8 {
color=blue
17 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_9 {
color=blue
18 [label="Enter block"];
19 [label="Access variable R|<local>/it|"];
20 [label="Exit block"];
}
21 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
22 [label="Exit block"];
}
23 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
24 [label="Postponed exit from lambda"];
25 [label="Function call: R|<local>/s|.R|kotlin/let|<R|kotlin/String|, R|() -> kotlin/String|>(...)" style="filled" fillcolor=yellow];
26 [label="Delegated constructor call: super<R|A|>(...)" style="filled" fillcolor=yellow];
27 [label="Exit function <init>" style="filled" fillcolor=red];
}
28 [label="Exit class B" style="filled" fillcolor=red];
}
5 -> {6} [color=green];
5 -> {26} [style=dotted];
5 -> {6 9} [style=dashed];
6 -> {7};
7 -> {8};
8 -> {9} [color=green];
7 -> {8} [color=green];
7 -> {28} [style=dotted];
7 -> {8 11} [style=dashed];
8 -> {9};
9 -> {10};
10 -> {11};
11 -> {12 23};
11 -> {22} [style=dotted];
11 -> {12} [style=dashed];
10 -> {11} [color=green];
11 -> {12};
12 -> {13};
13 -> {14};
14 -> {15 20};
14 -> {15} [style=dashed];
13 -> {14 25};
13 -> {24} [style=dotted];
13 -> {14} [style=dashed];
14 -> {15};
15 -> {16};
16 -> {17};
16 -> {17 22};
16 -> {17} [style=dashed];
17 -> {18};
18 -> {19};
19 -> {20};
20 -> {21};
21 -> {22};
22 -> {23} [color=green];
22 -> {24} [color=red];
22 -> {23};
23 -> {24};
24 -> {25};
25 -> {26} [color=green];
24 -> {25} [color=green];
24 -> {26} [color=red];
25 -> {26};
26 -> {27};
27 -> {28} [color=green];
subgraph cluster_9 {
subgraph cluster_10 {
color=red
27 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_10 {
29 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_11 {
color=blue
28 [label="Enter block"];
29 [label="Function call: this@R|/B|.R|/B.foo|()" style="filled" fillcolor=yellow];
30 [label="Exit block"];
30 [label="Enter block"];
31 [label="Function call: this@R|/B|.R|/B.foo|()" style="filled" fillcolor=yellow];
32 [label="Exit block"];
}
31 [label="Exit function foo" style="filled" fillcolor=red];
33 [label="Exit function foo" style="filled" fillcolor=red];
}
27 -> {28};
28 -> {29};
29 -> {30};
30 -> {31};
31 -> {32};
32 -> {33};
}
@@ -5,14 +5,14 @@ digraph postponedLambdaInReturn_kt {
subgraph cluster_0 {
color=red
0 [label="Enter class Lateinit" style="filled" fillcolor=red];
0 [label="Enter file postponedLambdaInReturn.kt" style="filled" fillcolor=red];
subgraph cluster_1 {
color=blue
1 [label="Enter function <init>" style="filled" fillcolor=red];
2 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
3 [label="Exit function <init>" style="filled" fillcolor=red];
1 [label="Enter property" style="filled" fillcolor=red];
2 [label="Const: Boolean(false)"];
3 [label="Exit property" style="filled" fillcolor=red];
}
4 [label="Exit class Lateinit" style="filled" fillcolor=red];
4 [label="Exit file postponedLambdaInReturn.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
0 -> {4} [style=dotted];
@@ -23,475 +23,484 @@ digraph postponedLambdaInReturn_kt {
subgraph cluster_2 {
color=red
5 [label="Enter function build" style="filled" fillcolor=red];
5 [label="Enter class Lateinit" style="filled" fillcolor=red];
subgraph cluster_3 {
color=blue
6 [label="Enter block"];
subgraph cluster_4 {
color=blue
7 [label="Enter block"];
8 [label="Exit block"];
}
9 [label="Function call: R|/Lateinit.Lateinit|<R|R|>()" style="filled" fillcolor=yellow];
10 [label="Access variable R|<local>/builder|"];
11 [label="Function call: R|/Lateinit.Lateinit|<R|R|>().R|kotlin/apply|<R|Lateinit<R>|>(...)" style="filled" fillcolor=yellow];
12 [label="Access variable R|SubstitutionOverride</Lateinit.value: R|R|>|"];
13 [label="Jump: ^build R|/Lateinit.Lateinit|<R|R|>().R|kotlin/apply|<R|Lateinit<R>|>(R|<local>/builder|).R|SubstitutionOverride</Lateinit.value: R|R|>|"];
14 [label="Stub" style="filled" fillcolor=gray];
15 [label="Exit block" style="filled" fillcolor=gray];
6 [label="Enter function <init>" style="filled" fillcolor=red];
7 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
8 [label="Exit function <init>" style="filled" fillcolor=red];
}
16 [label="Exit function build" style="filled" fillcolor=red];
9 [label="Exit class Lateinit" style="filled" fillcolor=red];
}
5 -> {6};
5 -> {6} [color=green];
5 -> {9} [style=dotted];
5 -> {6} [style=dashed];
6 -> {7};
7 -> {8};
8 -> {9};
9 -> {10};
8 -> {9} [color=green];
subgraph cluster_4 {
color=red
10 [label="Enter function build" style="filled" fillcolor=red];
subgraph cluster_5 {
color=blue
11 [label="Enter block"];
subgraph cluster_6 {
color=blue
12 [label="Enter block"];
13 [label="Exit block"];
}
14 [label="Function call: R|/Lateinit.Lateinit|<R|R|>()" style="filled" fillcolor=yellow];
15 [label="Access variable R|<local>/builder|"];
16 [label="Function call: R|/Lateinit.Lateinit|<R|R|>().R|kotlin/apply|<R|Lateinit<R>|>(...)" style="filled" fillcolor=yellow];
17 [label="Access variable R|SubstitutionOverride</Lateinit.value: R|R|>|"];
18 [label="Jump: ^build R|/Lateinit.Lateinit|<R|R|>().R|kotlin/apply|<R|Lateinit<R>|>(R|<local>/builder|).R|SubstitutionOverride</Lateinit.value: R|R|>|"];
19 [label="Stub" style="filled" fillcolor=gray];
20 [label="Exit block" style="filled" fillcolor=gray];
}
21 [label="Exit function build" style="filled" fillcolor=red];
}
10 -> {11};
11 -> {12};
12 -> {13};
13 -> {16};
13 -> {14} [style=dotted];
14 -> {15} [style=dotted];
15 -> {16} [style=dotted];
subgraph cluster_5 {
color=red
17 [label="Enter property" style="filled" fillcolor=red];
18 [label="Const: Boolean(false)"];
19 [label="Exit property" style="filled" fillcolor=red];
}
13 -> {14};
14 -> {15};
15 -> {16};
16 -> {17};
17 -> {18};
18 -> {19};
18 -> {21};
18 -> {19} [style=dotted];
19 -> {20} [style=dotted];
20 -> {21} [style=dotted];
subgraph cluster_6 {
subgraph cluster_7 {
color=red
20 [label="Enter function test1" style="filled" fillcolor=red];
subgraph cluster_7 {
22 [label="Enter function test1" style="filled" fillcolor=red];
subgraph cluster_8 {
color=blue
21 [label="Enter block"];
22 [label="Const: Null(null)"];
23 [label="Variable declaration: lvar y: R|kotlin/String?|"];
24 [label="Postponed enter to lambda"];
subgraph cluster_8 {
23 [label="Enter block"];
24 [label="Const: Null(null)"];
25 [label="Variable declaration: lvar y: R|kotlin/String?|"];
26 [label="Postponed enter to lambda"];
subgraph cluster_9 {
color=blue
25 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_9 {
27 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_10 {
color=blue
26 [label="Enter block"];
subgraph cluster_10 {
28 [label="Enter block"];
subgraph cluster_11 {
color=blue
27 [label="Enter when"];
subgraph cluster_11 {
color=blue
28 [label="Enter when branch condition "];
29 [label="Access variable R|/p|"];
30 [label="Exit when branch condition"];
}
29 [label="Enter when"];
subgraph cluster_12 {
color=blue
31 [label="Enter when branch condition else"];
30 [label="Enter when branch condition "];
31 [label="Access variable R|/p|"];
32 [label="Exit when branch condition"];
}
33 [label="Enter when branch result"];
subgraph cluster_13 {
color=blue
34 [label="Enter block"];
35 [label="Const: String()"];
36 [label="Jump: ^@run String()"];
37 [label="Stub" style="filled" fillcolor=gray];
38 [label="Exit block" style="filled" fillcolor=gray];
33 [label="Enter when branch condition else"];
34 [label="Exit when branch condition"];
}
39 [label="Exit when branch result" style="filled" fillcolor=gray];
40 [label="Enter when branch result"];
35 [label="Enter when branch result"];
subgraph cluster_14 {
color=blue
41 [label="Enter block"];
42 [label="Postponed enter to lambda"];
subgraph cluster_15 {
36 [label="Enter block"];
37 [label="Const: String()"];
38 [label="Jump: ^@run String()"];
39 [label="Stub" style="filled" fillcolor=gray];
40 [label="Exit block" style="filled" fillcolor=gray];
}
41 [label="Exit when branch result" style="filled" fillcolor=gray];
42 [label="Enter when branch result"];
subgraph cluster_15 {
color=blue
43 [label="Enter block"];
44 [label="Postponed enter to lambda"];
subgraph cluster_16 {
color=blue
43 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_16 {
45 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_17 {
color=blue
44 [label="Enter block"];
45 [label="Access variable R|<local>/y|"];
46 [label="Type operator: (R|<local>/y| as R|kotlin/String|)"];
47 [label="Const: String(...)"];
48 [label="Assignment: R|SubstitutionOverride</Lateinit.value: R|kotlin/String|>|"];
49 [label="Exit block"];
46 [label="Enter block"];
47 [label="Access variable R|<local>/y|"];
48 [label="Type operator: (R|<local>/y| as R|kotlin/String|)"];
49 [label="Const: String(...)"];
50 [label="Assignment: R|SubstitutionOverride</Lateinit.value: R|kotlin/String|>|"];
51 [label="Exit block"];
}
50 [label="Exit function <anonymous>" style="filled" fillcolor=red];
52 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
51 [label="Postponed exit from lambda"];
52 [label="Function call: R|/build|<R|kotlin/String|>(...)" style="filled" fillcolor=yellow];
53 [label="Jump: ^@run R|/build|<R|kotlin/String|>(<L> = build@fun R|Lateinit<kotlin/String>|.<anonymous>(): R|kotlin/Unit| <inline=CrossInline, kind=EXACTLY_ONCE> {
53 [label="Postponed exit from lambda"];
54 [label="Function call: R|/build|<R|kotlin/String|>(...)" style="filled" fillcolor=yellow];
55 [label="Jump: ^@run R|/build|<R|kotlin/String|>(<L> = build@fun R|Lateinit<kotlin/String>|.<anonymous>(): R|kotlin/Unit| <inline=CrossInline, kind=EXACTLY_ONCE> {
(R|<local>/y| as R|kotlin/String|)
this@R|special/anonymous|.R|SubstitutionOverride</Lateinit.value: R|kotlin/String|>| = String(...)
}
)"];
54 [label="Stub" style="filled" fillcolor=gray];
55 [label="Exit block" style="filled" fillcolor=gray];
56 [label="Stub" style="filled" fillcolor=gray];
57 [label="Exit block" style="filled" fillcolor=gray];
}
56 [label="Exit when branch result" style="filled" fillcolor=gray];
57 [label="Exit when" style="filled" fillcolor=gray];
58 [label="Exit when branch result" style="filled" fillcolor=gray];
59 [label="Exit when" style="filled" fillcolor=gray];
}
58 [label="Exit block" style="filled" fillcolor=gray];
60 [label="Exit block" style="filled" fillcolor=gray];
}
59 [label="Exit function <anonymous>" style="filled" fillcolor=red];
61 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
60 [label="Postponed exit from lambda"];
61 [label="Function call: R|kotlin/run|<R|kotlin/String|>(...)" style="filled" fillcolor=yellow];
62 [label="Variable declaration: lval x: R|kotlin/String|"];
63 [label="Access variable R|<local>/y|"];
64 [label="Access variable R|kotlin/String.length<Inapplicable(UNSAFE_CALL): kotlin/String.length>#|"];
65 [label="Exit block"];
62 [label="Postponed exit from lambda"];
63 [label="Function call: R|kotlin/run|<R|kotlin/String|>(...)" style="filled" fillcolor=yellow];
64 [label="Variable declaration: lval x: R|kotlin/String|"];
65 [label="Access variable R|<local>/y|"];
66 [label="Access variable R|kotlin/String.length<Inapplicable(UNSAFE_CALL): kotlin/String.length>#|"];
67 [label="Exit block"];
}
66 [label="Exit function test1" style="filled" fillcolor=red];
68 [label="Exit function test1" style="filled" fillcolor=red];
}
20 -> {21};
21 -> {22};
22 -> {23};
23 -> {24};
24 -> {25 61};
24 -> {60} [style=dotted];
24 -> {25} [style=dashed];
24 -> {25};
25 -> {26};
26 -> {27};
26 -> {27 63};
26 -> {62} [style=dotted];
26 -> {27} [style=dashed];
27 -> {28};
28 -> {29};
29 -> {30};
30 -> {31 40};
30 -> {31};
31 -> {32};
32 -> {33};
32 -> {33 42};
33 -> {34};
34 -> {35};
35 -> {36};
36 -> {59};
36 -> {37} [style=dotted];
37 -> {38} [style=dotted];
36 -> {37};
37 -> {38};
38 -> {61};
38 -> {39} [style=dotted];
39 -> {57} [style=dotted];
40 -> {41};
41 -> {42};
42 -> {43 52};
42 -> {51} [style=dotted];
42 -> {43} [style=dashed];
39 -> {40} [style=dotted];
40 -> {41} [style=dotted];
41 -> {59} [style=dotted];
42 -> {43};
43 -> {44};
44 -> {45};
44 -> {45 54};
44 -> {53} [style=dotted];
44 -> {45} [style=dashed];
45 -> {46};
46 -> {47};
47 -> {48};
48 -> {49};
49 -> {50};
50 -> {51};
51 -> {52} [color=green];
51 -> {52};
52 -> {53};
53 -> {59};
53 -> {54} [style=dotted];
54 -> {55} [style=dotted];
53 -> {54} [color=green];
54 -> {55};
55 -> {61};
55 -> {56} [style=dotted];
56 -> {57} [style=dotted];
57 -> {58} [style=dotted];
58 -> {59} [style=dotted];
59 -> {60};
60 -> {61};
59 -> {60} [style=dotted];
60 -> {61} [style=dotted];
61 -> {62};
62 -> {63};
63 -> {64};
64 -> {65};
65 -> {66};
66 -> {67};
67 -> {68};
subgraph cluster_17 {
subgraph cluster_18 {
color=red
67 [label="Enter function test2" style="filled" fillcolor=red];
subgraph cluster_18 {
69 [label="Enter function test2" style="filled" fillcolor=red];
subgraph cluster_19 {
color=blue
68 [label="Enter block"];
69 [label="Postponed enter to lambda"];
subgraph cluster_19 {
70 [label="Enter block"];
71 [label="Postponed enter to lambda"];
subgraph cluster_20 {
color=blue
70 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_20 {
72 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_21 {
color=blue
71 [label="Enter block"];
subgraph cluster_21 {
73 [label="Enter block"];
subgraph cluster_22 {
color=blue
72 [label="Enter while loop"];
subgraph cluster_22 {
color=blue
73 [label="Enter loop condition"];
74 [label="Const: Boolean(true)"];
75 [label="Exit loop condition"];
}
74 [label="Enter while loop"];
subgraph cluster_23 {
color=blue
76 [label="Enter loop block"];
subgraph cluster_24 {
75 [label="Enter loop condition"];
76 [label="Const: Boolean(true)"];
77 [label="Exit loop condition"];
}
subgraph cluster_24 {
color=blue
78 [label="Enter loop block"];
subgraph cluster_25 {
color=blue
77 [label="Enter block"];
subgraph cluster_25 {
79 [label="Enter block"];
subgraph cluster_26 {
color=blue
78 [label="Try expression enter"];
subgraph cluster_26 {
80 [label="Try expression enter"];
subgraph cluster_27 {
color=blue
79 [label="Try main block enter"];
subgraph cluster_27 {
81 [label="Try main block enter"];
subgraph cluster_28 {
color=blue
80 [label="Enter block"];
81 [label="Postponed enter to lambda"];
subgraph cluster_28 {
82 [label="Enter block"];
83 [label="Postponed enter to lambda"];
subgraph cluster_29 {
color=blue
82 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_29 {
84 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_30 {
color=blue
83 [label="Enter block"];
84 [label="Const: String(...)"];
85 [label="Assignment: R|SubstitutionOverride</Lateinit.value: R|kotlin/String|>|"];
86 [label="Exit block"];
85 [label="Enter block"];
86 [label="Const: String(...)"];
87 [label="Assignment: R|SubstitutionOverride</Lateinit.value: R|kotlin/String|>|"];
88 [label="Exit block"];
}
87 [label="Exit function <anonymous>" style="filled" fillcolor=red];
89 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
88 [label="Postponed exit from lambda"];
89 [label="Function call: R|/build|<R|kotlin/String|>(...)" style="filled" fillcolor=yellow];
90 [label="Jump: ^@run R|/build|<R|kotlin/String|>(<L> = build@fun R|Lateinit<kotlin/String>|.<anonymous>(): R|kotlin/Unit| <inline=CrossInline, kind=EXACTLY_ONCE> {
90 [label="Postponed exit from lambda"];
91 [label="Function call: R|/build|<R|kotlin/String|>(...)" style="filled" fillcolor=yellow];
92 [label="Jump: ^@run R|/build|<R|kotlin/String|>(<L> = build@fun R|Lateinit<kotlin/String>|.<anonymous>(): R|kotlin/Unit| <inline=CrossInline, kind=EXACTLY_ONCE> {
this@R|special/anonymous|.R|SubstitutionOverride</Lateinit.value: R|kotlin/String|>| = String(...)
}
)"];
91 [label="Stub" style="filled" fillcolor=gray];
92 [label="Exit block" style="filled" fillcolor=gray];
93 [label="Stub" style="filled" fillcolor=gray];
94 [label="Exit block" style="filled" fillcolor=gray];
}
93 [label="Try main block exit" style="filled" fillcolor=gray];
95 [label="Try main block exit" style="filled" fillcolor=gray];
}
subgraph cluster_30 {
subgraph cluster_31 {
color=blue
94 [label="Catch enter"];
95 [label="Variable declaration: e: R|kotlin/Throwable|"];
subgraph cluster_31 {
96 [label="Catch enter"];
97 [label="Variable declaration: e: R|kotlin/Throwable|"];
subgraph cluster_32 {
color=blue
96 [label="Enter block"];
97 [label="Exit block"];
98 [label="Enter block"];
99 [label="Exit block"];
}
98 [label="Catch exit"];
100 [label="Catch exit"];
}
99 [label="Try expression exit"];
101 [label="Try expression exit"];
}
100 [label="Exit block"];
102 [label="Exit block"];
}
101 [label="Exit loop block"];
103 [label="Exit loop block"];
}
102 [label="Exit while loop" style="filled" fillcolor=gray];
104 [label="Exit while loop" style="filled" fillcolor=gray];
}
103 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=gray];
104 [label="Throw: throw R|java/lang/Exception.Exception|()" style="filled" fillcolor=gray];
105 [label="Stub" style="filled" fillcolor=gray];
106 [label="Exit block" style="filled" fillcolor=gray];
105 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=gray];
106 [label="Throw: throw R|java/lang/Exception.Exception|()" style="filled" fillcolor=gray];
107 [label="Stub" style="filled" fillcolor=gray];
108 [label="Exit block" style="filled" fillcolor=gray];
}
107 [label="Exit function <anonymous>" style="filled" fillcolor=red];
109 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
108 [label="Postponed exit from lambda"];
109 [label="Function call: R|kotlin/run|<R|kotlin/String|>(...)" style="filled" fillcolor=yellow];
110 [label="Variable declaration: lval x: R|kotlin/String|"];
111 [label="Access variable R|<local>/x|"];
112 [label="Access variable R|kotlin/String.length|"];
113 [label="Exit block"];
110 [label="Postponed exit from lambda"];
111 [label="Function call: R|kotlin/run|<R|kotlin/String|>(...)" style="filled" fillcolor=yellow];
112 [label="Variable declaration: lval x: R|kotlin/String|"];
113 [label="Access variable R|<local>/x|"];
114 [label="Access variable R|kotlin/String.length|"];
115 [label="Exit block"];
}
114 [label="Exit function test2" style="filled" fillcolor=red];
116 [label="Exit function test2" style="filled" fillcolor=red];
}
67 -> {68};
68 -> {69};
69 -> {70 109};
69 -> {108} [style=dotted];
69 -> {70} [style=dashed];
69 -> {70};
70 -> {71};
71 -> {72};
71 -> {72 111};
71 -> {110} [style=dotted];
71 -> {72} [style=dashed];
72 -> {73};
73 -> {74};
74 -> {75};
75 -> {76};
75 -> {102} [style=dotted];
76 -> {77};
77 -> {78};
78 -> {79 94};
77 -> {104} [style=dotted];
78 -> {79};
79 -> {80};
80 -> {81};
81 -> {82 89};
81 -> {88} [style=dotted];
81 -> {82} [style=dashed];
80 -> {81 96};
81 -> {82};
82 -> {83};
83 -> {84};
83 -> {84 91};
83 -> {90} [style=dotted];
83 -> {84} [style=dashed];
84 -> {85};
85 -> {86};
86 -> {87};
87 -> {88};
88 -> {89} [color=green];
89 -> {90 94};
90 -> {107};
90 -> {91} [style=dotted];
91 -> {92} [style=dotted];
88 -> {89};
89 -> {90};
90 -> {91} [color=green];
91 -> {92 96};
92 -> {109};
92 -> {93} [style=dotted];
93 -> {94 99} [style=dotted];
94 -> {95};
95 -> {96};
93 -> {94} [style=dotted];
94 -> {95} [style=dotted];
95 -> {96 101} [style=dotted];
96 -> {97};
97 -> {98};
98 -> {99};
99 -> {100};
100 -> {101};
101 -> {73} [color=green style=dashed];
102 -> {103} [style=dotted];
103 -> {104} [style=dotted];
101 -> {102};
102 -> {103};
103 -> {75} [color=green style=dashed];
104 -> {105} [style=dotted];
105 -> {106} [style=dotted];
106 -> {107} [style=dotted];
107 -> {108};
108 -> {109};
107 -> {108} [style=dotted];
108 -> {109} [style=dotted];
109 -> {110};
110 -> {111};
111 -> {112};
112 -> {113};
113 -> {114};
114 -> {115};
115 -> {116};
subgraph cluster_32 {
subgraph cluster_33 {
color=red
115 [label="Enter function test3" style="filled" fillcolor=red];
subgraph cluster_33 {
117 [label="Enter function test3" style="filled" fillcolor=red];
subgraph cluster_34 {
color=blue
116 [label="Enter block"];
117 [label="Variable declaration: lvar y: R|kotlin/String?|"];
118 [label="Const: String()"];
119 [label="Assignment: R|<local>/y|"];
120 [label="Postponed enter to lambda"];
subgraph cluster_34 {
118 [label="Enter block"];
119 [label="Variable declaration: lvar y: R|kotlin/String?|"];
120 [label="Const: String()"];
121 [label="Assignment: R|<local>/y|"];
122 [label="Postponed enter to lambda"];
subgraph cluster_35 {
color=blue
121 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_35 {
123 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_36 {
color=blue
122 [label="Enter block"];
subgraph cluster_36 {
124 [label="Enter block"];
subgraph cluster_37 {
color=blue
123 [label="Enter when"];
subgraph cluster_37 {
color=blue
124 [label="Enter when branch condition "];
125 [label="Access variable R|/p|"];
126 [label="Function call: R|/p|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
127 [label="Exit when branch condition"];
}
125 [label="Enter when"];
subgraph cluster_38 {
color=blue
128 [label="Enter when branch condition else"];
126 [label="Enter when branch condition "];
127 [label="Access variable R|/p|"];
128 [label="Function call: R|/p|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
129 [label="Exit when branch condition"];
}
130 [label="Enter when branch result"];
subgraph cluster_39 {
color=blue
131 [label="Enter block"];
132 [label="Const: String()"];
133 [label="Jump: ^@run String()"];
134 [label="Stub" style="filled" fillcolor=gray];
135 [label="Exit block" style="filled" fillcolor=gray];
130 [label="Enter when branch condition else"];
131 [label="Exit when branch condition"];
}
136 [label="Exit when branch result" style="filled" fillcolor=gray];
137 [label="Enter when branch result"];
132 [label="Enter when branch result"];
subgraph cluster_40 {
color=blue
138 [label="Enter block"];
139 [label="Postponed enter to lambda"];
subgraph cluster_41 {
133 [label="Enter block"];
134 [label="Const: String()"];
135 [label="Jump: ^@run String()"];
136 [label="Stub" style="filled" fillcolor=gray];
137 [label="Exit block" style="filled" fillcolor=gray];
}
138 [label="Exit when branch result" style="filled" fillcolor=gray];
139 [label="Enter when branch result"];
subgraph cluster_41 {
color=blue
140 [label="Enter block"];
141 [label="Postponed enter to lambda"];
subgraph cluster_42 {
color=blue
140 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_42 {
142 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_43 {
color=blue
141 [label="Enter block"];
142 [label="Const: Null(null)"];
143 [label="Assignment: R|<local>/y|"];
144 [label="Const: String(...)"];
145 [label="Assignment: R|SubstitutionOverride</Lateinit.value: R|kotlin/String|>|"];
146 [label="Exit block"];
143 [label="Enter block"];
144 [label="Const: Null(null)"];
145 [label="Assignment: R|<local>/y|"];
146 [label="Const: String(...)"];
147 [label="Assignment: R|SubstitutionOverride</Lateinit.value: R|kotlin/String|>|"];
148 [label="Exit block"];
}
147 [label="Exit function <anonymous>" style="filled" fillcolor=red];
149 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
148 [label="Postponed exit from lambda"];
149 [label="Function call: R|/build|<R|kotlin/String|>(...)" style="filled" fillcolor=yellow];
150 [label="Jump: ^@run R|/build|<R|kotlin/String|>(<L> = build@fun R|Lateinit<kotlin/String>|.<anonymous>(): R|kotlin/Unit| <inline=CrossInline, kind=EXACTLY_ONCE> {
150 [label="Postponed exit from lambda"];
151 [label="Function call: R|/build|<R|kotlin/String|>(...)" style="filled" fillcolor=yellow];
152 [label="Jump: ^@run R|/build|<R|kotlin/String|>(<L> = build@fun R|Lateinit<kotlin/String>|.<anonymous>(): R|kotlin/Unit| <inline=CrossInline, kind=EXACTLY_ONCE> {
R|<local>/y| = Null(null)
this@R|special/anonymous|.R|SubstitutionOverride</Lateinit.value: R|kotlin/String|>| = String(...)
}
)"];
151 [label="Stub" style="filled" fillcolor=gray];
152 [label="Exit block" style="filled" fillcolor=gray];
153 [label="Stub" style="filled" fillcolor=gray];
154 [label="Exit block" style="filled" fillcolor=gray];
}
153 [label="Exit when branch result" style="filled" fillcolor=gray];
154 [label="Exit when" style="filled" fillcolor=gray];
155 [label="Exit when branch result" style="filled" fillcolor=gray];
156 [label="Exit when" style="filled" fillcolor=gray];
}
155 [label="Exit block" style="filled" fillcolor=gray];
157 [label="Exit block" style="filled" fillcolor=gray];
}
156 [label="Exit function <anonymous>" style="filled" fillcolor=red];
158 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
157 [label="Postponed exit from lambda"];
158 [label="Function call: R|kotlin/run|<R|kotlin/String|>(...)" style="filled" fillcolor=yellow];
159 [label="Variable declaration: lval x: R|kotlin/String|"];
160 [label="Access variable R|<local>/y|"];
161 [label="Smart cast: R|<local>/y|"];
162 [label="Access variable R|kotlin/String.length|"];
163 [label="Exit block"];
159 [label="Postponed exit from lambda"];
160 [label="Function call: R|kotlin/run|<R|kotlin/String|>(...)" style="filled" fillcolor=yellow];
161 [label="Variable declaration: lval x: R|kotlin/String|"];
162 [label="Access variable R|<local>/y|"];
163 [label="Smart cast: R|<local>/y|"];
164 [label="Access variable R|kotlin/String.length|"];
165 [label="Exit block"];
}
164 [label="Exit function test3" style="filled" fillcolor=red];
166 [label="Exit function test3" style="filled" fillcolor=red];
}
115 -> {116};
116 -> {117};
117 -> {118};
118 -> {119};
119 -> {120};
120 -> {121 158};
120 -> {157} [style=dotted];
120 -> {121} [style=dashed];
120 -> {121};
121 -> {122};
122 -> {123};
122 -> {123 160};
122 -> {159} [style=dotted];
122 -> {123} [style=dashed];
123 -> {124};
124 -> {125};
125 -> {126};
126 -> {127};
127 -> {128 137};
127 -> {128};
128 -> {129};
129 -> {130};
129 -> {130 139};
130 -> {131};
131 -> {132};
132 -> {133};
133 -> {156};
133 -> {134} [style=dotted];
134 -> {135} [style=dotted];
133 -> {134};
134 -> {135};
135 -> {158};
135 -> {136} [style=dotted];
136 -> {154} [style=dotted];
137 -> {138};
138 -> {139};
139 -> {140 149};
139 -> {148} [style=dotted];
139 -> {140} [style=dashed];
136 -> {137} [style=dotted];
137 -> {138} [style=dotted];
138 -> {156} [style=dotted];
139 -> {140};
140 -> {141};
141 -> {142};
141 -> {142 151};
141 -> {150} [style=dotted];
141 -> {142} [style=dashed];
142 -> {143};
143 -> {144};
144 -> {145};
145 -> {146};
146 -> {147};
147 -> {148};
148 -> {149} [color=green];
148 -> {149};
149 -> {150};
150 -> {156};
150 -> {151} [style=dotted];
151 -> {152} [style=dotted];
150 -> {151} [color=green];
151 -> {152};
152 -> {158};
152 -> {153} [style=dotted];
153 -> {154} [style=dotted];
154 -> {155} [style=dotted];
155 -> {156} [style=dotted];
156 -> {157};
157 -> {158};
156 -> {157} [style=dotted];
157 -> {158} [style=dotted];
158 -> {159};
159 -> {160};
160 -> {161};
161 -> {162};
162 -> {163};
163 -> {164};
164 -> {165};
165 -> {166};
}
@@ -5,56 +5,63 @@ digraph postponedLambdas_kt {
subgraph cluster_0 {
color=red
0 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_1 {
color=blue
1 [label="Enter block"];
2 [label="Exit block"];
}
3 [label="Exit function foo" style="filled" fillcolor=red];
0 [label="Enter file postponedLambdas.kt" style="filled" fillcolor=red];
1 [label="Exit file postponedLambdas.kt" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
2 -> {3};
0 -> {1} [color=green];
subgraph cluster_2 {
subgraph cluster_1 {
color=red
4 [label="Enter function test" style="filled" fillcolor=red];
subgraph cluster_3 {
2 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
5 [label="Enter block"];
6 [label="Access variable R|<local>/a|"];
7 [label="Access variable R|<local>/b|"];
8 [label="Postponed enter to lambda"];
subgraph cluster_4 {
color=blue
9 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_5 {
color=blue
10 [label="Enter block"];
11 [label="Const: String()"];
12 [label="Exit block"];
}
13 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
14 [label="Postponed exit from lambda"];
15 [label="Function call: R|/foo|(...)" style="filled" fillcolor=yellow];
16 [label="Exit block"];
3 [label="Enter block"];
4 [label="Exit block"];
}
17 [label="Exit function test" style="filled" fillcolor=red];
5 [label="Exit function foo" style="filled" fillcolor=red];
}
2 -> {3};
3 -> {4};
4 -> {5};
5 -> {6};
subgraph cluster_3 {
color=red
6 [label="Enter function test" style="filled" fillcolor=red];
subgraph cluster_4 {
color=blue
7 [label="Enter block"];
8 [label="Access variable R|<local>/a|"];
9 [label="Access variable R|<local>/b|"];
10 [label="Postponed enter to lambda"];
subgraph cluster_5 {
color=blue
11 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_6 {
color=blue
12 [label="Enter block"];
13 [label="Const: String()"];
14 [label="Exit block"];
}
15 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
16 [label="Postponed exit from lambda"];
17 [label="Function call: R|/foo|(...)" style="filled" fillcolor=yellow];
18 [label="Exit block"];
}
19 [label="Exit function test" style="filled" fillcolor=red];
}
6 -> {7};
7 -> {8};
8 -> {9 14 15};
8 -> {9} [style=dashed];
8 -> {9};
9 -> {10};
10 -> {11};
10 -> {11 16 17};
10 -> {11} [style=dashed];
11 -> {12};
12 -> {13};
13 -> {14};
14 -> {15};
15 -> {16};
16 -> {17};
17 -> {18};
18 -> {19};
}
@@ -5,304 +5,313 @@ digraph propertiesAndInitBlocks_kt {
subgraph cluster_0 {
color=red
0 [label="Enter function run" style="filled" fillcolor=red];
0 [label="Enter file propertiesAndInitBlocks.kt" style="filled" fillcolor=red];
subgraph cluster_1 {
color=blue
1 [label="Enter block"];
2 [label="Function call: R|<local>/block|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
3 [label="Exit block"];
1 [label="Enter property" style="filled" fillcolor=red];
2 [label="Const: Int(1)"];
3 [label="Exit property" style="filled" fillcolor=red];
}
4 [label="Exit function run" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
4 [label="Enter property" style="filled" fillcolor=red];
5 [label="Const: Int(1)"];
6 [label="Exit property" style="filled" fillcolor=red];
}
subgraph cluster_3 {
color=blue
7 [label="Enter property" style="filled" fillcolor=red];
8 [label="Postponed enter to lambda"];
subgraph cluster_4 {
color=blue
9 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_5 {
color=blue
10 [label="Enter block"];
11 [label="Local function declaration"];
12 [label="Local class declaration"];
13 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
14 [label="Throw: throw R|java/lang/Exception.Exception|()"];
15 [label="Stub" style="filled" fillcolor=gray];
16 [label="Exit block" style="filled" fillcolor=gray];
}
17 [label="Exit function <anonymous>" style="filled" fillcolor=gray];
}
subgraph cluster_6 {
color=blue
18 [label="Enter class InitializerLocalClass" style="filled" fillcolor=red];
subgraph cluster_7 {
color=blue
19 [label="Enter init block" style="filled" fillcolor=red];
subgraph cluster_8 {
color=blue
20 [label="Enter block"];
21 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
22 [label="Throw: throw R|java/lang/Exception.Exception|()"];
23 [label="Stub" style="filled" fillcolor=gray];
24 [label="Const: Int(1)" style="filled" fillcolor=gray];
25 [label="Exit block" style="filled" fillcolor=gray];
}
26 [label="Exit init block" style="filled" fillcolor=gray];
}
subgraph cluster_9 {
color=blue
27 [label="Enter function <init>" style="filled" fillcolor=gray];
28 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=gray];
29 [label="Exit function <init>" style="filled" fillcolor=gray];
}
30 [label="Exit class InitializerLocalClass" style="filled" fillcolor=gray];
}
subgraph cluster_10 {
color=blue
31 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_11 {
color=blue
32 [label="Enter block"];
33 [label="Const: Int(1)"];
34 [label="Const: Int(1)"];
35 [label="Function call: Int(1).R|kotlin/Int.plus|(...)" style="filled" fillcolor=yellow];
36 [label="Variable declaration: lval c: R|kotlin/Int|"];
37 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
38 [label="Throw: throw R|java/lang/Exception.Exception|()"];
39 [label="Stub" style="filled" fillcolor=gray];
40 [label="Exit block" style="filled" fillcolor=gray];
}
41 [label="Exit function foo" style="filled" fillcolor=gray];
}
42 [label="Postponed exit from lambda"];
43 [label="Function call: R|/run|(...)" style="filled" fillcolor=yellow];
44 [label="Exit property" style="filled" fillcolor=red];
}
subgraph cluster_12 {
color=blue
45 [label="Enter property" style="filled" fillcolor=red];
subgraph cluster_13 {
color=blue
46 [label="Try expression enter"];
subgraph cluster_14 {
color=blue
47 [label="Try main block enter"];
subgraph cluster_15 {
color=blue
48 [label="Enter block"];
49 [label="Const: Int(1)"];
50 [label="Exit block"];
}
51 [label="Try main block exit"];
}
subgraph cluster_16 {
color=blue
52 [label="Catch enter"];
53 [label="Variable declaration: e: R|kotlin/Exception|"];
subgraph cluster_17 {
color=blue
54 [label="Enter block"];
55 [label="Const: Int(2)"];
56 [label="Exit block"];
}
57 [label="Catch exit"];
}
subgraph cluster_18 {
color=blue
58 [label="Enter finally"];
subgraph cluster_19 {
color=blue
59 [label="Enter block"];
60 [label="Const: Int(0)"];
61 [label="Exit block"];
}
62 [label="Exit finally"];
}
63 [label="Try expression exit"];
}
64 [label="Exit property" style="filled" fillcolor=red];
}
65 [label="Exit file propertiesAndInitBlocks.kt" style="filled" fillcolor=red];
}
0 -> {1};
0 -> {1} [color=green];
0 -> {65} [style=dotted];
0 -> {1 4 7 45} [style=dashed];
1 -> {2};
2 -> {3};
3 -> {4};
subgraph cluster_2 {
color=red
5 [label="Enter property" style="filled" fillcolor=red];
6 [label="Const: Int(1)"];
7 [label="Exit property" style="filled" fillcolor=red];
}
3 -> {4} [color=green];
4 -> {5};
5 -> {6};
6 -> {7};
subgraph cluster_3 {
color=red
8 [label="Enter function <getter>" style="filled" fillcolor=red];
subgraph cluster_4 {
color=blue
9 [label="Enter block"];
10 [label="Const: Int(1)"];
11 [label="Jump: ^ Int(1)"];
12 [label="Stub" style="filled" fillcolor=gray];
13 [label="Exit block" style="filled" fillcolor=gray];
}
14 [label="Exit function <getter>" style="filled" fillcolor=red];
}
8 -> {9};
6 -> {7} [color=green];
7 -> {8};
8 -> {9 42 43};
8 -> {9} [style=dashed];
9 -> {10};
10 -> {11};
11 -> {14};
11 -> {12} [style=dotted];
12 -> {13} [style=dotted];
13 -> {14} [style=dotted];
subgraph cluster_5 {
color=red
15 [label="Enter function <setter>" style="filled" fillcolor=red];
subgraph cluster_6 {
color=blue
16 [label="Enter block"];
17 [label="Const: Int(1)"];
18 [label="Assignment: F|/x2|"];
19 [label="Exit block"];
}
20 [label="Exit function <setter>" style="filled" fillcolor=red];
}
15 -> {16};
16 -> {17};
17 -> {18};
11 -> {12 31};
11 -> {31} [style=dashed];
12 -> {13 18};
12 -> {18} [style=dashed];
13 -> {14};
14 -> {15} [style=dotted];
15 -> {16} [style=dotted];
16 -> {17} [style=dotted];
17 -> {42} [style=dotted];
18 -> {19};
18 -> {27} [color=red];
18 -> {30} [style=dotted];
18 -> {19 27} [style=dashed];
19 -> {20};
subgraph cluster_7 {
color=red
21 [label="Enter property" style="filled" fillcolor=red];
22 [label="Const: Int(1)"];
23 [label="Exit property" style="filled" fillcolor=red];
}
20 -> {21};
21 -> {22};
22 -> {23};
subgraph cluster_8 {
color=red
24 [label="Enter function <getter>" style="filled" fillcolor=red];
subgraph cluster_9 {
color=blue
25 [label="Enter block"];
26 [label="Local class declaration"];
27 [label="Exit block"];
}
28 [label="Exit function <getter>" style="filled" fillcolor=red];
}
subgraph cluster_10 {
color=blue
29 [label="Enter class GetterLocalClass" style="filled" fillcolor=red];
subgraph cluster_11 {
color=blue
30 [label="Enter init block" style="filled" fillcolor=red];
subgraph cluster_12 {
color=blue
31 [label="Enter block"];
32 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
33 [label="Throw: throw R|java/lang/Exception.Exception|()"];
34 [label="Stub" style="filled" fillcolor=gray];
35 [label="Exit block" style="filled" fillcolor=gray];
}
36 [label="Exit init block" style="filled" fillcolor=gray];
}
subgraph cluster_13 {
color=blue
37 [label="Enter function <init>" style="filled" fillcolor=gray];
38 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=gray];
39 [label="Exit function <init>" style="filled" fillcolor=gray];
}
40 [label="Exit class GetterLocalClass" style="filled" fillcolor=gray];
}
24 -> {25};
25 -> {26};
26 -> {27 29};
26 -> {29} [style=dashed];
27 -> {28};
29 -> {30};
29 -> {37} [color=red];
29 -> {40} [style=dotted];
29 -> {30 37} [style=dashed];
30 -> {31};
22 -> {23} [style=dotted];
23 -> {24} [style=dotted];
24 -> {25} [style=dotted];
25 -> {26} [style=dotted];
26 -> {27} [style=dotted];
27 -> {28} [style=dotted];
28 -> {29} [style=dotted];
29 -> {30} [style=dotted];
31 -> {32};
32 -> {33};
33 -> {34} [style=dotted];
34 -> {35} [style=dotted];
35 -> {36} [style=dotted];
36 -> {37} [style=dotted];
37 -> {38} [style=dotted];
33 -> {34};
34 -> {35};
35 -> {36};
36 -> {37};
37 -> {38};
38 -> {39} [style=dotted];
39 -> {40} [style=dotted];
subgraph cluster_14 {
color=red
41 [label="Enter property" style="filled" fillcolor=red];
42 [label="Postponed enter to lambda"];
subgraph cluster_15 {
color=blue
43 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_16 {
color=blue
44 [label="Enter block"];
45 [label="Local function declaration"];
46 [label="Local class declaration"];
47 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
48 [label="Throw: throw R|java/lang/Exception.Exception|()"];
49 [label="Stub" style="filled" fillcolor=gray];
50 [label="Exit block" style="filled" fillcolor=gray];
}
51 [label="Exit function <anonymous>" style="filled" fillcolor=gray];
}
subgraph cluster_17 {
color=blue
52 [label="Enter class InitializerLocalClass" style="filled" fillcolor=red];
subgraph cluster_18 {
color=blue
53 [label="Enter init block" style="filled" fillcolor=red];
subgraph cluster_19 {
color=blue
54 [label="Enter block"];
55 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
56 [label="Throw: throw R|java/lang/Exception.Exception|()"];
57 [label="Stub" style="filled" fillcolor=gray];
58 [label="Const: Int(1)" style="filled" fillcolor=gray];
59 [label="Exit block" style="filled" fillcolor=gray];
}
60 [label="Exit init block" style="filled" fillcolor=gray];
}
subgraph cluster_20 {
color=blue
61 [label="Enter function <init>" style="filled" fillcolor=gray];
62 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=gray];
63 [label="Exit function <init>" style="filled" fillcolor=gray];
}
64 [label="Exit class InitializerLocalClass" style="filled" fillcolor=gray];
}
subgraph cluster_21 {
color=blue
65 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_22 {
color=blue
66 [label="Enter block"];
67 [label="Const: Int(1)"];
68 [label="Const: Int(1)"];
69 [label="Function call: Int(1).R|kotlin/Int.plus|(...)" style="filled" fillcolor=yellow];
70 [label="Variable declaration: lval c: R|kotlin/Int|"];
71 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
72 [label="Throw: throw R|java/lang/Exception.Exception|()"];
73 [label="Stub" style="filled" fillcolor=gray];
74 [label="Exit block" style="filled" fillcolor=gray];
}
75 [label="Exit function foo" style="filled" fillcolor=gray];
}
76 [label="Postponed exit from lambda"];
77 [label="Function call: R|/run|(...)" style="filled" fillcolor=yellow];
78 [label="Exit property" style="filled" fillcolor=red];
}
41 -> {42};
42 -> {43 76 77};
42 -> {43} [style=dashed];
40 -> {41} [style=dotted];
42 -> {43};
42 -> {8} [color=green style=dashed];
43 -> {44};
44 -> {45};
45 -> {46 65};
45 -> {65} [style=dashed];
44 -> {45} [color=green];
45 -> {46};
46 -> {47 52};
46 -> {52} [style=dashed];
46 -> {58} [label="onUncaughtException"];
47 -> {48};
48 -> {49} [style=dotted];
49 -> {50} [style=dotted];
50 -> {51} [style=dotted];
51 -> {76} [style=dotted];
48 -> {49};
49 -> {50};
50 -> {51};
51 -> {52 58};
52 -> {53};
52 -> {61} [color=red];
52 -> {64} [style=dotted];
52 -> {53 61} [style=dashed];
52 -> {58} [label="onUncaughtException"];
53 -> {54};
54 -> {55};
55 -> {56};
56 -> {57} [style=dotted];
57 -> {58} [style=dotted];
58 -> {59} [style=dotted];
59 -> {60} [style=dotted];
60 -> {61} [style=dotted];
61 -> {62} [style=dotted];
62 -> {63} [style=dotted];
63 -> {64} [style=dotted];
65 -> {66};
56 -> {57};
57 -> {58};
58 -> {59};
59 -> {60};
60 -> {61};
61 -> {62};
62 -> {63};
63 -> {64};
64 -> {65} [color=green];
subgraph cluster_20 {
color=red
66 [label="Enter function run" style="filled" fillcolor=red];
subgraph cluster_21 {
color=blue
67 [label="Enter block"];
68 [label="Function call: R|<local>/block|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
69 [label="Exit block"];
}
70 [label="Exit function run" style="filled" fillcolor=red];
}
66 -> {67};
67 -> {68};
68 -> {69};
69 -> {70};
70 -> {71};
71 -> {72};
72 -> {73} [style=dotted];
73 -> {74} [style=dotted];
74 -> {75} [style=dotted];
76 -> {77};
76 -> {42} [color=green style=dashed];
77 -> {78};
subgraph cluster_23 {
subgraph cluster_22 {
color=red
79 [label="Enter property" style="filled" fillcolor=red];
subgraph cluster_24 {
71 [label="Enter function <getter>" style="filled" fillcolor=red];
subgraph cluster_23 {
color=blue
80 [label="Try expression enter"];
subgraph cluster_25 {
color=blue
81 [label="Try main block enter"];
subgraph cluster_26 {
color=blue
82 [label="Enter block"];
83 [label="Const: Int(1)"];
84 [label="Exit block"];
}
85 [label="Try main block exit"];
}
subgraph cluster_27 {
color=blue
86 [label="Catch enter"];
87 [label="Variable declaration: e: R|kotlin/Exception|"];
subgraph cluster_28 {
color=blue
88 [label="Enter block"];
89 [label="Const: Int(2)"];
90 [label="Exit block"];
}
91 [label="Catch exit"];
}
subgraph cluster_29 {
color=blue
92 [label="Enter finally"];
subgraph cluster_30 {
color=blue
93 [label="Enter block"];
94 [label="Const: Int(0)"];
95 [label="Exit block"];
}
96 [label="Exit finally"];
}
97 [label="Try expression exit"];
72 [label="Enter block"];
73 [label="Const: Int(1)"];
74 [label="Jump: ^ Int(1)"];
75 [label="Stub" style="filled" fillcolor=gray];
76 [label="Exit block" style="filled" fillcolor=gray];
}
98 [label="Exit property" style="filled" fillcolor=red];
77 [label="Exit function <getter>" style="filled" fillcolor=red];
}
71 -> {72};
72 -> {73};
73 -> {74};
74 -> {77};
74 -> {75} [style=dotted];
75 -> {76} [style=dotted];
76 -> {77} [style=dotted];
subgraph cluster_24 {
color=red
78 [label="Enter function <setter>" style="filled" fillcolor=red];
subgraph cluster_25 {
color=blue
79 [label="Enter block"];
80 [label="Const: Int(1)"];
81 [label="Assignment: F|/x2|"];
82 [label="Exit block"];
}
83 [label="Exit function <setter>" style="filled" fillcolor=red];
}
78 -> {79};
79 -> {80};
80 -> {81 86};
80 -> {92} [label="onUncaughtException"];
80 -> {81};
81 -> {82};
82 -> {83};
83 -> {84};
subgraph cluster_26 {
color=red
84 [label="Enter function <getter>" style="filled" fillcolor=red];
subgraph cluster_27 {
color=blue
85 [label="Enter block"];
86 [label="Local class declaration"];
87 [label="Exit block"];
}
88 [label="Exit function <getter>" style="filled" fillcolor=red];
}
subgraph cluster_28 {
color=blue
89 [label="Enter class GetterLocalClass" style="filled" fillcolor=red];
subgraph cluster_29 {
color=blue
90 [label="Enter init block" style="filled" fillcolor=red];
subgraph cluster_30 {
color=blue
91 [label="Enter block"];
92 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
93 [label="Throw: throw R|java/lang/Exception.Exception|()"];
94 [label="Stub" style="filled" fillcolor=gray];
95 [label="Exit block" style="filled" fillcolor=gray];
}
96 [label="Exit init block" style="filled" fillcolor=gray];
}
subgraph cluster_31 {
color=blue
97 [label="Enter function <init>" style="filled" fillcolor=gray];
98 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=gray];
99 [label="Exit function <init>" style="filled" fillcolor=gray];
}
100 [label="Exit class GetterLocalClass" style="filled" fillcolor=gray];
}
84 -> {85};
85 -> {86 92};
86 -> {87};
86 -> {92} [label="onUncaughtException"];
85 -> {86};
86 -> {87 89};
86 -> {89} [style=dashed];
87 -> {88};
88 -> {89};
89 -> {90};
89 -> {97} [color=red];
89 -> {100} [style=dotted];
89 -> {90 97} [style=dashed];
90 -> {91};
91 -> {92};
92 -> {93};
93 -> {94};
94 -> {95};
95 -> {96};
96 -> {97};
97 -> {98};
93 -> {94} [style=dotted];
94 -> {95} [style=dotted];
95 -> {96} [style=dotted];
96 -> {97} [style=dotted];
97 -> {98} [style=dotted];
98 -> {99} [style=dotted];
99 -> {100} [style=dotted];
}
@@ -5,205 +5,210 @@ digraph returnValuesFromLambda_kt {
subgraph cluster_0 {
color=red
0 [label="Enter class A" style="filled" fillcolor=red];
1 [label="Exit class A" style="filled" fillcolor=red];
0 [label="Enter file returnValuesFromLambda.kt" style="filled" fillcolor=red];
1 [label="Exit file returnValuesFromLambda.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter class B" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
3 [label="Enter function <init>" style="filled" fillcolor=red];
4 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
5 [label="Exit function <init>" style="filled" fillcolor=red];
}
6 [label="Exit class B" style="filled" fillcolor=red];
2 [label="Enter class A" style="filled" fillcolor=red];
3 [label="Exit class A" style="filled" fillcolor=red];
}
2 -> {3} [color=green];
2 -> {6} [style=dotted];
2 -> {3} [style=dashed];
3 -> {4};
4 -> {5};
5 -> {6} [color=green];
subgraph cluster_3 {
subgraph cluster_2 {
color=red
7 [label="Enter class C" style="filled" fillcolor=red];
subgraph cluster_4 {
4 [label="Enter class B" style="filled" fillcolor=red];
subgraph cluster_3 {
color=blue
8 [label="Enter function <init>" style="filled" fillcolor=red];
9 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
10 [label="Exit function <init>" style="filled" fillcolor=red];
5 [label="Enter function <init>" style="filled" fillcolor=red];
6 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
7 [label="Exit function <init>" style="filled" fillcolor=red];
}
11 [label="Exit class C" style="filled" fillcolor=red];
8 [label="Exit class B" style="filled" fillcolor=red];
}
4 -> {5} [color=green];
4 -> {8} [style=dotted];
4 -> {5} [style=dashed];
5 -> {6};
6 -> {7};
7 -> {8} [color=green];
7 -> {11} [style=dotted];
7 -> {8} [style=dashed];
8 -> {9};
9 -> {10};
10 -> {11} [color=green];
subgraph cluster_5 {
subgraph cluster_4 {
color=red
12 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_6 {
9 [label="Enter class C" style="filled" fillcolor=red];
subgraph cluster_5 {
color=blue
13 [label="Enter block"];
14 [label="Postponed enter to lambda"];
subgraph cluster_7 {
10 [label="Enter function <init>" style="filled" fillcolor=red];
11 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
12 [label="Exit function <init>" style="filled" fillcolor=red];
}
13 [label="Exit class C" style="filled" fillcolor=red];
}
9 -> {10} [color=green];
9 -> {13} [style=dotted];
9 -> {10} [style=dashed];
10 -> {11};
11 -> {12};
12 -> {13} [color=green];
subgraph cluster_6 {
color=red
14 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_7 {
color=blue
15 [label="Enter block"];
16 [label="Postponed enter to lambda"];
subgraph cluster_8 {
color=blue
15 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_8 {
17 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_9 {
color=blue
16 [label="Enter block"];
subgraph cluster_9 {
18 [label="Enter block"];
subgraph cluster_10 {
color=blue
17 [label="Enter when"];
subgraph cluster_10 {
color=blue
18 [label="Enter when branch condition "];
19 [label="Access variable R|<local>/b|"];
20 [label="Exit when branch condition"];
}
21 [label="Synthetic else branch"];
22 [label="Enter when branch result"];
19 [label="Enter when"];
subgraph cluster_11 {
color=blue
23 [label="Enter block"];
24 [label="Function call: R|/B.B|()" style="filled" fillcolor=yellow];
25 [label="Jump: ^@run R|/B.B|()"];
26 [label="Stub" style="filled" fillcolor=gray];
27 [label="Exit block" style="filled" fillcolor=gray];
20 [label="Enter when branch condition "];
21 [label="Access variable R|<local>/b|"];
22 [label="Exit when branch condition"];
}
28 [label="Exit when branch result" style="filled" fillcolor=gray];
29 [label="Exit when"];
23 [label="Synthetic else branch"];
24 [label="Enter when branch result"];
subgraph cluster_12 {
color=blue
25 [label="Enter block"];
26 [label="Function call: R|/B.B|()" style="filled" fillcolor=yellow];
27 [label="Jump: ^@run R|/B.B|()"];
28 [label="Stub" style="filled" fillcolor=gray];
29 [label="Exit block" style="filled" fillcolor=gray];
}
30 [label="Exit when branch result" style="filled" fillcolor=gray];
31 [label="Exit when"];
}
30 [label="Function call: R|/C.C|()" style="filled" fillcolor=yellow];
31 [label="Exit block"];
32 [label="Function call: R|/C.C|()" style="filled" fillcolor=yellow];
33 [label="Exit block"];
}
32 [label="Exit function <anonymous>" style="filled" fillcolor=red];
34 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
33 [label="Postponed exit from lambda"];
34 [label="Function call: R|kotlin/run|<R|A|>(...)" style="filled" fillcolor=yellow];
35 [label="Variable declaration: lval x: R|A|"];
36 [label="Exit block"];
35 [label="Postponed exit from lambda"];
36 [label="Function call: R|kotlin/run|<R|A|>(...)" style="filled" fillcolor=yellow];
37 [label="Variable declaration: lval x: R|A|"];
38 [label="Exit block"];
}
37 [label="Exit function test_1" style="filled" fillcolor=red];
39 [label="Exit function test_1" style="filled" fillcolor=red];
}
12 -> {13};
13 -> {14};
14 -> {15 34};
14 -> {33} [style=dotted];
14 -> {15} [style=dashed];
14 -> {15};
15 -> {16};
16 -> {17};
16 -> {17 36};
16 -> {35} [style=dotted];
16 -> {17} [style=dashed];
17 -> {18};
18 -> {19};
19 -> {20};
20 -> {21 22};
21 -> {29};
22 -> {23};
23 -> {24};
20 -> {21};
21 -> {22};
22 -> {23 24};
23 -> {31};
24 -> {25};
25 -> {32};
25 -> {26} [style=dotted];
26 -> {27} [style=dotted];
25 -> {26};
26 -> {27};
27 -> {34};
27 -> {28} [style=dotted];
28 -> {29} [style=dotted];
29 -> {30};
30 -> {31};
29 -> {30} [style=dotted];
30 -> {31} [style=dotted];
31 -> {32};
32 -> {33};
33 -> {34};
34 -> {35};
35 -> {36};
36 -> {37};
subgraph cluster_12 {
color=red
38 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_13 {
color=blue
39 [label="Enter block"];
40 [label="Postponed enter to lambda"];
subgraph cluster_14 {
color=blue
41 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_15 {
color=blue
42 [label="Enter block"];
43 [label="Function call: R|/C.C|()" style="filled" fillcolor=yellow];
44 [label="Jump: ^@run R|/C.C|()"];
45 [label="Stub" style="filled" fillcolor=gray];
46 [label="Exit block" style="filled" fillcolor=gray];
}
47 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
48 [label="Postponed exit from lambda"];
49 [label="Function call: R|kotlin/run|<R|C|>(...)" style="filled" fillcolor=yellow];
50 [label="Variable declaration: lval x: R|C|"];
51 [label="Exit block"];
}
52 [label="Exit function test_2" style="filled" fillcolor=red];
}
37 -> {38};
38 -> {39};
39 -> {40};
40 -> {41 49};
40 -> {48} [style=dotted];
40 -> {41} [style=dashed];
subgraph cluster_13 {
color=red
40 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_14 {
color=blue
41 [label="Enter block"];
42 [label="Postponed enter to lambda"];
subgraph cluster_15 {
color=blue
43 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_16 {
color=blue
44 [label="Enter block"];
45 [label="Function call: R|/C.C|()" style="filled" fillcolor=yellow];
46 [label="Jump: ^@run R|/C.C|()"];
47 [label="Stub" style="filled" fillcolor=gray];
48 [label="Exit block" style="filled" fillcolor=gray];
}
49 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
50 [label="Postponed exit from lambda"];
51 [label="Function call: R|kotlin/run|<R|C|>(...)" style="filled" fillcolor=yellow];
52 [label="Variable declaration: lval x: R|C|"];
53 [label="Exit block"];
}
54 [label="Exit function test_2" style="filled" fillcolor=red];
}
40 -> {41};
41 -> {42};
42 -> {43};
42 -> {43 51};
42 -> {50} [style=dotted];
42 -> {43} [style=dashed];
43 -> {44};
44 -> {47};
44 -> {45} [style=dotted];
45 -> {46} [style=dotted];
44 -> {45};
45 -> {46};
46 -> {49};
46 -> {47} [style=dotted];
47 -> {48};
48 -> {49};
47 -> {48} [style=dotted];
48 -> {49} [style=dotted];
49 -> {50};
50 -> {51};
51 -> {52};
subgraph cluster_16 {
color=red
53 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_17 {
color=blue
54 [label="Enter block"];
55 [label="Postponed enter to lambda"];
subgraph cluster_18 {
color=blue
56 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_19 {
color=blue
57 [label="Enter block"];
58 [label="Jump: ^test_3 Unit"];
59 [label="Stub" style="filled" fillcolor=gray];
60 [label="Exit block" style="filled" fillcolor=gray];
}
61 [label="Exit function <anonymous>" style="filled" fillcolor=gray];
}
62 [label="Postponed exit from lambda" style="filled" fillcolor=gray];
63 [label="Function call: R|kotlin/run|<R|kotlin/Nothing|>(...)" style="filled" fillcolor=gray];
64 [label="Stub" style="filled" fillcolor=gray];
65 [label="Variable declaration: lval x: R|kotlin/Nothing|" style="filled" fillcolor=gray];
66 [label="Exit block" style="filled" fillcolor=gray];
}
67 [label="Exit function test_3" style="filled" fillcolor=red];
}
52 -> {53};
53 -> {54};
54 -> {55};
subgraph cluster_17 {
color=red
55 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_18 {
color=blue
56 [label="Enter block"];
57 [label="Postponed enter to lambda"];
subgraph cluster_19 {
color=blue
58 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_20 {
color=blue
59 [label="Enter block"];
60 [label="Jump: ^test_3 Unit"];
61 [label="Stub" style="filled" fillcolor=gray];
62 [label="Exit block" style="filled" fillcolor=gray];
}
63 [label="Exit function <anonymous>" style="filled" fillcolor=gray];
}
64 [label="Postponed exit from lambda" style="filled" fillcolor=gray];
65 [label="Function call: R|kotlin/run|<R|kotlin/Nothing|>(...)" style="filled" fillcolor=gray];
66 [label="Stub" style="filled" fillcolor=gray];
67 [label="Variable declaration: lval x: R|kotlin/Nothing|" style="filled" fillcolor=gray];
68 [label="Exit block" style="filled" fillcolor=gray];
}
69 [label="Exit function test_3" style="filled" fillcolor=red];
}
55 -> {56};
55 -> {62 63} [style=dotted];
55 -> {56} [style=dashed];
56 -> {57};
57 -> {58};
58 -> {67};
58 -> {59} [style=dotted];
59 -> {60} [style=dotted];
57 -> {64 65} [style=dotted];
57 -> {58} [style=dashed];
58 -> {59};
59 -> {60};
60 -> {69};
60 -> {61} [style=dotted];
61 -> {62} [style=dotted];
62 -> {63} [style=dotted];
@@ -211,5 +216,7 @@ digraph returnValuesFromLambda_kt {
64 -> {65} [style=dotted];
65 -> {66} [style=dotted];
66 -> {67} [style=dotted];
67 -> {68} [style=dotted];
68 -> {69} [style=dotted];
}
+101 -94
View File
@@ -5,145 +5,150 @@ digraph safeCalls_kt {
subgraph cluster_0 {
color=red
0 [label="Enter class A" style="filled" fillcolor=red];
1 [label="Exit class A" style="filled" fillcolor=red];
0 [label="Enter file safeCalls.kt" style="filled" fillcolor=red];
1 [label="Exit file safeCalls.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter function foo" style="filled" fillcolor=red];
3 [label="Exit function foo" style="filled" fillcolor=red];
2 [label="Enter class A" style="filled" fillcolor=red];
3 [label="Exit class A" style="filled" fillcolor=red];
}
2 -> {3};
2 -> {3} [color=green];
subgraph cluster_2 {
color=red
4 [label="Enter function bar" style="filled" fillcolor=red];
5 [label="Exit function bar" style="filled" fillcolor=red];
4 [label="Enter function foo" style="filled" fillcolor=red];
5 [label="Exit function foo" style="filled" fillcolor=red];
}
4 -> {5};
subgraph cluster_3 {
color=red
6 [label="Enter class B" style="filled" fillcolor=red];
7 [label="Exit class B" style="filled" fillcolor=red];
6 [label="Enter function bar" style="filled" fillcolor=red];
7 [label="Exit function bar" style="filled" fillcolor=red];
}
6 -> {7} [color=green];
6 -> {7};
subgraph cluster_4 {
color=red
8 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_5 {
8 [label="Enter class B" style="filled" fillcolor=red];
9 [label="Exit class B" style="filled" fillcolor=red];
}
8 -> {9} [color=green];
subgraph cluster_5 {
color=red
10 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_6 {
color=blue
9 [label="Enter block"];
10 [label="Access variable R|<local>/x|"];
11 [label="Enter safe call"];
12 [label="Function call: $subj$.R|/A.foo|()" style="filled" fillcolor=yellow];
11 [label="Enter block"];
12 [label="Access variable R|<local>/x|"];
13 [label="Enter safe call"];
14 [label="Const: String()"];
15 [label="Function call: $subj$.R|/A.bar|(...)" style="filled" fillcolor=yellow];
16 [label="Exit safe call"];
17 [label="Exit safe call"];
18 [label="Exit block"];
14 [label="Function call: $subj$.R|/A.foo|()" style="filled" fillcolor=yellow];
15 [label="Enter safe call"];
16 [label="Const: String()"];
17 [label="Function call: $subj$.R|/A.bar|(...)" style="filled" fillcolor=yellow];
18 [label="Exit safe call"];
19 [label="Exit safe call"];
20 [label="Exit block"];
}
19 [label="Exit function test_1" style="filled" fillcolor=red];
21 [label="Exit function test_1" style="filled" fillcolor=red];
}
8 -> {9};
9 -> {10};
10 -> {11 16};
10 -> {11};
11 -> {12};
12 -> {13 16};
12 -> {13 18};
13 -> {14};
14 -> {15};
15 -> {17};
14 -> {15 18};
15 -> {16};
16 -> {17};
17 -> {18};
17 -> {19};
18 -> {19};
subgraph cluster_6 {
color=red
20 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_7 {
color=blue
21 [label="Enter block"];
22 [label="Access variable R|<local>/x|"];
23 [label="Enter safe call"];
24 [label="Access variable R|/B.foo|"];
25 [label="Enter safe call"];
26 [label="Access variable R|/B.bar|"];
27 [label="Exit safe call"];
28 [label="Exit safe call"];
29 [label="Exit block"];
}
30 [label="Exit function test_2" style="filled" fillcolor=red];
}
19 -> {20};
20 -> {21};
21 -> {22};
22 -> {23 27};
23 -> {24};
24 -> {25 27};
25 -> {26};
26 -> {28};
27 -> {28};
28 -> {29};
29 -> {30};
subgraph cluster_8 {
subgraph cluster_7 {
color=red
31 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_9 {
22 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_8 {
color=blue
32 [label="Enter block"];
subgraph cluster_10 {
23 [label="Enter block"];
24 [label="Access variable R|<local>/x|"];
25 [label="Enter safe call"];
26 [label="Access variable R|/B.foo|"];
27 [label="Enter safe call"];
28 [label="Access variable R|/B.bar|"];
29 [label="Exit safe call"];
30 [label="Exit safe call"];
31 [label="Exit block"];
}
32 [label="Exit function test_2" style="filled" fillcolor=red];
}
22 -> {23};
23 -> {24};
24 -> {25 29};
25 -> {26};
26 -> {27 29};
27 -> {28};
28 -> {30};
29 -> {30};
30 -> {31};
31 -> {32};
subgraph cluster_9 {
color=red
33 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_10 {
color=blue
34 [label="Enter block"];
subgraph cluster_11 {
color=blue
33 [label="Enter when"];
subgraph cluster_11 {
color=blue
34 [label="Enter when branch condition "];
35 [label="Access variable R|<local>/x|"];
36 [label="Enter safe call"];
37 [label="Access variable R|<local>/y|"];
38 [label="Type operator: (R|<local>/y| as R|kotlin/String|)"];
39 [label="Function call: $subj$.R|/A.bar|(...)" style="filled" fillcolor=yellow];
40 [label="Exit safe call"];
41 [label="Const: Null(null)"];
42 [label="Equality operator !="];
43 [label="Exit when branch condition"];
}
44 [label="Synthetic else branch"];
45 [label="Enter when branch result"];
35 [label="Enter when"];
subgraph cluster_12 {
color=blue
46 [label="Enter block"];
47 [label="Access variable R|<local>/y|"];
48 [label="Smart cast: R|<local>/y|"];
49 [label="Access variable R|kotlin/String.length|"];
50 [label="Exit block"];
36 [label="Enter when branch condition "];
37 [label="Access variable R|<local>/x|"];
38 [label="Enter safe call"];
39 [label="Access variable R|<local>/y|"];
40 [label="Type operator: (R|<local>/y| as R|kotlin/String|)"];
41 [label="Function call: $subj$.R|/A.bar|(...)" style="filled" fillcolor=yellow];
42 [label="Exit safe call"];
43 [label="Const: Null(null)"];
44 [label="Equality operator !="];
45 [label="Exit when branch condition"];
}
51 [label="Exit when branch result"];
52 [label="Exit when"];
46 [label="Synthetic else branch"];
47 [label="Enter when branch result"];
subgraph cluster_13 {
color=blue
48 [label="Enter block"];
49 [label="Access variable R|<local>/y|"];
50 [label="Smart cast: R|<local>/y|"];
51 [label="Access variable R|kotlin/String.length|"];
52 [label="Exit block"];
}
53 [label="Exit when branch result"];
54 [label="Exit when"];
}
53 [label="Exit block"];
55 [label="Exit block"];
}
54 [label="Exit function test_3" style="filled" fillcolor=red];
56 [label="Exit function test_3" style="filled" fillcolor=red];
}
31 -> {32};
32 -> {33};
33 -> {34};
34 -> {35};
35 -> {36 40};
35 -> {36};
36 -> {37};
37 -> {38};
37 -> {38 42};
38 -> {39};
39 -> {40};
40 -> {41};
41 -> {42};
42 -> {43};
43 -> {44 45};
44 -> {52};
45 -> {46};
46 -> {47};
43 -> {44};
44 -> {45};
45 -> {46 47};
46 -> {54};
47 -> {48};
48 -> {49};
49 -> {50};
@@ -151,5 +156,7 @@ digraph safeCalls_kt {
51 -> {52};
52 -> {53};
53 -> {54};
54 -> {55};
55 -> {56};
}
+31 -24
View File
@@ -5,37 +5,42 @@ digraph simple_kt {
subgraph cluster_0 {
color=red
0 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_1 {
color=blue
1 [label="Enter block"];
2 [label="Exit block"];
}
3 [label="Exit function foo" style="filled" fillcolor=red];
0 [label="Enter file simple.kt" style="filled" fillcolor=red];
1 [label="Exit file simple.kt" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
2 -> {3};
0 -> {1} [color=green];
subgraph cluster_2 {
subgraph cluster_1 {
color=red
4 [label="Enter function test" style="filled" fillcolor=red];
subgraph cluster_3 {
2 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
5 [label="Enter block"];
6 [label="Const: Int(1)"];
7 [label="Variable declaration: lval x: R|kotlin/Int|"];
8 [label="Access variable R|<local>/x|"];
9 [label="Const: Int(1)"];
10 [label="Function call: R|<local>/x|.R|kotlin/Int.plus|(...)" style="filled" fillcolor=yellow];
11 [label="Variable declaration: lval y: R|kotlin/Int|"];
12 [label="Function call: R|/foo|()" style="filled" fillcolor=yellow];
13 [label="Exit block"];
3 [label="Enter block"];
4 [label="Exit block"];
}
14 [label="Exit function test" style="filled" fillcolor=red];
5 [label="Exit function foo" style="filled" fillcolor=red];
}
2 -> {3};
3 -> {4};
4 -> {5};
5 -> {6};
subgraph cluster_3 {
color=red
6 [label="Enter function test" style="filled" fillcolor=red];
subgraph cluster_4 {
color=blue
7 [label="Enter block"];
8 [label="Const: Int(1)"];
9 [label="Variable declaration: lval x: R|kotlin/Int|"];
10 [label="Access variable R|<local>/x|"];
11 [label="Const: Int(1)"];
12 [label="Function call: R|<local>/x|.R|kotlin/Int.plus|(...)" style="filled" fillcolor=yellow];
13 [label="Variable declaration: lval y: R|kotlin/Int|"];
14 [label="Function call: R|/foo|()" style="filled" fillcolor=yellow];
15 [label="Exit block"];
}
16 [label="Exit function test" style="filled" fillcolor=red];
}
6 -> {7};
7 -> {8};
8 -> {9};
@@ -44,5 +49,7 @@ digraph simple_kt {
11 -> {12};
12 -> {13};
13 -> {14};
14 -> {15};
15 -> {16};
}
+235 -228
View File
@@ -5,75 +5,80 @@ digraph tryCatch_kt {
subgraph cluster_0 {
color=red
0 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_1 {
color=blue
1 [label="Enter block"];
subgraph cluster_2 {
color=blue
2 [label="Try expression enter"];
subgraph cluster_3 {
color=blue
3 [label="Try main block enter"];
subgraph cluster_4 {
color=blue
4 [label="Enter block"];
5 [label="Const: Int(1)"];
6 [label="Variable declaration: lval x: R|kotlin/Int|"];
7 [label="Exit block"];
}
8 [label="Try main block exit"];
}
subgraph cluster_5 {
color=blue
9 [label="Catch enter"];
10 [label="Variable declaration: e: R|kotlin/RuntimeException|"];
subgraph cluster_6 {
color=blue
11 [label="Enter block"];
12 [label="Const: Int(2)"];
13 [label="Variable declaration: lval y: R|kotlin/Int|"];
14 [label="Exit block"];
}
15 [label="Catch exit"];
}
subgraph cluster_7 {
color=blue
16 [label="Catch enter"];
17 [label="Variable declaration: e: R|kotlin/Exception|"];
subgraph cluster_8 {
color=blue
18 [label="Enter block"];
19 [label="Const: Int(3)"];
20 [label="Variable declaration: lval z: R|kotlin/Int|"];
21 [label="Exit block"];
}
22 [label="Catch exit"];
}
23 [label="Try expression exit"];
}
24 [label="Exit block"];
}
25 [label="Exit function test_1" style="filled" fillcolor=red];
0 [label="Enter file tryCatch.kt" style="filled" fillcolor=red];
1 [label="Exit file tryCatch.kt" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
2 -> {3 9 16};
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
3 [label="Enter block"];
subgraph cluster_3 {
color=blue
4 [label="Try expression enter"];
subgraph cluster_4 {
color=blue
5 [label="Try main block enter"];
subgraph cluster_5 {
color=blue
6 [label="Enter block"];
7 [label="Const: Int(1)"];
8 [label="Variable declaration: lval x: R|kotlin/Int|"];
9 [label="Exit block"];
}
10 [label="Try main block exit"];
}
subgraph cluster_6 {
color=blue
11 [label="Catch enter"];
12 [label="Variable declaration: e: R|kotlin/RuntimeException|"];
subgraph cluster_7 {
color=blue
13 [label="Enter block"];
14 [label="Const: Int(2)"];
15 [label="Variable declaration: lval y: R|kotlin/Int|"];
16 [label="Exit block"];
}
17 [label="Catch exit"];
}
subgraph cluster_8 {
color=blue
18 [label="Catch enter"];
19 [label="Variable declaration: e: R|kotlin/Exception|"];
subgraph cluster_9 {
color=blue
20 [label="Enter block"];
21 [label="Const: Int(3)"];
22 [label="Variable declaration: lval z: R|kotlin/Int|"];
23 [label="Exit block"];
}
24 [label="Catch exit"];
}
25 [label="Try expression exit"];
}
26 [label="Exit block"];
}
27 [label="Exit function test_1" style="filled" fillcolor=red];
}
2 -> {3};
3 -> {4};
4 -> {5};
4 -> {5 11 18};
5 -> {6};
6 -> {7};
7 -> {8};
8 -> {9 16 23};
8 -> {9};
9 -> {10};
10 -> {11};
10 -> {11 18 25};
11 -> {12};
12 -> {13};
13 -> {14};
14 -> {15};
15 -> {23};
15 -> {16};
16 -> {17};
17 -> {18};
17 -> {25};
18 -> {19};
19 -> {20};
20 -> {21};
@@ -81,56 +86,56 @@ digraph tryCatch_kt {
22 -> {23};
23 -> {24};
24 -> {25};
subgraph cluster_9 {
color=red
26 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_10 {
color=blue
27 [label="Enter block"];
subgraph cluster_11 {
color=blue
28 [label="Try expression enter"];
subgraph cluster_12 {
color=blue
29 [label="Try main block enter"];
subgraph cluster_13 {
color=blue
30 [label="Enter block"];
31 [label="Const: Int(1)"];
32 [label="Exit block"];
}
33 [label="Try main block exit"];
}
subgraph cluster_14 {
color=blue
34 [label="Catch enter"];
35 [label="Variable declaration: e: R|kotlin/Exception|"];
subgraph cluster_15 {
color=blue
36 [label="Enter block"];
37 [label="Const: Int(2)"];
38 [label="Exit block"];
}
39 [label="Catch exit"];
}
40 [label="Try expression exit"];
}
41 [label="Variable declaration: lval x: R|kotlin/Int|"];
42 [label="Exit block"];
}
43 [label="Exit function test_2" style="filled" fillcolor=red];
}
25 -> {26};
26 -> {27};
27 -> {28};
28 -> {29 34};
subgraph cluster_10 {
color=red
28 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_11 {
color=blue
29 [label="Enter block"];
subgraph cluster_12 {
color=blue
30 [label="Try expression enter"];
subgraph cluster_13 {
color=blue
31 [label="Try main block enter"];
subgraph cluster_14 {
color=blue
32 [label="Enter block"];
33 [label="Const: Int(1)"];
34 [label="Exit block"];
}
35 [label="Try main block exit"];
}
subgraph cluster_15 {
color=blue
36 [label="Catch enter"];
37 [label="Variable declaration: e: R|kotlin/Exception|"];
subgraph cluster_16 {
color=blue
38 [label="Enter block"];
39 [label="Const: Int(2)"];
40 [label="Exit block"];
}
41 [label="Catch exit"];
}
42 [label="Try expression exit"];
}
43 [label="Variable declaration: lval x: R|kotlin/Int|"];
44 [label="Exit block"];
}
45 [label="Exit function test_2" style="filled" fillcolor=red];
}
28 -> {29};
29 -> {30};
30 -> {31};
30 -> {31 36};
31 -> {32};
32 -> {33};
33 -> {34 40};
33 -> {34};
34 -> {35};
35 -> {36};
35 -> {36 42};
36 -> {37};
37 -> {38};
38 -> {39};
@@ -138,195 +143,197 @@ digraph tryCatch_kt {
40 -> {41};
41 -> {42};
42 -> {43};
43 -> {44};
44 -> {45};
subgraph cluster_16 {
subgraph cluster_17 {
color=red
44 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_17 {
46 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_18 {
color=blue
45 [label="Enter block"];
subgraph cluster_18 {
47 [label="Enter block"];
subgraph cluster_19 {
color=blue
46 [label="Enter while loop"];
subgraph cluster_19 {
color=blue
47 [label="Enter loop condition"];
48 [label="Const: Boolean(true)"];
49 [label="Exit loop condition"];
}
48 [label="Enter while loop"];
subgraph cluster_20 {
color=blue
50 [label="Enter loop block"];
subgraph cluster_21 {
49 [label="Enter loop condition"];
50 [label="Const: Boolean(true)"];
51 [label="Exit loop condition"];
}
subgraph cluster_21 {
color=blue
52 [label="Enter loop block"];
subgraph cluster_22 {
color=blue
51 [label="Enter block"];
subgraph cluster_22 {
53 [label="Enter block"];
subgraph cluster_23 {
color=blue
52 [label="Try expression enter"];
subgraph cluster_23 {
54 [label="Try expression enter"];
subgraph cluster_24 {
color=blue
53 [label="Try main block enter"];
subgraph cluster_24 {
55 [label="Try main block enter"];
subgraph cluster_25 {
color=blue
54 [label="Enter block"];
subgraph cluster_25 {
56 [label="Enter block"];
subgraph cluster_26 {
color=blue
55 [label="Enter when"];
subgraph cluster_26 {
color=blue
56 [label="Enter when branch condition "];
57 [label="Access variable R|<local>/b|"];
58 [label="Exit when branch condition"];
}
59 [label="Synthetic else branch"];
60 [label="Enter when branch result"];
57 [label="Enter when"];
subgraph cluster_27 {
color=blue
61 [label="Enter block"];
62 [label="Jump: ^test_3 Unit"];
63 [label="Stub" style="filled" fillcolor=gray];
64 [label="Exit block" style="filled" fillcolor=gray];
58 [label="Enter when branch condition "];
59 [label="Access variable R|<local>/b|"];
60 [label="Exit when branch condition"];
}
65 [label="Exit when branch result" style="filled" fillcolor=gray];
66 [label="Exit when"];
}
67 [label="Const: Int(1)"];
68 [label="Variable declaration: lval x: R|kotlin/Int|"];
subgraph cluster_28 {
color=blue
69 [label="Enter when"];
subgraph cluster_29 {
61 [label="Synthetic else branch"];
62 [label="Enter when branch result"];
subgraph cluster_28 {
color=blue
70 [label="Enter when branch condition "];
71 [label="Access variable R|<local>/b|"];
72 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
73 [label="Exit when branch condition"];
63 [label="Enter block"];
64 [label="Jump: ^test_3 Unit"];
65 [label="Stub" style="filled" fillcolor=gray];
66 [label="Exit block" style="filled" fillcolor=gray];
}
74 [label="Synthetic else branch"];
75 [label="Enter when branch result"];
67 [label="Exit when branch result" style="filled" fillcolor=gray];
68 [label="Exit when"];
}
69 [label="Const: Int(1)"];
70 [label="Variable declaration: lval x: R|kotlin/Int|"];
subgraph cluster_29 {
color=blue
71 [label="Enter when"];
subgraph cluster_30 {
color=blue
76 [label="Enter block"];
77 [label="Jump: break@@@[Boolean(true)] "];
78 [label="Stub" style="filled" fillcolor=gray];
79 [label="Exit block" style="filled" fillcolor=gray];
72 [label="Enter when branch condition "];
73 [label="Access variable R|<local>/b|"];
74 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
75 [label="Exit when branch condition"];
}
80 [label="Exit when branch result" style="filled" fillcolor=gray];
81 [label="Exit when"];
76 [label="Synthetic else branch"];
77 [label="Enter when branch result"];
subgraph cluster_31 {
color=blue
78 [label="Enter block"];
79 [label="Jump: break@@@[Boolean(true)] "];
80 [label="Stub" style="filled" fillcolor=gray];
81 [label="Exit block" style="filled" fillcolor=gray];
}
82 [label="Exit when branch result" style="filled" fillcolor=gray];
83 [label="Exit when"];
}
82 [label="Exit block"];
84 [label="Exit block"];
}
83 [label="Try main block exit"];
85 [label="Try main block exit"];
}
subgraph cluster_31 {
subgraph cluster_32 {
color=blue
84 [label="Catch enter"];
85 [label="Variable declaration: e: R|kotlin/RuntimeException|"];
subgraph cluster_32 {
86 [label="Catch enter"];
87 [label="Variable declaration: e: R|kotlin/RuntimeException|"];
subgraph cluster_33 {
color=blue
86 [label="Enter block"];
87 [label="Jump: break@@@[Boolean(true)] "];
88 [label="Stub" style="filled" fillcolor=gray];
89 [label="Exit block" style="filled" fillcolor=gray];
88 [label="Enter block"];
89 [label="Jump: break@@@[Boolean(true)] "];
90 [label="Stub" style="filled" fillcolor=gray];
91 [label="Exit block" style="filled" fillcolor=gray];
}
90 [label="Catch exit" style="filled" fillcolor=gray];
92 [label="Catch exit" style="filled" fillcolor=gray];
}
subgraph cluster_33 {
subgraph cluster_34 {
color=blue
91 [label="Catch enter"];
92 [label="Variable declaration: e: R|kotlin/Exception|"];
subgraph cluster_34 {
93 [label="Catch enter"];
94 [label="Variable declaration: e: R|kotlin/Exception|"];
subgraph cluster_35 {
color=blue
93 [label="Enter block"];
94 [label="Jump: continue@@@[Boolean(true)] "];
95 [label="Stub" style="filled" fillcolor=gray];
96 [label="Exit block" style="filled" fillcolor=gray];
95 [label="Enter block"];
96 [label="Jump: continue@@@[Boolean(true)] "];
97 [label="Stub" style="filled" fillcolor=gray];
98 [label="Exit block" style="filled" fillcolor=gray];
}
97 [label="Catch exit" style="filled" fillcolor=gray];
99 [label="Catch exit" style="filled" fillcolor=gray];
}
98 [label="Try expression exit"];
100 [label="Try expression exit"];
}
99 [label="Const: Int(2)"];
100 [label="Variable declaration: lval y: R|kotlin/Int|"];
101 [label="Exit block"];
101 [label="Const: Int(2)"];
102 [label="Variable declaration: lval y: R|kotlin/Int|"];
103 [label="Exit block"];
}
102 [label="Exit loop block"];
104 [label="Exit loop block"];
}
103 [label="Exit while loop"];
105 [label="Exit while loop"];
}
104 [label="Const: Int(3)"];
105 [label="Variable declaration: lval z: R|kotlin/Int|"];
106 [label="Exit block"];
106 [label="Const: Int(3)"];
107 [label="Variable declaration: lval z: R|kotlin/Int|"];
108 [label="Exit block"];
}
107 [label="Exit function test_3" style="filled" fillcolor=red];
109 [label="Exit function test_3" style="filled" fillcolor=red];
}
44 -> {45};
45 -> {46};
46 -> {47};
47 -> {48};
48 -> {49};
49 -> {50};
49 -> {103} [style=dotted];
50 -> {51};
51 -> {52};
52 -> {53 84 91};
51 -> {105} [style=dotted];
52 -> {53};
53 -> {54};
54 -> {55};
54 -> {55 86 93};
55 -> {56};
56 -> {57};
57 -> {58};
58 -> {59 60};
59 -> {66};
60 -> {61};
61 -> {62};
62 -> {107};
62 -> {63} [style=dotted];
63 -> {64} [style=dotted];
58 -> {59};
59 -> {60};
60 -> {61 62};
61 -> {68};
62 -> {63};
63 -> {64};
64 -> {109};
64 -> {65} [style=dotted];
65 -> {66} [style=dotted];
66 -> {67};
67 -> {68};
66 -> {67} [style=dotted];
67 -> {68} [style=dotted];
68 -> {69};
69 -> {70};
70 -> {71};
71 -> {72};
72 -> {73 84 91};
73 -> {74 75};
74 -> {81};
75 -> {76};
76 -> {77};
77 -> {103};
77 -> {78} [style=dotted];
78 -> {79} [style=dotted];
72 -> {73};
73 -> {74};
74 -> {75 86 93};
75 -> {76 77};
76 -> {83};
77 -> {78};
78 -> {79};
79 -> {105};
79 -> {80} [style=dotted];
80 -> {81} [style=dotted];
81 -> {82};
82 -> {83};
83 -> {84 91 98};
81 -> {82} [style=dotted];
82 -> {83} [style=dotted];
83 -> {84};
84 -> {85};
85 -> {86};
85 -> {86 93 100};
86 -> {87};
87 -> {103};
87 -> {88} [style=dotted];
88 -> {89} [style=dotted];
87 -> {88};
88 -> {89};
89 -> {105};
89 -> {90} [style=dotted];
90 -> {98} [style=dotted];
91 -> {92};
92 -> {93};
90 -> {91} [style=dotted];
91 -> {92} [style=dotted];
92 -> {100} [style=dotted];
93 -> {94};
94 -> {47} [color=green style=dashed];
94 -> {95} [style=dotted];
95 -> {96} [style=dotted];
94 -> {95};
95 -> {96};
96 -> {49} [color=green style=dashed];
96 -> {97} [style=dotted];
97 -> {98} [style=dotted];
98 -> {99};
99 -> {100};
98 -> {99} [style=dotted];
99 -> {100} [style=dotted];
100 -> {101};
101 -> {102};
102 -> {47} [color=green style=dashed];
102 -> {103};
103 -> {104};
104 -> {105};
104 -> {49} [color=green style=dashed];
105 -> {106};
106 -> {107};
107 -> {108};
108 -> {109};
}
@@ -5,127 +5,134 @@ digraph variableInitializedInTryBlock_kt {
subgraph cluster_0 {
color=red
0 [label="Enter function test" style="filled" fillcolor=red];
subgraph cluster_1 {
color=blue
1 [label="Enter block"];
2 [label="Variable declaration: lval b: R|kotlin/Boolean|"];
subgraph cluster_2 {
color=blue
3 [label="Try expression enter"];
subgraph cluster_3 {
color=blue
4 [label="Try main block enter"];
subgraph cluster_4 {
color=blue
5 [label="Enter block"];
6 [label="Function call: R|/getStringOrNull|()" style="filled" fillcolor=yellow];
7 [label="Exit lhs of ?:"];
8 [label="Enter rhs of ?:"];
9 [label="Jump: ^test Unit"];
10 [label="Stub" style="filled" fillcolor=gray];
11 [label="Lhs of ?: is not null"];
12 [label="Exit ?:"];
13 [label="Variable declaration: lval s: R|kotlin/String|"];
14 [label="Access variable R|<local>/s|"];
15 [label="Access variable R|kotlin/String.length|"];
16 [label="Const: Int(0)"];
17 [label="Equality operator !="];
18 [label="Assignment: R|<local>/b|"];
19 [label="Exit block"];
}
20 [label="Try main block exit"];
}
subgraph cluster_5 {
color=blue
21 [label="Enter finally"];
subgraph cluster_6 {
color=blue
22 [label="Enter block"];
23 [label="Function call: R|/test|()" style="filled" fillcolor=yellow];
24 [label="Exit block"];
}
25 [label="Exit finally"];
}
26 [label="Try expression exit"];
}
27 [label="Access variable R|<local>/b|"];
28 [label="Function call: R|/takeBoolean|(...)" style="filled" fillcolor=yellow];
29 [label="Exit block"];
}
30 [label="Exit function test" style="filled" fillcolor=red];
0 [label="Enter file variableInitializedInTryBlock.kt" style="filled" fillcolor=red];
1 [label="Exit file variableInitializedInTryBlock.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter function test" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
3 [label="Enter block"];
4 [label="Variable declaration: lval b: R|kotlin/Boolean|"];
subgraph cluster_3 {
color=blue
5 [label="Try expression enter"];
subgraph cluster_4 {
color=blue
6 [label="Try main block enter"];
subgraph cluster_5 {
color=blue
7 [label="Enter block"];
8 [label="Function call: R|/getStringOrNull|()" style="filled" fillcolor=yellow];
9 [label="Exit lhs of ?:"];
10 [label="Enter rhs of ?:"];
11 [label="Jump: ^test Unit"];
12 [label="Stub" style="filled" fillcolor=gray];
13 [label="Lhs of ?: is not null"];
14 [label="Exit ?:"];
15 [label="Variable declaration: lval s: R|kotlin/String|"];
16 [label="Access variable R|<local>/s|"];
17 [label="Access variable R|kotlin/String.length|"];
18 [label="Const: Int(0)"];
19 [label="Equality operator !="];
20 [label="Assignment: R|<local>/b|"];
21 [label="Exit block"];
}
22 [label="Try main block exit"];
}
subgraph cluster_6 {
color=blue
23 [label="Enter finally"];
subgraph cluster_7 {
color=blue
24 [label="Enter block"];
25 [label="Function call: R|/test|()" style="filled" fillcolor=yellow];
26 [label="Exit block"];
}
27 [label="Exit finally"];
}
28 [label="Try expression exit"];
}
29 [label="Access variable R|<local>/b|"];
30 [label="Function call: R|/takeBoolean|(...)" style="filled" fillcolor=yellow];
31 [label="Exit block"];
}
32 [label="Exit function test" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
2 -> {3};
3 -> {4};
3 -> {21} [label="onUncaughtException"];
4 -> {5};
5 -> {6};
5 -> {23} [label="onUncaughtException"];
6 -> {7};
6 -> {21} [label="onUncaughtException"];
7 -> {8 11};
7 -> {8};
8 -> {9};
9 -> {21} [label="return@/test"];
9 -> {10} [style=dotted];
10 -> {12} [style=dotted];
11 -> {12};
12 -> {13};
8 -> {23} [label="onUncaughtException"];
9 -> {10 13};
10 -> {11};
11 -> {23} [label="return@/test"];
11 -> {12} [style=dotted];
12 -> {14} [style=dotted];
13 -> {14};
14 -> {15};
14 -> {21} [label="onUncaughtException"];
15 -> {16};
15 -> {21} [label="onUncaughtException"];
16 -> {17};
16 -> {23} [label="onUncaughtException"];
17 -> {18};
17 -> {21} [label="onUncaughtException"];
17 -> {23} [label="onUncaughtException"];
18 -> {19};
19 -> {20};
19 -> {23} [label="onUncaughtException"];
20 -> {21};
21 -> {22};
22 -> {23};
23 -> {24};
24 -> {25};
25 -> {26};
25 -> {30} [label="return@/test"];
26 -> {27};
27 -> {28};
27 -> {32} [label="return@/test"];
28 -> {29};
29 -> {30};
subgraph cluster_7 {
color=red
31 [label="Enter function takeBoolean" style="filled" fillcolor=red];
subgraph cluster_8 {
color=blue
32 [label="Enter block"];
33 [label="Exit block"];
}
34 [label="Exit function takeBoolean" style="filled" fillcolor=red];
}
30 -> {31};
31 -> {32};
32 -> {33};
33 -> {34};
subgraph cluster_9 {
subgraph cluster_8 {
color=red
35 [label="Enter function getStringOrNull" style="filled" fillcolor=red];
subgraph cluster_10 {
33 [label="Enter function takeBoolean" style="filled" fillcolor=red];
subgraph cluster_9 {
color=blue
36 [label="Enter block"];
37 [label="Const: String(hello)"];
38 [label="Jump: ^getStringOrNull String(hello)"];
39 [label="Stub" style="filled" fillcolor=gray];
40 [label="Exit block" style="filled" fillcolor=gray];
34 [label="Enter block"];
35 [label="Exit block"];
}
41 [label="Exit function getStringOrNull" style="filled" fillcolor=red];
36 [label="Exit function takeBoolean" style="filled" fillcolor=red];
}
33 -> {34};
34 -> {35};
35 -> {36};
36 -> {37};
subgraph cluster_10 {
color=red
37 [label="Enter function getStringOrNull" style="filled" fillcolor=red];
subgraph cluster_11 {
color=blue
38 [label="Enter block"];
39 [label="Const: String(hello)"];
40 [label="Jump: ^getStringOrNull String(hello)"];
41 [label="Stub" style="filled" fillcolor=gray];
42 [label="Exit block" style="filled" fillcolor=gray];
}
43 [label="Exit function getStringOrNull" style="filled" fillcolor=red];
}
37 -> {38};
38 -> {41};
38 -> {39} [style=dotted];
39 -> {40} [style=dotted];
38 -> {39};
39 -> {40};
40 -> {43};
40 -> {41} [style=dotted];
41 -> {42} [style=dotted];
42 -> {43} [style=dotted];
}
+135 -128
View File
@@ -5,210 +5,215 @@ digraph when_kt {
subgraph cluster_0 {
color=red
0 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_1 {
0 [label="Enter file when.kt" style="filled" fillcolor=red];
1 [label="Exit file when.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
1 [label="Enter block"];
subgraph cluster_2 {
3 [label="Enter block"];
subgraph cluster_3 {
color=blue
2 [label="Enter when"];
subgraph cluster_3 {
color=blue
3 [label="Enter when branch condition "];
4 [label="Access variable R|<local>/x|"];
5 [label="Const: Int(1)"];
6 [label="Equality operator =="];
7 [label="Exit when branch condition"];
}
4 [label="Enter when"];
subgraph cluster_4 {
color=blue
8 [label="Enter when branch condition "];
9 [label="Access variable R|<local>/x|"];
10 [label="Const: Int(2)"];
11 [label="Function call: R|<local>/x|.R|kotlin/Int.rem|(...)" style="filled" fillcolor=yellow];
12 [label="Const: Int(0)"];
13 [label="Equality operator =="];
14 [label="Exit when branch condition"];
5 [label="Enter when branch condition "];
6 [label="Access variable R|<local>/x|"];
7 [label="Const: Int(1)"];
8 [label="Equality operator =="];
9 [label="Exit when branch condition"];
}
subgraph cluster_5 {
color=blue
15 [label="Enter when branch condition "];
16 [label="Const: Int(1)"];
17 [label="Const: Int(1)"];
18 [label="Function call: Int(1).R|kotlin/Int.minus|(...)" style="filled" fillcolor=yellow];
19 [label="Const: Int(0)"];
20 [label="Equality operator =="];
21 [label="Exit when branch condition"];
10 [label="Enter when branch condition "];
11 [label="Access variable R|<local>/x|"];
12 [label="Const: Int(2)"];
13 [label="Function call: R|<local>/x|.R|kotlin/Int.rem|(...)" style="filled" fillcolor=yellow];
14 [label="Const: Int(0)"];
15 [label="Equality operator =="];
16 [label="Exit when branch condition"];
}
subgraph cluster_6 {
color=blue
22 [label="Enter when branch condition else"];
17 [label="Enter when branch condition "];
18 [label="Const: Int(1)"];
19 [label="Const: Int(1)"];
20 [label="Function call: Int(1).R|kotlin/Int.minus|(...)" style="filled" fillcolor=yellow];
21 [label="Const: Int(0)"];
22 [label="Equality operator =="];
23 [label="Exit when branch condition"];
}
24 [label="Enter when branch result"];
subgraph cluster_7 {
color=blue
25 [label="Enter block"];
26 [label="Const: Int(5)"];
27 [label="Exit block"];
24 [label="Enter when branch condition else"];
25 [label="Exit when branch condition"];
}
28 [label="Exit when branch result"];
29 [label="Enter when branch result"];
26 [label="Enter when branch result"];
subgraph cluster_8 {
color=blue
30 [label="Enter block"];
31 [label="Jump: ^test_1 Unit"];
32 [label="Stub" style="filled" fillcolor=gray];
33 [label="Exit block" style="filled" fillcolor=gray];
27 [label="Enter block"];
28 [label="Const: Int(5)"];
29 [label="Exit block"];
}
34 [label="Exit when branch result" style="filled" fillcolor=gray];
35 [label="Enter when branch result"];
30 [label="Exit when branch result"];
31 [label="Enter when branch result"];
subgraph cluster_9 {
color=blue
36 [label="Enter block"];
37 [label="Const: Int(20)"];
38 [label="Exit block"];
32 [label="Enter block"];
33 [label="Jump: ^test_1 Unit"];
34 [label="Stub" style="filled" fillcolor=gray];
35 [label="Exit block" style="filled" fillcolor=gray];
}
39 [label="Exit when branch result"];
40 [label="Enter when branch result"];
36 [label="Exit when branch result" style="filled" fillcolor=gray];
37 [label="Enter when branch result"];
subgraph cluster_10 {
color=blue
41 [label="Enter block"];
42 [label="Const: Int(10)"];
43 [label="Exit block"];
38 [label="Enter block"];
39 [label="Const: Int(20)"];
40 [label="Exit block"];
}
44 [label="Exit when branch result"];
45 [label="Exit when"];
41 [label="Exit when branch result"];
42 [label="Enter when branch result"];
subgraph cluster_11 {
color=blue
43 [label="Enter block"];
44 [label="Const: Int(10)"];
45 [label="Exit block"];
}
46 [label="Exit when branch result"];
47 [label="Exit when"];
}
46 [label="Variable declaration: lval y: R|kotlin/Int|"];
47 [label="Exit block"];
48 [label="Variable declaration: lval y: R|kotlin/Int|"];
49 [label="Exit block"];
}
48 [label="Exit function test_1" style="filled" fillcolor=red];
50 [label="Exit function test_1" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
2 -> {3};
3 -> {4};
4 -> {5};
5 -> {6};
6 -> {7};
7 -> {8 40};
7 -> {8};
8 -> {9};
9 -> {10};
9 -> {10 42};
10 -> {11};
11 -> {12};
12 -> {13};
13 -> {14};
14 -> {15 35};
14 -> {15};
15 -> {16};
16 -> {17};
16 -> {17 37};
17 -> {18};
18 -> {19};
19 -> {20};
20 -> {21};
21 -> {22 29};
21 -> {22};
22 -> {23};
23 -> {24};
23 -> {24 31};
24 -> {25};
25 -> {26};
26 -> {27};
27 -> {28};
28 -> {45};
28 -> {29};
29 -> {30};
30 -> {31};
31 -> {48};
31 -> {32} [style=dotted];
32 -> {33} [style=dotted];
30 -> {47};
31 -> {32};
32 -> {33};
33 -> {50};
33 -> {34} [style=dotted];
34 -> {45} [style=dotted];
35 -> {36};
36 -> {37};
34 -> {35} [style=dotted];
35 -> {36} [style=dotted];
36 -> {47} [style=dotted];
37 -> {38};
38 -> {39};
39 -> {45};
39 -> {40};
40 -> {41};
41 -> {42};
41 -> {47};
42 -> {43};
43 -> {44};
44 -> {45};
45 -> {46};
46 -> {47};
47 -> {48};
subgraph cluster_11 {
color=red
49 [label="Enter class A" style="filled" fillcolor=red];
50 [label="Exit class A" style="filled" fillcolor=red];
}
49 -> {50} [color=green];
48 -> {49};
49 -> {50};
subgraph cluster_12 {
color=red
51 [label="Enter class B" style="filled" fillcolor=red];
52 [label="Exit class B" style="filled" fillcolor=red];
51 [label="Enter class A" style="filled" fillcolor=red];
52 [label="Exit class A" style="filled" fillcolor=red];
}
51 -> {52} [color=green];
subgraph cluster_13 {
color=red
53 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_14 {
color=blue
54 [label="Enter block"];
subgraph cluster_15 {
color=blue
55 [label="Enter when"];
subgraph cluster_16 {
color=blue
56 [label="Enter when branch condition "];
subgraph cluster_17 {
color=blue
57 [label="Enter &&"];
58 [label="Access variable R|<local>/x|"];
59 [label="Type operator: (R|<local>/x| is R|A|)"];
60 [label="Exit left part of &&"];
61 [label="Enter right part of &&"];
62 [label="Access variable R|<local>/x|"];
63 [label="Smart cast: R|<local>/x|"];
64 [label="Type operator: (R|<local>/x| is R|B|)"];
65 [label="Exit &&"];
}
66 [label="Exit when branch condition"];
}
67 [label="Synthetic else branch"];
68 [label="Enter when branch result"];
subgraph cluster_18 {
color=blue
69 [label="Enter block"];
70 [label="Access variable R|<local>/x|"];
71 [label="Smart cast: R|<local>/x|"];
72 [label="Type operator: (R|<local>/x| is R|A|)"];
73 [label="Exit block"];
}
74 [label="Exit when branch result"];
75 [label="Exit when"];
}
76 [label="Exit block"];
}
77 [label="Exit function test_2" style="filled" fillcolor=red];
53 [label="Enter class B" style="filled" fillcolor=red];
54 [label="Exit class B" style="filled" fillcolor=red];
}
53 -> {54} [color=green];
subgraph cluster_14 {
color=red
55 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_15 {
color=blue
56 [label="Enter block"];
subgraph cluster_16 {
color=blue
57 [label="Enter when"];
subgraph cluster_17 {
color=blue
58 [label="Enter when branch condition "];
subgraph cluster_18 {
color=blue
59 [label="Enter &&"];
60 [label="Access variable R|<local>/x|"];
61 [label="Type operator: (R|<local>/x| is R|A|)"];
62 [label="Exit left part of &&"];
63 [label="Enter right part of &&"];
64 [label="Access variable R|<local>/x|"];
65 [label="Smart cast: R|<local>/x|"];
66 [label="Type operator: (R|<local>/x| is R|B|)"];
67 [label="Exit &&"];
}
68 [label="Exit when branch condition"];
}
69 [label="Synthetic else branch"];
70 [label="Enter when branch result"];
subgraph cluster_19 {
color=blue
71 [label="Enter block"];
72 [label="Access variable R|<local>/x|"];
73 [label="Smart cast: R|<local>/x|"];
74 [label="Type operator: (R|<local>/x| is R|A|)"];
75 [label="Exit block"];
}
76 [label="Exit when branch result"];
77 [label="Exit when"];
}
78 [label="Exit block"];
}
79 [label="Exit function test_2" style="filled" fillcolor=red];
}
53 -> {54};
54 -> {55};
55 -> {56};
56 -> {57};
57 -> {58};
58 -> {59};
59 -> {60};
60 -> {61 65};
60 -> {61};
61 -> {62};
62 -> {63};
62 -> {63 67};
63 -> {64};
64 -> {65};
65 -> {66};
66 -> {67 68};
67 -> {75};
68 -> {69};
69 -> {70};
66 -> {67};
67 -> {68};
68 -> {69 70};
69 -> {77};
70 -> {71};
71 -> {72};
72 -> {73};
@@ -216,5 +221,7 @@ digraph when_kt {
74 -> {75};
75 -> {76};
76 -> {77};
77 -> {78};
78 -> {79};
}
@@ -5,52 +5,59 @@ digraph classCallInLambda_kt {
subgraph cluster_0 {
color=red
0 [label="Enter function test" style="filled" fillcolor=red];
subgraph cluster_1 {
0 [label="Enter file classCallInLambda.kt" style="filled" fillcolor=red];
1 [label="Exit file classCallInLambda.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter function test" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
1 [label="Enter block"];
2 [label="Access variable R|<local>/x|"];
3 [label="Postponed enter to lambda"];
subgraph cluster_2 {
3 [label="Enter block"];
4 [label="Access variable R|<local>/x|"];
5 [label="Postponed enter to lambda"];
subgraph cluster_3 {
color=blue
4 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_3 {
6 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_4 {
color=blue
5 [label="Enter block"];
6 [label="Access variable R|<local>/it|"];
7 [label="::class call"];
8 [label="Exit block"];
7 [label="Enter block"];
8 [label="Access variable R|<local>/it|"];
9 [label="::class call"];
10 [label="Exit block"];
}
9 [label="Exit function <anonymous>" style="filled" fillcolor=red];
11 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
10 [label="Postponed exit from lambda"];
11 [label="Function call: R|<local>/x|.R|kotlin/let|<R|kotlin/String|, R|kotlin/reflect/KClass<out kotlin/String>|>(...)" style="filled" fillcolor=yellow];
12 [label="Jump: ^test R|<local>/x|.R|kotlin/let|<R|kotlin/String|, R|kotlin/reflect/KClass<out kotlin/String>|>(<L> = let@fun <anonymous>(it: R|kotlin/String|): R|kotlin/reflect/KClass<out kotlin/String>| <inline=Inline, kind=EXACTLY_ONCE> {
12 [label="Postponed exit from lambda"];
13 [label="Function call: R|<local>/x|.R|kotlin/let|<R|kotlin/String|, R|kotlin/reflect/KClass<out kotlin/String>|>(...)" style="filled" fillcolor=yellow];
14 [label="Jump: ^test R|<local>/x|.R|kotlin/let|<R|kotlin/String|, R|kotlin/reflect/KClass<out kotlin/String>|>(<L> = let@fun <anonymous>(it: R|kotlin/String|): R|kotlin/reflect/KClass<out kotlin/String>| <inline=Inline, kind=EXACTLY_ONCE> {
^ <getClass>(R|<local>/it|)
}
)"];
13 [label="Stub" style="filled" fillcolor=gray];
14 [label="Exit block" style="filled" fillcolor=gray];
15 [label="Stub" style="filled" fillcolor=gray];
16 [label="Exit block" style="filled" fillcolor=gray];
}
15 [label="Exit function test" style="filled" fillcolor=red];
17 [label="Exit function test" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
2 -> {3};
3 -> {4 11};
3 -> {10} [style=dotted];
3 -> {4} [style=dashed];
3 -> {4};
4 -> {5};
5 -> {6};
5 -> {6 13};
5 -> {12} [style=dotted];
5 -> {6} [style=dashed];
6 -> {7};
7 -> {8};
8 -> {9};
9 -> {10};
10 -> {11};
11 -> {12};
12 -> {15};
12 -> {13} [style=dotted];
13 -> {14} [style=dotted];
12 -> {13};
13 -> {14};
14 -> {17};
14 -> {15} [style=dotted];
15 -> {16} [style=dotted];
16 -> {17} [style=dotted];
}
@@ -5,96 +5,103 @@ digraph elvisReturnSimple_kt {
subgraph cluster_0 {
color=red
0 [label="Enter function stringReturnInLeftLen" style="filled" fillcolor=red];
subgraph cluster_1 {
0 [label="Enter file elvisReturnSimple.kt" style="filled" fillcolor=red];
1 [label="Exit file elvisReturnSimple.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter function stringReturnInLeftLen" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
1 [label="Enter block"];
subgraph cluster_2 {
3 [label="Enter block"];
subgraph cluster_3 {
color=blue
2 [label="Enter when"];
subgraph cluster_3 {
color=blue
3 [label="Enter when branch condition "];
4 [label="Access variable R|<local>/s|"];
5 [label="Const: Null(null)"];
6 [label="Equality operator !="];
7 [label="Exit when branch condition"];
}
4 [label="Enter when"];
subgraph cluster_4 {
color=blue
8 [label="Enter when branch condition else"];
5 [label="Enter when branch condition "];
6 [label="Access variable R|<local>/s|"];
7 [label="Const: Null(null)"];
8 [label="Equality operator !="];
9 [label="Exit when branch condition"];
}
10 [label="Enter when branch result"];
subgraph cluster_5 {
color=blue
11 [label="Enter block"];
12 [label="Const: Null(null)"];
13 [label="Exit block"];
10 [label="Enter when branch condition else"];
11 [label="Exit when branch condition"];
}
14 [label="Exit when branch result"];
15 [label="Enter when branch result"];
12 [label="Enter when branch result"];
subgraph cluster_6 {
color=blue
16 [label="Enter block"];
17 [label="Access variable R|<local>/s|"];
18 [label="Smart cast: R|<local>/s|"];
19 [label="Access variable R|kotlin/String.length|"];
20 [label="Jump: ^stringReturnInLeftLen R|<local>/s|.R|kotlin/String.length|"];
21 [label="Stub" style="filled" fillcolor=gray];
22 [label="Exit block" style="filled" fillcolor=gray];
13 [label="Enter block"];
14 [label="Const: Null(null)"];
15 [label="Exit block"];
}
23 [label="Exit when branch result" style="filled" fillcolor=gray];
24 [label="Exit when"];
16 [label="Exit when branch result"];
17 [label="Enter when branch result"];
subgraph cluster_7 {
color=blue
18 [label="Enter block"];
19 [label="Access variable R|<local>/s|"];
20 [label="Smart cast: R|<local>/s|"];
21 [label="Access variable R|kotlin/String.length|"];
22 [label="Jump: ^stringReturnInLeftLen R|<local>/s|.R|kotlin/String.length|"];
23 [label="Stub" style="filled" fillcolor=gray];
24 [label="Exit block" style="filled" fillcolor=gray];
}
25 [label="Exit when branch result" style="filled" fillcolor=gray];
26 [label="Exit when"];
}
25 [label="Exit lhs of ?:"];
26 [label="Enter rhs of ?:"];
27 [label="Const: Int(0)"];
28 [label="Jump: ^stringReturnInLeftLen Int(0)"];
29 [label="Stub" style="filled" fillcolor=gray];
30 [label="Lhs of ?: is not null" style="filled" fillcolor=gray];
31 [label="Exit ?:" style="filled" fillcolor=gray];
32 [label="Variable declaration: lval s1: R|kotlin/Nothing|" style="filled" fillcolor=gray];
33 [label="Exit block" style="filled" fillcolor=gray];
27 [label="Exit lhs of ?:"];
28 [label="Enter rhs of ?:"];
29 [label="Const: Int(0)"];
30 [label="Jump: ^stringReturnInLeftLen Int(0)"];
31 [label="Stub" style="filled" fillcolor=gray];
32 [label="Lhs of ?: is not null" style="filled" fillcolor=gray];
33 [label="Exit ?:" style="filled" fillcolor=gray];
34 [label="Variable declaration: lval s1: R|kotlin/Nothing|" style="filled" fillcolor=gray];
35 [label="Exit block" style="filled" fillcolor=gray];
}
34 [label="Exit function stringReturnInLeftLen" style="filled" fillcolor=red];
36 [label="Exit function stringReturnInLeftLen" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
2 -> {3};
3 -> {4};
4 -> {5};
5 -> {6};
6 -> {7};
7 -> {8 15};
7 -> {8};
8 -> {9};
9 -> {10};
9 -> {10 17};
10 -> {11};
11 -> {12};
12 -> {13};
13 -> {14};
14 -> {24};
14 -> {15};
15 -> {16};
16 -> {17};
16 -> {26};
17 -> {18};
18 -> {19};
19 -> {20};
20 -> {34};
20 -> {21} [style=dotted];
21 -> {22} [style=dotted];
20 -> {21};
21 -> {22};
22 -> {36};
22 -> {23} [style=dotted];
23 -> {24} [style=dotted];
24 -> {25};
25 -> {26};
25 -> {30} [style=dotted];
24 -> {25} [style=dotted];
25 -> {26} [style=dotted];
26 -> {27};
27 -> {28};
28 -> {34};
28 -> {29} [style=dotted];
29 -> {31} [style=dotted];
27 -> {32} [style=dotted];
28 -> {29};
29 -> {30};
30 -> {36};
30 -> {31} [style=dotted];
31 -> {32} [style=dotted];
31 -> {33} [style=dotted];
32 -> {33} [style=dotted];
33 -> {34} [style=dotted];
34 -> {35} [style=dotted];
35 -> {36} [style=dotted];
}
@@ -5,113 +5,118 @@ digraph exhaustiveWhenAndDNNType_kt {
subgraph cluster_0 {
color=red
0 [label="Enter class SomeEnum" style="filled" fillcolor=red];
subgraph cluster_1 {
color=blue
1 [label="Enter function <init>" style="filled" fillcolor=red];
2 [label="Delegated constructor call: super<R|kotlin/Enum<SomeEnum>|>()" style="filled" fillcolor=yellow];
3 [label="Exit function <init>" style="filled" fillcolor=red];
}
4 [label="Exit class SomeEnum" style="filled" fillcolor=red];
0 [label="Enter file exhaustiveWhenAndDNNType.kt" style="filled" fillcolor=red];
1 [label="Exit file exhaustiveWhenAndDNNType.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
0 -> {4} [style=dotted];
0 -> {1} [style=dashed];
1 -> {2};
2 -> {3};
3 -> {4} [color=green];
subgraph cluster_2 {
subgraph cluster_1 {
color=red
5 [label="Enter class B" style="filled" fillcolor=red];
subgraph cluster_3 {
2 [label="Enter class SomeEnum" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
6 [label="Enter function <init>" style="filled" fillcolor=red];
7 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
8 [label="Exit function <init>" style="filled" fillcolor=red];
3 [label="Enter function <init>" style="filled" fillcolor=red];
4 [label="Delegated constructor call: super<R|kotlin/Enum<SomeEnum>|>()" style="filled" fillcolor=yellow];
5 [label="Exit function <init>" style="filled" fillcolor=red];
}
9 [label="Exit class B" style="filled" fillcolor=red];
6 [label="Exit class SomeEnum" style="filled" fillcolor=red];
}
2 -> {3} [color=green];
2 -> {6} [style=dotted];
2 -> {3} [style=dashed];
3 -> {4};
4 -> {5};
5 -> {6} [color=green];
5 -> {9} [style=dotted];
5 -> {6} [style=dashed];
6 -> {7};
7 -> {8};
8 -> {9} [color=green];
subgraph cluster_4 {
subgraph cluster_3 {
color=red
10 [label="Enter function takeB" style="filled" fillcolor=red];
subgraph cluster_5 {
7 [label="Enter class B" style="filled" fillcolor=red];
subgraph cluster_4 {
color=blue
11 [label="Enter block"];
12 [label="Exit block"];
8 [label="Enter function <init>" style="filled" fillcolor=red];
9 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
10 [label="Exit function <init>" style="filled" fillcolor=red];
}
13 [label="Exit function takeB" style="filled" fillcolor=red];
11 [label="Exit class B" style="filled" fillcolor=red];
}
10 -> {11};
11 -> {12};
12 -> {13};
7 -> {8} [color=green];
7 -> {11} [style=dotted];
7 -> {8} [style=dashed];
8 -> {9};
9 -> {10};
10 -> {11} [color=green];
subgraph cluster_6 {
subgraph cluster_5 {
color=red
14 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_7 {
12 [label="Enter function takeB" style="filled" fillcolor=red];
subgraph cluster_6 {
color=blue
15 [label="Enter block"];
16 [label="Access qualifier /SomeEnum"];
17 [label="Access variable R|/SomeEnum.A1|"];
18 [label="Variable declaration: lval flag: R|SomeEnum|"];
subgraph cluster_8 {
13 [label="Enter block"];
14 [label="Exit block"];
}
15 [label="Exit function takeB" style="filled" fillcolor=red];
}
12 -> {13};
13 -> {14};
14 -> {15};
subgraph cluster_7 {
color=red
16 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_8 {
color=blue
17 [label="Enter block"];
18 [label="Access qualifier /SomeEnum"];
19 [label="Access variable R|/SomeEnum.A1|"];
20 [label="Variable declaration: lval flag: R|SomeEnum|"];
subgraph cluster_9 {
color=blue
19 [label="Enter when"];
20 [label="Access variable R|<local>/flag|"];
21 [label="Check not null: R|<local>/flag|!!" style="filled" fillcolor=yellow];
subgraph cluster_9 {
color=blue
22 [label="Enter when branch condition "];
23 [label="Exit $subj"];
24 [label="Access qualifier /SomeEnum"];
25 [label="Access variable R|/SomeEnum.A1|"];
26 [label="Equality operator =="];
27 [label="Exit when branch condition"];
}
21 [label="Enter when"];
22 [label="Access variable R|<local>/flag|"];
23 [label="Check not null: R|<local>/flag|!!" style="filled" fillcolor=yellow];
subgraph cluster_10 {
color=blue
28 [label="Enter when branch condition "];
29 [label="Exit $subj"];
30 [label="Access qualifier /SomeEnum"];
31 [label="Access variable R|/SomeEnum.A2|"];
32 [label="Equality operator =="];
33 [label="Exit when branch condition"];
24 [label="Enter when branch condition "];
25 [label="Exit $subj"];
26 [label="Access qualifier /SomeEnum"];
27 [label="Access variable R|/SomeEnum.A1|"];
28 [label="Equality operator =="];
29 [label="Exit when branch condition"];
}
34 [label="Enter when branch result"];
subgraph cluster_11 {
color=blue
35 [label="Enter block"];
36 [label="Function call: R|/B.B|()" style="filled" fillcolor=yellow];
37 [label="Exit block"];
30 [label="Enter when branch condition "];
31 [label="Exit $subj"];
32 [label="Access qualifier /SomeEnum"];
33 [label="Access variable R|/SomeEnum.A2|"];
34 [label="Equality operator =="];
35 [label="Exit when branch condition"];
}
38 [label="Exit when branch result"];
39 [label="Enter when branch result"];
36 [label="Enter when branch result"];
subgraph cluster_12 {
color=blue
40 [label="Enter block"];
41 [label="Function call: R|/B.B|()" style="filled" fillcolor=yellow];
42 [label="Exit block"];
37 [label="Enter block"];
38 [label="Function call: R|/B.B|()" style="filled" fillcolor=yellow];
39 [label="Exit block"];
}
43 [label="Exit when branch result"];
44 [label="Exit when"];
40 [label="Exit when branch result"];
41 [label="Enter when branch result"];
subgraph cluster_13 {
color=blue
42 [label="Enter block"];
43 [label="Function call: R|/B.B|()" style="filled" fillcolor=yellow];
44 [label="Exit block"];
}
45 [label="Exit when branch result"];
46 [label="Exit when"];
}
45 [label="Variable declaration: lval b: R|B|"];
46 [label="Access variable R|<local>/b|"];
47 [label="Function call: R|/takeB|(...)" style="filled" fillcolor=yellow];
48 [label="Exit block"];
47 [label="Variable declaration: lval b: R|B|"];
48 [label="Access variable R|<local>/b|"];
49 [label="Function call: R|/takeB|(...)" style="filled" fillcolor=yellow];
50 [label="Exit block"];
}
49 [label="Exit function test_1" style="filled" fillcolor=red];
51 [label="Exit function test_1" style="filled" fillcolor=red];
}
14 -> {15};
15 -> {16};
16 -> {17};
17 -> {18};
18 -> {19};
@@ -123,9 +128,9 @@ digraph exhaustiveWhenAndDNNType_kt {
24 -> {25};
25 -> {26};
26 -> {27};
27 -> {28 39};
27 -> {28};
28 -> {29};
29 -> {30};
29 -> {30 41};
30 -> {31};
31 -> {32};
32 -> {33};
@@ -134,9 +139,9 @@ digraph exhaustiveWhenAndDNNType_kt {
35 -> {36};
36 -> {37};
37 -> {38};
38 -> {44};
38 -> {39};
39 -> {40};
40 -> {41};
40 -> {46};
41 -> {42};
42 -> {43};
43 -> {44};
@@ -145,66 +150,66 @@ digraph exhaustiveWhenAndDNNType_kt {
46 -> {47};
47 -> {48};
48 -> {49};
49 -> {50};
50 -> {51};
subgraph cluster_13 {
subgraph cluster_14 {
color=red
50 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_14 {
52 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_15 {
color=blue
51 [label="Enter block"];
52 [label="Access qualifier /SomeEnum"];
53 [label="Access variable R|/SomeEnum.A1|"];
54 [label="Variable declaration: lval flag: R|SomeEnum|"];
subgraph cluster_15 {
53 [label="Enter block"];
54 [label="Access qualifier /SomeEnum"];
55 [label="Access variable R|/SomeEnum.A1|"];
56 [label="Variable declaration: lval flag: R|SomeEnum|"];
subgraph cluster_16 {
color=blue
55 [label="Enter when"];
56 [label="Access variable R|<local>/flag|"];
57 [label="Check not null: R|<local>/flag|!!" style="filled" fillcolor=yellow];
subgraph cluster_16 {
color=blue
58 [label="Enter when branch condition "];
59 [label="Exit $subj"];
60 [label="Access qualifier /SomeEnum"];
61 [label="Access variable R|/SomeEnum.A1|"];
62 [label="Equality operator =="];
63 [label="Exit when branch condition"];
}
57 [label="Enter when"];
58 [label="Access variable R|<local>/flag|"];
59 [label="Check not null: R|<local>/flag|!!" style="filled" fillcolor=yellow];
subgraph cluster_17 {
color=blue
64 [label="Enter when branch condition "];
65 [label="Exit $subj"];
66 [label="Access qualifier /SomeEnum"];
67 [label="Access variable R|/SomeEnum.A2|"];
68 [label="Equality operator =="];
69 [label="Exit when branch condition"];
60 [label="Enter when branch condition "];
61 [label="Exit $subj"];
62 [label="Access qualifier /SomeEnum"];
63 [label="Access variable R|/SomeEnum.A1|"];
64 [label="Equality operator =="];
65 [label="Exit when branch condition"];
}
70 [label="Enter when branch result"];
subgraph cluster_18 {
color=blue
71 [label="Enter block"];
72 [label="Function call: R|/B.B|()" style="filled" fillcolor=yellow];
73 [label="Exit block"];
66 [label="Enter when branch condition "];
67 [label="Exit $subj"];
68 [label="Access qualifier /SomeEnum"];
69 [label="Access variable R|/SomeEnum.A2|"];
70 [label="Equality operator =="];
71 [label="Exit when branch condition"];
}
74 [label="Exit when branch result"];
75 [label="Enter when branch result"];
72 [label="Enter when branch result"];
subgraph cluster_19 {
color=blue
76 [label="Enter block"];
77 [label="Function call: R|/B.B|()" style="filled" fillcolor=yellow];
78 [label="Exit block"];
73 [label="Enter block"];
74 [label="Function call: R|/B.B|()" style="filled" fillcolor=yellow];
75 [label="Exit block"];
}
79 [label="Exit when branch result"];
80 [label="Exit when"];
76 [label="Exit when branch result"];
77 [label="Enter when branch result"];
subgraph cluster_20 {
color=blue
78 [label="Enter block"];
79 [label="Function call: R|/B.B|()" style="filled" fillcolor=yellow];
80 [label="Exit block"];
}
81 [label="Exit when branch result"];
82 [label="Exit when"];
}
81 [label="Variable declaration: lval b: R|B|"];
82 [label="Access variable R|<local>/b|"];
83 [label="Function call: R|/takeB|(...)" style="filled" fillcolor=yellow];
84 [label="Exit block"];
83 [label="Variable declaration: lval b: R|B|"];
84 [label="Access variable R|<local>/b|"];
85 [label="Function call: R|/takeB|(...)" style="filled" fillcolor=yellow];
86 [label="Exit block"];
}
85 [label="Exit function test_2" style="filled" fillcolor=red];
87 [label="Exit function test_2" style="filled" fillcolor=red];
}
50 -> {51};
51 -> {52};
52 -> {53};
53 -> {54};
54 -> {55};
@@ -216,9 +221,9 @@ digraph exhaustiveWhenAndDNNType_kt {
60 -> {61};
61 -> {62};
62 -> {63};
63 -> {64 75};
63 -> {64};
64 -> {65};
65 -> {66};
65 -> {66 77};
66 -> {67};
67 -> {68};
68 -> {69};
@@ -227,9 +232,9 @@ digraph exhaustiveWhenAndDNNType_kt {
71 -> {72};
72 -> {73};
73 -> {74};
74 -> {80};
74 -> {75};
75 -> {76};
76 -> {77};
76 -> {82};
77 -> {78};
78 -> {79};
79 -> {80};
@@ -238,65 +243,65 @@ digraph exhaustiveWhenAndDNNType_kt {
82 -> {83};
83 -> {84};
84 -> {85};
85 -> {86};
86 -> {87};
subgraph cluster_20 {
subgraph cluster_21 {
color=red
86 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_21 {
88 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_22 {
color=blue
87 [label="Enter block"];
88 [label="Access qualifier /SomeEnum"];
89 [label="Access variable R|/SomeEnum.A1|"];
90 [label="Variable declaration: lval flag: R|SomeEnum|"];
subgraph cluster_22 {
89 [label="Enter block"];
90 [label="Access qualifier /SomeEnum"];
91 [label="Access variable R|/SomeEnum.A1|"];
92 [label="Variable declaration: lval flag: R|SomeEnum|"];
subgraph cluster_23 {
color=blue
91 [label="Enter when"];
92 [label="Access variable R|<local>/flag|"];
subgraph cluster_23 {
color=blue
93 [label="Enter when branch condition "];
94 [label="Exit $subj"];
95 [label="Access qualifier /SomeEnum"];
96 [label="Access variable R|/SomeEnum.A1|"];
97 [label="Equality operator =="];
98 [label="Exit when branch condition"];
}
93 [label="Enter when"];
94 [label="Access variable R|<local>/flag|"];
subgraph cluster_24 {
color=blue
99 [label="Enter when branch condition "];
100 [label="Exit $subj"];
101 [label="Access qualifier /SomeEnum"];
102 [label="Access variable R|/SomeEnum.A2|"];
103 [label="Equality operator =="];
104 [label="Exit when branch condition"];
95 [label="Enter when branch condition "];
96 [label="Exit $subj"];
97 [label="Access qualifier /SomeEnum"];
98 [label="Access variable R|/SomeEnum.A1|"];
99 [label="Equality operator =="];
100 [label="Exit when branch condition"];
}
105 [label="Enter when branch result"];
subgraph cluster_25 {
color=blue
106 [label="Enter block"];
107 [label="Function call: R|/B.B|()" style="filled" fillcolor=yellow];
108 [label="Exit block"];
101 [label="Enter when branch condition "];
102 [label="Exit $subj"];
103 [label="Access qualifier /SomeEnum"];
104 [label="Access variable R|/SomeEnum.A2|"];
105 [label="Equality operator =="];
106 [label="Exit when branch condition"];
}
109 [label="Exit when branch result"];
110 [label="Enter when branch result"];
107 [label="Enter when branch result"];
subgraph cluster_26 {
color=blue
111 [label="Enter block"];
112 [label="Function call: R|/B.B|()" style="filled" fillcolor=yellow];
113 [label="Exit block"];
108 [label="Enter block"];
109 [label="Function call: R|/B.B|()" style="filled" fillcolor=yellow];
110 [label="Exit block"];
}
114 [label="Exit when branch result"];
115 [label="Exit when"];
111 [label="Exit when branch result"];
112 [label="Enter when branch result"];
subgraph cluster_27 {
color=blue
113 [label="Enter block"];
114 [label="Function call: R|/B.B|()" style="filled" fillcolor=yellow];
115 [label="Exit block"];
}
116 [label="Exit when branch result"];
117 [label="Exit when"];
}
116 [label="Variable declaration: lval b: R|B|"];
117 [label="Access variable R|<local>/b|"];
118 [label="Function call: R|/takeB|(...)" style="filled" fillcolor=yellow];
119 [label="Exit block"];
118 [label="Variable declaration: lval b: R|B|"];
119 [label="Access variable R|<local>/b|"];
120 [label="Function call: R|/takeB|(...)" style="filled" fillcolor=yellow];
121 [label="Exit block"];
}
120 [label="Exit function test_3" style="filled" fillcolor=red];
122 [label="Exit function test_3" style="filled" fillcolor=red];
}
86 -> {87};
87 -> {88};
88 -> {89};
89 -> {90};
90 -> {91};
@@ -307,9 +312,9 @@ digraph exhaustiveWhenAndDNNType_kt {
95 -> {96};
96 -> {97};
97 -> {98};
98 -> {99 110};
98 -> {99};
99 -> {100};
100 -> {101};
100 -> {101 112};
101 -> {102};
102 -> {103};
103 -> {104};
@@ -318,9 +323,9 @@ digraph exhaustiveWhenAndDNNType_kt {
106 -> {107};
107 -> {108};
108 -> {109};
109 -> {115};
109 -> {110};
110 -> {111};
111 -> {112};
111 -> {117};
112 -> {113};
113 -> {114};
114 -> {115};
@@ -329,5 +334,7 @@ digraph exhaustiveWhenAndDNNType_kt {
117 -> {118};
118 -> {119};
119 -> {120};
120 -> {121};
121 -> {122};
}
@@ -5,88 +5,95 @@ digraph secondaryConstructorCfg_kt {
subgraph cluster_0 {
color=red
0 [label="Enter class B" style="filled" fillcolor=red];
subgraph cluster_1 {
0 [label="Enter file secondaryConstructorCfg.kt" style="filled" fillcolor=red];
1 [label="Exit file secondaryConstructorCfg.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter class B" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
1 [label="Enter function <init>" style="filled" fillcolor=red];
2 [label="Access variable R|<local>/p0|"];
3 [label="Delegated constructor call: this<R|B|>(...)" style="filled" fillcolor=yellow];
subgraph cluster_2 {
color=blue
4 [label="Enter property" style="filled" fillcolor=red];
5 [label="Access variable R|<local>/p0|"];
6 [label="Exit property" style="filled" fillcolor=red];
}
3 [label="Enter function <init>" style="filled" fillcolor=red];
4 [label="Access variable R|<local>/p0|"];
5 [label="Delegated constructor call: this<R|B|>(...)" style="filled" fillcolor=yellow];
subgraph cluster_3 {
color=blue
7 [label="Enter property" style="filled" fillcolor=red];
8 [label="Access variable R|<local>/p0|"];
9 [label="Access variable R|kotlin/String.length|"];
10 [label="Exit property" style="filled" fillcolor=red];
6 [label="Enter property" style="filled" fillcolor=red];
7 [label="Access variable R|<local>/p0|"];
8 [label="Exit property" style="filled" fillcolor=red];
}
subgraph cluster_4 {
color=blue
11 [label="Enter init block" style="filled" fillcolor=red];
subgraph cluster_5 {
color=blue
12 [label="Enter block"];
13 [label="Access variable R|<local>/p0|"];
14 [label="Access variable R|kotlin/String.length|"];
15 [label="Assignment: R|/B.p1|"];
16 [label="Const: String()"];
17 [label="Assignment: R|/B.p3|"];
18 [label="Exit block"];
}
19 [label="Exit init block" style="filled" fillcolor=red];
9 [label="Enter property" style="filled" fillcolor=red];
10 [label="Access variable R|<local>/p0|"];
11 [label="Access variable R|kotlin/String.length|"];
12 [label="Exit property" style="filled" fillcolor=red];
}
subgraph cluster_6 {
subgraph cluster_5 {
color=blue
20 [label="Enter function <init>" style="filled" fillcolor=red];
21 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
22 [label="Exit function <init>" style="filled" fillcolor=red];
13 [label="Enter init block" style="filled" fillcolor=red];
subgraph cluster_6 {
color=blue
14 [label="Enter block"];
15 [label="Access variable R|<local>/p0|"];
16 [label="Access variable R|kotlin/String.length|"];
17 [label="Assignment: R|/B.p1|"];
18 [label="Const: String()"];
19 [label="Assignment: R|/B.p3|"];
20 [label="Exit block"];
}
21 [label="Exit init block" style="filled" fillcolor=red];
}
subgraph cluster_7 {
color=blue
23 [label="Enter block"];
24 [label="Access variable R|<local>/p1|"];
25 [label="Assignment: R|/B.p3|"];
26 [label="Exit block"];
22 [label="Enter function <init>" style="filled" fillcolor=red];
23 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
24 [label="Exit function <init>" style="filled" fillcolor=red];
}
27 [label="Exit function <init>" style="filled" fillcolor=red];
subgraph cluster_8 {
color=blue
25 [label="Enter block"];
26 [label="Access variable R|<local>/p1|"];
27 [label="Assignment: R|/B.p3|"];
28 [label="Exit block"];
}
29 [label="Exit function <init>" style="filled" fillcolor=red];
}
28 [label="Exit class B" style="filled" fillcolor=red];
30 [label="Exit class B" style="filled" fillcolor=red];
}
0 -> {1 4} [color=green];
0 -> {28} [style=dotted];
0 -> {1 4 7 11 20} [style=dashed];
1 -> {2};
2 -> {3};
3 -> {4} [color=green label="return@/B.B"];
3 -> {23} [color=red];
2 -> {3 6} [color=green];
2 -> {30} [style=dotted];
2 -> {3 6 9 13 22} [style=dashed];
3 -> {4};
4 -> {5};
5 -> {6};
6 -> {7} [color=green];
5 -> {6} [color=green label="return@/B.B"];
5 -> {25} [color=red];
6 -> {7};
7 -> {8};
8 -> {9};
8 -> {9} [color=green];
9 -> {10};
10 -> {11} [color=green];
10 -> {11};
11 -> {12};
12 -> {13};
12 -> {13} [color=green];
13 -> {14};
14 -> {15};
15 -> {16};
16 -> {17};
17 -> {18};
18 -> {19};
19 -> {20} [color=green];
19 -> {20};
20 -> {21};
21 -> {22};
22 -> {23} [color=green label="return@/B.B"];
22 -> {28} [color=green];
21 -> {22} [color=green];
22 -> {23};
23 -> {24};
24 -> {25};
24 -> {25} [color=green label="return@/B.B"];
24 -> {30} [color=green];
25 -> {26};
26 -> {27};
27 -> {28} [color=green];
27 -> {28};
28 -> {29};
29 -> {30} [color=green];
}
@@ -5,36 +5,41 @@ digraph bangbang_kt {
subgraph cluster_0 {
color=red
0 [label="Enter class A" style="filled" fillcolor=red];
1 [label="Exit class A" style="filled" fillcolor=red];
0 [label="Enter file bangbang.kt" style="filled" fillcolor=red];
1 [label="Exit file bangbang.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter function foo" style="filled" fillcolor=red];
3 [label="Exit function foo" style="filled" fillcolor=red];
2 [label="Enter class A" style="filled" fillcolor=red];
3 [label="Exit class A" style="filled" fillcolor=red];
}
2 -> {3};
2 -> {3} [color=green];
subgraph cluster_2 {
color=red
4 [label="Enter function test_0" style="filled" fillcolor=red];
subgraph cluster_3 {
color=blue
5 [label="Enter block"];
6 [label="Access variable R|<local>/a|"];
7 [label="Check not null: R|<local>/a|!!" style="filled" fillcolor=yellow];
8 [label="Function call: R|<local>/a|!!.R|/A.foo|()" style="filled" fillcolor=yellow];
9 [label="Access variable R|<local>/a|"];
10 [label="Smart cast: R|<local>/a|"];
11 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
12 [label="Exit block"];
}
13 [label="Exit function test_0" style="filled" fillcolor=red];
4 [label="Enter function foo" style="filled" fillcolor=red];
5 [label="Exit function foo" style="filled" fillcolor=red];
}
4 -> {5};
5 -> {6};
subgraph cluster_3 {
color=red
6 [label="Enter function test_0" style="filled" fillcolor=red];
subgraph cluster_4 {
color=blue
7 [label="Enter block"];
8 [label="Access variable R|<local>/a|"];
9 [label="Check not null: R|<local>/a|!!" style="filled" fillcolor=yellow];
10 [label="Function call: R|<local>/a|!!.R|/A.foo|()" style="filled" fillcolor=yellow];
11 [label="Access variable R|<local>/a|"];
12 [label="Smart cast: R|<local>/a|"];
13 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
14 [label="Exit block"];
}
15 [label="Exit function test_0" style="filled" fillcolor=red];
}
6 -> {7};
7 -> {8};
8 -> {9};
@@ -42,55 +47,55 @@ digraph bangbang_kt {
10 -> {11};
11 -> {12};
12 -> {13};
13 -> {14};
14 -> {15};
subgraph cluster_4 {
subgraph cluster_5 {
color=red
14 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_5 {
16 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_6 {
color=blue
15 [label="Enter block"];
subgraph cluster_6 {
17 [label="Enter block"];
subgraph cluster_7 {
color=blue
16 [label="Enter when"];
subgraph cluster_7 {
color=blue
17 [label="Enter when branch condition "];
18 [label="Access variable R|<local>/a|"];
19 [label="Check not null: R|<local>/a|!!" style="filled" fillcolor=yellow];
20 [label="Function call: R|<local>/a|!!.R|/A.foo|()" style="filled" fillcolor=yellow];
21 [label="Exit when branch condition"];
}
22 [label="Synthetic else branch"];
23 [label="Enter when branch result"];
18 [label="Enter when"];
subgraph cluster_8 {
color=blue
24 [label="Enter block"];
25 [label="Access variable R|<local>/a|"];
26 [label="Smart cast: R|<local>/a|"];
27 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
28 [label="Exit block"];
19 [label="Enter when branch condition "];
20 [label="Access variable R|<local>/a|"];
21 [label="Check not null: R|<local>/a|!!" style="filled" fillcolor=yellow];
22 [label="Function call: R|<local>/a|!!.R|/A.foo|()" style="filled" fillcolor=yellow];
23 [label="Exit when branch condition"];
}
29 [label="Exit when branch result"];
30 [label="Exit when"];
24 [label="Synthetic else branch"];
25 [label="Enter when branch result"];
subgraph cluster_9 {
color=blue
26 [label="Enter block"];
27 [label="Access variable R|<local>/a|"];
28 [label="Smart cast: R|<local>/a|"];
29 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
30 [label="Exit block"];
}
31 [label="Exit when branch result"];
32 [label="Exit when"];
}
31 [label="Access variable R|<local>/a|"];
32 [label="Smart cast: R|<local>/a|"];
33 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
34 [label="Exit block"];
33 [label="Access variable R|<local>/a|"];
34 [label="Smart cast: R|<local>/a|"];
35 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
36 [label="Exit block"];
}
35 [label="Exit function test_1" style="filled" fillcolor=red];
37 [label="Exit function test_1" style="filled" fillcolor=red];
}
14 -> {15};
15 -> {16};
16 -> {17};
17 -> {18};
18 -> {19};
19 -> {20};
20 -> {21};
21 -> {22 23};
22 -> {30};
23 -> {24};
24 -> {25};
21 -> {22};
22 -> {23};
23 -> {24 25};
24 -> {32};
25 -> {26};
26 -> {27};
27 -> {28};
@@ -101,68 +106,68 @@ digraph bangbang_kt {
32 -> {33};
33 -> {34};
34 -> {35};
subgraph cluster_9 {
color=red
36 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_10 {
color=blue
37 [label="Enter block"];
subgraph cluster_11 {
color=blue
38 [label="Enter when"];
subgraph cluster_12 {
color=blue
39 [label="Enter when branch condition "];
subgraph cluster_13 {
color=blue
40 [label="Enter &&"];
41 [label="Access variable R|<local>/a|"];
42 [label="Check not null: R|<local>/a|!!" style="filled" fillcolor=yellow];
43 [label="Function call: R|<local>/a|!!.R|/A.foo|()" style="filled" fillcolor=yellow];
44 [label="Exit left part of &&"];
45 [label="Enter right part of &&"];
46 [label="Access variable R|<local>/b|"];
47 [label="Exit &&"];
}
48 [label="Exit when branch condition"];
}
49 [label="Synthetic else branch"];
50 [label="Enter when branch result"];
subgraph cluster_14 {
color=blue
51 [label="Enter block"];
52 [label="Access variable R|<local>/a|"];
53 [label="Smart cast: R|<local>/a|"];
54 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
55 [label="Exit block"];
}
56 [label="Exit when branch result"];
57 [label="Exit when"];
}
58 [label="Access variable R|<local>/a|"];
59 [label="Smart cast: R|<local>/a|"];
60 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
61 [label="Exit block"];
}
62 [label="Exit function test_2" style="filled" fillcolor=red];
}
35 -> {36};
36 -> {37};
37 -> {38};
subgraph cluster_10 {
color=red
38 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_11 {
color=blue
39 [label="Enter block"];
subgraph cluster_12 {
color=blue
40 [label="Enter when"];
subgraph cluster_13 {
color=blue
41 [label="Enter when branch condition "];
subgraph cluster_14 {
color=blue
42 [label="Enter &&"];
43 [label="Access variable R|<local>/a|"];
44 [label="Check not null: R|<local>/a|!!" style="filled" fillcolor=yellow];
45 [label="Function call: R|<local>/a|!!.R|/A.foo|()" style="filled" fillcolor=yellow];
46 [label="Exit left part of &&"];
47 [label="Enter right part of &&"];
48 [label="Access variable R|<local>/b|"];
49 [label="Exit &&"];
}
50 [label="Exit when branch condition"];
}
51 [label="Synthetic else branch"];
52 [label="Enter when branch result"];
subgraph cluster_15 {
color=blue
53 [label="Enter block"];
54 [label="Access variable R|<local>/a|"];
55 [label="Smart cast: R|<local>/a|"];
56 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
57 [label="Exit block"];
}
58 [label="Exit when branch result"];
59 [label="Exit when"];
}
60 [label="Access variable R|<local>/a|"];
61 [label="Smart cast: R|<local>/a|"];
62 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
63 [label="Exit block"];
}
64 [label="Exit function test_2" style="filled" fillcolor=red];
}
38 -> {39};
39 -> {40};
40 -> {41};
41 -> {42};
42 -> {43};
43 -> {44};
44 -> {45 47};
44 -> {45};
45 -> {46};
46 -> {47};
46 -> {47 49};
47 -> {48};
48 -> {49 50};
49 -> {57};
50 -> {51};
51 -> {52};
48 -> {49};
49 -> {50};
50 -> {51 52};
51 -> {59};
52 -> {53};
53 -> {54};
54 -> {55};
@@ -173,67 +178,67 @@ digraph bangbang_kt {
59 -> {60};
60 -> {61};
61 -> {62};
subgraph cluster_15 {
color=red
63 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_16 {
color=blue
64 [label="Enter block"];
subgraph cluster_17 {
color=blue
65 [label="Enter when"];
subgraph cluster_18 {
color=blue
66 [label="Enter when branch condition "];
subgraph cluster_19 {
color=blue
67 [label="Enter &&"];
68 [label="Access variable R|<local>/b|"];
69 [label="Exit left part of &&"];
70 [label="Enter right part of &&"];
71 [label="Access variable R|<local>/a|"];
72 [label="Check not null: R|<local>/a|!!" style="filled" fillcolor=yellow];
73 [label="Function call: R|<local>/a|!!.R|/A.foo|()" style="filled" fillcolor=yellow];
74 [label="Exit &&"];
}
75 [label="Exit when branch condition"];
}
76 [label="Synthetic else branch"];
77 [label="Enter when branch result"];
subgraph cluster_20 {
color=blue
78 [label="Enter block"];
79 [label="Access variable R|<local>/a|"];
80 [label="Smart cast: R|<local>/a|"];
81 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
82 [label="Exit block"];
}
83 [label="Exit when branch result"];
84 [label="Exit when"];
}
85 [label="Access variable R|<local>/a|"];
86 [label="Function call: R|<local>/a|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
87 [label="Exit block"];
}
88 [label="Exit function test_3" style="filled" fillcolor=red];
}
62 -> {63};
63 -> {64};
64 -> {65};
subgraph cluster_16 {
color=red
65 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_17 {
color=blue
66 [label="Enter block"];
subgraph cluster_18 {
color=blue
67 [label="Enter when"];
subgraph cluster_19 {
color=blue
68 [label="Enter when branch condition "];
subgraph cluster_20 {
color=blue
69 [label="Enter &&"];
70 [label="Access variable R|<local>/b|"];
71 [label="Exit left part of &&"];
72 [label="Enter right part of &&"];
73 [label="Access variable R|<local>/a|"];
74 [label="Check not null: R|<local>/a|!!" style="filled" fillcolor=yellow];
75 [label="Function call: R|<local>/a|!!.R|/A.foo|()" style="filled" fillcolor=yellow];
76 [label="Exit &&"];
}
77 [label="Exit when branch condition"];
}
78 [label="Synthetic else branch"];
79 [label="Enter when branch result"];
subgraph cluster_21 {
color=blue
80 [label="Enter block"];
81 [label="Access variable R|<local>/a|"];
82 [label="Smart cast: R|<local>/a|"];
83 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
84 [label="Exit block"];
}
85 [label="Exit when branch result"];
86 [label="Exit when"];
}
87 [label="Access variable R|<local>/a|"];
88 [label="Function call: R|<local>/a|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
89 [label="Exit block"];
}
90 [label="Exit function test_3" style="filled" fillcolor=red];
}
65 -> {66};
66 -> {67};
67 -> {68};
68 -> {69};
69 -> {70 74};
69 -> {70};
70 -> {71};
71 -> {72};
71 -> {72 76};
72 -> {73};
73 -> {74};
74 -> {75};
75 -> {76 77};
76 -> {84};
77 -> {78};
78 -> {79};
75 -> {76};
76 -> {77};
77 -> {78 79};
78 -> {86};
79 -> {80};
80 -> {81};
81 -> {82};
@@ -243,68 +248,68 @@ digraph bangbang_kt {
85 -> {86};
86 -> {87};
87 -> {88};
subgraph cluster_21 {
color=red
89 [label="Enter function test_4" style="filled" fillcolor=red];
subgraph cluster_22 {
color=blue
90 [label="Enter block"];
subgraph cluster_23 {
color=blue
91 [label="Enter when"];
subgraph cluster_24 {
color=blue
92 [label="Enter when branch condition "];
subgraph cluster_25 {
color=blue
93 [label="Enter ||"];
94 [label="Access variable R|<local>/a|"];
95 [label="Check not null: R|<local>/a|!!" style="filled" fillcolor=yellow];
96 [label="Function call: R|<local>/a|!!.R|/A.foo|()" style="filled" fillcolor=yellow];
97 [label="Exit left part of ||"];
98 [label="Enter right part of ||"];
99 [label="Access variable R|<local>/b|"];
100 [label="Exit ||"];
}
101 [label="Exit when branch condition"];
}
102 [label="Synthetic else branch"];
103 [label="Enter when branch result"];
subgraph cluster_26 {
color=blue
104 [label="Enter block"];
105 [label="Access variable R|<local>/a|"];
106 [label="Smart cast: R|<local>/a|"];
107 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
108 [label="Exit block"];
}
109 [label="Exit when branch result"];
110 [label="Exit when"];
}
111 [label="Access variable R|<local>/a|"];
112 [label="Smart cast: R|<local>/a|"];
113 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
114 [label="Exit block"];
}
115 [label="Exit function test_4" style="filled" fillcolor=red];
}
88 -> {89};
89 -> {90};
90 -> {91};
subgraph cluster_22 {
color=red
91 [label="Enter function test_4" style="filled" fillcolor=red];
subgraph cluster_23 {
color=blue
92 [label="Enter block"];
subgraph cluster_24 {
color=blue
93 [label="Enter when"];
subgraph cluster_25 {
color=blue
94 [label="Enter when branch condition "];
subgraph cluster_26 {
color=blue
95 [label="Enter ||"];
96 [label="Access variable R|<local>/a|"];
97 [label="Check not null: R|<local>/a|!!" style="filled" fillcolor=yellow];
98 [label="Function call: R|<local>/a|!!.R|/A.foo|()" style="filled" fillcolor=yellow];
99 [label="Exit left part of ||"];
100 [label="Enter right part of ||"];
101 [label="Access variable R|<local>/b|"];
102 [label="Exit ||"];
}
103 [label="Exit when branch condition"];
}
104 [label="Synthetic else branch"];
105 [label="Enter when branch result"];
subgraph cluster_27 {
color=blue
106 [label="Enter block"];
107 [label="Access variable R|<local>/a|"];
108 [label="Smart cast: R|<local>/a|"];
109 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
110 [label="Exit block"];
}
111 [label="Exit when branch result"];
112 [label="Exit when"];
}
113 [label="Access variable R|<local>/a|"];
114 [label="Smart cast: R|<local>/a|"];
115 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
116 [label="Exit block"];
}
117 [label="Exit function test_4" style="filled" fillcolor=red];
}
91 -> {92};
92 -> {93};
93 -> {94};
94 -> {95};
95 -> {96};
96 -> {97};
97 -> {98 100};
97 -> {98};
98 -> {99};
99 -> {100};
99 -> {100 102};
100 -> {101};
101 -> {102 103};
102 -> {110};
103 -> {104};
104 -> {105};
101 -> {102};
102 -> {103};
103 -> {104 105};
104 -> {112};
105 -> {106};
106 -> {107};
107 -> {108};
@@ -315,66 +320,66 @@ digraph bangbang_kt {
112 -> {113};
113 -> {114};
114 -> {115};
subgraph cluster_27 {
color=red
116 [label="Enter function test_5" style="filled" fillcolor=red];
subgraph cluster_28 {
color=blue
117 [label="Enter block"];
subgraph cluster_29 {
color=blue
118 [label="Enter when"];
subgraph cluster_30 {
color=blue
119 [label="Enter when branch condition "];
subgraph cluster_31 {
color=blue
120 [label="Enter ||"];
121 [label="Access variable R|<local>/b|"];
122 [label="Exit left part of ||"];
123 [label="Enter right part of ||"];
124 [label="Access variable R|<local>/a|"];
125 [label="Check not null: R|<local>/a|!!" style="filled" fillcolor=yellow];
126 [label="Function call: R|<local>/a|!!.R|/A.foo|()" style="filled" fillcolor=yellow];
127 [label="Exit ||"];
}
128 [label="Exit when branch condition"];
}
129 [label="Synthetic else branch"];
130 [label="Enter when branch result"];
subgraph cluster_32 {
color=blue
131 [label="Enter block"];
132 [label="Access variable R|<local>/a|"];
133 [label="Function call: R|<local>/a|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
134 [label="Exit block"];
}
135 [label="Exit when branch result"];
136 [label="Exit when"];
}
137 [label="Access variable R|<local>/a|"];
138 [label="Function call: R|<local>/a|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
139 [label="Exit block"];
}
140 [label="Exit function test_5" style="filled" fillcolor=red];
}
115 -> {116};
116 -> {117};
117 -> {118};
subgraph cluster_28 {
color=red
118 [label="Enter function test_5" style="filled" fillcolor=red];
subgraph cluster_29 {
color=blue
119 [label="Enter block"];
subgraph cluster_30 {
color=blue
120 [label="Enter when"];
subgraph cluster_31 {
color=blue
121 [label="Enter when branch condition "];
subgraph cluster_32 {
color=blue
122 [label="Enter ||"];
123 [label="Access variable R|<local>/b|"];
124 [label="Exit left part of ||"];
125 [label="Enter right part of ||"];
126 [label="Access variable R|<local>/a|"];
127 [label="Check not null: R|<local>/a|!!" style="filled" fillcolor=yellow];
128 [label="Function call: R|<local>/a|!!.R|/A.foo|()" style="filled" fillcolor=yellow];
129 [label="Exit ||"];
}
130 [label="Exit when branch condition"];
}
131 [label="Synthetic else branch"];
132 [label="Enter when branch result"];
subgraph cluster_33 {
color=blue
133 [label="Enter block"];
134 [label="Access variable R|<local>/a|"];
135 [label="Function call: R|<local>/a|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
136 [label="Exit block"];
}
137 [label="Exit when branch result"];
138 [label="Exit when"];
}
139 [label="Access variable R|<local>/a|"];
140 [label="Function call: R|<local>/a|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
141 [label="Exit block"];
}
142 [label="Exit function test_5" style="filled" fillcolor=red];
}
118 -> {119};
119 -> {120};
120 -> {121};
121 -> {122};
122 -> {123 127};
122 -> {123};
123 -> {124};
124 -> {125};
124 -> {125 129};
125 -> {126};
126 -> {127};
127 -> {128};
128 -> {129 130};
129 -> {136};
130 -> {131};
131 -> {132};
128 -> {129};
129 -> {130};
130 -> {131 132};
131 -> {138};
132 -> {133};
133 -> {134};
134 -> {135};
@@ -383,45 +388,47 @@ digraph bangbang_kt {
137 -> {138};
138 -> {139};
139 -> {140};
subgraph cluster_33 {
color=red
141 [label="Enter function test_6" style="filled" fillcolor=red];
subgraph cluster_34 {
color=blue
142 [label="Enter block"];
143 [label="Access variable R|<local>/x|"];
144 [label="Check not null: R|<local>/x|!!" style="filled" fillcolor=yellow];
145 [label="Function call: R|<local>/x|!!.R|/A.foo|()" style="filled" fillcolor=yellow];
146 [label="Exit block"];
}
147 [label="Exit function test_6" style="filled" fillcolor=red];
}
140 -> {141};
141 -> {142};
142 -> {143};
subgraph cluster_34 {
color=red
143 [label="Enter function test_6" style="filled" fillcolor=red];
subgraph cluster_35 {
color=blue
144 [label="Enter block"];
145 [label="Access variable R|<local>/x|"];
146 [label="Check not null: R|<local>/x|!!" style="filled" fillcolor=yellow];
147 [label="Function call: R|<local>/x|!!.R|/A.foo|()" style="filled" fillcolor=yellow];
148 [label="Exit block"];
}
149 [label="Exit function test_6" style="filled" fillcolor=red];
}
143 -> {144};
144 -> {145};
145 -> {146};
146 -> {147};
subgraph cluster_35 {
color=red
148 [label="Enter function test_7" style="filled" fillcolor=red];
subgraph cluster_36 {
color=blue
149 [label="Enter block"];
150 [label="Access variable R|<local>/x|"];
151 [label="Check not null: R|<local>/x|!!" style="filled" fillcolor=yellow];
152 [label="Function call: R|<local>/x|!!.R|/A.foo|()" style="filled" fillcolor=yellow];
153 [label="Exit block"];
}
154 [label="Exit function test_7" style="filled" fillcolor=red];
}
147 -> {148};
148 -> {149};
149 -> {150};
subgraph cluster_36 {
color=red
150 [label="Enter function test_7" style="filled" fillcolor=red];
subgraph cluster_37 {
color=blue
151 [label="Enter block"];
152 [label="Access variable R|<local>/x|"];
153 [label="Check not null: R|<local>/x|!!" style="filled" fillcolor=yellow];
154 [label="Function call: R|<local>/x|!!.R|/A.foo|()" style="filled" fillcolor=yellow];
155 [label="Exit block"];
}
156 [label="Exit function test_7" style="filled" fillcolor=red];
}
150 -> {151};
151 -> {152};
152 -> {153};
153 -> {154};
154 -> {155};
155 -> {156};
}
File diff suppressed because it is too large Load Diff
@@ -5,69 +5,74 @@ digraph equalsToBoolean_kt {
subgraph cluster_0 {
color=red
0 [label="Enter class A" style="filled" fillcolor=red];
1 [label="Exit class A" style="filled" fillcolor=red];
0 [label="Enter file equalsToBoolean.kt" style="filled" fillcolor=red];
1 [label="Exit file equalsToBoolean.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter function foo" style="filled" fillcolor=red];
3 [label="Exit function foo" style="filled" fillcolor=red];
2 [label="Enter class A" style="filled" fillcolor=red];
3 [label="Exit class A" style="filled" fillcolor=red];
}
2 -> {3};
2 -> {3} [color=green];
subgraph cluster_2 {
color=red
4 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_3 {
color=blue
5 [label="Enter block"];
subgraph cluster_4 {
color=blue
6 [label="Enter when"];
subgraph cluster_5 {
color=blue
7 [label="Enter when branch condition "];
8 [label="Access variable R|<local>/b|"];
9 [label="Const: Boolean(true)"];
10 [label="Equality operator =="];
11 [label="Const: Boolean(true)"];
12 [label="Equality operator =="];
13 [label="Exit when branch condition"];
}
subgraph cluster_6 {
color=blue
14 [label="Enter when branch condition else"];
15 [label="Exit when branch condition"];
}
16 [label="Enter when branch result"];
subgraph cluster_7 {
color=blue
17 [label="Enter block"];
18 [label="Access variable R|<local>/b|"];
19 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not<Inapplicable(UNSAFE_CALL): kotlin/Boolean.not>#|()" style="filled" fillcolor=yellow];
20 [label="Exit block"];
}
21 [label="Exit when branch result"];
22 [label="Enter when branch result"];
subgraph cluster_8 {
color=blue
23 [label="Enter block"];
24 [label="Access variable R|<local>/b|"];
25 [label="Smart cast: R|<local>/b|"];
26 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
27 [label="Exit block"];
}
28 [label="Exit when branch result"];
29 [label="Exit when"];
}
30 [label="Exit block"];
}
31 [label="Exit function test_1" style="filled" fillcolor=red];
4 [label="Enter function foo" style="filled" fillcolor=red];
5 [label="Exit function foo" style="filled" fillcolor=red];
}
4 -> {5};
5 -> {6};
subgraph cluster_3 {
color=red
6 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_4 {
color=blue
7 [label="Enter block"];
subgraph cluster_5 {
color=blue
8 [label="Enter when"];
subgraph cluster_6 {
color=blue
9 [label="Enter when branch condition "];
10 [label="Access variable R|<local>/b|"];
11 [label="Const: Boolean(true)"];
12 [label="Equality operator =="];
13 [label="Const: Boolean(true)"];
14 [label="Equality operator =="];
15 [label="Exit when branch condition"];
}
subgraph cluster_7 {
color=blue
16 [label="Enter when branch condition else"];
17 [label="Exit when branch condition"];
}
18 [label="Enter when branch result"];
subgraph cluster_8 {
color=blue
19 [label="Enter block"];
20 [label="Access variable R|<local>/b|"];
21 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not<Inapplicable(UNSAFE_CALL): kotlin/Boolean.not>#|()" style="filled" fillcolor=yellow];
22 [label="Exit block"];
}
23 [label="Exit when branch result"];
24 [label="Enter when branch result"];
subgraph cluster_9 {
color=blue
25 [label="Enter block"];
26 [label="Access variable R|<local>/b|"];
27 [label="Smart cast: R|<local>/b|"];
28 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
29 [label="Exit block"];
}
30 [label="Exit when branch result"];
31 [label="Exit when"];
}
32 [label="Exit block"];
}
33 [label="Exit function test_1" style="filled" fillcolor=red];
}
6 -> {7};
7 -> {8};
8 -> {9};
@@ -75,17 +80,17 @@ digraph equalsToBoolean_kt {
10 -> {11};
11 -> {12};
12 -> {13};
13 -> {14 22};
13 -> {14};
14 -> {15};
15 -> {16};
15 -> {16 24};
16 -> {17};
17 -> {18};
18 -> {19};
19 -> {20};
20 -> {21};
21 -> {29};
21 -> {22};
22 -> {23};
23 -> {24};
23 -> {31};
24 -> {25};
25 -> {26};
26 -> {27};
@@ -93,58 +98,58 @@ digraph equalsToBoolean_kt {
28 -> {29};
29 -> {30};
30 -> {31};
31 -> {32};
32 -> {33};
subgraph cluster_9 {
subgraph cluster_10 {
color=red
32 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_10 {
34 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_11 {
color=blue
33 [label="Enter block"];
subgraph cluster_11 {
35 [label="Enter block"];
subgraph cluster_12 {
color=blue
34 [label="Enter when"];
subgraph cluster_12 {
color=blue
35 [label="Enter when branch condition "];
36 [label="Access variable R|<local>/b|"];
37 [label="Const: Boolean(true)"];
38 [label="Equality operator =="];
39 [label="Const: Boolean(true)"];
40 [label="Equality operator !="];
41 [label="Exit when branch condition"];
}
36 [label="Enter when"];
subgraph cluster_13 {
color=blue
42 [label="Enter when branch condition else"];
37 [label="Enter when branch condition "];
38 [label="Access variable R|<local>/b|"];
39 [label="Const: Boolean(true)"];
40 [label="Equality operator =="];
41 [label="Const: Boolean(true)"];
42 [label="Equality operator !="];
43 [label="Exit when branch condition"];
}
44 [label="Enter when branch result"];
subgraph cluster_14 {
color=blue
45 [label="Enter block"];
46 [label="Access variable R|<local>/b|"];
47 [label="Smart cast: R|<local>/b|"];
48 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
49 [label="Exit block"];
44 [label="Enter when branch condition else"];
45 [label="Exit when branch condition"];
}
50 [label="Exit when branch result"];
51 [label="Enter when branch result"];
46 [label="Enter when branch result"];
subgraph cluster_15 {
color=blue
52 [label="Enter block"];
53 [label="Access variable R|<local>/b|"];
54 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not<Inapplicable(UNSAFE_CALL): kotlin/Boolean.not>#|()" style="filled" fillcolor=yellow];
55 [label="Exit block"];
47 [label="Enter block"];
48 [label="Access variable R|<local>/b|"];
49 [label="Smart cast: R|<local>/b|"];
50 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
51 [label="Exit block"];
}
56 [label="Exit when branch result"];
57 [label="Exit when"];
52 [label="Exit when branch result"];
53 [label="Enter when branch result"];
subgraph cluster_16 {
color=blue
54 [label="Enter block"];
55 [label="Access variable R|<local>/b|"];
56 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not<Inapplicable(UNSAFE_CALL): kotlin/Boolean.not>#|()" style="filled" fillcolor=yellow];
57 [label="Exit block"];
}
58 [label="Exit when branch result"];
59 [label="Exit when"];
}
58 [label="Exit block"];
60 [label="Exit block"];
}
59 [label="Exit function test_2" style="filled" fillcolor=red];
61 [label="Exit function test_2" style="filled" fillcolor=red];
}
32 -> {33};
33 -> {34};
34 -> {35};
35 -> {36};
36 -> {37};
@@ -152,76 +157,76 @@ digraph equalsToBoolean_kt {
38 -> {39};
39 -> {40};
40 -> {41};
41 -> {42 51};
41 -> {42};
42 -> {43};
43 -> {44};
43 -> {44 53};
44 -> {45};
45 -> {46};
46 -> {47};
47 -> {48};
48 -> {49};
49 -> {50};
50 -> {57};
50 -> {51};
51 -> {52};
52 -> {53};
52 -> {59};
53 -> {54};
54 -> {55};
55 -> {56};
56 -> {57};
57 -> {58};
58 -> {59};
59 -> {60};
60 -> {61};
subgraph cluster_16 {
subgraph cluster_17 {
color=red
60 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_17 {
62 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_18 {
color=blue
61 [label="Enter block"];
subgraph cluster_18 {
63 [label="Enter block"];
subgraph cluster_19 {
color=blue
62 [label="Enter when"];
subgraph cluster_19 {
color=blue
63 [label="Enter when branch condition "];
64 [label="Access variable R|<local>/b|"];
65 [label="Const: Boolean(true)"];
66 [label="Equality operator =="];
67 [label="Const: Boolean(false)"];
68 [label="Equality operator =="];
69 [label="Exit when branch condition"];
}
64 [label="Enter when"];
subgraph cluster_20 {
color=blue
70 [label="Enter when branch condition else"];
65 [label="Enter when branch condition "];
66 [label="Access variable R|<local>/b|"];
67 [label="Const: Boolean(true)"];
68 [label="Equality operator =="];
69 [label="Const: Boolean(false)"];
70 [label="Equality operator =="];
71 [label="Exit when branch condition"];
}
72 [label="Enter when branch result"];
subgraph cluster_21 {
color=blue
73 [label="Enter block"];
74 [label="Access variable R|<local>/b|"];
75 [label="Smart cast: R|<local>/b|"];
76 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
77 [label="Exit block"];
72 [label="Enter when branch condition else"];
73 [label="Exit when branch condition"];
}
78 [label="Exit when branch result"];
79 [label="Enter when branch result"];
74 [label="Enter when branch result"];
subgraph cluster_22 {
color=blue
80 [label="Enter block"];
81 [label="Access variable R|<local>/b|"];
82 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not<Inapplicable(UNSAFE_CALL): kotlin/Boolean.not>#|()" style="filled" fillcolor=yellow];
83 [label="Exit block"];
75 [label="Enter block"];
76 [label="Access variable R|<local>/b|"];
77 [label="Smart cast: R|<local>/b|"];
78 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
79 [label="Exit block"];
}
84 [label="Exit when branch result"];
85 [label="Exit when"];
80 [label="Exit when branch result"];
81 [label="Enter when branch result"];
subgraph cluster_23 {
color=blue
82 [label="Enter block"];
83 [label="Access variable R|<local>/b|"];
84 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not<Inapplicable(UNSAFE_CALL): kotlin/Boolean.not>#|()" style="filled" fillcolor=yellow];
85 [label="Exit block"];
}
86 [label="Exit when branch result"];
87 [label="Exit when"];
}
86 [label="Exit block"];
88 [label="Exit block"];
}
87 [label="Exit function test_3" style="filled" fillcolor=red];
89 [label="Exit function test_3" style="filled" fillcolor=red];
}
60 -> {61};
61 -> {62};
62 -> {63};
63 -> {64};
64 -> {65};
@@ -229,76 +234,76 @@ digraph equalsToBoolean_kt {
66 -> {67};
67 -> {68};
68 -> {69};
69 -> {70 79};
69 -> {70};
70 -> {71};
71 -> {72};
71 -> {72 81};
72 -> {73};
73 -> {74};
74 -> {75};
75 -> {76};
76 -> {77};
77 -> {78};
78 -> {85};
78 -> {79};
79 -> {80};
80 -> {81};
80 -> {87};
81 -> {82};
82 -> {83};
83 -> {84};
84 -> {85};
85 -> {86};
86 -> {87};
87 -> {88};
88 -> {89};
subgraph cluster_23 {
subgraph cluster_24 {
color=red
88 [label="Enter function test_4" style="filled" fillcolor=red];
subgraph cluster_24 {
90 [label="Enter function test_4" style="filled" fillcolor=red];
subgraph cluster_25 {
color=blue
89 [label="Enter block"];
subgraph cluster_25 {
91 [label="Enter block"];
subgraph cluster_26 {
color=blue
90 [label="Enter when"];
subgraph cluster_26 {
color=blue
91 [label="Enter when branch condition "];
92 [label="Access variable R|<local>/b|"];
93 [label="Const: Boolean(true)"];
94 [label="Equality operator =="];
95 [label="Const: Boolean(false)"];
96 [label="Equality operator !="];
97 [label="Exit when branch condition"];
}
92 [label="Enter when"];
subgraph cluster_27 {
color=blue
98 [label="Enter when branch condition else"];
93 [label="Enter when branch condition "];
94 [label="Access variable R|<local>/b|"];
95 [label="Const: Boolean(true)"];
96 [label="Equality operator =="];
97 [label="Const: Boolean(false)"];
98 [label="Equality operator !="];
99 [label="Exit when branch condition"];
}
100 [label="Enter when branch result"];
subgraph cluster_28 {
color=blue
101 [label="Enter block"];
102 [label="Access variable R|<local>/b|"];
103 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not<Inapplicable(UNSAFE_CALL): kotlin/Boolean.not>#|()" style="filled" fillcolor=yellow];
104 [label="Exit block"];
100 [label="Enter when branch condition else"];
101 [label="Exit when branch condition"];
}
105 [label="Exit when branch result"];
106 [label="Enter when branch result"];
102 [label="Enter when branch result"];
subgraph cluster_29 {
color=blue
107 [label="Enter block"];
108 [label="Access variable R|<local>/b|"];
109 [label="Smart cast: R|<local>/b|"];
110 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
111 [label="Exit block"];
103 [label="Enter block"];
104 [label="Access variable R|<local>/b|"];
105 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not<Inapplicable(UNSAFE_CALL): kotlin/Boolean.not>#|()" style="filled" fillcolor=yellow];
106 [label="Exit block"];
}
112 [label="Exit when branch result"];
113 [label="Exit when"];
107 [label="Exit when branch result"];
108 [label="Enter when branch result"];
subgraph cluster_30 {
color=blue
109 [label="Enter block"];
110 [label="Access variable R|<local>/b|"];
111 [label="Smart cast: R|<local>/b|"];
112 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
113 [label="Exit block"];
}
114 [label="Exit when branch result"];
115 [label="Exit when"];
}
114 [label="Exit block"];
116 [label="Exit block"];
}
115 [label="Exit function test_4" style="filled" fillcolor=red];
117 [label="Exit function test_4" style="filled" fillcolor=red];
}
88 -> {89};
89 -> {90};
90 -> {91};
91 -> {92};
92 -> {93};
@@ -306,17 +311,17 @@ digraph equalsToBoolean_kt {
94 -> {95};
95 -> {96};
96 -> {97};
97 -> {98 106};
97 -> {98};
98 -> {99};
99 -> {100};
99 -> {100 108};
100 -> {101};
101 -> {102};
102 -> {103};
103 -> {104};
104 -> {105};
105 -> {113};
105 -> {106};
106 -> {107};
107 -> {108};
107 -> {115};
108 -> {109};
109 -> {110};
110 -> {111};
@@ -324,58 +329,58 @@ digraph equalsToBoolean_kt {
112 -> {113};
113 -> {114};
114 -> {115};
115 -> {116};
116 -> {117};
subgraph cluster_30 {
subgraph cluster_31 {
color=red
116 [label="Enter function test_5" style="filled" fillcolor=red];
subgraph cluster_31 {
118 [label="Enter function test_5" style="filled" fillcolor=red];
subgraph cluster_32 {
color=blue
117 [label="Enter block"];
subgraph cluster_32 {
119 [label="Enter block"];
subgraph cluster_33 {
color=blue
118 [label="Enter when"];
subgraph cluster_33 {
color=blue
119 [label="Enter when branch condition "];
120 [label="Access variable R|<local>/b|"];
121 [label="Const: Boolean(true)"];
122 [label="Equality operator !="];
123 [label="Const: Boolean(true)"];
124 [label="Equality operator =="];
125 [label="Exit when branch condition"];
}
120 [label="Enter when"];
subgraph cluster_34 {
color=blue
126 [label="Enter when branch condition else"];
121 [label="Enter when branch condition "];
122 [label="Access variable R|<local>/b|"];
123 [label="Const: Boolean(true)"];
124 [label="Equality operator !="];
125 [label="Const: Boolean(true)"];
126 [label="Equality operator =="];
127 [label="Exit when branch condition"];
}
128 [label="Enter when branch result"];
subgraph cluster_35 {
color=blue
129 [label="Enter block"];
130 [label="Access variable R|<local>/b|"];
131 [label="Smart cast: R|<local>/b|"];
132 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
133 [label="Exit block"];
128 [label="Enter when branch condition else"];
129 [label="Exit when branch condition"];
}
134 [label="Exit when branch result"];
135 [label="Enter when branch result"];
130 [label="Enter when branch result"];
subgraph cluster_36 {
color=blue
136 [label="Enter block"];
137 [label="Access variable R|<local>/b|"];
138 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not<Inapplicable(UNSAFE_CALL): kotlin/Boolean.not>#|()" style="filled" fillcolor=yellow];
139 [label="Exit block"];
131 [label="Enter block"];
132 [label="Access variable R|<local>/b|"];
133 [label="Smart cast: R|<local>/b|"];
134 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
135 [label="Exit block"];
}
140 [label="Exit when branch result"];
141 [label="Exit when"];
136 [label="Exit when branch result"];
137 [label="Enter when branch result"];
subgraph cluster_37 {
color=blue
138 [label="Enter block"];
139 [label="Access variable R|<local>/b|"];
140 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not<Inapplicable(UNSAFE_CALL): kotlin/Boolean.not>#|()" style="filled" fillcolor=yellow];
141 [label="Exit block"];
}
142 [label="Exit when branch result"];
143 [label="Exit when"];
}
142 [label="Exit block"];
144 [label="Exit block"];
}
143 [label="Exit function test_5" style="filled" fillcolor=red];
145 [label="Exit function test_5" style="filled" fillcolor=red];
}
116 -> {117};
117 -> {118};
118 -> {119};
119 -> {120};
120 -> {121};
@@ -383,76 +388,76 @@ digraph equalsToBoolean_kt {
122 -> {123};
123 -> {124};
124 -> {125};
125 -> {126 135};
125 -> {126};
126 -> {127};
127 -> {128};
127 -> {128 137};
128 -> {129};
129 -> {130};
130 -> {131};
131 -> {132};
132 -> {133};
133 -> {134};
134 -> {141};
134 -> {135};
135 -> {136};
136 -> {137};
136 -> {143};
137 -> {138};
138 -> {139};
139 -> {140};
140 -> {141};
141 -> {142};
142 -> {143};
143 -> {144};
144 -> {145};
subgraph cluster_37 {
subgraph cluster_38 {
color=red
144 [label="Enter function test_6" style="filled" fillcolor=red];
subgraph cluster_38 {
146 [label="Enter function test_6" style="filled" fillcolor=red];
subgraph cluster_39 {
color=blue
145 [label="Enter block"];
subgraph cluster_39 {
147 [label="Enter block"];
subgraph cluster_40 {
color=blue
146 [label="Enter when"];
subgraph cluster_40 {
color=blue
147 [label="Enter when branch condition "];
148 [label="Access variable R|<local>/b|"];
149 [label="Const: Boolean(true)"];
150 [label="Equality operator !="];
151 [label="Const: Boolean(true)"];
152 [label="Equality operator !="];
153 [label="Exit when branch condition"];
}
148 [label="Enter when"];
subgraph cluster_41 {
color=blue
154 [label="Enter when branch condition else"];
149 [label="Enter when branch condition "];
150 [label="Access variable R|<local>/b|"];
151 [label="Const: Boolean(true)"];
152 [label="Equality operator !="];
153 [label="Const: Boolean(true)"];
154 [label="Equality operator !="];
155 [label="Exit when branch condition"];
}
156 [label="Enter when branch result"];
subgraph cluster_42 {
color=blue
157 [label="Enter block"];
158 [label="Access variable R|<local>/b|"];
159 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not<Inapplicable(UNSAFE_CALL): kotlin/Boolean.not>#|()" style="filled" fillcolor=yellow];
160 [label="Exit block"];
156 [label="Enter when branch condition else"];
157 [label="Exit when branch condition"];
}
161 [label="Exit when branch result"];
162 [label="Enter when branch result"];
158 [label="Enter when branch result"];
subgraph cluster_43 {
color=blue
163 [label="Enter block"];
164 [label="Access variable R|<local>/b|"];
165 [label="Smart cast: R|<local>/b|"];
166 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
167 [label="Exit block"];
159 [label="Enter block"];
160 [label="Access variable R|<local>/b|"];
161 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not<Inapplicable(UNSAFE_CALL): kotlin/Boolean.not>#|()" style="filled" fillcolor=yellow];
162 [label="Exit block"];
}
168 [label="Exit when branch result"];
169 [label="Exit when"];
163 [label="Exit when branch result"];
164 [label="Enter when branch result"];
subgraph cluster_44 {
color=blue
165 [label="Enter block"];
166 [label="Access variable R|<local>/b|"];
167 [label="Smart cast: R|<local>/b|"];
168 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
169 [label="Exit block"];
}
170 [label="Exit when branch result"];
171 [label="Exit when"];
}
170 [label="Exit block"];
172 [label="Exit block"];
}
171 [label="Exit function test_6" style="filled" fillcolor=red];
173 [label="Exit function test_6" style="filled" fillcolor=red];
}
144 -> {145};
145 -> {146};
146 -> {147};
147 -> {148};
148 -> {149};
@@ -460,17 +465,17 @@ digraph equalsToBoolean_kt {
150 -> {151};
151 -> {152};
152 -> {153};
153 -> {154 162};
153 -> {154};
154 -> {155};
155 -> {156};
155 -> {156 164};
156 -> {157};
157 -> {158};
158 -> {159};
159 -> {160};
160 -> {161};
161 -> {169};
161 -> {162};
162 -> {163};
163 -> {164};
163 -> {171};
164 -> {165};
165 -> {166};
166 -> {167};
@@ -478,58 +483,58 @@ digraph equalsToBoolean_kt {
168 -> {169};
169 -> {170};
170 -> {171};
171 -> {172};
172 -> {173};
subgraph cluster_44 {
subgraph cluster_45 {
color=red
172 [label="Enter function test_7" style="filled" fillcolor=red];
subgraph cluster_45 {
174 [label="Enter function test_7" style="filled" fillcolor=red];
subgraph cluster_46 {
color=blue
173 [label="Enter block"];
subgraph cluster_46 {
175 [label="Enter block"];
subgraph cluster_47 {
color=blue
174 [label="Enter when"];
subgraph cluster_47 {
color=blue
175 [label="Enter when branch condition "];
176 [label="Access variable R|<local>/b|"];
177 [label="Const: Boolean(true)"];
178 [label="Equality operator !="];
179 [label="Const: Boolean(false)"];
180 [label="Equality operator =="];
181 [label="Exit when branch condition"];
}
176 [label="Enter when"];
subgraph cluster_48 {
color=blue
182 [label="Enter when branch condition else"];
177 [label="Enter when branch condition "];
178 [label="Access variable R|<local>/b|"];
179 [label="Const: Boolean(true)"];
180 [label="Equality operator !="];
181 [label="Const: Boolean(false)"];
182 [label="Equality operator =="];
183 [label="Exit when branch condition"];
}
184 [label="Enter when branch result"];
subgraph cluster_49 {
color=blue
185 [label="Enter block"];
186 [label="Access variable R|<local>/b|"];
187 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not<Inapplicable(UNSAFE_CALL): kotlin/Boolean.not>#|()" style="filled" fillcolor=yellow];
188 [label="Exit block"];
184 [label="Enter when branch condition else"];
185 [label="Exit when branch condition"];
}
189 [label="Exit when branch result"];
190 [label="Enter when branch result"];
186 [label="Enter when branch result"];
subgraph cluster_50 {
color=blue
191 [label="Enter block"];
192 [label="Access variable R|<local>/b|"];
193 [label="Smart cast: R|<local>/b|"];
194 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
195 [label="Exit block"];
187 [label="Enter block"];
188 [label="Access variable R|<local>/b|"];
189 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not<Inapplicable(UNSAFE_CALL): kotlin/Boolean.not>#|()" style="filled" fillcolor=yellow];
190 [label="Exit block"];
}
196 [label="Exit when branch result"];
197 [label="Exit when"];
191 [label="Exit when branch result"];
192 [label="Enter when branch result"];
subgraph cluster_51 {
color=blue
193 [label="Enter block"];
194 [label="Access variable R|<local>/b|"];
195 [label="Smart cast: R|<local>/b|"];
196 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
197 [label="Exit block"];
}
198 [label="Exit when branch result"];
199 [label="Exit when"];
}
198 [label="Exit block"];
200 [label="Exit block"];
}
199 [label="Exit function test_7" style="filled" fillcolor=red];
201 [label="Exit function test_7" style="filled" fillcolor=red];
}
172 -> {173};
173 -> {174};
174 -> {175};
175 -> {176};
176 -> {177};
@@ -537,17 +542,17 @@ digraph equalsToBoolean_kt {
178 -> {179};
179 -> {180};
180 -> {181};
181 -> {182 190};
181 -> {182};
182 -> {183};
183 -> {184};
183 -> {184 192};
184 -> {185};
185 -> {186};
186 -> {187};
187 -> {188};
188 -> {189};
189 -> {197};
189 -> {190};
190 -> {191};
191 -> {192};
191 -> {199};
192 -> {193};
193 -> {194};
194 -> {195};
@@ -555,58 +560,58 @@ digraph equalsToBoolean_kt {
196 -> {197};
197 -> {198};
198 -> {199};
199 -> {200};
200 -> {201};
subgraph cluster_51 {
subgraph cluster_52 {
color=red
200 [label="Enter function test_8" style="filled" fillcolor=red];
subgraph cluster_52 {
202 [label="Enter function test_8" style="filled" fillcolor=red];
subgraph cluster_53 {
color=blue
201 [label="Enter block"];
subgraph cluster_53 {
203 [label="Enter block"];
subgraph cluster_54 {
color=blue
202 [label="Enter when"];
subgraph cluster_54 {
color=blue
203 [label="Enter when branch condition "];
204 [label="Access variable R|<local>/b|"];
205 [label="Const: Boolean(true)"];
206 [label="Equality operator !="];
207 [label="Const: Boolean(false)"];
208 [label="Equality operator !="];
209 [label="Exit when branch condition"];
}
204 [label="Enter when"];
subgraph cluster_55 {
color=blue
210 [label="Enter when branch condition else"];
205 [label="Enter when branch condition "];
206 [label="Access variable R|<local>/b|"];
207 [label="Const: Boolean(true)"];
208 [label="Equality operator !="];
209 [label="Const: Boolean(false)"];
210 [label="Equality operator !="];
211 [label="Exit when branch condition"];
}
212 [label="Enter when branch result"];
subgraph cluster_56 {
color=blue
213 [label="Enter block"];
214 [label="Access variable R|<local>/b|"];
215 [label="Smart cast: R|<local>/b|"];
216 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
217 [label="Exit block"];
212 [label="Enter when branch condition else"];
213 [label="Exit when branch condition"];
}
218 [label="Exit when branch result"];
219 [label="Enter when branch result"];
214 [label="Enter when branch result"];
subgraph cluster_57 {
color=blue
220 [label="Enter block"];
221 [label="Access variable R|<local>/b|"];
222 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not<Inapplicable(UNSAFE_CALL): kotlin/Boolean.not>#|()" style="filled" fillcolor=yellow];
223 [label="Exit block"];
215 [label="Enter block"];
216 [label="Access variable R|<local>/b|"];
217 [label="Smart cast: R|<local>/b|"];
218 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
219 [label="Exit block"];
}
224 [label="Exit when branch result"];
225 [label="Exit when"];
220 [label="Exit when branch result"];
221 [label="Enter when branch result"];
subgraph cluster_58 {
color=blue
222 [label="Enter block"];
223 [label="Access variable R|<local>/b|"];
224 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not<Inapplicable(UNSAFE_CALL): kotlin/Boolean.not>#|()" style="filled" fillcolor=yellow];
225 [label="Exit block"];
}
226 [label="Exit when branch result"];
227 [label="Exit when"];
}
226 [label="Exit block"];
228 [label="Exit block"];
}
227 [label="Exit function test_8" style="filled" fillcolor=red];
229 [label="Exit function test_8" style="filled" fillcolor=red];
}
200 -> {201};
201 -> {202};
202 -> {203};
203 -> {204};
204 -> {205};
@@ -614,23 +619,25 @@ digraph equalsToBoolean_kt {
206 -> {207};
207 -> {208};
208 -> {209};
209 -> {210 219};
209 -> {210};
210 -> {211};
211 -> {212};
211 -> {212 221};
212 -> {213};
213 -> {214};
214 -> {215};
215 -> {216};
216 -> {217};
217 -> {218};
218 -> {225};
218 -> {219};
219 -> {220};
220 -> {221};
220 -> {227};
221 -> {222};
222 -> {223};
223 -> {224};
224 -> {225};
225 -> {226};
226 -> {227};
227 -> {228};
228 -> {229};
}
@@ -5,169 +5,174 @@ digraph jumpFromRhsOfOperator_kt {
subgraph cluster_0 {
color=red
0 [label="Enter class A" style="filled" fillcolor=red];
1 [label="Exit class A" style="filled" fillcolor=red];
0 [label="Enter file jumpFromRhsOfOperator.kt" style="filled" fillcolor=red];
1 [label="Exit file jumpFromRhsOfOperator.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter function foo" style="filled" fillcolor=red];
3 [label="Exit function foo" style="filled" fillcolor=red];
2 [label="Enter class A" style="filled" fillcolor=red];
3 [label="Exit class A" style="filled" fillcolor=red];
}
2 -> {3};
2 -> {3} [color=green];
subgraph cluster_2 {
color=red
4 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_3 {
color=blue
5 [label="Enter block"];
subgraph cluster_4 {
color=blue
6 [label="Enter ||"];
7 [label="Access variable R|<local>/a|"];
8 [label="Const: Null(null)"];
9 [label="Equality operator !="];
10 [label="Exit left part of ||"];
11 [label="Enter right part of ||"];
12 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
13 [label="Throw: throw R|java/lang/Exception.Exception|()"];
14 [label="Stub" style="filled" fillcolor=gray];
15 [label="Exit ||"];
}
16 [label="Access variable R|<local>/a|"];
17 [label="Smart cast: R|<local>/a|"];
18 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
19 [label="Exit block"];
}
20 [label="Exit function test_1" style="filled" fillcolor=red];
4 [label="Enter function foo" style="filled" fillcolor=red];
5 [label="Exit function foo" style="filled" fillcolor=red];
}
4 -> {5};
5 -> {6};
subgraph cluster_3 {
color=red
6 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_4 {
color=blue
7 [label="Enter block"];
subgraph cluster_5 {
color=blue
8 [label="Enter ||"];
9 [label="Access variable R|<local>/a|"];
10 [label="Const: Null(null)"];
11 [label="Equality operator !="];
12 [label="Exit left part of ||"];
13 [label="Enter right part of ||"];
14 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
15 [label="Throw: throw R|java/lang/Exception.Exception|()"];
16 [label="Stub" style="filled" fillcolor=gray];
17 [label="Exit ||"];
}
18 [label="Access variable R|<local>/a|"];
19 [label="Smart cast: R|<local>/a|"];
20 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
21 [label="Exit block"];
}
22 [label="Exit function test_1" style="filled" fillcolor=red];
}
6 -> {7};
7 -> {8};
8 -> {9};
9 -> {10};
10 -> {11 15};
10 -> {11};
11 -> {12};
12 -> {13};
13 -> {14} [style=dotted];
14 -> {15} [style=dotted];
15 -> {16};
16 -> {17};
12 -> {13 17};
13 -> {14};
14 -> {15};
15 -> {16} [style=dotted];
16 -> {17} [style=dotted];
17 -> {18};
18 -> {19};
19 -> {20};
subgraph cluster_5 {
color=red
21 [label="Enter function teat_2" style="filled" fillcolor=red];
subgraph cluster_6 {
color=blue
22 [label="Enter block"];
subgraph cluster_7 {
color=blue
23 [label="Enter &&"];
24 [label="Access variable R|<local>/a|"];
25 [label="Const: Null(null)"];
26 [label="Equality operator =="];
27 [label="Exit left part of &&"];
28 [label="Enter right part of &&"];
29 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
30 [label="Throw: throw R|java/lang/Exception.Exception|()"];
31 [label="Stub" style="filled" fillcolor=gray];
32 [label="Exit &&"];
}
33 [label="Access variable R|<local>/a|"];
34 [label="Smart cast: R|<local>/a|"];
35 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
36 [label="Exit block"];
}
37 [label="Exit function teat_2" style="filled" fillcolor=red];
}
20 -> {21};
21 -> {22};
22 -> {23};
subgraph cluster_6 {
color=red
23 [label="Enter function teat_2" style="filled" fillcolor=red];
subgraph cluster_7 {
color=blue
24 [label="Enter block"];
subgraph cluster_8 {
color=blue
25 [label="Enter &&"];
26 [label="Access variable R|<local>/a|"];
27 [label="Const: Null(null)"];
28 [label="Equality operator =="];
29 [label="Exit left part of &&"];
30 [label="Enter right part of &&"];
31 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
32 [label="Throw: throw R|java/lang/Exception.Exception|()"];
33 [label="Stub" style="filled" fillcolor=gray];
34 [label="Exit &&"];
}
35 [label="Access variable R|<local>/a|"];
36 [label="Smart cast: R|<local>/a|"];
37 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
38 [label="Exit block"];
}
39 [label="Exit function teat_2" style="filled" fillcolor=red];
}
23 -> {24};
24 -> {25};
25 -> {26};
26 -> {27};
27 -> {28 32};
27 -> {28};
28 -> {29};
29 -> {30};
30 -> {31} [style=dotted];
31 -> {32} [style=dotted];
32 -> {33};
33 -> {34};
29 -> {30 34};
30 -> {31};
31 -> {32};
32 -> {33} [style=dotted];
33 -> {34} [style=dotted];
34 -> {35};
35 -> {36};
36 -> {37};
subgraph cluster_8 {
color=red
38 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_9 {
color=blue
39 [label="Enter block"];
subgraph cluster_10 {
color=blue
40 [label="Enter when"];
subgraph cluster_11 {
color=blue
41 [label="Enter when branch condition "];
subgraph cluster_12 {
color=blue
42 [label="Enter ||"];
43 [label="Access variable R|<local>/a|"];
44 [label="Const: Null(null)"];
45 [label="Equality operator !="];
46 [label="Exit left part of ||"];
47 [label="Enter right part of ||"];
48 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
49 [label="Throw: throw R|java/lang/Exception.Exception|()"];
50 [label="Stub" style="filled" fillcolor=gray];
51 [label="Exit ||"];
}
52 [label="Exit when branch condition"];
}
53 [label="Synthetic else branch"];
54 [label="Enter when branch result"];
subgraph cluster_13 {
color=blue
55 [label="Enter block"];
56 [label="Access variable R|<local>/a|"];
57 [label="Smart cast: R|<local>/a|"];
58 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
59 [label="Exit block"];
}
60 [label="Exit when branch result"];
61 [label="Exit when"];
}
62 [label="Access variable R|<local>/a|"];
63 [label="Smart cast: R|<local>/a|"];
64 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
65 [label="Exit block"];
}
66 [label="Exit function test_3" style="filled" fillcolor=red];
}
37 -> {38};
38 -> {39};
39 -> {40};
subgraph cluster_9 {
color=red
40 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_10 {
color=blue
41 [label="Enter block"];
subgraph cluster_11 {
color=blue
42 [label="Enter when"];
subgraph cluster_12 {
color=blue
43 [label="Enter when branch condition "];
subgraph cluster_13 {
color=blue
44 [label="Enter ||"];
45 [label="Access variable R|<local>/a|"];
46 [label="Const: Null(null)"];
47 [label="Equality operator !="];
48 [label="Exit left part of ||"];
49 [label="Enter right part of ||"];
50 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
51 [label="Throw: throw R|java/lang/Exception.Exception|()"];
52 [label="Stub" style="filled" fillcolor=gray];
53 [label="Exit ||"];
}
54 [label="Exit when branch condition"];
}
55 [label="Synthetic else branch"];
56 [label="Enter when branch result"];
subgraph cluster_14 {
color=blue
57 [label="Enter block"];
58 [label="Access variable R|<local>/a|"];
59 [label="Smart cast: R|<local>/a|"];
60 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
61 [label="Exit block"];
}
62 [label="Exit when branch result"];
63 [label="Exit when"];
}
64 [label="Access variable R|<local>/a|"];
65 [label="Smart cast: R|<local>/a|"];
66 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
67 [label="Exit block"];
}
68 [label="Exit function test_3" style="filled" fillcolor=red];
}
40 -> {41};
41 -> {42};
42 -> {43};
43 -> {44};
44 -> {45};
45 -> {46};
46 -> {47 51};
46 -> {47};
47 -> {48};
48 -> {49};
49 -> {50} [style=dotted];
50 -> {51} [style=dotted];
51 -> {52};
52 -> {53 54};
53 -> {61};
54 -> {55};
55 -> {56};
48 -> {49 53};
49 -> {50};
50 -> {51};
51 -> {52} [style=dotted];
52 -> {53} [style=dotted];
53 -> {54};
54 -> {55 56};
55 -> {63};
56 -> {57};
57 -> {58};
58 -> {59};
@@ -178,72 +183,72 @@ digraph jumpFromRhsOfOperator_kt {
63 -> {64};
64 -> {65};
65 -> {66};
subgraph cluster_14 {
color=red
67 [label="Enter function test_4" style="filled" fillcolor=red];
subgraph cluster_15 {
color=blue
68 [label="Enter block"];
subgraph cluster_16 {
color=blue
69 [label="Enter when"];
subgraph cluster_17 {
color=blue
70 [label="Enter when branch condition "];
subgraph cluster_18 {
color=blue
71 [label="Enter &&"];
72 [label="Access variable R|<local>/a|"];
73 [label="Const: Null(null)"];
74 [label="Equality operator =="];
75 [label="Exit left part of &&"];
76 [label="Enter right part of &&"];
77 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
78 [label="Throw: throw R|java/lang/Exception.Exception|()"];
79 [label="Stub" style="filled" fillcolor=gray];
80 [label="Exit &&"];
}
81 [label="Exit when branch condition"];
}
82 [label="Synthetic else branch"];
83 [label="Enter when branch result"];
subgraph cluster_19 {
color=blue
84 [label="Enter block"];
85 [label="Access variable R|<local>/a|"];
86 [label="Smart cast: R|<local>/a|"];
87 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
88 [label="Exit block"];
}
89 [label="Exit when branch result"];
90 [label="Exit when"];
}
91 [label="Access variable R|<local>/a|"];
92 [label="Smart cast: R|<local>/a|"];
93 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
94 [label="Exit block"];
}
95 [label="Exit function test_4" style="filled" fillcolor=red];
}
66 -> {67};
67 -> {68};
68 -> {69};
subgraph cluster_15 {
color=red
69 [label="Enter function test_4" style="filled" fillcolor=red];
subgraph cluster_16 {
color=blue
70 [label="Enter block"];
subgraph cluster_17 {
color=blue
71 [label="Enter when"];
subgraph cluster_18 {
color=blue
72 [label="Enter when branch condition "];
subgraph cluster_19 {
color=blue
73 [label="Enter &&"];
74 [label="Access variable R|<local>/a|"];
75 [label="Const: Null(null)"];
76 [label="Equality operator =="];
77 [label="Exit left part of &&"];
78 [label="Enter right part of &&"];
79 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
80 [label="Throw: throw R|java/lang/Exception.Exception|()"];
81 [label="Stub" style="filled" fillcolor=gray];
82 [label="Exit &&"];
}
83 [label="Exit when branch condition"];
}
84 [label="Synthetic else branch"];
85 [label="Enter when branch result"];
subgraph cluster_20 {
color=blue
86 [label="Enter block"];
87 [label="Access variable R|<local>/a|"];
88 [label="Smart cast: R|<local>/a|"];
89 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
90 [label="Exit block"];
}
91 [label="Exit when branch result"];
92 [label="Exit when"];
}
93 [label="Access variable R|<local>/a|"];
94 [label="Smart cast: R|<local>/a|"];
95 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
96 [label="Exit block"];
}
97 [label="Exit function test_4" style="filled" fillcolor=red];
}
69 -> {70};
70 -> {71};
71 -> {72};
72 -> {73};
73 -> {74};
74 -> {75};
75 -> {76 80};
75 -> {76};
76 -> {77};
77 -> {78};
78 -> {79} [style=dotted];
79 -> {80} [style=dotted];
80 -> {81};
81 -> {82 83};
82 -> {90};
83 -> {84};
84 -> {85};
77 -> {78 82};
78 -> {79};
79 -> {80};
80 -> {81} [style=dotted];
81 -> {82} [style=dotted];
82 -> {83};
83 -> {84 85};
84 -> {92};
85 -> {86};
86 -> {87};
87 -> {88};
@@ -254,158 +259,158 @@ digraph jumpFromRhsOfOperator_kt {
92 -> {93};
93 -> {94};
94 -> {95};
subgraph cluster_20 {
color=red
96 [label="Enter function test_5" style="filled" fillcolor=red];
subgraph cluster_21 {
color=blue
97 [label="Enter block"];
subgraph cluster_22 {
color=blue
98 [label="Enter ||"];
99 [label="Access variable R|<local>/a|"];
100 [label="Const: Null(null)"];
101 [label="Equality operator =="];
102 [label="Exit left part of ||"];
103 [label="Enter right part of ||"];
104 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
105 [label="Throw: throw R|java/lang/Exception.Exception|()"];
106 [label="Stub" style="filled" fillcolor=gray];
107 [label="Exit ||"];
}
108 [label="Access variable R|<local>/a|"];
109 [label="Smart cast: R|<local>/a|"];
110 [label="Function call: R|<local>/a|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
111 [label="Exit block"];
}
112 [label="Exit function test_5" style="filled" fillcolor=red];
}
95 -> {96};
96 -> {97};
97 -> {98};
subgraph cluster_21 {
color=red
98 [label="Enter function test_5" style="filled" fillcolor=red];
subgraph cluster_22 {
color=blue
99 [label="Enter block"];
subgraph cluster_23 {
color=blue
100 [label="Enter ||"];
101 [label="Access variable R|<local>/a|"];
102 [label="Const: Null(null)"];
103 [label="Equality operator =="];
104 [label="Exit left part of ||"];
105 [label="Enter right part of ||"];
106 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
107 [label="Throw: throw R|java/lang/Exception.Exception|()"];
108 [label="Stub" style="filled" fillcolor=gray];
109 [label="Exit ||"];
}
110 [label="Access variable R|<local>/a|"];
111 [label="Smart cast: R|<local>/a|"];
112 [label="Function call: R|<local>/a|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
113 [label="Exit block"];
}
114 [label="Exit function test_5" style="filled" fillcolor=red];
}
98 -> {99};
99 -> {100};
100 -> {101};
101 -> {102};
102 -> {103 107};
102 -> {103};
103 -> {104};
104 -> {105};
105 -> {106} [style=dotted];
106 -> {107} [style=dotted];
107 -> {108};
108 -> {109};
104 -> {105 109};
105 -> {106};
106 -> {107};
107 -> {108} [style=dotted];
108 -> {109} [style=dotted];
109 -> {110};
110 -> {111};
111 -> {112};
subgraph cluster_23 {
color=red
113 [label="Enter function teat_6" style="filled" fillcolor=red];
subgraph cluster_24 {
color=blue
114 [label="Enter block"];
subgraph cluster_25 {
color=blue
115 [label="Enter &&"];
116 [label="Access variable R|<local>/a|"];
117 [label="Const: Null(null)"];
118 [label="Equality operator !="];
119 [label="Exit left part of &&"];
120 [label="Enter right part of &&"];
121 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
122 [label="Throw: throw R|java/lang/Exception.Exception|()"];
123 [label="Stub" style="filled" fillcolor=gray];
124 [label="Exit &&"];
}
125 [label="Access variable R|<local>/a|"];
126 [label="Smart cast: R|<local>/a|"];
127 [label="Function call: R|<local>/a|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
128 [label="Exit block"];
}
129 [label="Exit function teat_6" style="filled" fillcolor=red];
}
112 -> {113};
113 -> {114};
114 -> {115};
subgraph cluster_24 {
color=red
115 [label="Enter function teat_6" style="filled" fillcolor=red];
subgraph cluster_25 {
color=blue
116 [label="Enter block"];
subgraph cluster_26 {
color=blue
117 [label="Enter &&"];
118 [label="Access variable R|<local>/a|"];
119 [label="Const: Null(null)"];
120 [label="Equality operator !="];
121 [label="Exit left part of &&"];
122 [label="Enter right part of &&"];
123 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
124 [label="Throw: throw R|java/lang/Exception.Exception|()"];
125 [label="Stub" style="filled" fillcolor=gray];
126 [label="Exit &&"];
}
127 [label="Access variable R|<local>/a|"];
128 [label="Smart cast: R|<local>/a|"];
129 [label="Function call: R|<local>/a|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
130 [label="Exit block"];
}
131 [label="Exit function teat_6" style="filled" fillcolor=red];
}
115 -> {116};
116 -> {117};
117 -> {118};
118 -> {119};
119 -> {120 124};
119 -> {120};
120 -> {121};
121 -> {122};
122 -> {123} [style=dotted];
123 -> {124} [style=dotted];
124 -> {125};
125 -> {126};
121 -> {122 126};
122 -> {123};
123 -> {124};
124 -> {125} [style=dotted];
125 -> {126} [style=dotted];
126 -> {127};
127 -> {128};
128 -> {129};
subgraph cluster_26 {
color=red
130 [label="Enter function test_7" style="filled" fillcolor=red];
subgraph cluster_27 {
color=blue
131 [label="Enter block"];
subgraph cluster_28 {
color=blue
132 [label="Enter when"];
subgraph cluster_29 {
color=blue
133 [label="Enter when branch condition "];
subgraph cluster_30 {
color=blue
134 [label="Enter ||"];
135 [label="Access variable R|<local>/a|"];
136 [label="Const: Null(null)"];
137 [label="Equality operator =="];
138 [label="Exit left part of ||"];
139 [label="Enter right part of ||"];
140 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
141 [label="Throw: throw R|java/lang/Exception.Exception|()"];
142 [label="Stub" style="filled" fillcolor=gray];
143 [label="Exit ||"];
}
144 [label="Exit when branch condition"];
}
145 [label="Synthetic else branch"];
146 [label="Enter when branch result"];
subgraph cluster_31 {
color=blue
147 [label="Enter block"];
148 [label="Access variable R|<local>/a|"];
149 [label="Smart cast: R|<local>/a|"];
150 [label="Function call: R|<local>/a|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
151 [label="Exit block"];
}
152 [label="Exit when branch result"];
153 [label="Exit when"];
}
154 [label="Access variable R|<local>/a|"];
155 [label="Smart cast: R|<local>/a|"];
156 [label="Function call: R|<local>/a|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
157 [label="Exit block"];
}
158 [label="Exit function test_7" style="filled" fillcolor=red];
}
129 -> {130};
130 -> {131};
131 -> {132};
subgraph cluster_27 {
color=red
132 [label="Enter function test_7" style="filled" fillcolor=red];
subgraph cluster_28 {
color=blue
133 [label="Enter block"];
subgraph cluster_29 {
color=blue
134 [label="Enter when"];
subgraph cluster_30 {
color=blue
135 [label="Enter when branch condition "];
subgraph cluster_31 {
color=blue
136 [label="Enter ||"];
137 [label="Access variable R|<local>/a|"];
138 [label="Const: Null(null)"];
139 [label="Equality operator =="];
140 [label="Exit left part of ||"];
141 [label="Enter right part of ||"];
142 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
143 [label="Throw: throw R|java/lang/Exception.Exception|()"];
144 [label="Stub" style="filled" fillcolor=gray];
145 [label="Exit ||"];
}
146 [label="Exit when branch condition"];
}
147 [label="Synthetic else branch"];
148 [label="Enter when branch result"];
subgraph cluster_32 {
color=blue
149 [label="Enter block"];
150 [label="Access variable R|<local>/a|"];
151 [label="Smart cast: R|<local>/a|"];
152 [label="Function call: R|<local>/a|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
153 [label="Exit block"];
}
154 [label="Exit when branch result"];
155 [label="Exit when"];
}
156 [label="Access variable R|<local>/a|"];
157 [label="Smart cast: R|<local>/a|"];
158 [label="Function call: R|<local>/a|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
159 [label="Exit block"];
}
160 [label="Exit function test_7" style="filled" fillcolor=red];
}
132 -> {133};
133 -> {134};
134 -> {135};
135 -> {136};
136 -> {137};
137 -> {138};
138 -> {139 143};
138 -> {139};
139 -> {140};
140 -> {141};
141 -> {142} [style=dotted];
142 -> {143} [style=dotted];
143 -> {144};
144 -> {145 146};
145 -> {153};
146 -> {147};
147 -> {148};
140 -> {141 145};
141 -> {142};
142 -> {143};
143 -> {144} [style=dotted];
144 -> {145} [style=dotted];
145 -> {146};
146 -> {147 148};
147 -> {155};
148 -> {149};
149 -> {150};
150 -> {151};
@@ -416,72 +421,72 @@ digraph jumpFromRhsOfOperator_kt {
155 -> {156};
156 -> {157};
157 -> {158};
subgraph cluster_32 {
color=red
159 [label="Enter function test_8" style="filled" fillcolor=red];
subgraph cluster_33 {
color=blue
160 [label="Enter block"];
subgraph cluster_34 {
color=blue
161 [label="Enter when"];
subgraph cluster_35 {
color=blue
162 [label="Enter when branch condition "];
subgraph cluster_36 {
color=blue
163 [label="Enter &&"];
164 [label="Access variable R|<local>/a|"];
165 [label="Const: Null(null)"];
166 [label="Equality operator !="];
167 [label="Exit left part of &&"];
168 [label="Enter right part of &&"];
169 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
170 [label="Throw: throw R|java/lang/Exception.Exception|()"];
171 [label="Stub" style="filled" fillcolor=gray];
172 [label="Exit &&"];
}
173 [label="Exit when branch condition"];
}
174 [label="Synthetic else branch"];
175 [label="Enter when branch result"];
subgraph cluster_37 {
color=blue
176 [label="Enter block"];
177 [label="Access variable R|<local>/a|"];
178 [label="Smart cast: R|<local>/a|"];
179 [label="Function call: R|<local>/a|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
180 [label="Exit block"];
}
181 [label="Exit when branch result"];
182 [label="Exit when"];
}
183 [label="Access variable R|<local>/a|"];
184 [label="Smart cast: R|<local>/a|"];
185 [label="Function call: R|<local>/a|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
186 [label="Exit block"];
}
187 [label="Exit function test_8" style="filled" fillcolor=red];
}
158 -> {159};
159 -> {160};
160 -> {161};
subgraph cluster_33 {
color=red
161 [label="Enter function test_8" style="filled" fillcolor=red];
subgraph cluster_34 {
color=blue
162 [label="Enter block"];
subgraph cluster_35 {
color=blue
163 [label="Enter when"];
subgraph cluster_36 {
color=blue
164 [label="Enter when branch condition "];
subgraph cluster_37 {
color=blue
165 [label="Enter &&"];
166 [label="Access variable R|<local>/a|"];
167 [label="Const: Null(null)"];
168 [label="Equality operator !="];
169 [label="Exit left part of &&"];
170 [label="Enter right part of &&"];
171 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
172 [label="Throw: throw R|java/lang/Exception.Exception|()"];
173 [label="Stub" style="filled" fillcolor=gray];
174 [label="Exit &&"];
}
175 [label="Exit when branch condition"];
}
176 [label="Synthetic else branch"];
177 [label="Enter when branch result"];
subgraph cluster_38 {
color=blue
178 [label="Enter block"];
179 [label="Access variable R|<local>/a|"];
180 [label="Smart cast: R|<local>/a|"];
181 [label="Function call: R|<local>/a|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
182 [label="Exit block"];
}
183 [label="Exit when branch result"];
184 [label="Exit when"];
}
185 [label="Access variable R|<local>/a|"];
186 [label="Smart cast: R|<local>/a|"];
187 [label="Function call: R|<local>/a|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
188 [label="Exit block"];
}
189 [label="Exit function test_8" style="filled" fillcolor=red];
}
161 -> {162};
162 -> {163};
163 -> {164};
164 -> {165};
165 -> {166};
166 -> {167};
167 -> {168 172};
167 -> {168};
168 -> {169};
169 -> {170};
170 -> {171} [style=dotted];
171 -> {172} [style=dotted];
172 -> {173};
173 -> {174 175};
174 -> {182};
175 -> {176};
176 -> {177};
169 -> {170 174};
170 -> {171};
171 -> {172};
172 -> {173} [style=dotted];
173 -> {174} [style=dotted];
174 -> {175};
175 -> {176 177};
176 -> {184};
177 -> {178};
178 -> {179};
179 -> {180};
@@ -492,5 +497,7 @@ digraph jumpFromRhsOfOperator_kt {
184 -> {185};
185 -> {186};
186 -> {187};
187 -> {188};
188 -> {189};
}
@@ -5,82 +5,87 @@ digraph boundSmartcasts_kt {
subgraph cluster_0 {
color=red
0 [label="Enter class A" style="filled" fillcolor=red];
1 [label="Exit class A" style="filled" fillcolor=red];
0 [label="Enter file boundSmartcasts.kt" style="filled" fillcolor=red];
1 [label="Exit file boundSmartcasts.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter function foo" style="filled" fillcolor=red];
3 [label="Exit function foo" style="filled" fillcolor=red];
2 [label="Enter class A" style="filled" fillcolor=red];
3 [label="Exit class A" style="filled" fillcolor=red];
}
2 -> {3};
2 -> {3} [color=green];
subgraph cluster_2 {
color=red
4 [label="Enter class B" style="filled" fillcolor=red];
5 [label="Exit class B" style="filled" fillcolor=red];
4 [label="Enter function foo" style="filled" fillcolor=red];
5 [label="Exit function foo" style="filled" fillcolor=red];
}
4 -> {5} [color=green];
4 -> {5};
subgraph cluster_3 {
color=red
6 [label="Enter function bar" style="filled" fillcolor=red];
7 [label="Exit function bar" style="filled" fillcolor=red];
6 [label="Enter class B" style="filled" fillcolor=red];
7 [label="Exit class B" style="filled" fillcolor=red];
}
6 -> {7};
6 -> {7} [color=green];
subgraph cluster_4 {
color=red
8 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_5 {
color=blue
9 [label="Enter block"];
10 [label="Access variable R|<local>/x|"];
11 [label="Variable declaration: lval y: R|kotlin/Any|"];
subgraph cluster_6 {
color=blue
12 [label="Enter when"];
subgraph cluster_7 {
color=blue
13 [label="Enter when branch condition "];
14 [label="Access variable R|<local>/x|"];
15 [label="Type operator: (R|<local>/x| is R|A|)"];
16 [label="Exit when branch condition"];
}
17 [label="Synthetic else branch"];
18 [label="Enter when branch result"];
subgraph cluster_8 {
color=blue
19 [label="Enter block"];
20 [label="Access variable R|<local>/x|"];
21 [label="Smart cast: R|<local>/x|"];
22 [label="Function call: R|<local>/x|.R|/A.foo|()" style="filled" fillcolor=yellow];
23 [label="Access variable R|<local>/y|"];
24 [label="Smart cast: R|<local>/y|"];
25 [label="Function call: R|<local>/y|.R|/A.foo|()" style="filled" fillcolor=yellow];
26 [label="Exit block"];
}
27 [label="Exit when branch result"];
28 [label="Exit when"];
}
29 [label="Exit block"];
}
30 [label="Exit function test_1" style="filled" fillcolor=red];
8 [label="Enter function bar" style="filled" fillcolor=red];
9 [label="Exit function bar" style="filled" fillcolor=red];
}
8 -> {9};
9 -> {10};
subgraph cluster_5 {
color=red
10 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_6 {
color=blue
11 [label="Enter block"];
12 [label="Access variable R|<local>/x|"];
13 [label="Variable declaration: lval y: R|kotlin/Any|"];
subgraph cluster_7 {
color=blue
14 [label="Enter when"];
subgraph cluster_8 {
color=blue
15 [label="Enter when branch condition "];
16 [label="Access variable R|<local>/x|"];
17 [label="Type operator: (R|<local>/x| is R|A|)"];
18 [label="Exit when branch condition"];
}
19 [label="Synthetic else branch"];
20 [label="Enter when branch result"];
subgraph cluster_9 {
color=blue
21 [label="Enter block"];
22 [label="Access variable R|<local>/x|"];
23 [label="Smart cast: R|<local>/x|"];
24 [label="Function call: R|<local>/x|.R|/A.foo|()" style="filled" fillcolor=yellow];
25 [label="Access variable R|<local>/y|"];
26 [label="Smart cast: R|<local>/y|"];
27 [label="Function call: R|<local>/y|.R|/A.foo|()" style="filled" fillcolor=yellow];
28 [label="Exit block"];
}
29 [label="Exit when branch result"];
30 [label="Exit when"];
}
31 [label="Exit block"];
}
32 [label="Exit function test_1" style="filled" fillcolor=red];
}
10 -> {11};
11 -> {12};
12 -> {13};
13 -> {14};
14 -> {15};
15 -> {16};
16 -> {17 18};
17 -> {28};
18 -> {19};
19 -> {20};
16 -> {17};
17 -> {18};
18 -> {19 20};
19 -> {30};
20 -> {21};
21 -> {22};
22 -> {23};
@@ -91,57 +96,57 @@ digraph boundSmartcasts_kt {
27 -> {28};
28 -> {29};
29 -> {30};
30 -> {31};
31 -> {32};
subgraph cluster_9 {
subgraph cluster_10 {
color=red
31 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_10 {
33 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_11 {
color=blue
32 [label="Enter block"];
33 [label="Access variable R|<local>/x|"];
34 [label="Variable declaration: lval y: R|kotlin/Any|"];
subgraph cluster_11 {
34 [label="Enter block"];
35 [label="Access variable R|<local>/x|"];
36 [label="Variable declaration: lval y: R|kotlin/Any|"];
subgraph cluster_12 {
color=blue
35 [label="Enter when"];
subgraph cluster_12 {
color=blue
36 [label="Enter when branch condition "];
37 [label="Access variable R|<local>/y|"];
38 [label="Type operator: (R|<local>/y| is R|A|)"];
39 [label="Exit when branch condition"];
}
40 [label="Synthetic else branch"];
41 [label="Enter when branch result"];
37 [label="Enter when"];
subgraph cluster_13 {
color=blue
42 [label="Enter block"];
43 [label="Access variable R|<local>/x|"];
44 [label="Smart cast: R|<local>/x|"];
45 [label="Function call: R|<local>/x|.R|/A.foo|()" style="filled" fillcolor=yellow];
46 [label="Access variable R|<local>/y|"];
47 [label="Smart cast: R|<local>/y|"];
48 [label="Function call: R|<local>/y|.R|/A.foo|()" style="filled" fillcolor=yellow];
49 [label="Exit block"];
38 [label="Enter when branch condition "];
39 [label="Access variable R|<local>/y|"];
40 [label="Type operator: (R|<local>/y| is R|A|)"];
41 [label="Exit when branch condition"];
}
50 [label="Exit when branch result"];
51 [label="Exit when"];
42 [label="Synthetic else branch"];
43 [label="Enter when branch result"];
subgraph cluster_14 {
color=blue
44 [label="Enter block"];
45 [label="Access variable R|<local>/x|"];
46 [label="Smart cast: R|<local>/x|"];
47 [label="Function call: R|<local>/x|.R|/A.foo|()" style="filled" fillcolor=yellow];
48 [label="Access variable R|<local>/y|"];
49 [label="Smart cast: R|<local>/y|"];
50 [label="Function call: R|<local>/y|.R|/A.foo|()" style="filled" fillcolor=yellow];
51 [label="Exit block"];
}
52 [label="Exit when branch result"];
53 [label="Exit when"];
}
52 [label="Exit block"];
54 [label="Exit block"];
}
53 [label="Exit function test_2" style="filled" fillcolor=red];
55 [label="Exit function test_2" style="filled" fillcolor=red];
}
31 -> {32};
32 -> {33};
33 -> {34};
34 -> {35};
35 -> {36};
36 -> {37};
37 -> {38};
38 -> {39};
39 -> {40 41};
40 -> {51};
41 -> {42};
42 -> {43};
39 -> {40};
40 -> {41};
41 -> {42 43};
42 -> {53};
43 -> {44};
44 -> {45};
45 -> {46};
@@ -152,82 +157,82 @@ digraph boundSmartcasts_kt {
50 -> {51};
51 -> {52};
52 -> {53};
53 -> {54};
54 -> {55};
subgraph cluster_14 {
subgraph cluster_15 {
color=red
54 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_15 {
56 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_16 {
color=blue
55 [label="Enter block"];
56 [label="Access variable R|<local>/x|"];
57 [label="Variable declaration: lvar z: R|kotlin/Any|"];
subgraph cluster_16 {
57 [label="Enter block"];
58 [label="Access variable R|<local>/x|"];
59 [label="Variable declaration: lvar z: R|kotlin/Any|"];
subgraph cluster_17 {
color=blue
58 [label="Enter when"];
subgraph cluster_17 {
color=blue
59 [label="Enter when branch condition "];
60 [label="Access variable R|<local>/x|"];
61 [label="Type operator: (R|<local>/x| is R|A|)"];
62 [label="Exit when branch condition"];
}
63 [label="Synthetic else branch"];
64 [label="Enter when branch result"];
60 [label="Enter when"];
subgraph cluster_18 {
color=blue
65 [label="Enter block"];
66 [label="Access variable R|<local>/z|"];
67 [label="Smart cast: R|<local>/z|"];
68 [label="Function call: R|<local>/z|.R|/A.foo|()" style="filled" fillcolor=yellow];
69 [label="Exit block"];
61 [label="Enter when branch condition "];
62 [label="Access variable R|<local>/x|"];
63 [label="Type operator: (R|<local>/x| is R|A|)"];
64 [label="Exit when branch condition"];
}
70 [label="Exit when branch result"];
71 [label="Exit when"];
}
72 [label="Access variable R|<local>/y|"];
73 [label="Assignment: R|<local>/z|"];
subgraph cluster_19 {
color=blue
74 [label="Enter when"];
subgraph cluster_20 {
65 [label="Synthetic else branch"];
66 [label="Enter when branch result"];
subgraph cluster_19 {
color=blue
75 [label="Enter when branch condition "];
76 [label="Access variable R|<local>/y|"];
77 [label="Type operator: (R|<local>/y| is R|B|)"];
78 [label="Exit when branch condition"];
67 [label="Enter block"];
68 [label="Access variable R|<local>/z|"];
69 [label="Smart cast: R|<local>/z|"];
70 [label="Function call: R|<local>/z|.R|/A.foo|()" style="filled" fillcolor=yellow];
71 [label="Exit block"];
}
79 [label="Synthetic else branch"];
80 [label="Enter when branch result"];
72 [label="Exit when branch result"];
73 [label="Exit when"];
}
74 [label="Access variable R|<local>/y|"];
75 [label="Assignment: R|<local>/z|"];
subgraph cluster_20 {
color=blue
76 [label="Enter when"];
subgraph cluster_21 {
color=blue
81 [label="Enter block"];
82 [label="Access variable R|<local>/z|"];
83 [label="Smart cast: R|<local>/z|"];
84 [label="Function call: R|<local>/z|.<Unresolved name: foo>#()" style="filled" fillcolor=yellow];
85 [label="Access variable R|<local>/z|"];
86 [label="Smart cast: R|<local>/z|"];
87 [label="Function call: R|<local>/z|.R|/B.bar|()" style="filled" fillcolor=yellow];
88 [label="Exit block"];
77 [label="Enter when branch condition "];
78 [label="Access variable R|<local>/y|"];
79 [label="Type operator: (R|<local>/y| is R|B|)"];
80 [label="Exit when branch condition"];
}
89 [label="Exit when branch result"];
90 [label="Exit when"];
81 [label="Synthetic else branch"];
82 [label="Enter when branch result"];
subgraph cluster_22 {
color=blue
83 [label="Enter block"];
84 [label="Access variable R|<local>/z|"];
85 [label="Smart cast: R|<local>/z|"];
86 [label="Function call: R|<local>/z|.<Unresolved name: foo>#()" style="filled" fillcolor=yellow];
87 [label="Access variable R|<local>/z|"];
88 [label="Smart cast: R|<local>/z|"];
89 [label="Function call: R|<local>/z|.R|/B.bar|()" style="filled" fillcolor=yellow];
90 [label="Exit block"];
}
91 [label="Exit when branch result"];
92 [label="Exit when"];
}
91 [label="Exit block"];
93 [label="Exit block"];
}
92 [label="Exit function test_3" style="filled" fillcolor=red];
94 [label="Exit function test_3" style="filled" fillcolor=red];
}
54 -> {55};
55 -> {56};
56 -> {57};
57 -> {58};
58 -> {59};
59 -> {60};
60 -> {61};
61 -> {62};
62 -> {63 64};
63 -> {71};
64 -> {65};
65 -> {66};
62 -> {63};
63 -> {64};
64 -> {65 66};
65 -> {73};
66 -> {67};
67 -> {68};
68 -> {69};
@@ -240,10 +245,10 @@ digraph boundSmartcasts_kt {
75 -> {76};
76 -> {77};
77 -> {78};
78 -> {79 80};
79 -> {90};
80 -> {81};
81 -> {82};
78 -> {79};
79 -> {80};
80 -> {81 82};
81 -> {92};
82 -> {83};
83 -> {84};
84 -> {85};
@@ -254,56 +259,56 @@ digraph boundSmartcasts_kt {
89 -> {90};
90 -> {91};
91 -> {92};
92 -> {93};
93 -> {94};
subgraph cluster_22 {
subgraph cluster_23 {
color=red
93 [label="Enter function test_4" style="filled" fillcolor=red];
subgraph cluster_23 {
95 [label="Enter function test_4" style="filled" fillcolor=red];
subgraph cluster_24 {
color=blue
94 [label="Enter block"];
95 [label="Const: Int(1)"];
96 [label="Variable declaration: lvar x: R|kotlin/Any|"];
97 [label="Access variable R|<local>/x|"];
98 [label="Type operator: (R|<local>/x| as R|kotlin/Int|)"];
96 [label="Enter block"];
97 [label="Const: Int(1)"];
98 [label="Variable declaration: lvar x: R|kotlin/Any|"];
99 [label="Access variable R|<local>/x|"];
100 [label="Smart cast: R|<local>/x|"];
101 [label="Function call: R|<local>/x|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
102 [label="Access variable R|<local>/y|"];
103 [label="Assignment: R|<local>/x|"];
104 [label="Access variable R|<local>/x|"];
105 [label="Function call: R|<local>/x|.<Unresolved name: inc>#()" style="filled" fillcolor=yellow];
subgraph cluster_24 {
100 [label="Type operator: (R|<local>/x| as R|kotlin/Int|)"];
101 [label="Access variable R|<local>/x|"];
102 [label="Smart cast: R|<local>/x|"];
103 [label="Function call: R|<local>/x|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
104 [label="Access variable R|<local>/y|"];
105 [label="Assignment: R|<local>/x|"];
106 [label="Access variable R|<local>/x|"];
107 [label="Function call: R|<local>/x|.<Unresolved name: inc>#()" style="filled" fillcolor=yellow];
subgraph cluster_25 {
color=blue
106 [label="Enter when"];
subgraph cluster_25 {
color=blue
107 [label="Enter when branch condition "];
108 [label="Access variable R|<local>/y|"];
109 [label="Type operator: (R|<local>/y| is R|A|)"];
110 [label="Exit when branch condition"];
}
111 [label="Synthetic else branch"];
112 [label="Enter when branch result"];
108 [label="Enter when"];
subgraph cluster_26 {
color=blue
113 [label="Enter block"];
114 [label="Access variable R|<local>/x|"];
115 [label="Smart cast: R|<local>/x|"];
116 [label="Function call: R|<local>/x|.R|/A.foo|()" style="filled" fillcolor=yellow];
117 [label="Access variable R|<local>/y|"];
118 [label="Smart cast: R|<local>/y|"];
119 [label="Function call: R|<local>/y|.R|/A.foo|()" style="filled" fillcolor=yellow];
120 [label="Exit block"];
109 [label="Enter when branch condition "];
110 [label="Access variable R|<local>/y|"];
111 [label="Type operator: (R|<local>/y| is R|A|)"];
112 [label="Exit when branch condition"];
}
121 [label="Exit when branch result"];
122 [label="Exit when"];
113 [label="Synthetic else branch"];
114 [label="Enter when branch result"];
subgraph cluster_27 {
color=blue
115 [label="Enter block"];
116 [label="Access variable R|<local>/x|"];
117 [label="Smart cast: R|<local>/x|"];
118 [label="Function call: R|<local>/x|.R|/A.foo|()" style="filled" fillcolor=yellow];
119 [label="Access variable R|<local>/y|"];
120 [label="Smart cast: R|<local>/y|"];
121 [label="Function call: R|<local>/y|.R|/A.foo|()" style="filled" fillcolor=yellow];
122 [label="Exit block"];
}
123 [label="Exit when branch result"];
124 [label="Exit when"];
}
123 [label="Exit block"];
125 [label="Exit block"];
}
124 [label="Exit function test_4" style="filled" fillcolor=red];
126 [label="Exit function test_4" style="filled" fillcolor=red];
}
93 -> {94};
94 -> {95};
95 -> {96};
96 -> {97};
97 -> {98};
@@ -319,10 +324,10 @@ digraph boundSmartcasts_kt {
107 -> {108};
108 -> {109};
109 -> {110};
110 -> {111 112};
111 -> {122};
112 -> {113};
113 -> {114};
110 -> {111};
111 -> {112};
112 -> {113 114};
113 -> {124};
114 -> {115};
115 -> {116};
116 -> {117};
@@ -333,89 +338,89 @@ digraph boundSmartcasts_kt {
121 -> {122};
122 -> {123};
123 -> {124};
124 -> {125};
125 -> {126};
subgraph cluster_27 {
subgraph cluster_28 {
color=red
125 [label="Enter class D" style="filled" fillcolor=red];
subgraph cluster_28 {
color=blue
126 [label="Enter property" style="filled" fillcolor=red];
127 [label="Access variable R|<local>/any|"];
128 [label="Exit property" style="filled" fillcolor=red];
}
127 [label="Enter class D" style="filled" fillcolor=red];
subgraph cluster_29 {
color=blue
129 [label="Enter function <init>" style="filled" fillcolor=red];
130 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
131 [label="Exit function <init>" style="filled" fillcolor=red];
128 [label="Enter property" style="filled" fillcolor=red];
129 [label="Access variable R|<local>/any|"];
130 [label="Exit property" style="filled" fillcolor=red];
}
132 [label="Exit class D" style="filled" fillcolor=red];
subgraph cluster_30 {
color=blue
131 [label="Enter function <init>" style="filled" fillcolor=red];
132 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
133 [label="Exit function <init>" style="filled" fillcolor=red];
}
134 [label="Exit class D" style="filled" fillcolor=red];
}
125 -> {126} [color=green];
125 -> {132} [style=dotted];
125 -> {126 129} [style=dashed];
126 -> {127};
127 -> {128};
128 -> {129} [color=green];
127 -> {128} [color=green];
127 -> {134} [style=dotted];
127 -> {128 131} [style=dashed];
128 -> {129};
129 -> {130};
130 -> {131};
131 -> {132} [color=green];
130 -> {131} [color=green];
131 -> {132};
132 -> {133};
133 -> {134} [color=green];
subgraph cluster_30 {
subgraph cluster_31 {
color=red
133 [label="Enter function baz" style="filled" fillcolor=red];
subgraph cluster_31 {
135 [label="Enter function baz" style="filled" fillcolor=red];
subgraph cluster_32 {
color=blue
134 [label="Enter block"];
135 [label="Exit block"];
136 [label="Enter block"];
137 [label="Exit block"];
}
136 [label="Exit function baz" style="filled" fillcolor=red];
138 [label="Exit function baz" style="filled" fillcolor=red];
}
133 -> {134};
134 -> {135};
135 -> {136};
subgraph cluster_32 {
color=red
137 [label="Enter function test_5" style="filled" fillcolor=red];
subgraph cluster_33 {
color=blue
138 [label="Enter block"];
139 [label="Access variable R|<local>/d|"];
140 [label="Access variable R|/D.any|"];
141 [label="Exit lhs of ?:"];
142 [label="Enter rhs of ?:"];
143 [label="Jump: ^test_5 Unit"];
144 [label="Stub" style="filled" fillcolor=gray];
145 [label="Lhs of ?: is not null"];
146 [label="Exit ?:"];
147 [label="Variable declaration: lval a: R|kotlin/Any|"];
148 [label="Access variable R|<local>/a|"];
149 [label="Function call: R|<local>/a|.R|/baz|()" style="filled" fillcolor=yellow];
150 [label="Access variable R|<local>/d|"];
151 [label="Access variable R|/D.any|"];
152 [label="Smart cast: R|<local>/d|.R|/D.any|"];
153 [label="Function call: R|<local>/d|.R|/D.any|.R|/baz|()" style="filled" fillcolor=yellow];
154 [label="Access variable R|<local>/a|"];
155 [label="Type operator: (R|<local>/a| as R|A|)"];
156 [label="Access variable R|<local>/a|"];
157 [label="Smart cast: R|<local>/a|"];
158 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
159 [label="Exit block"];
}
160 [label="Exit function test_5" style="filled" fillcolor=red];
}
136 -> {137};
137 -> {138};
138 -> {139};
subgraph cluster_33 {
color=red
139 [label="Enter function test_5" style="filled" fillcolor=red];
subgraph cluster_34 {
color=blue
140 [label="Enter block"];
141 [label="Access variable R|<local>/d|"];
142 [label="Access variable R|/D.any|"];
143 [label="Exit lhs of ?:"];
144 [label="Enter rhs of ?:"];
145 [label="Jump: ^test_5 Unit"];
146 [label="Stub" style="filled" fillcolor=gray];
147 [label="Lhs of ?: is not null"];
148 [label="Exit ?:"];
149 [label="Variable declaration: lval a: R|kotlin/Any|"];
150 [label="Access variable R|<local>/a|"];
151 [label="Function call: R|<local>/a|.R|/baz|()" style="filled" fillcolor=yellow];
152 [label="Access variable R|<local>/d|"];
153 [label="Access variable R|/D.any|"];
154 [label="Smart cast: R|<local>/d|.R|/D.any|"];
155 [label="Function call: R|<local>/d|.R|/D.any|.R|/baz|()" style="filled" fillcolor=yellow];
156 [label="Access variable R|<local>/a|"];
157 [label="Type operator: (R|<local>/a| as R|A|)"];
158 [label="Access variable R|<local>/a|"];
159 [label="Smart cast: R|<local>/a|"];
160 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
161 [label="Exit block"];
}
162 [label="Exit function test_5" style="filled" fillcolor=red];
}
139 -> {140};
140 -> {141};
141 -> {142 145};
141 -> {142};
142 -> {143};
143 -> {160};
143 -> {144} [style=dotted];
144 -> {146} [style=dotted];
145 -> {146};
146 -> {147};
143 -> {144 147};
144 -> {145};
145 -> {162};
145 -> {146} [style=dotted];
146 -> {148} [style=dotted];
147 -> {148};
148 -> {149};
149 -> {150};
@@ -429,35 +434,35 @@ digraph boundSmartcasts_kt {
157 -> {158};
158 -> {159};
159 -> {160};
subgraph cluster_34 {
color=red
161 [label="Enter function test_6" style="filled" fillcolor=red];
subgraph cluster_35 {
color=blue
162 [label="Enter block"];
163 [label="Access variable R|<local>/d1|"];
164 [label="Access variable R|/D.any|"];
165 [label="Variable declaration: lval a: R|kotlin/Any?|"];
166 [label="Access variable R|<local>/a|"];
167 [label="Type operator: (R|<local>/a| as R|A|)"];
168 [label="Access variable R|<local>/a|"];
169 [label="Smart cast: R|<local>/a|"];
170 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
171 [label="Access variable R|<local>/d1|"];
172 [label="Access variable R|/D.any|"];
173 [label="Smart cast: R|<local>/d1|.R|/D.any|"];
174 [label="Function call: R|<local>/d1|.R|/D.any|.R|/A.foo|()" style="filled" fillcolor=yellow];
175 [label="Access variable R|<local>/d1|"];
176 [label="Access variable R|/D.any|"];
177 [label="Smart cast: R|<local>/d1|.R|/D.any|"];
178 [label="Function call: R|<local>/d1|.R|/D.any|.R|/baz|()" style="filled" fillcolor=yellow];
179 [label="Exit block"];
}
180 [label="Exit function test_6" style="filled" fillcolor=red];
}
160 -> {161};
161 -> {162};
162 -> {163};
subgraph cluster_35 {
color=red
163 [label="Enter function test_6" style="filled" fillcolor=red];
subgraph cluster_36 {
color=blue
164 [label="Enter block"];
165 [label="Access variable R|<local>/d1|"];
166 [label="Access variable R|/D.any|"];
167 [label="Variable declaration: lval a: R|kotlin/Any?|"];
168 [label="Access variable R|<local>/a|"];
169 [label="Type operator: (R|<local>/a| as R|A|)"];
170 [label="Access variable R|<local>/a|"];
171 [label="Smart cast: R|<local>/a|"];
172 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
173 [label="Access variable R|<local>/d1|"];
174 [label="Access variable R|/D.any|"];
175 [label="Smart cast: R|<local>/d1|.R|/D.any|"];
176 [label="Function call: R|<local>/d1|.R|/D.any|.R|/A.foo|()" style="filled" fillcolor=yellow];
177 [label="Access variable R|<local>/d1|"];
178 [label="Access variable R|/D.any|"];
179 [label="Smart cast: R|<local>/d1|.R|/D.any|"];
180 [label="Function call: R|<local>/d1|.R|/D.any|.R|/baz|()" style="filled" fillcolor=yellow];
181 [label="Exit block"];
}
182 [label="Exit function test_6" style="filled" fillcolor=red];
}
163 -> {164};
164 -> {165};
165 -> {166};
@@ -475,47 +480,47 @@ digraph boundSmartcasts_kt {
177 -> {178};
178 -> {179};
179 -> {180};
subgraph cluster_36 {
color=red
181 [label="Enter function test_7" style="filled" fillcolor=red];
subgraph cluster_37 {
color=blue
182 [label="Enter block"];
183 [label="Access variable R|<local>/d1|"];
184 [label="Enter safe call"];
185 [label="Access variable R|/D.any|"];
186 [label="Exit safe call"];
187 [label="Variable declaration: lval a: R|kotlin/Any?|"];
188 [label="Access variable R|<local>/d2|"];
189 [label="Enter safe call"];
190 [label="Access variable R|/D.any|"];
191 [label="Exit safe call"];
192 [label="Variable declaration: lval b: R|kotlin/Any?|"];
193 [label="Access variable R|<local>/a|"];
194 [label="Type operator: (R|<local>/a| as R|A|)"];
195 [label="Access variable R|<local>/a|"];
196 [label="Smart cast: R|<local>/a|"];
197 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
198 [label="Access variable R|<local>/b|"];
199 [label="Type operator: (R|<local>/b| as R|B|)"];
200 [label="Access variable R|<local>/b|"];
201 [label="Smart cast: R|<local>/b|"];
202 [label="Function call: R|<local>/b|.R|/B.bar|()" style="filled" fillcolor=yellow];
203 [label="Exit block"];
}
204 [label="Exit function test_7" style="filled" fillcolor=red];
}
180 -> {181};
181 -> {182};
182 -> {183};
183 -> {184 186};
subgraph cluster_37 {
color=red
183 [label="Enter function test_7" style="filled" fillcolor=red];
subgraph cluster_38 {
color=blue
184 [label="Enter block"];
185 [label="Access variable R|<local>/d1|"];
186 [label="Enter safe call"];
187 [label="Access variable R|/D.any|"];
188 [label="Exit safe call"];
189 [label="Variable declaration: lval a: R|kotlin/Any?|"];
190 [label="Access variable R|<local>/d2|"];
191 [label="Enter safe call"];
192 [label="Access variable R|/D.any|"];
193 [label="Exit safe call"];
194 [label="Variable declaration: lval b: R|kotlin/Any?|"];
195 [label="Access variable R|<local>/a|"];
196 [label="Type operator: (R|<local>/a| as R|A|)"];
197 [label="Access variable R|<local>/a|"];
198 [label="Smart cast: R|<local>/a|"];
199 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
200 [label="Access variable R|<local>/b|"];
201 [label="Type operator: (R|<local>/b| as R|B|)"];
202 [label="Access variable R|<local>/b|"];
203 [label="Smart cast: R|<local>/b|"];
204 [label="Function call: R|<local>/b|.R|/B.bar|()" style="filled" fillcolor=yellow];
205 [label="Exit block"];
}
206 [label="Exit function test_7" style="filled" fillcolor=red];
}
183 -> {184};
184 -> {185};
185 -> {186};
185 -> {186 188};
186 -> {187};
187 -> {188};
188 -> {189 191};
188 -> {189};
189 -> {190};
190 -> {191};
190 -> {191 193};
191 -> {192};
192 -> {193};
193 -> {194};
@@ -529,5 +534,7 @@ digraph boundSmartcasts_kt {
201 -> {202};
202 -> {203};
203 -> {204};
204 -> {205};
205 -> {206};
}
@@ -5,117 +5,124 @@ digraph functionCallBound_kt {
subgraph cluster_0 {
color=red
0 [label="Enter class Base" style="filled" fillcolor=red];
subgraph cluster_1 {
color=blue
1 [label="Enter function <init>" style="filled" fillcolor=red];
2 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
3 [label="Exit function <init>" style="filled" fillcolor=red];
}
4 [label="Exit class Base" style="filled" fillcolor=red];
0 [label="Enter file functionCallBound.kt" style="filled" fillcolor=red];
1 [label="Exit file functionCallBound.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
0 -> {4} [style=dotted];
0 -> {1} [style=dashed];
1 -> {2};
2 -> {3};
3 -> {4} [color=green];
subgraph cluster_2 {
subgraph cluster_1 {
color=red
5 [label="Enter class Sub" style="filled" fillcolor=red];
subgraph cluster_3 {
2 [label="Enter class Base" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
6 [label="Enter property" style="filled" fillcolor=red];
7 [label="Access variable R|<local>/data|"];
8 [label="Exit property" style="filled" fillcolor=red];
3 [label="Enter function <init>" style="filled" fillcolor=red];
4 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
5 [label="Exit function <init>" style="filled" fillcolor=red];
}
6 [label="Exit class Base" style="filled" fillcolor=red];
}
2 -> {3} [color=green];
2 -> {6} [style=dotted];
2 -> {3} [style=dashed];
3 -> {4};
4 -> {5};
5 -> {6} [color=green];
subgraph cluster_3 {
color=red
7 [label="Enter class Sub" style="filled" fillcolor=red];
subgraph cluster_4 {
color=blue
9 [label="Enter function <init>" style="filled" fillcolor=red];
10 [label="Delegated constructor call: super<R|Base|>()" style="filled" fillcolor=yellow];
11 [label="Exit function <init>" style="filled" fillcolor=red];
8 [label="Enter property" style="filled" fillcolor=red];
9 [label="Access variable R|<local>/data|"];
10 [label="Exit property" style="filled" fillcolor=red];
}
12 [label="Exit class Sub" style="filled" fillcolor=red];
subgraph cluster_5 {
color=blue
11 [label="Enter function <init>" style="filled" fillcolor=red];
12 [label="Delegated constructor call: super<R|Base|>()" style="filled" fillcolor=yellow];
13 [label="Exit function <init>" style="filled" fillcolor=red];
}
14 [label="Exit class Sub" style="filled" fillcolor=red];
}
5 -> {6} [color=green];
5 -> {12} [style=dotted];
5 -> {6 9} [style=dashed];
6 -> {7};
7 -> {8};
8 -> {9} [color=green];
7 -> {8} [color=green];
7 -> {14} [style=dotted];
7 -> {8 11} [style=dashed];
8 -> {9};
9 -> {10};
10 -> {11};
11 -> {12} [color=green];
10 -> {11} [color=green];
11 -> {12};
12 -> {13};
13 -> {14} [color=green];
subgraph cluster_5 {
subgraph cluster_6 {
color=red
13 [label="Enter function isOk" style="filled" fillcolor=red];
subgraph cluster_6 {
15 [label="Enter function isOk" style="filled" fillcolor=red];
subgraph cluster_7 {
color=blue
14 [label="Enter block"];
15 [label="Const: Boolean(true)"];
16 [label="Jump: ^isOk Boolean(true)"];
17 [label="Stub" style="filled" fillcolor=gray];
18 [label="Exit block" style="filled" fillcolor=gray];
16 [label="Enter block"];
17 [label="Const: Boolean(true)"];
18 [label="Jump: ^isOk Boolean(true)"];
19 [label="Stub" style="filled" fillcolor=gray];
20 [label="Exit block" style="filled" fillcolor=gray];
}
19 [label="Exit function isOk" style="filled" fillcolor=red];
21 [label="Exit function isOk" style="filled" fillcolor=red];
}
13 -> {14};
14 -> {15};
15 -> {16};
16 -> {19};
16 -> {17} [style=dotted];
17 -> {18} [style=dotted];
16 -> {17};
17 -> {18};
18 -> {21};
18 -> {19} [style=dotted];
19 -> {20} [style=dotted];
20 -> {21} [style=dotted];
subgraph cluster_7 {
subgraph cluster_8 {
color=red
20 [label="Enter function check" style="filled" fillcolor=red];
subgraph cluster_8 {
22 [label="Enter function check" style="filled" fillcolor=red];
subgraph cluster_9 {
color=blue
21 [label="Enter block"];
subgraph cluster_9 {
23 [label="Enter block"];
subgraph cluster_10 {
color=blue
22 [label="Enter when"];
subgraph cluster_10 {
color=blue
23 [label="Enter when branch condition "];
24 [label="Access variable R|<local>/base|"];
25 [label="Type operator: (R|<local>/base| as? R|Sub|)"];
26 [label="Enter safe call"];
27 [label="Function call: $subj$.R|/isOk|()" style="filled" fillcolor=yellow];
28 [label="Exit safe call"];
29 [label="Const: Boolean(true)"];
30 [label="Equality operator =="];
31 [label="Exit when branch condition"];
}
24 [label="Enter when"];
subgraph cluster_11 {
color=blue
32 [label="Enter when branch condition else"];
25 [label="Enter when branch condition "];
26 [label="Access variable R|<local>/base|"];
27 [label="Type operator: (R|<local>/base| as? R|Sub|)"];
28 [label="Enter safe call"];
29 [label="Function call: $subj$.R|/isOk|()" style="filled" fillcolor=yellow];
30 [label="Exit safe call"];
31 [label="Const: Boolean(true)"];
32 [label="Equality operator =="];
33 [label="Exit when branch condition"];
}
34 [label="Enter when branch result"];
subgraph cluster_12 {
color=blue
35 [label="Enter block"];
36 [label="Access variable R|<local>/base|"];
37 [label="Exit block"];
34 [label="Enter when branch condition else"];
35 [label="Exit when branch condition"];
}
38 [label="Exit when branch result"];
39 [label="Enter when branch result"];
36 [label="Enter when branch result"];
subgraph cluster_13 {
color=blue
40 [label="Enter block"];
41 [label="Access variable R|<local>/base|"];
42 [label="Smart cast: R|<local>/base|"];
43 [label="Access variable R|/Sub.data|"];
44 [label="Exit block"];
37 [label="Enter block"];
38 [label="Access variable R|<local>/base|"];
39 [label="Exit block"];
}
45 [label="Exit when branch result"];
46 [label="Exit when"];
40 [label="Exit when branch result"];
41 [label="Enter when branch result"];
subgraph cluster_14 {
color=blue
42 [label="Enter block"];
43 [label="Access variable R|<local>/base|"];
44 [label="Smart cast: R|<local>/base|"];
45 [label="Access variable R|/Sub.data|"];
46 [label="Exit block"];
}
47 [label="Exit when branch result"];
48 [label="Exit when"];
}
47 [label="Jump: ^check when () {
49 [label="Jump: ^check when () {
==((R|<local>/base| as? R|Sub|)?.{ $subj$.R|/isOk|() }, Boolean(true)) -> {
R|<local>/base|.R|/Sub.data|
}
@@ -124,41 +131,41 @@ digraph functionCallBound_kt {
}
}
"];
48 [label="Stub" style="filled" fillcolor=gray];
49 [label="Exit block" style="filled" fillcolor=gray];
50 [label="Stub" style="filled" fillcolor=gray];
51 [label="Exit block" style="filled" fillcolor=gray];
}
50 [label="Exit function check" style="filled" fillcolor=red];
52 [label="Exit function check" style="filled" fillcolor=red];
}
20 -> {21};
21 -> {22};
22 -> {23};
23 -> {24};
24 -> {25};
25 -> {26 28};
25 -> {26};
26 -> {27};
27 -> {28};
27 -> {28 30};
28 -> {29};
29 -> {30};
30 -> {31};
31 -> {32 39};
31 -> {32};
32 -> {33};
33 -> {34};
33 -> {34 41};
34 -> {35};
35 -> {36};
36 -> {37};
37 -> {38};
38 -> {46};
38 -> {39};
39 -> {40};
40 -> {41};
40 -> {48};
41 -> {42};
42 -> {43};
43 -> {44};
44 -> {45};
45 -> {46};
46 -> {47};
47 -> {50};
47 -> {48} [style=dotted];
48 -> {49} [style=dotted];
47 -> {48};
48 -> {49};
49 -> {52};
49 -> {50} [style=dotted];
50 -> {51} [style=dotted];
51 -> {52} [style=dotted];
}
@@ -5,74 +5,79 @@ digraph casts_kt {
subgraph cluster_0 {
color=red
0 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_1 {
color=blue
1 [label="Enter block"];
2 [label="Access variable R|<local>/x|"];
3 [label="Type operator: (R|<local>/x| as R|kotlin/String|)"];
4 [label="Access variable R|<local>/x|"];
5 [label="Smart cast: R|<local>/x|"];
6 [label="Access variable R|kotlin/String.length|"];
7 [label="Exit block"];
}
8 [label="Exit function test_1" style="filled" fillcolor=red];
0 [label="Enter file casts.kt" style="filled" fillcolor=red];
1 [label="Exit file casts.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
3 [label="Enter block"];
4 [label="Access variable R|<local>/x|"];
5 [label="Type operator: (R|<local>/x| as R|kotlin/String|)"];
6 [label="Access variable R|<local>/x|"];
7 [label="Smart cast: R|<local>/x|"];
8 [label="Access variable R|kotlin/String.length|"];
9 [label="Exit block"];
}
10 [label="Exit function test_1" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
2 -> {3};
3 -> {4};
4 -> {5};
5 -> {6};
6 -> {7};
7 -> {8};
8 -> {9};
9 -> {10};
subgraph cluster_2 {
subgraph cluster_3 {
color=red
9 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_3 {
11 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_4 {
color=blue
10 [label="Enter block"];
subgraph cluster_4 {
12 [label="Enter block"];
subgraph cluster_5 {
color=blue
11 [label="Enter when"];
subgraph cluster_5 {
color=blue
12 [label="Enter when branch condition "];
13 [label="Access variable R|<local>/x|"];
14 [label="Type operator: (R|<local>/x| as R|kotlin/Boolean|)"];
15 [label="Exit when branch condition"];
}
16 [label="Synthetic else branch"];
17 [label="Enter when branch result"];
13 [label="Enter when"];
subgraph cluster_6 {
color=blue
18 [label="Enter block"];
19 [label="Access variable R|<local>/x|"];
20 [label="Smart cast: R|<local>/x|"];
21 [label="Function call: R|<local>/x|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
22 [label="Exit block"];
14 [label="Enter when branch condition "];
15 [label="Access variable R|<local>/x|"];
16 [label="Type operator: (R|<local>/x| as R|kotlin/Boolean|)"];
17 [label="Exit when branch condition"];
}
23 [label="Exit when branch result"];
24 [label="Exit when"];
18 [label="Synthetic else branch"];
19 [label="Enter when branch result"];
subgraph cluster_7 {
color=blue
20 [label="Enter block"];
21 [label="Access variable R|<local>/x|"];
22 [label="Smart cast: R|<local>/x|"];
23 [label="Function call: R|<local>/x|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
24 [label="Exit block"];
}
25 [label="Exit when branch result"];
26 [label="Exit when"];
}
25 [label="Access variable R|<local>/x|"];
26 [label="Smart cast: R|<local>/x|"];
27 [label="Function call: R|<local>/x|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
28 [label="Exit block"];
27 [label="Access variable R|<local>/x|"];
28 [label="Smart cast: R|<local>/x|"];
29 [label="Function call: R|<local>/x|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
30 [label="Exit block"];
}
29 [label="Exit function test_2" style="filled" fillcolor=red];
31 [label="Exit function test_2" style="filled" fillcolor=red];
}
9 -> {10};
10 -> {11};
11 -> {12};
12 -> {13};
13 -> {14};
14 -> {15};
15 -> {16 17};
16 -> {24};
17 -> {18};
18 -> {19};
15 -> {16};
16 -> {17};
17 -> {18 19};
18 -> {26};
19 -> {20};
20 -> {21};
21 -> {22};
@@ -83,132 +88,132 @@ digraph casts_kt {
26 -> {27};
27 -> {28};
28 -> {29};
subgraph cluster_7 {
color=red
30 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_8 {
color=blue
31 [label="Enter block"];
subgraph cluster_9 {
color=blue
32 [label="Enter when"];
subgraph cluster_10 {
color=blue
33 [label="Enter when branch condition "];
subgraph cluster_11 {
color=blue
34 [label="Enter &&"];
35 [label="Access variable R|<local>/b|"];
36 [label="Exit left part of &&"];
37 [label="Enter right part of &&"];
38 [label="Access variable R|<local>/x|"];
39 [label="Type operator: (R|<local>/x| as R|kotlin/Boolean|)"];
40 [label="Exit &&"];
}
41 [label="Exit when branch condition"];
}
42 [label="Synthetic else branch"];
43 [label="Enter when branch result"];
subgraph cluster_12 {
color=blue
44 [label="Enter block"];
45 [label="Access variable R|<local>/x|"];
46 [label="Smart cast: R|<local>/x|"];
47 [label="Function call: R|<local>/x|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
48 [label="Exit block"];
}
49 [label="Exit when branch result"];
50 [label="Exit when"];
}
51 [label="Access variable R|<local>/x|"];
52 [label="Function call: R|<local>/x|.<Unresolved name: not>#()" style="filled" fillcolor=yellow];
subgraph cluster_13 {
color=blue
53 [label="Enter when"];
subgraph cluster_14 {
color=blue
54 [label="Enter when branch condition "];
subgraph cluster_15 {
color=blue
55 [label="Enter &&"];
56 [label="Access variable R|<local>/b|"];
57 [label="Exit left part of &&"];
58 [label="Enter right part of &&"];
59 [label="Access variable R|<local>/x|"];
60 [label="Type operator: (R|<local>/x| as R|kotlin/Boolean|)"];
61 [label="Const: Boolean(true)"];
62 [label="Equality operator =="];
63 [label="Exit &&"];
}
64 [label="Exit when branch condition"];
}
65 [label="Synthetic else branch"];
66 [label="Enter when branch result"];
subgraph cluster_16 {
color=blue
67 [label="Enter block"];
68 [label="Access variable R|<local>/x|"];
69 [label="Smart cast: R|<local>/x|"];
70 [label="Function call: R|<local>/x|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
71 [label="Exit block"];
}
72 [label="Exit when branch result"];
73 [label="Exit when"];
}
74 [label="Access variable R|<local>/x|"];
75 [label="Function call: R|<local>/x|.<Unresolved name: not>#()" style="filled" fillcolor=yellow];
subgraph cluster_17 {
color=blue
76 [label="Enter when"];
subgraph cluster_18 {
color=blue
77 [label="Enter when branch condition "];
subgraph cluster_19 {
color=blue
78 [label="Enter ||"];
79 [label="Access variable R|<local>/b|"];
80 [label="Exit left part of ||"];
81 [label="Enter right part of ||"];
82 [label="Access variable R|<local>/x|"];
83 [label="Type operator: (R|<local>/x| as R|kotlin/Boolean|)"];
84 [label="Exit ||"];
}
85 [label="Exit when branch condition"];
}
86 [label="Synthetic else branch"];
87 [label="Enter when branch result"];
subgraph cluster_20 {
color=blue
88 [label="Enter block"];
89 [label="Access variable R|<local>/x|"];
90 [label="Function call: R|<local>/x|.<Unresolved name: not>#()" style="filled" fillcolor=yellow];
91 [label="Exit block"];
}
92 [label="Exit when branch result"];
93 [label="Exit when"];
}
94 [label="Access variable R|<local>/x|"];
95 [label="Function call: R|<local>/x|.<Unresolved name: not>#()" style="filled" fillcolor=yellow];
96 [label="Exit block"];
}
97 [label="Exit function test_3" style="filled" fillcolor=red];
}
29 -> {30};
30 -> {31};
31 -> {32};
subgraph cluster_8 {
color=red
32 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_9 {
color=blue
33 [label="Enter block"];
subgraph cluster_10 {
color=blue
34 [label="Enter when"];
subgraph cluster_11 {
color=blue
35 [label="Enter when branch condition "];
subgraph cluster_12 {
color=blue
36 [label="Enter &&"];
37 [label="Access variable R|<local>/b|"];
38 [label="Exit left part of &&"];
39 [label="Enter right part of &&"];
40 [label="Access variable R|<local>/x|"];
41 [label="Type operator: (R|<local>/x| as R|kotlin/Boolean|)"];
42 [label="Exit &&"];
}
43 [label="Exit when branch condition"];
}
44 [label="Synthetic else branch"];
45 [label="Enter when branch result"];
subgraph cluster_13 {
color=blue
46 [label="Enter block"];
47 [label="Access variable R|<local>/x|"];
48 [label="Smart cast: R|<local>/x|"];
49 [label="Function call: R|<local>/x|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
50 [label="Exit block"];
}
51 [label="Exit when branch result"];
52 [label="Exit when"];
}
53 [label="Access variable R|<local>/x|"];
54 [label="Function call: R|<local>/x|.<Unresolved name: not>#()" style="filled" fillcolor=yellow];
subgraph cluster_14 {
color=blue
55 [label="Enter when"];
subgraph cluster_15 {
color=blue
56 [label="Enter when branch condition "];
subgraph cluster_16 {
color=blue
57 [label="Enter &&"];
58 [label="Access variable R|<local>/b|"];
59 [label="Exit left part of &&"];
60 [label="Enter right part of &&"];
61 [label="Access variable R|<local>/x|"];
62 [label="Type operator: (R|<local>/x| as R|kotlin/Boolean|)"];
63 [label="Const: Boolean(true)"];
64 [label="Equality operator =="];
65 [label="Exit &&"];
}
66 [label="Exit when branch condition"];
}
67 [label="Synthetic else branch"];
68 [label="Enter when branch result"];
subgraph cluster_17 {
color=blue
69 [label="Enter block"];
70 [label="Access variable R|<local>/x|"];
71 [label="Smart cast: R|<local>/x|"];
72 [label="Function call: R|<local>/x|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
73 [label="Exit block"];
}
74 [label="Exit when branch result"];
75 [label="Exit when"];
}
76 [label="Access variable R|<local>/x|"];
77 [label="Function call: R|<local>/x|.<Unresolved name: not>#()" style="filled" fillcolor=yellow];
subgraph cluster_18 {
color=blue
78 [label="Enter when"];
subgraph cluster_19 {
color=blue
79 [label="Enter when branch condition "];
subgraph cluster_20 {
color=blue
80 [label="Enter ||"];
81 [label="Access variable R|<local>/b|"];
82 [label="Exit left part of ||"];
83 [label="Enter right part of ||"];
84 [label="Access variable R|<local>/x|"];
85 [label="Type operator: (R|<local>/x| as R|kotlin/Boolean|)"];
86 [label="Exit ||"];
}
87 [label="Exit when branch condition"];
}
88 [label="Synthetic else branch"];
89 [label="Enter when branch result"];
subgraph cluster_21 {
color=blue
90 [label="Enter block"];
91 [label="Access variable R|<local>/x|"];
92 [label="Function call: R|<local>/x|.<Unresolved name: not>#()" style="filled" fillcolor=yellow];
93 [label="Exit block"];
}
94 [label="Exit when branch result"];
95 [label="Exit when"];
}
96 [label="Access variable R|<local>/x|"];
97 [label="Function call: R|<local>/x|.<Unresolved name: not>#()" style="filled" fillcolor=yellow];
98 [label="Exit block"];
}
99 [label="Exit function test_3" style="filled" fillcolor=red];
}
32 -> {33};
33 -> {34};
34 -> {35};
35 -> {36};
36 -> {37 40};
36 -> {37};
37 -> {38};
38 -> {39};
38 -> {39 42};
39 -> {40};
40 -> {41};
41 -> {42 43};
42 -> {50};
43 -> {44};
44 -> {45};
41 -> {42};
42 -> {43};
43 -> {44 45};
44 -> {52};
45 -> {46};
46 -> {47};
47 -> {48};
@@ -221,17 +226,17 @@ digraph casts_kt {
54 -> {55};
55 -> {56};
56 -> {57};
57 -> {58 63};
57 -> {58};
58 -> {59};
59 -> {60};
59 -> {60 65};
60 -> {61};
61 -> {62};
62 -> {63};
63 -> {64};
64 -> {65 66};
65 -> {73};
66 -> {67};
67 -> {68};
64 -> {65};
65 -> {66};
66 -> {67 68};
67 -> {75};
68 -> {69};
69 -> {70};
70 -> {71};
@@ -244,15 +249,15 @@ digraph casts_kt {
77 -> {78};
78 -> {79};
79 -> {80};
80 -> {81 84};
80 -> {81};
81 -> {82};
82 -> {83};
82 -> {83 86};
83 -> {84};
84 -> {85};
85 -> {86 87};
86 -> {93};
87 -> {88};
88 -> {89};
85 -> {86};
86 -> {87};
87 -> {88 89};
88 -> {95};
89 -> {90};
90 -> {91};
91 -> {92};
@@ -261,116 +266,116 @@ digraph casts_kt {
94 -> {95};
95 -> {96};
96 -> {97};
97 -> {98};
98 -> {99};
subgraph cluster_21 {
subgraph cluster_22 {
color=red
98 [label="Enter function test_4" style="filled" fillcolor=red];
subgraph cluster_22 {
100 [label="Enter function test_4" style="filled" fillcolor=red];
subgraph cluster_23 {
color=blue
99 [label="Enter block"];
subgraph cluster_23 {
101 [label="Enter block"];
subgraph cluster_24 {
color=blue
100 [label="Enter when"];
subgraph cluster_24 {
color=blue
101 [label="Enter when branch condition "];
102 [label="Access variable R|<local>/b|"];
103 [label="Type operator: (R|<local>/b| as? R|kotlin/Boolean|)"];
104 [label="Const: Null(null)"];
105 [label="Equality operator !="];
106 [label="Exit when branch condition"];
}
102 [label="Enter when"];
subgraph cluster_25 {
color=blue
107 [label="Enter when branch condition else"];
103 [label="Enter when branch condition "];
104 [label="Access variable R|<local>/b|"];
105 [label="Type operator: (R|<local>/b| as? R|kotlin/Boolean|)"];
106 [label="Const: Null(null)"];
107 [label="Equality operator !="];
108 [label="Exit when branch condition"];
}
109 [label="Enter when branch result"];
subgraph cluster_26 {
color=blue
110 [label="Enter block"];
111 [label="Access variable R|<local>/b|"];
112 [label="Function call: R|<local>/b|.<Unresolved name: not>#()" style="filled" fillcolor=yellow];
113 [label="Exit block"];
109 [label="Enter when branch condition else"];
110 [label="Exit when branch condition"];
}
114 [label="Exit when branch result"];
115 [label="Enter when branch result"];
111 [label="Enter when branch result"];
subgraph cluster_27 {
color=blue
116 [label="Enter block"];
117 [label="Access variable R|<local>/b|"];
118 [label="Smart cast: R|<local>/b|"];
119 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
120 [label="Exit block"];
112 [label="Enter block"];
113 [label="Access variable R|<local>/b|"];
114 [label="Function call: R|<local>/b|.<Unresolved name: not>#()" style="filled" fillcolor=yellow];
115 [label="Exit block"];
}
121 [label="Exit when branch result"];
122 [label="Exit when"];
}
123 [label="Access variable R|<local>/b|"];
124 [label="Function call: R|<local>/b|.<Unresolved name: not>#()" style="filled" fillcolor=yellow];
subgraph cluster_28 {
color=blue
125 [label="Enter when"];
subgraph cluster_29 {
116 [label="Exit when branch result"];
117 [label="Enter when branch result"];
subgraph cluster_28 {
color=blue
126 [label="Enter when branch condition "];
127 [label="Access variable R|<local>/b|"];
128 [label="Type operator: (R|<local>/b| as? R|kotlin/Boolean|)"];
129 [label="Const: Null(null)"];
130 [label="Equality operator =="];
131 [label="Exit when branch condition"];
118 [label="Enter block"];
119 [label="Access variable R|<local>/b|"];
120 [label="Smart cast: R|<local>/b|"];
121 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
122 [label="Exit block"];
}
123 [label="Exit when branch result"];
124 [label="Exit when"];
}
125 [label="Access variable R|<local>/b|"];
126 [label="Function call: R|<local>/b|.<Unresolved name: not>#()" style="filled" fillcolor=yellow];
subgraph cluster_29 {
color=blue
127 [label="Enter when"];
subgraph cluster_30 {
color=blue
132 [label="Enter when branch condition else"];
128 [label="Enter when branch condition "];
129 [label="Access variable R|<local>/b|"];
130 [label="Type operator: (R|<local>/b| as? R|kotlin/Boolean|)"];
131 [label="Const: Null(null)"];
132 [label="Equality operator =="];
133 [label="Exit when branch condition"];
}
134 [label="Enter when branch result"];
subgraph cluster_31 {
color=blue
135 [label="Enter block"];
136 [label="Access variable R|<local>/b|"];
137 [label="Smart cast: R|<local>/b|"];
138 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
139 [label="Exit block"];
134 [label="Enter when branch condition else"];
135 [label="Exit when branch condition"];
}
140 [label="Exit when branch result"];
141 [label="Enter when branch result"];
136 [label="Enter when branch result"];
subgraph cluster_32 {
color=blue
142 [label="Enter block"];
143 [label="Access variable R|<local>/b|"];
144 [label="Function call: R|<local>/b|.<Unresolved name: not>#()" style="filled" fillcolor=yellow];
145 [label="Exit block"];
137 [label="Enter block"];
138 [label="Access variable R|<local>/b|"];
139 [label="Smart cast: R|<local>/b|"];
140 [label="Function call: R|<local>/b|.R|kotlin/Boolean.not|()" style="filled" fillcolor=yellow];
141 [label="Exit block"];
}
146 [label="Exit when branch result"];
147 [label="Exit when"];
142 [label="Exit when branch result"];
143 [label="Enter when branch result"];
subgraph cluster_33 {
color=blue
144 [label="Enter block"];
145 [label="Access variable R|<local>/b|"];
146 [label="Function call: R|<local>/b|.<Unresolved name: not>#()" style="filled" fillcolor=yellow];
147 [label="Exit block"];
}
148 [label="Exit when branch result"];
149 [label="Exit when"];
}
148 [label="Access variable R|<local>/b|"];
149 [label="Function call: R|<local>/b|.<Unresolved name: not>#()" style="filled" fillcolor=yellow];
150 [label="Exit block"];
150 [label="Access variable R|<local>/b|"];
151 [label="Function call: R|<local>/b|.<Unresolved name: not>#()" style="filled" fillcolor=yellow];
152 [label="Exit block"];
}
151 [label="Exit function test_4" style="filled" fillcolor=red];
153 [label="Exit function test_4" style="filled" fillcolor=red];
}
98 -> {99};
99 -> {100};
100 -> {101};
101 -> {102};
102 -> {103};
103 -> {104};
104 -> {105};
105 -> {106};
106 -> {107 115};
106 -> {107};
107 -> {108};
108 -> {109};
108 -> {109 117};
109 -> {110};
110 -> {111};
111 -> {112};
112 -> {113};
113 -> {114};
114 -> {122};
114 -> {115};
115 -> {116};
116 -> {117};
116 -> {124};
117 -> {118};
118 -> {119};
119 -> {120};
@@ -385,18 +390,18 @@ digraph casts_kt {
128 -> {129};
129 -> {130};
130 -> {131};
131 -> {132 141};
131 -> {132};
132 -> {133};
133 -> {134};
133 -> {134 143};
134 -> {135};
135 -> {136};
136 -> {137};
137 -> {138};
138 -> {139};
139 -> {140};
140 -> {147};
140 -> {141};
141 -> {142};
142 -> {143};
142 -> {149};
143 -> {144};
144 -> {145};
145 -> {146};
@@ -405,5 +410,7 @@ digraph casts_kt {
148 -> {149};
149 -> {150};
150 -> {151};
151 -> {152};
152 -> {153};
}
@@ -5,78 +5,83 @@ digraph elvis_kt {
subgraph cluster_0 {
color=red
0 [label="Enter class A" style="filled" fillcolor=red];
1 [label="Exit class A" style="filled" fillcolor=red];
0 [label="Enter file elvis.kt" style="filled" fillcolor=red];
1 [label="Exit file elvis.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter function foo" style="filled" fillcolor=red];
3 [label="Exit function foo" style="filled" fillcolor=red];
2 [label="Enter class A" style="filled" fillcolor=red];
3 [label="Exit class A" style="filled" fillcolor=red];
}
2 -> {3};
2 -> {3} [color=green];
subgraph cluster_2 {
color=red
4 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_3 {
color=blue
5 [label="Enter block"];
subgraph cluster_4 {
color=blue
6 [label="Enter when"];
subgraph cluster_5 {
color=blue
7 [label="Enter when branch condition "];
8 [label="Access variable R|<local>/x|"];
9 [label="Enter safe call"];
10 [label="Access variable R|/A.b|"];
11 [label="Exit safe call"];
12 [label="Exit lhs of ?:"];
13 [label="Enter rhs of ?:"];
14 [label="Jump: ^test_1 Unit"];
15 [label="Stub" style="filled" fillcolor=gray];
16 [label="Lhs of ?: is not null"];
17 [label="Exit ?:"];
18 [label="Exit when branch condition"];
}
19 [label="Synthetic else branch"];
20 [label="Enter when branch result"];
subgraph cluster_6 {
color=blue
21 [label="Enter block"];
22 [label="Access variable R|<local>/x|"];
23 [label="Smart cast: R|<local>/x|"];
24 [label="Function call: R|<local>/x|.R|/A.foo|()" style="filled" fillcolor=yellow];
25 [label="Exit block"];
}
26 [label="Exit when branch result"];
27 [label="Exit when"];
}
28 [label="Exit block"];
}
29 [label="Exit function test_1" style="filled" fillcolor=red];
4 [label="Enter function foo" style="filled" fillcolor=red];
5 [label="Exit function foo" style="filled" fillcolor=red];
}
4 -> {5};
5 -> {6};
subgraph cluster_3 {
color=red
6 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_4 {
color=blue
7 [label="Enter block"];
subgraph cluster_5 {
color=blue
8 [label="Enter when"];
subgraph cluster_6 {
color=blue
9 [label="Enter when branch condition "];
10 [label="Access variable R|<local>/x|"];
11 [label="Enter safe call"];
12 [label="Access variable R|/A.b|"];
13 [label="Exit safe call"];
14 [label="Exit lhs of ?:"];
15 [label="Enter rhs of ?:"];
16 [label="Jump: ^test_1 Unit"];
17 [label="Stub" style="filled" fillcolor=gray];
18 [label="Lhs of ?: is not null"];
19 [label="Exit ?:"];
20 [label="Exit when branch condition"];
}
21 [label="Synthetic else branch"];
22 [label="Enter when branch result"];
subgraph cluster_7 {
color=blue
23 [label="Enter block"];
24 [label="Access variable R|<local>/x|"];
25 [label="Smart cast: R|<local>/x|"];
26 [label="Function call: R|<local>/x|.R|/A.foo|()" style="filled" fillcolor=yellow];
27 [label="Exit block"];
}
28 [label="Exit when branch result"];
29 [label="Exit when"];
}
30 [label="Exit block"];
}
31 [label="Exit function test_1" style="filled" fillcolor=red];
}
6 -> {7};
7 -> {8};
8 -> {9 13};
8 -> {9};
9 -> {10};
10 -> {11};
10 -> {11 15};
11 -> {12};
12 -> {13 16};
12 -> {13};
13 -> {14};
14 -> {29};
14 -> {15} [style=dotted];
15 -> {17} [style=dotted];
16 -> {17};
17 -> {18};
18 -> {19 20};
19 -> {27};
20 -> {21};
21 -> {22};
14 -> {15 18};
15 -> {16};
16 -> {31};
16 -> {17} [style=dotted];
17 -> {19} [style=dotted];
18 -> {19};
19 -> {20};
20 -> {21 22};
21 -> {29};
22 -> {23};
23 -> {24};
24 -> {25};
@@ -84,116 +89,118 @@ digraph elvis_kt {
26 -> {27};
27 -> {28};
28 -> {29};
29 -> {30};
30 -> {31};
subgraph cluster_7 {
subgraph cluster_8 {
color=red
30 [label="Enter function test2" style="filled" fillcolor=red];
subgraph cluster_8 {
32 [label="Enter function test2" style="filled" fillcolor=red];
subgraph cluster_9 {
color=blue
31 [label="Enter block"];
subgraph cluster_9 {
33 [label="Enter block"];
subgraph cluster_10 {
color=blue
32 [label="Enter when"];
subgraph cluster_10 {
color=blue
33 [label="Enter when branch condition "];
34 [label="Access variable R|<local>/b|"];
35 [label="Type operator: (R|<local>/b| !is R|kotlin/String|)"];
36 [label="Exit when branch condition"];
}
37 [label="Synthetic else branch"];
38 [label="Enter when branch result"];
34 [label="Enter when"];
subgraph cluster_11 {
color=blue
39 [label="Enter block"];
40 [label="Const: String()"];
41 [label="Jump: ^test2 String()"];
42 [label="Stub" style="filled" fillcolor=gray];
43 [label="Exit block" style="filled" fillcolor=gray];
35 [label="Enter when branch condition "];
36 [label="Access variable R|<local>/b|"];
37 [label="Type operator: (R|<local>/b| !is R|kotlin/String|)"];
38 [label="Exit when branch condition"];
}
44 [label="Exit when branch result" style="filled" fillcolor=gray];
45 [label="Exit when"];
}
subgraph cluster_12 {
color=blue
46 [label="Enter when"];
subgraph cluster_13 {
39 [label="Synthetic else branch"];
40 [label="Enter when branch result"];
subgraph cluster_12 {
color=blue
47 [label="Enter when branch condition "];
48 [label="Access variable R|<local>/a|"];
49 [label="Type operator: (R|<local>/a| !is R|kotlin/String?|)"];
50 [label="Exit when branch condition"];
41 [label="Enter block"];
42 [label="Const: String()"];
43 [label="Jump: ^test2 String()"];
44 [label="Stub" style="filled" fillcolor=gray];
45 [label="Exit block" style="filled" fillcolor=gray];
}
51 [label="Synthetic else branch"];
52 [label="Enter when branch result"];
46 [label="Exit when branch result" style="filled" fillcolor=gray];
47 [label="Exit when"];
}
subgraph cluster_13 {
color=blue
48 [label="Enter when"];
subgraph cluster_14 {
color=blue
53 [label="Enter block"];
54 [label="Const: String()"];
55 [label="Jump: ^test2 String()"];
56 [label="Stub" style="filled" fillcolor=gray];
57 [label="Exit block" style="filled" fillcolor=gray];
49 [label="Enter when branch condition "];
50 [label="Access variable R|<local>/a|"];
51 [label="Type operator: (R|<local>/a| !is R|kotlin/String?|)"];
52 [label="Exit when branch condition"];
}
58 [label="Exit when branch result" style="filled" fillcolor=gray];
59 [label="Exit when"];
53 [label="Synthetic else branch"];
54 [label="Enter when branch result"];
subgraph cluster_15 {
color=blue
55 [label="Enter block"];
56 [label="Const: String()"];
57 [label="Jump: ^test2 String()"];
58 [label="Stub" style="filled" fillcolor=gray];
59 [label="Exit block" style="filled" fillcolor=gray];
}
60 [label="Exit when branch result" style="filled" fillcolor=gray];
61 [label="Exit when"];
}
60 [label="Access variable R|<local>/a|"];
61 [label="Smart cast: R|<local>/a|"];
62 [label="Exit lhs of ?:"];
63 [label="Enter rhs of ?:"];
64 [label="Access variable R|<local>/b|"];
65 [label="Smart cast: R|<local>/b|"];
66 [label="Lhs of ?: is not null"];
67 [label="Exit ?:"];
68 [label="Jump: ^test2 R|<local>/a| ?: R|<local>/b|"];
69 [label="Stub" style="filled" fillcolor=gray];
70 [label="Exit block" style="filled" fillcolor=gray];
62 [label="Access variable R|<local>/a|"];
63 [label="Smart cast: R|<local>/a|"];
64 [label="Exit lhs of ?:"];
65 [label="Enter rhs of ?:"];
66 [label="Access variable R|<local>/b|"];
67 [label="Smart cast: R|<local>/b|"];
68 [label="Lhs of ?: is not null"];
69 [label="Exit ?:"];
70 [label="Jump: ^test2 R|<local>/a| ?: R|<local>/b|"];
71 [label="Stub" style="filled" fillcolor=gray];
72 [label="Exit block" style="filled" fillcolor=gray];
}
71 [label="Exit function test2" style="filled" fillcolor=red];
73 [label="Exit function test2" style="filled" fillcolor=red];
}
30 -> {31};
31 -> {32};
32 -> {33};
33 -> {34};
34 -> {35};
35 -> {36};
36 -> {37 38};
37 -> {45};
38 -> {39};
39 -> {40};
36 -> {37};
37 -> {38};
38 -> {39 40};
39 -> {47};
40 -> {41};
41 -> {71};
41 -> {42} [style=dotted];
42 -> {43} [style=dotted];
41 -> {42};
42 -> {43};
43 -> {73};
43 -> {44} [style=dotted];
44 -> {45} [style=dotted];
45 -> {46};
46 -> {47};
45 -> {46} [style=dotted];
46 -> {47} [style=dotted];
47 -> {48};
48 -> {49};
49 -> {50};
50 -> {51 52};
51 -> {59};
52 -> {53};
53 -> {54};
50 -> {51};
51 -> {52};
52 -> {53 54};
53 -> {61};
54 -> {55};
55 -> {71};
55 -> {56} [style=dotted];
56 -> {57} [style=dotted];
55 -> {56};
56 -> {57};
57 -> {73};
57 -> {58} [style=dotted];
58 -> {59} [style=dotted];
59 -> {60};
60 -> {61};
59 -> {60} [style=dotted];
60 -> {61} [style=dotted];
61 -> {62};
62 -> {63 66};
62 -> {63};
63 -> {64};
64 -> {65};
65 -> {67};
64 -> {65 68};
65 -> {66};
66 -> {67};
67 -> {68};
68 -> {71};
68 -> {69} [style=dotted];
69 -> {70} [style=dotted];
67 -> {69};
68 -> {69};
69 -> {70};
70 -> {73};
70 -> {71} [style=dotted];
71 -> {72} [style=dotted];
72 -> {73} [style=dotted];
}
@@ -5,65 +5,70 @@ digraph returns_kt {
subgraph cluster_0 {
color=red
0 [label="Enter function test_0" style="filled" fillcolor=red];
subgraph cluster_1 {
0 [label="Enter file returns.kt" style="filled" fillcolor=red];
1 [label="Exit file returns.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter function test_0" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
1 [label="Enter block"];
subgraph cluster_2 {
3 [label="Enter block"];
subgraph cluster_3 {
color=blue
2 [label="Enter when"];
subgraph cluster_3 {
color=blue
3 [label="Enter when branch condition "];
4 [label="Access variable R|<local>/x|"];
5 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
6 [label="Exit when branch condition"];
}
4 [label="Enter when"];
subgraph cluster_4 {
color=blue
7 [label="Enter when branch condition else"];
5 [label="Enter when branch condition "];
6 [label="Access variable R|<local>/x|"];
7 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
8 [label="Exit when branch condition"];
}
9 [label="Enter when branch result"];
subgraph cluster_5 {
color=blue
10 [label="Enter block"];
11 [label="Exit block"];
9 [label="Enter when branch condition else"];
10 [label="Exit when branch condition"];
}
12 [label="Exit when branch result"];
13 [label="Enter when branch result"];
11 [label="Enter when branch result"];
subgraph cluster_6 {
color=blue
14 [label="Enter block"];
15 [label="Access variable R|<local>/x|"];
16 [label="Smart cast: R|<local>/x|"];
17 [label="Access variable R|kotlin/String.length|"];
18 [label="Exit block"];
12 [label="Enter block"];
13 [label="Exit block"];
}
19 [label="Exit when branch result"];
20 [label="Exit when"];
14 [label="Exit when branch result"];
15 [label="Enter when branch result"];
subgraph cluster_7 {
color=blue
16 [label="Enter block"];
17 [label="Access variable R|<local>/x|"];
18 [label="Smart cast: R|<local>/x|"];
19 [label="Access variable R|kotlin/String.length|"];
20 [label="Exit block"];
}
21 [label="Exit when branch result"];
22 [label="Exit when"];
}
21 [label="Access variable R|<local>/x|"];
22 [label="Access variable <Unresolved name: length>#"];
23 [label="Exit block"];
23 [label="Access variable R|<local>/x|"];
24 [label="Access variable <Unresolved name: length>#"];
25 [label="Exit block"];
}
24 [label="Exit function test_0" style="filled" fillcolor=red];
26 [label="Exit function test_0" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
2 -> {3};
3 -> {4};
4 -> {5};
5 -> {6};
6 -> {7 13};
6 -> {7};
7 -> {8};
8 -> {9};
8 -> {9 15};
9 -> {10};
10 -> {11};
11 -> {12};
12 -> {20};
12 -> {13};
13 -> {14};
14 -> {15};
14 -> {22};
15 -> {16};
16 -> {17};
17 -> {18};
@@ -73,74 +78,74 @@ digraph returns_kt {
21 -> {22};
22 -> {23};
23 -> {24};
24 -> {25};
25 -> {26};
subgraph cluster_7 {
subgraph cluster_8 {
color=red
25 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_8 {
27 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_9 {
color=blue
26 [label="Enter block"];
subgraph cluster_9 {
28 [label="Enter block"];
subgraph cluster_10 {
color=blue
27 [label="Enter when"];
subgraph cluster_10 {
color=blue
28 [label="Enter when branch condition "];
29 [label="Access variable R|<local>/x|"];
30 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
31 [label="Exit when branch condition"];
}
29 [label="Enter when"];
subgraph cluster_11 {
color=blue
32 [label="Enter when branch condition else"];
30 [label="Enter when branch condition "];
31 [label="Access variable R|<local>/x|"];
32 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
33 [label="Exit when branch condition"];
}
34 [label="Enter when branch result"];
subgraph cluster_12 {
color=blue
35 [label="Enter block"];
36 [label="Jump: ^test_1 Unit"];
37 [label="Stub" style="filled" fillcolor=gray];
38 [label="Exit block" style="filled" fillcolor=gray];
34 [label="Enter when branch condition else"];
35 [label="Exit when branch condition"];
}
39 [label="Exit when branch result" style="filled" fillcolor=gray];
40 [label="Enter when branch result"];
36 [label="Enter when branch result"];
subgraph cluster_13 {
color=blue
41 [label="Enter block"];
42 [label="Access variable R|<local>/x|"];
43 [label="Smart cast: R|<local>/x|"];
44 [label="Access variable R|kotlin/String.length|"];
45 [label="Exit block"];
37 [label="Enter block"];
38 [label="Jump: ^test_1 Unit"];
39 [label="Stub" style="filled" fillcolor=gray];
40 [label="Exit block" style="filled" fillcolor=gray];
}
46 [label="Exit when branch result"];
47 [label="Exit when"];
41 [label="Exit when branch result" style="filled" fillcolor=gray];
42 [label="Enter when branch result"];
subgraph cluster_14 {
color=blue
43 [label="Enter block"];
44 [label="Access variable R|<local>/x|"];
45 [label="Smart cast: R|<local>/x|"];
46 [label="Access variable R|kotlin/String.length|"];
47 [label="Exit block"];
}
48 [label="Exit when branch result"];
49 [label="Exit when"];
}
48 [label="Access variable R|<local>/x|"];
49 [label="Smart cast: R|<local>/x|"];
50 [label="Access variable R|kotlin/String.length|"];
51 [label="Exit block"];
50 [label="Access variable R|<local>/x|"];
51 [label="Smart cast: R|<local>/x|"];
52 [label="Access variable R|kotlin/String.length|"];
53 [label="Exit block"];
}
52 [label="Exit function test_1" style="filled" fillcolor=red];
54 [label="Exit function test_1" style="filled" fillcolor=red];
}
25 -> {26};
26 -> {27};
27 -> {28};
28 -> {29};
29 -> {30};
30 -> {31};
31 -> {32 40};
31 -> {32};
32 -> {33};
33 -> {34};
33 -> {34 42};
34 -> {35};
35 -> {36};
36 -> {52};
36 -> {37} [style=dotted];
37 -> {38} [style=dotted];
36 -> {37};
37 -> {38};
38 -> {54};
38 -> {39} [style=dotted];
39 -> {47} [style=dotted];
40 -> {41};
41 -> {42};
39 -> {40} [style=dotted];
40 -> {41} [style=dotted];
41 -> {49} [style=dotted];
42 -> {43};
43 -> {44};
44 -> {45};
@@ -151,150 +156,150 @@ digraph returns_kt {
49 -> {50};
50 -> {51};
51 -> {52};
subgraph cluster_14 {
color=red
53 [label="Enter class A" style="filled" fillcolor=red];
54 [label="Exit class A" style="filled" fillcolor=red];
}
53 -> {54} [color=green];
52 -> {53};
53 -> {54};
subgraph cluster_15 {
color=red
55 [label="Enter function foo" style="filled" fillcolor=red];
56 [label="Exit function foo" style="filled" fillcolor=red];
55 [label="Enter class A" style="filled" fillcolor=red];
56 [label="Exit class A" style="filled" fillcolor=red];
}
55 -> {56};
55 -> {56} [color=green];
subgraph cluster_16 {
color=red
57 [label="Enter class B" style="filled" fillcolor=red];
58 [label="Exit class B" style="filled" fillcolor=red];
57 [label="Enter function foo" style="filled" fillcolor=red];
58 [label="Exit function foo" style="filled" fillcolor=red];
}
57 -> {58} [color=green];
57 -> {58};
subgraph cluster_17 {
color=red
59 [label="Enter function bar" style="filled" fillcolor=red];
60 [label="Exit function bar" style="filled" fillcolor=red];
59 [label="Enter class B" style="filled" fillcolor=red];
60 [label="Exit class B" style="filled" fillcolor=red];
}
59 -> {60};
59 -> {60} [color=green];
subgraph cluster_18 {
color=red
61 [label="Enter class C" style="filled" fillcolor=red];
62 [label="Exit class C" style="filled" fillcolor=red];
61 [label="Enter function bar" style="filled" fillcolor=red];
62 [label="Exit function bar" style="filled" fillcolor=red];
}
61 -> {62} [color=green];
61 -> {62};
subgraph cluster_19 {
color=red
63 [label="Enter function baz" style="filled" fillcolor=red];
64 [label="Exit function baz" style="filled" fillcolor=red];
63 [label="Enter class C" style="filled" fillcolor=red];
64 [label="Exit class C" style="filled" fillcolor=red];
}
63 -> {64};
63 -> {64} [color=green];
subgraph cluster_20 {
color=red
65 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_21 {
65 [label="Enter function baz" style="filled" fillcolor=red];
66 [label="Exit function baz" style="filled" fillcolor=red];
}
65 -> {66};
subgraph cluster_21 {
color=red
67 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_22 {
color=blue
66 [label="Enter block"];
subgraph cluster_22 {
68 [label="Enter block"];
subgraph cluster_23 {
color=blue
67 [label="Enter when"];
subgraph cluster_23 {
color=blue
68 [label="Enter when branch condition "];
69 [label="Access variable R|<local>/x|"];
70 [label="Type operator: (R|<local>/x| is R|B|)"];
71 [label="Exit when branch condition"];
}
69 [label="Enter when"];
subgraph cluster_24 {
color=blue
72 [label="Enter when branch condition "];
73 [label="Access variable R|<local>/x|"];
74 [label="Type operator: (R|<local>/x| is R|C|)"];
75 [label="Exit when branch condition"];
70 [label="Enter when branch condition "];
71 [label="Access variable R|<local>/x|"];
72 [label="Type operator: (R|<local>/x| is R|B|)"];
73 [label="Exit when branch condition"];
}
subgraph cluster_25 {
color=blue
76 [label="Enter when branch condition else"];
74 [label="Enter when branch condition "];
75 [label="Access variable R|<local>/x|"];
76 [label="Type operator: (R|<local>/x| is R|C|)"];
77 [label="Exit when branch condition"];
}
78 [label="Enter when branch result"];
subgraph cluster_26 {
color=blue
79 [label="Enter block"];
80 [label="Jump: ^test_2 Unit"];
81 [label="Stub" style="filled" fillcolor=gray];
82 [label="Exit block" style="filled" fillcolor=gray];
78 [label="Enter when branch condition else"];
79 [label="Exit when branch condition"];
}
83 [label="Exit when branch result" style="filled" fillcolor=gray];
84 [label="Enter when branch result"];
80 [label="Enter when branch result"];
subgraph cluster_27 {
color=blue
85 [label="Enter block"];
86 [label="Access variable R|<local>/x|"];
87 [label="Smart cast: R|<local>/x|"];
88 [label="Function call: R|<local>/x|.R|/C.baz|()" style="filled" fillcolor=yellow];
89 [label="Exit block"];
81 [label="Enter block"];
82 [label="Jump: ^test_2 Unit"];
83 [label="Stub" style="filled" fillcolor=gray];
84 [label="Exit block" style="filled" fillcolor=gray];
}
90 [label="Exit when branch result"];
91 [label="Enter when branch result"];
85 [label="Exit when branch result" style="filled" fillcolor=gray];
86 [label="Enter when branch result"];
subgraph cluster_28 {
color=blue
92 [label="Enter block"];
93 [label="Access variable R|<local>/x|"];
94 [label="Smart cast: R|<local>/x|"];
95 [label="Function call: R|<local>/x|.R|/B.bar|()" style="filled" fillcolor=yellow];
96 [label="Exit block"];
87 [label="Enter block"];
88 [label="Access variable R|<local>/x|"];
89 [label="Smart cast: R|<local>/x|"];
90 [label="Function call: R|<local>/x|.R|/C.baz|()" style="filled" fillcolor=yellow];
91 [label="Exit block"];
}
97 [label="Exit when branch result"];
98 [label="Exit when"];
92 [label="Exit when branch result"];
93 [label="Enter when branch result"];
subgraph cluster_29 {
color=blue
94 [label="Enter block"];
95 [label="Access variable R|<local>/x|"];
96 [label="Smart cast: R|<local>/x|"];
97 [label="Function call: R|<local>/x|.R|/B.bar|()" style="filled" fillcolor=yellow];
98 [label="Exit block"];
}
99 [label="Exit when branch result"];
100 [label="Exit when"];
}
99 [label="Access variable R|<local>/x|"];
100 [label="Smart cast: R|<local>/x|"];
101 [label="Function call: R|<local>/x|.R|/A.foo|()" style="filled" fillcolor=yellow];
102 [label="Access variable R|<local>/x|"];
103 [label="Smart cast: R|<local>/x|"];
104 [label="Function call: R|<local>/x|.<Unresolved name: bar>#()" style="filled" fillcolor=yellow];
105 [label="Access variable R|<local>/x|"];
106 [label="Smart cast: R|<local>/x|"];
107 [label="Function call: R|<local>/x|.<Unresolved name: baz>#()" style="filled" fillcolor=yellow];
108 [label="Exit block"];
101 [label="Access variable R|<local>/x|"];
102 [label="Smart cast: R|<local>/x|"];
103 [label="Function call: R|<local>/x|.R|/A.foo|()" style="filled" fillcolor=yellow];
104 [label="Access variable R|<local>/x|"];
105 [label="Smart cast: R|<local>/x|"];
106 [label="Function call: R|<local>/x|.<Unresolved name: bar>#()" style="filled" fillcolor=yellow];
107 [label="Access variable R|<local>/x|"];
108 [label="Smart cast: R|<local>/x|"];
109 [label="Function call: R|<local>/x|.<Unresolved name: baz>#()" style="filled" fillcolor=yellow];
110 [label="Exit block"];
}
109 [label="Exit function test_2" style="filled" fillcolor=red];
111 [label="Exit function test_2" style="filled" fillcolor=red];
}
65 -> {66};
66 -> {67};
67 -> {68};
68 -> {69};
69 -> {70};
70 -> {71};
71 -> {72 91};
71 -> {72};
72 -> {73};
73 -> {74};
73 -> {74 93};
74 -> {75};
75 -> {76 84};
75 -> {76};
76 -> {77};
77 -> {78};
77 -> {78 86};
78 -> {79};
79 -> {80};
80 -> {109};
80 -> {81} [style=dotted];
81 -> {82} [style=dotted];
80 -> {81};
81 -> {82};
82 -> {111};
82 -> {83} [style=dotted];
83 -> {98} [style=dotted];
84 -> {85};
85 -> {86};
83 -> {84} [style=dotted];
84 -> {85} [style=dotted];
85 -> {100} [style=dotted];
86 -> {87};
87 -> {88};
88 -> {89};
89 -> {90};
90 -> {98};
90 -> {91};
91 -> {92};
92 -> {93};
92 -> {100};
93 -> {94};
94 -> {95};
95 -> {96};
@@ -311,84 +316,84 @@ digraph returns_kt {
106 -> {107};
107 -> {108};
108 -> {109};
109 -> {110};
110 -> {111};
subgraph cluster_29 {
subgraph cluster_30 {
color=red
110 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_30 {
112 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_31 {
color=blue
111 [label="Enter block"];
subgraph cluster_31 {
113 [label="Enter block"];
subgraph cluster_32 {
color=blue
112 [label="Enter when"];
subgraph cluster_32 {
color=blue
113 [label="Enter when branch condition "];
114 [label="Access variable R|<local>/x|"];
115 [label="Type operator: (R|<local>/x| is R|B|)"];
116 [label="Exit when branch condition"];
}
114 [label="Enter when"];
subgraph cluster_33 {
color=blue
117 [label="Enter when branch condition "];
118 [label="Access variable R|<local>/x|"];
119 [label="Type operator: (R|<local>/x| is R|C|)"];
120 [label="Exit when branch condition"];
115 [label="Enter when branch condition "];
116 [label="Access variable R|<local>/x|"];
117 [label="Type operator: (R|<local>/x| is R|B|)"];
118 [label="Exit when branch condition"];
}
121 [label="Synthetic else branch"];
122 [label="Enter when branch result"];
subgraph cluster_34 {
color=blue
123 [label="Enter block"];
124 [label="Access variable R|<local>/x|"];
125 [label="Smart cast: R|<local>/x|"];
126 [label="Function call: R|<local>/x|.R|/C.baz|()" style="filled" fillcolor=yellow];
127 [label="Exit block"];
119 [label="Enter when branch condition "];
120 [label="Access variable R|<local>/x|"];
121 [label="Type operator: (R|<local>/x| is R|C|)"];
122 [label="Exit when branch condition"];
}
128 [label="Exit when branch result"];
129 [label="Enter when branch result"];
123 [label="Synthetic else branch"];
124 [label="Enter when branch result"];
subgraph cluster_35 {
color=blue
130 [label="Enter block"];
131 [label="Access variable R|<local>/x|"];
132 [label="Smart cast: R|<local>/x|"];
133 [label="Function call: R|<local>/x|.R|/B.bar|()" style="filled" fillcolor=yellow];
134 [label="Exit block"];
125 [label="Enter block"];
126 [label="Access variable R|<local>/x|"];
127 [label="Smart cast: R|<local>/x|"];
128 [label="Function call: R|<local>/x|.R|/C.baz|()" style="filled" fillcolor=yellow];
129 [label="Exit block"];
}
135 [label="Exit when branch result"];
136 [label="Exit when"];
130 [label="Exit when branch result"];
131 [label="Enter when branch result"];
subgraph cluster_36 {
color=blue
132 [label="Enter block"];
133 [label="Access variable R|<local>/x|"];
134 [label="Smart cast: R|<local>/x|"];
135 [label="Function call: R|<local>/x|.R|/B.bar|()" style="filled" fillcolor=yellow];
136 [label="Exit block"];
}
137 [label="Exit when branch result"];
138 [label="Exit when"];
}
137 [label="Access variable R|<local>/x|"];
138 [label="Function call: R|<local>/x|.<Unresolved name: foo>#()" style="filled" fillcolor=yellow];
139 [label="Access variable R|<local>/x|"];
140 [label="Function call: R|<local>/x|.<Unresolved name: bar>#()" style="filled" fillcolor=yellow];
140 [label="Function call: R|<local>/x|.<Unresolved name: foo>#()" style="filled" fillcolor=yellow];
141 [label="Access variable R|<local>/x|"];
142 [label="Function call: R|<local>/x|.<Unresolved name: baz>#()" style="filled" fillcolor=yellow];
143 [label="Exit block"];
142 [label="Function call: R|<local>/x|.<Unresolved name: bar>#()" style="filled" fillcolor=yellow];
143 [label="Access variable R|<local>/x|"];
144 [label="Function call: R|<local>/x|.<Unresolved name: baz>#()" style="filled" fillcolor=yellow];
145 [label="Exit block"];
}
144 [label="Exit function test_3" style="filled" fillcolor=red];
146 [label="Exit function test_3" style="filled" fillcolor=red];
}
110 -> {111};
111 -> {112};
112 -> {113};
113 -> {114};
114 -> {115};
115 -> {116};
116 -> {117 129};
116 -> {117};
117 -> {118};
118 -> {119};
118 -> {119 131};
119 -> {120};
120 -> {121 122};
121 -> {136};
122 -> {123};
123 -> {124};
120 -> {121};
121 -> {122};
122 -> {123 124};
123 -> {138};
124 -> {125};
125 -> {126};
126 -> {127};
127 -> {128};
128 -> {136};
128 -> {129};
129 -> {130};
130 -> {131};
130 -> {138};
131 -> {132};
132 -> {133};
133 -> {134};
@@ -402,116 +407,118 @@ digraph returns_kt {
141 -> {142};
142 -> {143};
143 -> {144};
subgraph cluster_36 {
color=red
145 [label="Enter function runHigherOrder" style="filled" fillcolor=red];
subgraph cluster_37 {
color=blue
146 [label="Enter block"];
147 [label="Function call: R|<local>/f|.R|SubstitutionOverride<kotlin/Function0.invoke: R|T|>|()" style="filled" fillcolor=yellow];
148 [label="Jump: ^runHigherOrder R|<local>/f|.R|SubstitutionOverride<kotlin/Function0.invoke: R|T|>|()"];
149 [label="Stub" style="filled" fillcolor=gray];
150 [label="Exit block" style="filled" fillcolor=gray];
}
151 [label="Exit function runHigherOrder" style="filled" fillcolor=red];
}
144 -> {145};
145 -> {146};
146 -> {147};
subgraph cluster_37 {
color=red
147 [label="Enter function runHigherOrder" style="filled" fillcolor=red];
subgraph cluster_38 {
color=blue
148 [label="Enter block"];
149 [label="Function call: R|<local>/f|.R|SubstitutionOverride<kotlin/Function0.invoke: R|T|>|()" style="filled" fillcolor=yellow];
150 [label="Jump: ^runHigherOrder R|<local>/f|.R|SubstitutionOverride<kotlin/Function0.invoke: R|T|>|()"];
151 [label="Stub" style="filled" fillcolor=gray];
152 [label="Exit block" style="filled" fillcolor=gray];
}
153 [label="Exit function runHigherOrder" style="filled" fillcolor=red];
}
147 -> {148};
148 -> {151};
148 -> {149} [style=dotted];
149 -> {150} [style=dotted];
148 -> {149};
149 -> {150};
150 -> {153};
150 -> {151} [style=dotted];
151 -> {152} [style=dotted];
152 -> {153} [style=dotted];
subgraph cluster_38 {
subgraph cluster_39 {
color=red
152 [label="Enter function <getter>" style="filled" fillcolor=red];
subgraph cluster_39 {
154 [label="Enter function <getter>" style="filled" fillcolor=red];
subgraph cluster_40 {
color=blue
153 [label="Enter block"];
154 [label="Access variable R|kotlin/String.length|"];
155 [label="Jump: ^ this@R|/ext|.R|kotlin/String.length|"];
156 [label="Stub" style="filled" fillcolor=gray];
157 [label="Exit block" style="filled" fillcolor=gray];
155 [label="Enter block"];
156 [label="Access variable R|kotlin/String.length|"];
157 [label="Jump: ^ this@R|/ext|.R|kotlin/String.length|"];
158 [label="Stub" style="filled" fillcolor=gray];
159 [label="Exit block" style="filled" fillcolor=gray];
}
158 [label="Exit function <getter>" style="filled" fillcolor=red];
160 [label="Exit function <getter>" style="filled" fillcolor=red];
}
152 -> {153};
153 -> {154};
154 -> {155};
155 -> {158};
155 -> {156} [style=dotted];
156 -> {157} [style=dotted];
155 -> {156};
156 -> {157};
157 -> {160};
157 -> {158} [style=dotted];
158 -> {159} [style=dotted];
159 -> {160} [style=dotted];
subgraph cluster_40 {
subgraph cluster_41 {
color=red
159 [label="Enter function test_4" style="filled" fillcolor=red];
subgraph cluster_41 {
161 [label="Enter function test_4" style="filled" fillcolor=red];
subgraph cluster_42 {
color=blue
160 [label="Enter block"];
161 [label="Access variable R|<local>/a|"];
162 [label="Type operator: (R|<local>/a| as? R|kotlin/String|)"];
163 [label="Variable declaration: lval s: R|kotlin/String?|"];
164 [label="Access variable R|<local>/s|"];
165 [label="Enter safe call"];
166 [label="Access variable R|/ext|"];
167 [label="Exit safe call"];
168 [label="Exit lhs of ?:"];
169 [label="Enter rhs of ?:"];
170 [label="Jump: ^test_4 Unit"];
171 [label="Stub" style="filled" fillcolor=gray];
172 [label="Lhs of ?: is not null"];
173 [label="Exit ?:"];
174 [label="Variable declaration: lval length: R|kotlin/Int|"];
175 [label="Postponed enter to lambda"];
subgraph cluster_42 {
162 [label="Enter block"];
163 [label="Access variable R|<local>/a|"];
164 [label="Type operator: (R|<local>/a| as? R|kotlin/String|)"];
165 [label="Variable declaration: lval s: R|kotlin/String?|"];
166 [label="Access variable R|<local>/s|"];
167 [label="Enter safe call"];
168 [label="Access variable R|/ext|"];
169 [label="Exit safe call"];
170 [label="Exit lhs of ?:"];
171 [label="Enter rhs of ?:"];
172 [label="Jump: ^test_4 Unit"];
173 [label="Stub" style="filled" fillcolor=gray];
174 [label="Lhs of ?: is not null"];
175 [label="Exit ?:"];
176 [label="Variable declaration: lval length: R|kotlin/Int|"];
177 [label="Postponed enter to lambda"];
subgraph cluster_43 {
color=blue
176 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_43 {
178 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_44 {
color=blue
177 [label="Enter block"];
178 [label="Access variable R|<local>/s|"];
179 [label="Smart cast: R|<local>/s|"];
180 [label="Access variable R|kotlin/String.length|"];
181 [label="Exit block"];
179 [label="Enter block"];
180 [label="Access variable R|<local>/s|"];
181 [label="Smart cast: R|<local>/s|"];
182 [label="Access variable R|kotlin/String.length|"];
183 [label="Exit block"];
}
182 [label="Exit function <anonymous>" style="filled" fillcolor=red];
184 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
183 [label="Postponed exit from lambda"];
184 [label="Function call: R|/runHigherOrder|<R|kotlin/Int|>(...)" style="filled" fillcolor=yellow];
185 [label="Exit block"];
185 [label="Postponed exit from lambda"];
186 [label="Function call: R|/runHigherOrder|<R|kotlin/Int|>(...)" style="filled" fillcolor=yellow];
187 [label="Exit block"];
}
186 [label="Exit function test_4" style="filled" fillcolor=red];
188 [label="Exit function test_4" style="filled" fillcolor=red];
}
159 -> {160};
160 -> {161};
161 -> {162};
162 -> {163};
163 -> {164};
164 -> {165 169};
164 -> {165};
165 -> {166};
166 -> {167};
166 -> {167 171};
167 -> {168};
168 -> {169 172};
168 -> {169};
169 -> {170};
170 -> {186};
170 -> {171} [style=dotted];
171 -> {173} [style=dotted];
172 -> {173};
173 -> {174};
170 -> {171 174};
171 -> {172};
172 -> {188};
172 -> {173} [style=dotted];
173 -> {175} [style=dotted];
174 -> {175};
175 -> {176 183 184};
175 -> {176} [style=dashed];
175 -> {176};
176 -> {177};
177 -> {178};
177 -> {178 185 186};
177 -> {178} [style=dashed];
178 -> {179};
179 -> {180};
180 -> {181};
181 -> {182};
182 -> {183};
183 -> {184};
184 -> {185};
185 -> {186};
186 -> {187};
187 -> {188};
}
@@ -5,49 +5,54 @@ digraph simpleIf_kt {
subgraph cluster_0 {
color=red
0 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_1 {
0 [label="Enter file simpleIf.kt" style="filled" fillcolor=red];
1 [label="Exit file simpleIf.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
1 [label="Enter block"];
subgraph cluster_2 {
3 [label="Enter block"];
subgraph cluster_3 {
color=blue
2 [label="Enter when"];
subgraph cluster_3 {
color=blue
3 [label="Enter when branch condition "];
4 [label="Access variable R|<local>/x|"];
5 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
6 [label="Exit when branch condition"];
}
7 [label="Synthetic else branch"];
8 [label="Enter when branch result"];
4 [label="Enter when"];
subgraph cluster_4 {
color=blue
9 [label="Enter block"];
10 [label="Access variable R|<local>/x|"];
11 [label="Smart cast: R|<local>/x|"];
12 [label="Access variable R|kotlin/String.length|"];
13 [label="Exit block"];
5 [label="Enter when branch condition "];
6 [label="Access variable R|<local>/x|"];
7 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
8 [label="Exit when branch condition"];
}
14 [label="Exit when branch result"];
15 [label="Exit when"];
9 [label="Synthetic else branch"];
10 [label="Enter when branch result"];
subgraph cluster_5 {
color=blue
11 [label="Enter block"];
12 [label="Access variable R|<local>/x|"];
13 [label="Smart cast: R|<local>/x|"];
14 [label="Access variable R|kotlin/String.length|"];
15 [label="Exit block"];
}
16 [label="Exit when branch result"];
17 [label="Exit when"];
}
16 [label="Access variable R|<local>/x|"];
17 [label="Access variable <Unresolved name: length>#"];
18 [label="Exit block"];
18 [label="Access variable R|<local>/x|"];
19 [label="Access variable <Unresolved name: length>#"];
20 [label="Exit block"];
}
19 [label="Exit function test_1" style="filled" fillcolor=red];
21 [label="Exit function test_1" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
2 -> {3};
3 -> {4};
4 -> {5};
5 -> {6};
6 -> {7 8};
7 -> {15};
8 -> {9};
9 -> {10};
6 -> {7};
7 -> {8};
8 -> {9 10};
9 -> {17};
10 -> {11};
11 -> {12};
12 -> {13};
@@ -57,56 +62,56 @@ digraph simpleIf_kt {
16 -> {17};
17 -> {18};
18 -> {19};
19 -> {20};
20 -> {21};
subgraph cluster_5 {
subgraph cluster_6 {
color=red
20 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_6 {
22 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_7 {
color=blue
21 [label="Enter block"];
22 [label="Access variable R|<local>/x|"];
23 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
24 [label="Variable declaration: lval b: R|kotlin/Boolean|"];
subgraph cluster_7 {
23 [label="Enter block"];
24 [label="Access variable R|<local>/x|"];
25 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
26 [label="Variable declaration: lval b: R|kotlin/Boolean|"];
subgraph cluster_8 {
color=blue
25 [label="Enter when"];
subgraph cluster_8 {
color=blue
26 [label="Enter when branch condition "];
27 [label="Access variable R|<local>/b|"];
28 [label="Exit when branch condition"];
}
29 [label="Synthetic else branch"];
30 [label="Enter when branch result"];
27 [label="Enter when"];
subgraph cluster_9 {
color=blue
31 [label="Enter block"];
32 [label="Access variable R|<local>/x|"];
33 [label="Smart cast: R|<local>/x|"];
34 [label="Access variable R|kotlin/String.length|"];
35 [label="Exit block"];
28 [label="Enter when branch condition "];
29 [label="Access variable R|<local>/b|"];
30 [label="Exit when branch condition"];
}
36 [label="Exit when branch result"];
37 [label="Exit when"];
31 [label="Synthetic else branch"];
32 [label="Enter when branch result"];
subgraph cluster_10 {
color=blue
33 [label="Enter block"];
34 [label="Access variable R|<local>/x|"];
35 [label="Smart cast: R|<local>/x|"];
36 [label="Access variable R|kotlin/String.length|"];
37 [label="Exit block"];
}
38 [label="Exit when branch result"];
39 [label="Exit when"];
}
38 [label="Access variable R|<local>/x|"];
39 [label="Access variable <Unresolved name: length>#"];
40 [label="Exit block"];
40 [label="Access variable R|<local>/x|"];
41 [label="Access variable <Unresolved name: length>#"];
42 [label="Exit block"];
}
41 [label="Exit function test_2" style="filled" fillcolor=red];
43 [label="Exit function test_2" style="filled" fillcolor=red];
}
20 -> {21};
21 -> {22};
22 -> {23};
23 -> {24};
24 -> {25};
25 -> {26};
26 -> {27};
27 -> {28};
28 -> {29 30};
29 -> {37};
30 -> {31};
31 -> {32};
28 -> {29};
29 -> {30};
30 -> {31 32};
31 -> {39};
32 -> {33};
33 -> {34};
34 -> {35};
@@ -116,83 +121,83 @@ digraph simpleIf_kt {
38 -> {39};
39 -> {40};
40 -> {41};
41 -> {42};
42 -> {43};
subgraph cluster_10 {
subgraph cluster_11 {
color=red
42 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_11 {
44 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_12 {
color=blue
43 [label="Enter block"];
subgraph cluster_12 {
45 [label="Enter block"];
subgraph cluster_13 {
color=blue
44 [label="Enter when"];
subgraph cluster_13 {
color=blue
45 [label="Enter when branch condition "];
46 [label="Access variable R|<local>/x|"];
47 [label="Type operator: (R|<local>/x| !is R|kotlin/String|)"];
48 [label="Exit when branch condition"];
}
46 [label="Enter when"];
subgraph cluster_14 {
color=blue
49 [label="Enter when branch condition "];
50 [label="Access variable R|<local>/x|"];
51 [label="Smart cast: R|<local>/x|"];
52 [label="Type operator: (R|<local>/x| !is R|kotlin/Int|)"];
53 [label="Exit when branch condition"];
47 [label="Enter when branch condition "];
48 [label="Access variable R|<local>/x|"];
49 [label="Type operator: (R|<local>/x| !is R|kotlin/String|)"];
50 [label="Exit when branch condition"];
}
subgraph cluster_15 {
color=blue
54 [label="Enter when branch condition else"];
51 [label="Enter when branch condition "];
52 [label="Access variable R|<local>/x|"];
53 [label="Smart cast: R|<local>/x|"];
54 [label="Type operator: (R|<local>/x| !is R|kotlin/Int|)"];
55 [label="Exit when branch condition"];
}
56 [label="Enter when branch result"];
subgraph cluster_16 {
color=blue
57 [label="Enter block"];
58 [label="Access variable R|<local>/x|"];
59 [label="Smart cast: R|<local>/x|"];
60 [label="Access variable R|kotlin/String.length|"];
61 [label="Access variable R|<local>/x|"];
62 [label="Smart cast: R|<local>/x|"];
63 [label="Function call: R|<local>/x|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
64 [label="Exit block"];
56 [label="Enter when branch condition else"];
57 [label="Exit when branch condition"];
}
65 [label="Exit when branch result"];
66 [label="Enter when branch result"];
58 [label="Enter when branch result"];
subgraph cluster_17 {
color=blue
67 [label="Enter block"];
68 [label="Exit block"];
59 [label="Enter block"];
60 [label="Access variable R|<local>/x|"];
61 [label="Smart cast: R|<local>/x|"];
62 [label="Access variable R|kotlin/String.length|"];
63 [label="Access variable R|<local>/x|"];
64 [label="Smart cast: R|<local>/x|"];
65 [label="Function call: R|<local>/x|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
66 [label="Exit block"];
}
69 [label="Exit when branch result"];
70 [label="Enter when branch result"];
67 [label="Exit when branch result"];
68 [label="Enter when branch result"];
subgraph cluster_18 {
color=blue
71 [label="Enter block"];
72 [label="Exit block"];
69 [label="Enter block"];
70 [label="Exit block"];
}
73 [label="Exit when branch result"];
74 [label="Exit when"];
71 [label="Exit when branch result"];
72 [label="Enter when branch result"];
subgraph cluster_19 {
color=blue
73 [label="Enter block"];
74 [label="Exit block"];
}
75 [label="Exit when branch result"];
76 [label="Exit when"];
}
75 [label="Exit block"];
77 [label="Exit block"];
}
76 [label="Exit function test_3" style="filled" fillcolor=red];
78 [label="Exit function test_3" style="filled" fillcolor=red];
}
42 -> {43};
43 -> {44};
44 -> {45};
45 -> {46};
46 -> {47};
47 -> {48};
48 -> {49 70};
48 -> {49};
49 -> {50};
50 -> {51};
50 -> {51 72};
51 -> {52};
52 -> {53};
53 -> {54 66};
53 -> {54};
54 -> {55};
55 -> {56};
55 -> {56 68};
56 -> {57};
57 -> {58};
58 -> {59};
@@ -202,16 +207,18 @@ digraph simpleIf_kt {
62 -> {63};
63 -> {64};
64 -> {65};
65 -> {74};
65 -> {66};
66 -> {67};
67 -> {68};
67 -> {76};
68 -> {69};
69 -> {74};
69 -> {70};
70 -> {71};
71 -> {72};
71 -> {76};
72 -> {73};
73 -> {74};
74 -> {75};
75 -> {76};
76 -> {77};
77 -> {78};
}
@@ -5,97 +5,102 @@ digraph smartcastFromArgument_kt {
subgraph cluster_0 {
color=red
0 [label="Enter class A" style="filled" fillcolor=red];
1 [label="Exit class A" style="filled" fillcolor=red];
0 [label="Enter file smartcastFromArgument.kt" style="filled" fillcolor=red];
1 [label="Exit file smartcastFromArgument.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter function foo" style="filled" fillcolor=red];
3 [label="Exit function foo" style="filled" fillcolor=red];
2 [label="Enter class A" style="filled" fillcolor=red];
3 [label="Exit class A" style="filled" fillcolor=red];
}
2 -> {3};
2 -> {3} [color=green];
subgraph cluster_2 {
color=red
4 [label="Enter function takeA" style="filled" fillcolor=red];
subgraph cluster_3 {
color=blue
5 [label="Enter block"];
6 [label="Const: Boolean(true)"];
7 [label="Jump: ^takeA Boolean(true)"];
8 [label="Stub" style="filled" fillcolor=gray];
9 [label="Exit block" style="filled" fillcolor=gray];
}
10 [label="Exit function takeA" style="filled" fillcolor=red];
4 [label="Enter function foo" style="filled" fillcolor=red];
5 [label="Exit function foo" style="filled" fillcolor=red];
}
4 -> {5};
5 -> {6};
6 -> {7};
7 -> {10};
7 -> {8} [style=dotted];
8 -> {9} [style=dotted];
9 -> {10} [style=dotted];
subgraph cluster_4 {
subgraph cluster_3 {
color=red
11 [label="Enter function test" style="filled" fillcolor=red];
subgraph cluster_5 {
6 [label="Enter function takeA" style="filled" fillcolor=red];
subgraph cluster_4 {
color=blue
12 [label="Enter block"];
subgraph cluster_6 {
7 [label="Enter block"];
8 [label="Const: Boolean(true)"];
9 [label="Jump: ^takeA Boolean(true)"];
10 [label="Stub" style="filled" fillcolor=gray];
11 [label="Exit block" style="filled" fillcolor=gray];
}
12 [label="Exit function takeA" style="filled" fillcolor=red];
}
6 -> {7};
7 -> {8};
8 -> {9};
9 -> {12};
9 -> {10} [style=dotted];
10 -> {11} [style=dotted];
11 -> {12} [style=dotted];
subgraph cluster_5 {
color=red
13 [label="Enter function test" style="filled" fillcolor=red];
subgraph cluster_6 {
color=blue
14 [label="Enter block"];
subgraph cluster_7 {
color=blue
13 [label="Enter when"];
subgraph cluster_7 {
color=blue
14 [label="Enter when branch condition "];
15 [label="Access variable R|<local>/a|"];
16 [label="Type operator: (R|<local>/a| as? R|A|)"];
17 [label="Exit lhs of ?:"];
18 [label="Enter rhs of ?:"];
19 [label="Jump: ^test Unit"];
20 [label="Stub" style="filled" fillcolor=gray];
21 [label="Lhs of ?: is not null"];
22 [label="Exit ?:"];
23 [label="Function call: R|/takeA|(...)" style="filled" fillcolor=yellow];
24 [label="Exit when branch condition"];
}
25 [label="Synthetic else branch"];
26 [label="Enter when branch result"];
15 [label="Enter when"];
subgraph cluster_8 {
color=blue
27 [label="Enter block"];
28 [label="Access variable R|<local>/a|"];
29 [label="Smart cast: R|<local>/a|"];
30 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
31 [label="Exit block"];
16 [label="Enter when branch condition "];
17 [label="Access variable R|<local>/a|"];
18 [label="Type operator: (R|<local>/a| as? R|A|)"];
19 [label="Exit lhs of ?:"];
20 [label="Enter rhs of ?:"];
21 [label="Jump: ^test Unit"];
22 [label="Stub" style="filled" fillcolor=gray];
23 [label="Lhs of ?: is not null"];
24 [label="Exit ?:"];
25 [label="Function call: R|/takeA|(...)" style="filled" fillcolor=yellow];
26 [label="Exit when branch condition"];
}
32 [label="Exit when branch result"];
33 [label="Exit when"];
27 [label="Synthetic else branch"];
28 [label="Enter when branch result"];
subgraph cluster_9 {
color=blue
29 [label="Enter block"];
30 [label="Access variable R|<local>/a|"];
31 [label="Smart cast: R|<local>/a|"];
32 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
33 [label="Exit block"];
}
34 [label="Exit when branch result"];
35 [label="Exit when"];
}
34 [label="Exit block"];
36 [label="Exit block"];
}
35 [label="Exit function test" style="filled" fillcolor=red];
37 [label="Exit function test" style="filled" fillcolor=red];
}
11 -> {12};
12 -> {13};
13 -> {14};
14 -> {15};
15 -> {16};
16 -> {17};
17 -> {18 21};
17 -> {18};
18 -> {19};
19 -> {35};
19 -> {20} [style=dotted];
20 -> {22} [style=dotted];
21 -> {22};
22 -> {23};
19 -> {20 23};
20 -> {21};
21 -> {37};
21 -> {22} [style=dotted];
22 -> {24} [style=dotted];
23 -> {24};
24 -> {25 26};
25 -> {33};
26 -> {27};
27 -> {28};
24 -> {25};
25 -> {26};
26 -> {27 28};
27 -> {35};
28 -> {29};
29 -> {30};
30 -> {31};
@@ -103,5 +108,7 @@ digraph smartcastFromArgument_kt {
32 -> {33};
33 -> {34};
34 -> {35};
35 -> {36};
36 -> {37};
}
File diff suppressed because it is too large Load Diff
@@ -5,198 +5,205 @@ digraph whenSubjectExpression_kt {
subgraph cluster_0 {
color=red
0 [label="Enter function whenWithSubjectExpression" style="filled" fillcolor=red];
subgraph cluster_1 {
0 [label="Enter file whenSubjectExpression.kt" style="filled" fillcolor=red];
1 [label="Exit file whenSubjectExpression.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter function whenWithSubjectExpression" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
1 [label="Enter block"];
subgraph cluster_2 {
3 [label="Enter block"];
subgraph cluster_3 {
color=blue
2 [label="Enter when"];
3 [label="Access variable R|<local>/x|"];
subgraph cluster_3 {
color=blue
4 [label="Enter when branch condition "];
5 [label="Exit $subj"];
6 [label="Type operator: ($subj$ !is R|kotlin/Double|)"];
7 [label="Exit when branch condition"];
}
4 [label="Enter when"];
5 [label="Access variable R|<local>/x|"];
subgraph cluster_4 {
color=blue
8 [label="Enter when branch condition "];
9 [label="Exit $subj"];
10 [label="Const: Double(0.0)"];
11 [label="Equality operator =="];
12 [label="Exit when branch condition"];
6 [label="Enter when branch condition "];
7 [label="Exit $subj"];
8 [label="Type operator: ($subj$ !is R|kotlin/Double|)"];
9 [label="Exit when branch condition"];
}
subgraph cluster_5 {
color=blue
13 [label="Enter when branch condition else"];
10 [label="Enter when branch condition "];
11 [label="Exit $subj"];
12 [label="Const: Double(0.0)"];
13 [label="Equality operator =="];
14 [label="Exit when branch condition"];
}
15 [label="Enter when branch result"];
subgraph cluster_6 {
color=blue
16 [label="Enter block"];
17 [label="Access variable R|<local>/x|"];
18 [label="Smart cast: R|<local>/x|"];
19 [label="Function call: R|<local>/x|.R|kotlin/Double.toInt|()" style="filled" fillcolor=yellow];
20 [label="Exit block"];
15 [label="Enter when branch condition else"];
16 [label="Exit when branch condition"];
}
21 [label="Exit when branch result"];
22 [label="Enter when branch result"];
17 [label="Enter when branch result"];
subgraph cluster_7 {
color=blue
23 [label="Enter block"];
24 [label="Const: Int(0)"];
25 [label="Exit block"];
18 [label="Enter block"];
19 [label="Access variable R|<local>/x|"];
20 [label="Smart cast: R|<local>/x|"];
21 [label="Function call: R|<local>/x|.R|kotlin/Double.toInt|()" style="filled" fillcolor=yellow];
22 [label="Exit block"];
}
26 [label="Exit when branch result"];
27 [label="Enter when branch result"];
23 [label="Exit when branch result"];
24 [label="Enter when branch result"];
subgraph cluster_8 {
color=blue
28 [label="Enter block"];
29 [label="Const: Int(-1)"];
30 [label="Exit block"];
25 [label="Enter block"];
26 [label="Const: Int(0)"];
27 [label="Exit block"];
}
31 [label="Exit when branch result"];
32 [label="Exit when"];
28 [label="Exit when branch result"];
29 [label="Enter when branch result"];
subgraph cluster_9 {
color=blue
30 [label="Enter block"];
31 [label="Const: Int(-1)"];
32 [label="Exit block"];
}
33 [label="Exit when branch result"];
34 [label="Exit when"];
}
33 [label="Exit block"];
35 [label="Exit block"];
}
34 [label="Exit function whenWithSubjectExpression" style="filled" fillcolor=red];
36 [label="Exit function whenWithSubjectExpression" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
2 -> {3};
3 -> {4};
4 -> {5};
5 -> {6};
6 -> {7};
7 -> {8 27};
7 -> {8};
8 -> {9};
9 -> {10};
9 -> {10 29};
10 -> {11};
11 -> {12};
12 -> {13 22};
12 -> {13};
13 -> {14};
14 -> {15};
14 -> {15 24};
15 -> {16};
16 -> {17};
17 -> {18};
18 -> {19};
19 -> {20};
20 -> {21};
21 -> {32};
21 -> {22};
22 -> {23};
23 -> {24};
23 -> {34};
24 -> {25};
25 -> {26};
26 -> {32};
26 -> {27};
27 -> {28};
28 -> {29};
28 -> {34};
29 -> {30};
30 -> {31};
31 -> {32};
32 -> {33};
33 -> {34};
34 -> {35};
35 -> {36};
subgraph cluster_9 {
subgraph cluster_10 {
color=red
35 [label="Enter function whenWithSubjectVariable" style="filled" fillcolor=red];
subgraph cluster_10 {
37 [label="Enter function whenWithSubjectVariable" style="filled" fillcolor=red];
subgraph cluster_11 {
color=blue
36 [label="Enter block"];
subgraph cluster_11 {
38 [label="Enter block"];
subgraph cluster_12 {
color=blue
37 [label="Enter when"];
38 [label="Access variable R|<local>/x|"];
39 [label="Variable declaration: lval y: R|kotlin/Any|"];
subgraph cluster_12 {
color=blue
40 [label="Enter when branch condition "];
41 [label="Exit $subj"];
42 [label="Type operator: ($subj$ !is R|kotlin/Double|)"];
43 [label="Exit when branch condition"];
}
39 [label="Enter when"];
40 [label="Access variable R|<local>/x|"];
41 [label="Variable declaration: lval y: R|kotlin/Any|"];
subgraph cluster_13 {
color=blue
44 [label="Enter when branch condition "];
45 [label="Exit $subj"];
46 [label="Const: Double(0.0)"];
47 [label="Equality operator =="];
48 [label="Exit when branch condition"];
42 [label="Enter when branch condition "];
43 [label="Exit $subj"];
44 [label="Type operator: ($subj$ !is R|kotlin/Double|)"];
45 [label="Exit when branch condition"];
}
subgraph cluster_14 {
color=blue
49 [label="Enter when branch condition else"];
46 [label="Enter when branch condition "];
47 [label="Exit $subj"];
48 [label="Const: Double(0.0)"];
49 [label="Equality operator =="];
50 [label="Exit when branch condition"];
}
51 [label="Enter when branch result"];
subgraph cluster_15 {
color=blue
52 [label="Enter block"];
53 [label="Access variable R|<local>/y|"];
54 [label="Smart cast: R|<local>/y|"];
55 [label="Function call: R|<local>/y|.R|kotlin/Double.toInt|()" style="filled" fillcolor=yellow];
56 [label="Exit block"];
51 [label="Enter when branch condition else"];
52 [label="Exit when branch condition"];
}
57 [label="Exit when branch result"];
58 [label="Enter when branch result"];
53 [label="Enter when branch result"];
subgraph cluster_16 {
color=blue
59 [label="Enter block"];
60 [label="Const: Int(0)"];
61 [label="Exit block"];
54 [label="Enter block"];
55 [label="Access variable R|<local>/y|"];
56 [label="Smart cast: R|<local>/y|"];
57 [label="Function call: R|<local>/y|.R|kotlin/Double.toInt|()" style="filled" fillcolor=yellow];
58 [label="Exit block"];
}
62 [label="Exit when branch result"];
63 [label="Enter when branch result"];
59 [label="Exit when branch result"];
60 [label="Enter when branch result"];
subgraph cluster_17 {
color=blue
64 [label="Enter block"];
65 [label="Const: Int(-1)"];
66 [label="Exit block"];
61 [label="Enter block"];
62 [label="Const: Int(0)"];
63 [label="Exit block"];
}
67 [label="Exit when branch result"];
68 [label="Exit when"];
64 [label="Exit when branch result"];
65 [label="Enter when branch result"];
subgraph cluster_18 {
color=blue
66 [label="Enter block"];
67 [label="Const: Int(-1)"];
68 [label="Exit block"];
}
69 [label="Exit when branch result"];
70 [label="Exit when"];
}
69 [label="Exit block"];
71 [label="Exit block"];
}
70 [label="Exit function whenWithSubjectVariable" style="filled" fillcolor=red];
72 [label="Exit function whenWithSubjectVariable" style="filled" fillcolor=red];
}
35 -> {36};
36 -> {37};
37 -> {38};
38 -> {39};
39 -> {40};
40 -> {41};
41 -> {42};
42 -> {43};
43 -> {44 63};
43 -> {44};
44 -> {45};
45 -> {46};
45 -> {46 65};
46 -> {47};
47 -> {48};
48 -> {49 58};
48 -> {49};
49 -> {50};
50 -> {51};
50 -> {51 60};
51 -> {52};
52 -> {53};
53 -> {54};
54 -> {55};
55 -> {56};
56 -> {57};
57 -> {68};
57 -> {58};
58 -> {59};
59 -> {60};
59 -> {70};
60 -> {61};
61 -> {62};
62 -> {68};
62 -> {63};
63 -> {64};
64 -> {65};
64 -> {70};
65 -> {66};
66 -> {67};
67 -> {68};
68 -> {69};
69 -> {70};
70 -> {71};
71 -> {72};
}
@@ -5,91 +5,96 @@ digraph equalsAndIdentity_kt {
subgraph cluster_0 {
color=red
0 [label="Enter class A" style="filled" fillcolor=red];
1 [label="Exit class A" style="filled" fillcolor=red];
0 [label="Enter file equalsAndIdentity.kt" style="filled" fillcolor=red];
1 [label="Exit file equalsAndIdentity.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter function foo" style="filled" fillcolor=red];
3 [label="Exit function foo" style="filled" fillcolor=red];
2 [label="Enter class A" style="filled" fillcolor=red];
3 [label="Exit class A" style="filled" fillcolor=red];
}
2 -> {3};
2 -> {3} [color=green];
subgraph cluster_2 {
color=red
4 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_3 {
color=blue
5 [label="Enter block"];
subgraph cluster_4 {
color=blue
6 [label="Enter when"];
subgraph cluster_5 {
color=blue
7 [label="Enter when branch condition "];
8 [label="Access variable R|<local>/x|"];
9 [label="Access variable R|<local>/y|"];
10 [label="Equality operator =="];
11 [label="Exit when branch condition"];
}
12 [label="Synthetic else branch"];
13 [label="Enter when branch result"];
subgraph cluster_6 {
color=blue
14 [label="Enter block"];
15 [label="Access variable R|<local>/x|"];
16 [label="Function call: R|<local>/x|.R|/A.foo|()" style="filled" fillcolor=yellow];
17 [label="Access variable R|<local>/y|"];
18 [label="Smart cast: R|<local>/y|"];
19 [label="Function call: R|<local>/y|.R|/A.foo|()" style="filled" fillcolor=yellow];
20 [label="Exit block"];
}
21 [label="Exit when branch result"];
22 [label="Exit when"];
}
subgraph cluster_7 {
color=blue
23 [label="Enter when"];
subgraph cluster_8 {
color=blue
24 [label="Enter when branch condition "];
25 [label="Access variable R|<local>/x|"];
26 [label="Access variable R|<local>/y|"];
27 [label="Equality operator ==="];
28 [label="Exit when branch condition"];
}
29 [label="Synthetic else branch"];
30 [label="Enter when branch result"];
subgraph cluster_9 {
color=blue
31 [label="Enter block"];
32 [label="Access variable R|<local>/x|"];
33 [label="Function call: R|<local>/x|.R|/A.foo|()" style="filled" fillcolor=yellow];
34 [label="Access variable R|<local>/y|"];
35 [label="Smart cast: R|<local>/y|"];
36 [label="Function call: R|<local>/y|.R|/A.foo|()" style="filled" fillcolor=yellow];
37 [label="Exit block"];
}
38 [label="Exit when branch result"];
39 [label="Exit when"];
}
40 [label="Exit block"];
}
41 [label="Exit function test_1" style="filled" fillcolor=red];
4 [label="Enter function foo" style="filled" fillcolor=red];
5 [label="Exit function foo" style="filled" fillcolor=red];
}
4 -> {5};
5 -> {6};
subgraph cluster_3 {
color=red
6 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_4 {
color=blue
7 [label="Enter block"];
subgraph cluster_5 {
color=blue
8 [label="Enter when"];
subgraph cluster_6 {
color=blue
9 [label="Enter when branch condition "];
10 [label="Access variable R|<local>/x|"];
11 [label="Access variable R|<local>/y|"];
12 [label="Equality operator =="];
13 [label="Exit when branch condition"];
}
14 [label="Synthetic else branch"];
15 [label="Enter when branch result"];
subgraph cluster_7 {
color=blue
16 [label="Enter block"];
17 [label="Access variable R|<local>/x|"];
18 [label="Function call: R|<local>/x|.R|/A.foo|()" style="filled" fillcolor=yellow];
19 [label="Access variable R|<local>/y|"];
20 [label="Smart cast: R|<local>/y|"];
21 [label="Function call: R|<local>/y|.R|/A.foo|()" style="filled" fillcolor=yellow];
22 [label="Exit block"];
}
23 [label="Exit when branch result"];
24 [label="Exit when"];
}
subgraph cluster_8 {
color=blue
25 [label="Enter when"];
subgraph cluster_9 {
color=blue
26 [label="Enter when branch condition "];
27 [label="Access variable R|<local>/x|"];
28 [label="Access variable R|<local>/y|"];
29 [label="Equality operator ==="];
30 [label="Exit when branch condition"];
}
31 [label="Synthetic else branch"];
32 [label="Enter when branch result"];
subgraph cluster_10 {
color=blue
33 [label="Enter block"];
34 [label="Access variable R|<local>/x|"];
35 [label="Function call: R|<local>/x|.R|/A.foo|()" style="filled" fillcolor=yellow];
36 [label="Access variable R|<local>/y|"];
37 [label="Smart cast: R|<local>/y|"];
38 [label="Function call: R|<local>/y|.R|/A.foo|()" style="filled" fillcolor=yellow];
39 [label="Exit block"];
}
40 [label="Exit when branch result"];
41 [label="Exit when"];
}
42 [label="Exit block"];
}
43 [label="Exit function test_1" style="filled" fillcolor=red];
}
6 -> {7};
7 -> {8};
8 -> {9};
9 -> {10};
10 -> {11};
11 -> {12 13};
12 -> {22};
13 -> {14};
14 -> {15};
11 -> {12};
12 -> {13};
13 -> {14 15};
14 -> {24};
15 -> {16};
16 -> {17};
17 -> {18};
@@ -103,10 +108,10 @@ digraph equalsAndIdentity_kt {
25 -> {26};
26 -> {27};
27 -> {28};
28 -> {29 30};
29 -> {39};
30 -> {31};
31 -> {32};
28 -> {29};
29 -> {30};
30 -> {31 32};
31 -> {41};
32 -> {33};
33 -> {34};
34 -> {35};
@@ -116,78 +121,78 @@ digraph equalsAndIdentity_kt {
38 -> {39};
39 -> {40};
40 -> {41};
41 -> {42};
42 -> {43};
subgraph cluster_10 {
subgraph cluster_11 {
color=red
42 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_11 {
44 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_12 {
color=blue
43 [label="Enter block"];
subgraph cluster_12 {
45 [label="Enter block"];
subgraph cluster_13 {
color=blue
44 [label="Enter when"];
subgraph cluster_13 {
color=blue
45 [label="Enter when branch condition "];
46 [label="Access variable R|<local>/x|"];
47 [label="Access variable R|<local>/y|"];
48 [label="Equality operator =="];
49 [label="Exit when branch condition"];
}
50 [label="Synthetic else branch"];
51 [label="Enter when branch result"];
46 [label="Enter when"];
subgraph cluster_14 {
color=blue
52 [label="Enter block"];
53 [label="Access variable R|<local>/x|"];
54 [label="Function call: R|<local>/x|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
55 [label="Access variable R|<local>/y|"];
56 [label="Function call: R|<local>/y|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
57 [label="Exit block"];
47 [label="Enter when branch condition "];
48 [label="Access variable R|<local>/x|"];
49 [label="Access variable R|<local>/y|"];
50 [label="Equality operator =="];
51 [label="Exit when branch condition"];
}
58 [label="Exit when branch result"];
59 [label="Exit when"];
}
subgraph cluster_15 {
color=blue
60 [label="Enter when"];
subgraph cluster_16 {
52 [label="Synthetic else branch"];
53 [label="Enter when branch result"];
subgraph cluster_15 {
color=blue
61 [label="Enter when branch condition "];
62 [label="Access variable R|<local>/x|"];
63 [label="Access variable R|<local>/y|"];
64 [label="Equality operator ==="];
65 [label="Exit when branch condition"];
54 [label="Enter block"];
55 [label="Access variable R|<local>/x|"];
56 [label="Function call: R|<local>/x|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
57 [label="Access variable R|<local>/y|"];
58 [label="Function call: R|<local>/y|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
59 [label="Exit block"];
}
66 [label="Synthetic else branch"];
67 [label="Enter when branch result"];
60 [label="Exit when branch result"];
61 [label="Exit when"];
}
subgraph cluster_16 {
color=blue
62 [label="Enter when"];
subgraph cluster_17 {
color=blue
68 [label="Enter block"];
69 [label="Access variable R|<local>/x|"];
70 [label="Function call: R|<local>/x|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
71 [label="Access variable R|<local>/y|"];
72 [label="Function call: R|<local>/y|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
73 [label="Exit block"];
63 [label="Enter when branch condition "];
64 [label="Access variable R|<local>/x|"];
65 [label="Access variable R|<local>/y|"];
66 [label="Equality operator ==="];
67 [label="Exit when branch condition"];
}
74 [label="Exit when branch result"];
75 [label="Exit when"];
68 [label="Synthetic else branch"];
69 [label="Enter when branch result"];
subgraph cluster_18 {
color=blue
70 [label="Enter block"];
71 [label="Access variable R|<local>/x|"];
72 [label="Function call: R|<local>/x|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
73 [label="Access variable R|<local>/y|"];
74 [label="Function call: R|<local>/y|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
75 [label="Exit block"];
}
76 [label="Exit when branch result"];
77 [label="Exit when"];
}
76 [label="Exit block"];
78 [label="Exit block"];
}
77 [label="Exit function test_2" style="filled" fillcolor=red];
79 [label="Exit function test_2" style="filled" fillcolor=red];
}
42 -> {43};
43 -> {44};
44 -> {45};
45 -> {46};
46 -> {47};
47 -> {48};
48 -> {49};
49 -> {50 51};
50 -> {59};
51 -> {52};
52 -> {53};
49 -> {50};
50 -> {51};
51 -> {52 53};
52 -> {61};
53 -> {54};
54 -> {55};
55 -> {56};
@@ -200,10 +205,10 @@ digraph equalsAndIdentity_kt {
62 -> {63};
63 -> {64};
64 -> {65};
65 -> {66 67};
66 -> {75};
67 -> {68};
68 -> {69};
65 -> {66};
66 -> {67};
67 -> {68 69};
68 -> {77};
69 -> {70};
70 -> {71};
71 -> {72};
@@ -212,123 +217,123 @@ digraph equalsAndIdentity_kt {
74 -> {75};
75 -> {76};
76 -> {77};
77 -> {78};
78 -> {79};
subgraph cluster_18 {
subgraph cluster_19 {
color=red
78 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_19 {
80 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_20 {
color=blue
79 [label="Enter block"];
subgraph cluster_20 {
81 [label="Enter block"];
subgraph cluster_21 {
color=blue
80 [label="Enter when"];
subgraph cluster_21 {
color=blue
81 [label="Enter when branch condition "];
82 [label="Access variable R|<local>/y|"];
83 [label="Const: Null(null)"];
84 [label="Equality operator =="];
85 [label="Exit when branch condition"];
}
86 [label="Synthetic else branch"];
87 [label="Enter when branch result"];
82 [label="Enter when"];
subgraph cluster_22 {
color=blue
88 [label="Enter block"];
89 [label="Jump: ^test_3 Unit"];
90 [label="Stub" style="filled" fillcolor=gray];
91 [label="Exit block" style="filled" fillcolor=gray];
83 [label="Enter when branch condition "];
84 [label="Access variable R|<local>/y|"];
85 [label="Const: Null(null)"];
86 [label="Equality operator =="];
87 [label="Exit when branch condition"];
}
92 [label="Exit when branch result" style="filled" fillcolor=gray];
93 [label="Exit when"];
}
subgraph cluster_23 {
color=blue
94 [label="Enter when"];
subgraph cluster_24 {
88 [label="Synthetic else branch"];
89 [label="Enter when branch result"];
subgraph cluster_23 {
color=blue
95 [label="Enter when branch condition "];
96 [label="Access variable R|<local>/x|"];
97 [label="Access variable R|<local>/y|"];
98 [label="Smart cast: R|<local>/y|"];
99 [label="Equality operator =="];
100 [label="Exit when branch condition"];
90 [label="Enter block"];
91 [label="Jump: ^test_3 Unit"];
92 [label="Stub" style="filled" fillcolor=gray];
93 [label="Exit block" style="filled" fillcolor=gray];
}
101 [label="Synthetic else branch"];
102 [label="Enter when branch result"];
94 [label="Exit when branch result" style="filled" fillcolor=gray];
95 [label="Exit when"];
}
subgraph cluster_24 {
color=blue
96 [label="Enter when"];
subgraph cluster_25 {
color=blue
103 [label="Enter block"];
104 [label="Access variable R|<local>/x|"];
105 [label="Smart cast: R|<local>/x|"];
106 [label="Function call: R|<local>/x|.R|/A.foo|()" style="filled" fillcolor=yellow];
107 [label="Access variable R|<local>/y|"];
108 [label="Smart cast: R|<local>/y|"];
109 [label="Function call: R|<local>/y|.R|/A.foo|()" style="filled" fillcolor=yellow];
110 [label="Exit block"];
97 [label="Enter when branch condition "];
98 [label="Access variable R|<local>/x|"];
99 [label="Access variable R|<local>/y|"];
100 [label="Smart cast: R|<local>/y|"];
101 [label="Equality operator =="];
102 [label="Exit when branch condition"];
}
111 [label="Exit when branch result"];
112 [label="Exit when"];
}
subgraph cluster_26 {
color=blue
113 [label="Enter when"];
subgraph cluster_27 {
103 [label="Synthetic else branch"];
104 [label="Enter when branch result"];
subgraph cluster_26 {
color=blue
114 [label="Enter when branch condition "];
115 [label="Access variable R|<local>/x|"];
116 [label="Access variable R|<local>/y|"];
117 [label="Smart cast: R|<local>/y|"];
118 [label="Equality operator ==="];
119 [label="Exit when branch condition"];
105 [label="Enter block"];
106 [label="Access variable R|<local>/x|"];
107 [label="Smart cast: R|<local>/x|"];
108 [label="Function call: R|<local>/x|.R|/A.foo|()" style="filled" fillcolor=yellow];
109 [label="Access variable R|<local>/y|"];
110 [label="Smart cast: R|<local>/y|"];
111 [label="Function call: R|<local>/y|.R|/A.foo|()" style="filled" fillcolor=yellow];
112 [label="Exit block"];
}
120 [label="Synthetic else branch"];
121 [label="Enter when branch result"];
113 [label="Exit when branch result"];
114 [label="Exit when"];
}
subgraph cluster_27 {
color=blue
115 [label="Enter when"];
subgraph cluster_28 {
color=blue
122 [label="Enter block"];
123 [label="Access variable R|<local>/x|"];
124 [label="Smart cast: R|<local>/x|"];
125 [label="Function call: R|<local>/x|.R|/A.foo|()" style="filled" fillcolor=yellow];
126 [label="Access variable R|<local>/y|"];
127 [label="Smart cast: R|<local>/y|"];
128 [label="Function call: R|<local>/y|.R|/A.foo|()" style="filled" fillcolor=yellow];
129 [label="Exit block"];
116 [label="Enter when branch condition "];
117 [label="Access variable R|<local>/x|"];
118 [label="Access variable R|<local>/y|"];
119 [label="Smart cast: R|<local>/y|"];
120 [label="Equality operator ==="];
121 [label="Exit when branch condition"];
}
130 [label="Exit when branch result"];
131 [label="Exit when"];
122 [label="Synthetic else branch"];
123 [label="Enter when branch result"];
subgraph cluster_29 {
color=blue
124 [label="Enter block"];
125 [label="Access variable R|<local>/x|"];
126 [label="Smart cast: R|<local>/x|"];
127 [label="Function call: R|<local>/x|.R|/A.foo|()" style="filled" fillcolor=yellow];
128 [label="Access variable R|<local>/y|"];
129 [label="Smart cast: R|<local>/y|"];
130 [label="Function call: R|<local>/y|.R|/A.foo|()" style="filled" fillcolor=yellow];
131 [label="Exit block"];
}
132 [label="Exit when branch result"];
133 [label="Exit when"];
}
132 [label="Exit block"];
134 [label="Exit block"];
}
133 [label="Exit function test_3" style="filled" fillcolor=red];
135 [label="Exit function test_3" style="filled" fillcolor=red];
}
78 -> {79};
79 -> {80};
80 -> {81};
81 -> {82};
82 -> {83};
83 -> {84};
84 -> {85};
85 -> {86 87};
86 -> {93};
87 -> {88};
88 -> {89};
89 -> {133};
89 -> {90} [style=dotted];
90 -> {91} [style=dotted];
85 -> {86};
86 -> {87};
87 -> {88 89};
88 -> {95};
89 -> {90};
90 -> {91};
91 -> {135};
91 -> {92} [style=dotted];
92 -> {93} [style=dotted];
93 -> {94};
94 -> {95};
93 -> {94} [style=dotted];
94 -> {95} [style=dotted];
95 -> {96};
96 -> {97};
97 -> {98};
98 -> {99};
99 -> {100};
100 -> {101 102};
101 -> {112};
102 -> {103};
103 -> {104};
100 -> {101};
101 -> {102};
102 -> {103 104};
103 -> {114};
104 -> {105};
105 -> {106};
106 -> {107};
@@ -344,10 +349,10 @@ digraph equalsAndIdentity_kt {
116 -> {117};
117 -> {118};
118 -> {119};
119 -> {120 121};
120 -> {131};
121 -> {122};
122 -> {123};
119 -> {120};
120 -> {121};
121 -> {122 123};
122 -> {133};
123 -> {124};
124 -> {125};
125 -> {126};
@@ -358,5 +363,7 @@ digraph equalsAndIdentity_kt {
130 -> {131};
131 -> {132};
132 -> {133};
133 -> {134};
134 -> {135};
}
@@ -5,147 +5,156 @@ digraph incorrectSmartcastToNothing_kt {
subgraph cluster_0 {
color=red
0 [label="Enter property" style="filled" fillcolor=red];
1 [label="Const: String(foo)"];
2 [label="Function call: R|java/io/File.File|(...)" style="filled" fillcolor=yellow];
3 [label="Exit property" style="filled" fillcolor=red];
0 [label="Enter file incorrectSmartcastToNothing.kt" style="filled" fillcolor=red];
subgraph cluster_1 {
color=blue
1 [label="Enter property" style="filled" fillcolor=red];
2 [label="Const: String(foo)"];
3 [label="Function call: R|java/io/File.File|(...)" style="filled" fillcolor=yellow];
4 [label="Exit property" style="filled" fillcolor=red];
}
5 [label="Exit file incorrectSmartcastToNothing.kt" style="filled" fillcolor=red];
}
0 -> {1};
0 -> {1} [color=green];
0 -> {5} [style=dotted];
0 -> {1} [style=dashed];
1 -> {2};
2 -> {3};
3 -> {4};
4 -> {5} [color=green];
subgraph cluster_1 {
subgraph cluster_2 {
color=red
4 [label="Enter function test" style="filled" fillcolor=red];
subgraph cluster_2 {
6 [label="Enter function test" style="filled" fillcolor=red];
subgraph cluster_3 {
color=blue
5 [label="Enter block"];
subgraph cluster_3 {
7 [label="Enter block"];
subgraph cluster_4 {
color=blue
6 [label="Enter when"];
subgraph cluster_4 {
color=blue
7 [label="Enter when branch condition "];
8 [label="Access variable R|<local>/cacheExtSetting|"];
9 [label="Const: Null(null)"];
10 [label="Equality operator =="];
11 [label="Exit when branch condition"];
}
8 [label="Enter when"];
subgraph cluster_5 {
color=blue
12 [label="Enter when branch condition "];
13 [label="Access variable R|<local>/cacheExtSetting|"];
14 [label="Smart cast: R|<local>/cacheExtSetting|"];
15 [label="Function call: R|<local>/cacheExtSetting|.R|kotlin/text/isBlank|()" style="filled" fillcolor=yellow];
16 [label="Exit when branch condition"];
9 [label="Enter when branch condition "];
10 [label="Access variable R|<local>/cacheExtSetting|"];
11 [label="Const: Null(null)"];
12 [label="Equality operator =="];
13 [label="Exit when branch condition"];
}
subgraph cluster_6 {
color=blue
17 [label="Enter when branch condition else"];
14 [label="Enter when branch condition "];
15 [label="Access variable R|<local>/cacheExtSetting|"];
16 [label="Smart cast: R|<local>/cacheExtSetting|"];
17 [label="Function call: R|<local>/cacheExtSetting|.R|kotlin/text/isBlank|()" style="filled" fillcolor=yellow];
18 [label="Exit when branch condition"];
}
19 [label="Enter when branch result"];
subgraph cluster_7 {
color=blue
20 [label="Enter block"];
21 [label="Access variable R|<local>/cacheExtSetting|"];
22 [label="Smart cast: R|<local>/cacheExtSetting|"];
23 [label="Function call: R|java/io/File.File|(...)" style="filled" fillcolor=yellow];
24 [label="Exit block"];
19 [label="Enter when branch condition else"];
20 [label="Exit when branch condition"];
}
25 [label="Exit when branch result"];
26 [label="Enter when branch result"];
21 [label="Enter when branch result"];
subgraph cluster_8 {
color=blue
27 [label="Enter block"];
28 [label="Const: Null(null)"];
29 [label="Exit block"];
22 [label="Enter block"];
23 [label="Access variable R|<local>/cacheExtSetting|"];
24 [label="Smart cast: R|<local>/cacheExtSetting|"];
25 [label="Function call: R|java/io/File.File|(...)" style="filled" fillcolor=yellow];
26 [label="Exit block"];
}
30 [label="Exit when branch result"];
31 [label="Enter when branch result"];
27 [label="Exit when branch result"];
28 [label="Enter when branch result"];
subgraph cluster_9 {
color=blue
32 [label="Enter block"];
33 [label="Access variable R|/cache|"];
34 [label="Enter safe call"];
35 [label="Postponed enter to lambda"];
subgraph cluster_10 {
color=blue
36 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_11 {
color=blue
37 [label="Enter block"];
38 [label="Access variable R|<local>/it|"];
39 [label="Const: String(main.kts.compiled.cache)"];
40 [label="Function call: R|java/io/File.File|(...)" style="filled" fillcolor=yellow];
41 [label="Exit block"];
}
42 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
43 [label="Postponed exit from lambda"];
44 [label="Function call: $subj$.R|kotlin/let|<R|java/io/File|, R|java/io/File|>(...)" style="filled" fillcolor=yellow];
45 [label="Exit safe call"];
46 [label="Exit block"];
29 [label="Enter block"];
30 [label="Const: Null(null)"];
31 [label="Exit block"];
}
47 [label="Exit when branch result"];
48 [label="Merge postponed lambda exits"];
49 [label="Exit when"];
32 [label="Exit when branch result"];
33 [label="Enter when branch result"];
subgraph cluster_10 {
color=blue
34 [label="Enter block"];
35 [label="Access variable R|/cache|"];
36 [label="Enter safe call"];
37 [label="Postponed enter to lambda"];
subgraph cluster_11 {
color=blue
38 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_12 {
color=blue
39 [label="Enter block"];
40 [label="Access variable R|<local>/it|"];
41 [label="Const: String(main.kts.compiled.cache)"];
42 [label="Function call: R|java/io/File.File|(...)" style="filled" fillcolor=yellow];
43 [label="Exit block"];
}
44 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
45 [label="Postponed exit from lambda"];
46 [label="Function call: $subj$.R|kotlin/let|<R|java/io/File|, R|java/io/File|>(...)" style="filled" fillcolor=yellow];
47 [label="Exit safe call"];
48 [label="Exit block"];
}
49 [label="Exit when branch result"];
50 [label="Merge postponed lambda exits"];
51 [label="Exit when"];
}
50 [label="Variable declaration: lval cacheBaseDir: R|java/io/File?|"];
51 [label="Exit block"];
52 [label="Variable declaration: lval cacheBaseDir: R|java/io/File?|"];
53 [label="Exit block"];
}
52 [label="Exit function test" style="filled" fillcolor=red];
54 [label="Exit function test" style="filled" fillcolor=red];
}
4 -> {5};
5 -> {6};
6 -> {7};
7 -> {8};
8 -> {9};
9 -> {10};
10 -> {11};
11 -> {12 31};
11 -> {12};
12 -> {13};
13 -> {14};
13 -> {14 33};
14 -> {15};
15 -> {16};
16 -> {17 26};
16 -> {17};
17 -> {18};
18 -> {19};
18 -> {19 28};
19 -> {20};
20 -> {21};
21 -> {22};
22 -> {23};
23 -> {24};
24 -> {25};
25 -> {49};
25 -> {26};
26 -> {27};
27 -> {28};
27 -> {51};
28 -> {29};
29 -> {30};
30 -> {49};
30 -> {31};
31 -> {32};
32 -> {33};
33 -> {34 45};
32 -> {51};
33 -> {34};
34 -> {35};
35 -> {36 44};
35 -> {43} [style=dotted];
35 -> {36} [style=dashed];
35 -> {36 47};
36 -> {37};
37 -> {38};
37 -> {38 46};
37 -> {45} [style=dotted];
37 -> {38} [style=dashed];
38 -> {39};
39 -> {40};
40 -> {41};
41 -> {42};
42 -> {43};
43 -> {44} [color=green];
43 -> {48} [color=red];
43 -> {44};
44 -> {45};
45 -> {46 48};
45 -> {46} [color=green];
45 -> {50} [color=red];
46 -> {47};
47 -> {49};
48 -> {49} [color=red];
49 -> {50};
50 -> {51};
47 -> {48 50};
48 -> {49};
49 -> {51};
50 -> {51} [color=red];
51 -> {52};
52 -> {53};
53 -> {54};
}
@@ -5,93 +5,98 @@ digraph inPlaceLambdas_kt {
subgraph cluster_0 {
color=red
0 [label="Enter class A" style="filled" fillcolor=red];
1 [label="Exit class A" style="filled" fillcolor=red];
0 [label="Enter file inPlaceLambdas.kt" style="filled" fillcolor=red];
1 [label="Exit file inPlaceLambdas.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter function foo" style="filled" fillcolor=red];
3 [label="Exit function foo" style="filled" fillcolor=red];
2 [label="Enter class A" style="filled" fillcolor=red];
3 [label="Exit class A" style="filled" fillcolor=red];
}
2 -> {3};
2 -> {3} [color=green];
subgraph cluster_2 {
color=red
4 [label="Enter class B" style="filled" fillcolor=red];
5 [label="Exit class B" style="filled" fillcolor=red];
4 [label="Enter function foo" style="filled" fillcolor=red];
5 [label="Exit function foo" style="filled" fillcolor=red];
}
4 -> {5} [color=green];
4 -> {5};
subgraph cluster_3 {
color=red
6 [label="Enter function bar" style="filled" fillcolor=red];
7 [label="Exit function bar" style="filled" fillcolor=red];
6 [label="Enter class B" style="filled" fillcolor=red];
7 [label="Exit class B" style="filled" fillcolor=red];
}
6 -> {7};
6 -> {7} [color=green];
subgraph cluster_4 {
color=red
8 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_5 {
color=blue
9 [label="Enter block"];
subgraph cluster_6 {
color=blue
10 [label="Enter when"];
subgraph cluster_7 {
color=blue
11 [label="Enter when branch condition "];
12 [label="Access variable R|<local>/x|"];
13 [label="Type operator: (R|<local>/x| is R|A|)"];
14 [label="Exit when branch condition"];
}
15 [label="Synthetic else branch"];
16 [label="Enter when branch result"];
subgraph cluster_8 {
color=blue
17 [label="Enter block"];
18 [label="Postponed enter to lambda"];
subgraph cluster_9 {
color=blue
19 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_10 {
color=blue
20 [label="Enter block"];
21 [label="Access variable R|<local>/x|"];
22 [label="Smart cast: R|<local>/x|"];
23 [label="Function call: R|<local>/x|.R|/A.foo|()" style="filled" fillcolor=yellow];
24 [label="Exit block"];
}
25 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
26 [label="Postponed exit from lambda"];
27 [label="Function call: R|kotlin/run|<R|kotlin/Unit|>(...)" style="filled" fillcolor=yellow];
28 [label="Exit block"];
}
29 [label="Exit when branch result"];
30 [label="Exit when"];
}
31 [label="Exit block"];
}
32 [label="Exit function test_1" style="filled" fillcolor=red];
8 [label="Enter function bar" style="filled" fillcolor=red];
9 [label="Exit function bar" style="filled" fillcolor=red];
}
8 -> {9};
9 -> {10};
subgraph cluster_5 {
color=red
10 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_6 {
color=blue
11 [label="Enter block"];
subgraph cluster_7 {
color=blue
12 [label="Enter when"];
subgraph cluster_8 {
color=blue
13 [label="Enter when branch condition "];
14 [label="Access variable R|<local>/x|"];
15 [label="Type operator: (R|<local>/x| is R|A|)"];
16 [label="Exit when branch condition"];
}
17 [label="Synthetic else branch"];
18 [label="Enter when branch result"];
subgraph cluster_9 {
color=blue
19 [label="Enter block"];
20 [label="Postponed enter to lambda"];
subgraph cluster_10 {
color=blue
21 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_11 {
color=blue
22 [label="Enter block"];
23 [label="Access variable R|<local>/x|"];
24 [label="Smart cast: R|<local>/x|"];
25 [label="Function call: R|<local>/x|.R|/A.foo|()" style="filled" fillcolor=yellow];
26 [label="Exit block"];
}
27 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
28 [label="Postponed exit from lambda"];
29 [label="Function call: R|kotlin/run|<R|kotlin/Unit|>(...)" style="filled" fillcolor=yellow];
30 [label="Exit block"];
}
31 [label="Exit when branch result"];
32 [label="Exit when"];
}
33 [label="Exit block"];
}
34 [label="Exit function test_1" style="filled" fillcolor=red];
}
10 -> {11};
11 -> {12};
12 -> {13};
13 -> {14};
14 -> {15 16};
15 -> {30};
16 -> {17};
17 -> {18};
18 -> {19 27};
18 -> {26} [style=dotted];
18 -> {19} [style=dashed];
14 -> {15};
15 -> {16};
16 -> {17 18};
17 -> {32};
18 -> {19};
19 -> {20};
20 -> {21};
20 -> {21 29};
20 -> {28} [style=dotted];
20 -> {21} [style=dashed];
21 -> {22};
22 -> {23};
23 -> {24};
@@ -103,42 +108,42 @@ digraph inPlaceLambdas_kt {
29 -> {30};
30 -> {31};
31 -> {32};
subgraph cluster_11 {
color=red
33 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_12 {
color=blue
34 [label="Enter block"];
35 [label="Postponed enter to lambda"];
subgraph cluster_13 {
color=blue
36 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_14 {
color=blue
37 [label="Enter block"];
38 [label="Access variable R|<local>/x|"];
39 [label="Type operator: (R|<local>/x| as R|B|)"];
40 [label="Exit block"];
}
41 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
42 [label="Postponed exit from lambda"];
43 [label="Function call: R|kotlin/run|<R|B|>(...)" style="filled" fillcolor=yellow];
44 [label="Access variable R|<local>/x|"];
45 [label="Smart cast: R|<local>/x|"];
46 [label="Function call: R|<local>/x|.R|/B.bar|()" style="filled" fillcolor=yellow];
47 [label="Exit block"];
}
48 [label="Exit function test_2" style="filled" fillcolor=red];
}
32 -> {33};
33 -> {34};
34 -> {35};
35 -> {36 43};
35 -> {42} [style=dotted];
35 -> {36} [style=dashed];
subgraph cluster_12 {
color=red
35 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_13 {
color=blue
36 [label="Enter block"];
37 [label="Postponed enter to lambda"];
subgraph cluster_14 {
color=blue
38 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_15 {
color=blue
39 [label="Enter block"];
40 [label="Access variable R|<local>/x|"];
41 [label="Type operator: (R|<local>/x| as R|B|)"];
42 [label="Exit block"];
}
43 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
44 [label="Postponed exit from lambda"];
45 [label="Function call: R|kotlin/run|<R|B|>(...)" style="filled" fillcolor=yellow];
46 [label="Access variable R|<local>/x|"];
47 [label="Smart cast: R|<local>/x|"];
48 [label="Function call: R|<local>/x|.R|/B.bar|()" style="filled" fillcolor=yellow];
49 [label="Exit block"];
}
50 [label="Exit function test_2" style="filled" fillcolor=red];
}
35 -> {36};
36 -> {37};
37 -> {38};
37 -> {38 45};
37 -> {44} [style=dotted];
37 -> {38} [style=dashed];
38 -> {39};
39 -> {40};
40 -> {41};
@@ -149,74 +154,74 @@ digraph inPlaceLambdas_kt {
45 -> {46};
46 -> {47};
47 -> {48};
48 -> {49};
49 -> {50};
subgraph cluster_15 {
subgraph cluster_16 {
color=red
49 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_16 {
51 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_17 {
color=blue
50 [label="Enter block"];
subgraph cluster_17 {
52 [label="Enter block"];
subgraph cluster_18 {
color=blue
51 [label="Enter when"];
subgraph cluster_18 {
color=blue
52 [label="Enter when branch condition "];
53 [label="Access variable R|<local>/x|"];
54 [label="Type operator: (R|<local>/x| is R|A|)"];
55 [label="Exit when branch condition"];
}
56 [label="Synthetic else branch"];
57 [label="Enter when branch result"];
53 [label="Enter when"];
subgraph cluster_19 {
color=blue
58 [label="Enter block"];
59 [label="Postponed enter to lambda"];
subgraph cluster_20 {
color=blue
60 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_21 {
color=blue
61 [label="Enter block"];
62 [label="Access variable R|<local>/x|"];
63 [label="Smart cast: R|<local>/x|"];
64 [label="Function call: R|<local>/x|.R|/A.foo|()" style="filled" fillcolor=yellow];
65 [label="Access variable R|<local>/x|"];
66 [label="Smart cast: R|<local>/x|"];
67 [label="Type operator: (R|<local>/x| as R|B|)"];
68 [label="Exit block"];
}
69 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
70 [label="Postponed exit from lambda"];
71 [label="Function call: R|kotlin/run|<R|B|>(...)" style="filled" fillcolor=yellow];
72 [label="Access variable R|<local>/x|"];
73 [label="Smart cast: R|<local>/x|"];
74 [label="Function call: R|<local>/x|.R|/B.bar|()" style="filled" fillcolor=yellow];
75 [label="Exit block"];
54 [label="Enter when branch condition "];
55 [label="Access variable R|<local>/x|"];
56 [label="Type operator: (R|<local>/x| is R|A|)"];
57 [label="Exit when branch condition"];
}
76 [label="Exit when branch result"];
77 [label="Exit when"];
58 [label="Synthetic else branch"];
59 [label="Enter when branch result"];
subgraph cluster_20 {
color=blue
60 [label="Enter block"];
61 [label="Postponed enter to lambda"];
subgraph cluster_21 {
color=blue
62 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_22 {
color=blue
63 [label="Enter block"];
64 [label="Access variable R|<local>/x|"];
65 [label="Smart cast: R|<local>/x|"];
66 [label="Function call: R|<local>/x|.R|/A.foo|()" style="filled" fillcolor=yellow];
67 [label="Access variable R|<local>/x|"];
68 [label="Smart cast: R|<local>/x|"];
69 [label="Type operator: (R|<local>/x| as R|B|)"];
70 [label="Exit block"];
}
71 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
72 [label="Postponed exit from lambda"];
73 [label="Function call: R|kotlin/run|<R|B|>(...)" style="filled" fillcolor=yellow];
74 [label="Access variable R|<local>/x|"];
75 [label="Smart cast: R|<local>/x|"];
76 [label="Function call: R|<local>/x|.R|/B.bar|()" style="filled" fillcolor=yellow];
77 [label="Exit block"];
}
78 [label="Exit when branch result"];
79 [label="Exit when"];
}
78 [label="Exit block"];
80 [label="Exit block"];
}
79 [label="Exit function test_3" style="filled" fillcolor=red];
81 [label="Exit function test_3" style="filled" fillcolor=red];
}
49 -> {50};
50 -> {51};
51 -> {52};
52 -> {53};
53 -> {54};
54 -> {55};
55 -> {56 57};
56 -> {77};
57 -> {58};
58 -> {59};
59 -> {60 71};
59 -> {70} [style=dotted];
59 -> {60} [style=dashed];
55 -> {56};
56 -> {57};
57 -> {58 59};
58 -> {79};
59 -> {60};
60 -> {61};
61 -> {62};
61 -> {62 73};
61 -> {72} [style=dotted];
61 -> {62} [style=dashed];
62 -> {63};
63 -> {64};
64 -> {65};
@@ -234,5 +239,7 @@ digraph inPlaceLambdas_kt {
76 -> {77};
77 -> {78};
78 -> {79};
79 -> {80};
80 -> {81};
}
@@ -5,235 +5,240 @@ digraph lambdaInWhenBranch_kt {
subgraph cluster_0 {
color=red
0 [label="Enter class Sealed" style="filled" fillcolor=red];
subgraph cluster_1 {
color=blue
1 [label="Enter function <init>" style="filled" fillcolor=red];
2 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
3 [label="Exit function <init>" style="filled" fillcolor=red];
}
4 [label="Exit class Sealed" style="filled" fillcolor=red];
0 [label="Enter file lambdaInWhenBranch.kt" style="filled" fillcolor=red];
1 [label="Exit file lambdaInWhenBranch.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
0 -> {4} [style=dotted];
0 -> {1} [style=dashed];
1 -> {2};
2 -> {3};
3 -> {4} [color=green];
subgraph cluster_2 {
subgraph cluster_1 {
color=red
5 [label="Enter class SubClass1" style="filled" fillcolor=red];
subgraph cluster_3 {
2 [label="Enter class Sealed" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
6 [label="Enter property" style="filled" fillcolor=red];
7 [label="Access variable R|<local>/t|"];
8 [label="Exit property" style="filled" fillcolor=red];
3 [label="Enter function <init>" style="filled" fillcolor=red];
4 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
5 [label="Exit function <init>" style="filled" fillcolor=red];
}
6 [label="Exit class Sealed" style="filled" fillcolor=red];
}
2 -> {3} [color=green];
2 -> {6} [style=dotted];
2 -> {3} [style=dashed];
3 -> {4};
4 -> {5};
5 -> {6} [color=green];
subgraph cluster_3 {
color=red
7 [label="Enter class SubClass1" style="filled" fillcolor=red];
subgraph cluster_4 {
color=blue
9 [label="Enter function <init>" style="filled" fillcolor=red];
10 [label="Delegated constructor call: super<R|Sealed|>()" style="filled" fillcolor=yellow];
11 [label="Exit function <init>" style="filled" fillcolor=red];
8 [label="Enter property" style="filled" fillcolor=red];
9 [label="Access variable R|<local>/t|"];
10 [label="Exit property" style="filled" fillcolor=red];
}
12 [label="Exit class SubClass1" style="filled" fillcolor=red];
subgraph cluster_5 {
color=blue
11 [label="Enter function <init>" style="filled" fillcolor=red];
12 [label="Delegated constructor call: super<R|Sealed|>()" style="filled" fillcolor=yellow];
13 [label="Exit function <init>" style="filled" fillcolor=red];
}
14 [label="Exit class SubClass1" style="filled" fillcolor=red];
}
5 -> {6} [color=green];
5 -> {12} [style=dotted];
5 -> {6 9} [style=dashed];
6 -> {7};
7 -> {8};
8 -> {9} [color=green];
7 -> {8} [color=green];
7 -> {14} [style=dotted];
7 -> {8 11} [style=dashed];
8 -> {9};
9 -> {10};
10 -> {11};
11 -> {12} [color=green];
subgraph cluster_5 {
color=red
13 [label="Enter function component1" style="filled" fillcolor=red];
14 [label="Exit function component1" style="filled" fillcolor=red];
}
13 -> {14};
10 -> {11} [color=green];
11 -> {12};
12 -> {13};
13 -> {14} [color=green];
subgraph cluster_6 {
color=red
15 [label="Enter function copy" style="filled" fillcolor=red];
16 [label="Enter default value of t"];
subgraph cluster_7 {
color=blue
17 [label="Enter default value of t" style="filled" fillcolor=red];
18 [label="Access variable R|/SubClass1.t|"];
19 [label="Exit default value of t" style="filled" fillcolor=red];
}
20 [label="Exit default value of t"];
21 [label="Exit function copy" style="filled" fillcolor=red];
15 [label="Enter function component1" style="filled" fillcolor=red];
16 [label="Exit function component1" style="filled" fillcolor=red];
}
15 -> {16};
16 -> {17 20};
16 -> {17} [style=dashed];
subgraph cluster_7 {
color=red
17 [label="Enter function copy" style="filled" fillcolor=red];
18 [label="Enter default value of t"];
subgraph cluster_8 {
color=blue
19 [label="Enter default value of t" style="filled" fillcolor=red];
20 [label="Access variable R|/SubClass1.t|"];
21 [label="Exit default value of t" style="filled" fillcolor=red];
}
22 [label="Exit default value of t"];
23 [label="Exit function copy" style="filled" fillcolor=red];
}
17 -> {18};
18 -> {19};
18 -> {19 22};
18 -> {19} [style=dashed];
19 -> {20};
20 -> {21};
21 -> {22};
22 -> {23};
subgraph cluster_8 {
subgraph cluster_9 {
color=red
22 [label="Enter class SubClass2" style="filled" fillcolor=red];
subgraph cluster_9 {
24 [label="Enter class SubClass2" style="filled" fillcolor=red];
subgraph cluster_10 {
color=blue
23 [label="Enter function <init>" style="filled" fillcolor=red];
24 [label="Delegated constructor call: super<R|Sealed|>()" style="filled" fillcolor=yellow];
25 [label="Exit function <init>" style="filled" fillcolor=red];
25 [label="Enter function <init>" style="filled" fillcolor=red];
26 [label="Delegated constructor call: super<R|Sealed|>()" style="filled" fillcolor=yellow];
27 [label="Exit function <init>" style="filled" fillcolor=red];
}
26 [label="Exit class SubClass2" style="filled" fillcolor=red];
28 [label="Exit class SubClass2" style="filled" fillcolor=red];
}
22 -> {23} [color=green];
22 -> {26} [style=dotted];
22 -> {23} [style=dashed];
23 -> {24};
24 -> {25};
25 -> {26} [color=green];
subgraph cluster_10 {
color=red
27 [label="Enter function copy" style="filled" fillcolor=red];
28 [label="Exit function copy" style="filled" fillcolor=red];
}
27 -> {28};
24 -> {25} [color=green];
24 -> {28} [style=dotted];
24 -> {25} [style=dashed];
25 -> {26};
26 -> {27};
27 -> {28} [color=green];
subgraph cluster_11 {
color=red
29 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_12 {
color=blue
30 [label="Enter block"];
subgraph cluster_13 {
color=blue
31 [label="Enter when"];
32 [label="Access variable R|<local>/p|"];
subgraph cluster_14 {
color=blue
33 [label="Enter when branch condition "];
34 [label="Exit $subj"];
35 [label="Type operator: ($subj$ is R|SubClass1|)"];
36 [label="Exit when branch condition"];
}
subgraph cluster_15 {
color=blue
37 [label="Enter when branch condition "];
38 [label="Exit $subj"];
39 [label="Type operator: ($subj$ is R|SubClass2|)"];
40 [label="Exit when branch condition"];
}
41 [label="Enter when branch result"];
subgraph cluster_16 {
color=blue
42 [label="Enter block"];
43 [label="Const: String()"];
44 [label="Exit block"];
}
45 [label="Exit when branch result"];
46 [label="Enter when branch result"];
subgraph cluster_17 {
color=blue
47 [label="Enter block"];
48 [label="Const: String()"];
49 [label="Postponed enter to lambda"];
subgraph cluster_18 {
color=blue
50 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_19 {
color=blue
51 [label="Enter block"];
52 [label="Access variable R|<local>/it|"];
53 [label="Exit block"];
}
54 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
55 [label="Postponed exit from lambda"];
56 [label="Function call: String().R|kotlin/let|<R|kotlin/String|, R|kotlin/String|>(...)" style="filled" fillcolor=yellow];
57 [label="Exit block"];
}
58 [label="Exit when branch result"];
59 [label="Exit when"];
}
60 [label="Access variable R|<local>/p|"];
61 [label="Access variable <Unresolved name: t>#"];
subgraph cluster_20 {
color=blue
62 [label="Enter when"];
63 [label="Access variable R|<local>/p|"];
subgraph cluster_21 {
color=blue
64 [label="Enter when branch condition "];
65 [label="Exit $subj"];
66 [label="Type operator: ($subj$ is R|SubClass1|)"];
67 [label="Exit when branch condition"];
}
subgraph cluster_22 {
color=blue
68 [label="Enter when branch condition "];
69 [label="Exit $subj"];
70 [label="Type operator: ($subj$ is R|SubClass2|)"];
71 [label="Exit when branch condition"];
}
72 [label="Enter when branch result"];
subgraph cluster_23 {
color=blue
73 [label="Enter block"];
74 [label="Const: String(2)"];
75 [label="Exit block"];
}
76 [label="Exit when branch result"];
77 [label="Enter when branch result"];
subgraph cluster_24 {
color=blue
78 [label="Enter block"];
79 [label="Access variable R|<local>/p|"];
80 [label="Smart cast: R|<local>/p|"];
81 [label="Access variable R|/SubClass1.t|"];
82 [label="Exit block"];
}
83 [label="Exit when branch result"];
84 [label="Exit when"];
}
85 [label="Access variable R|kotlin/String.length|"];
86 [label="Exit block"];
}
87 [label="Exit function foo" style="filled" fillcolor=red];
29 [label="Enter function copy" style="filled" fillcolor=red];
30 [label="Exit function copy" style="filled" fillcolor=red];
}
29 -> {30};
30 -> {31};
subgraph cluster_12 {
color=red
31 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_13 {
color=blue
32 [label="Enter block"];
subgraph cluster_14 {
color=blue
33 [label="Enter when"];
34 [label="Access variable R|<local>/p|"];
subgraph cluster_15 {
color=blue
35 [label="Enter when branch condition "];
36 [label="Exit $subj"];
37 [label="Type operator: ($subj$ is R|SubClass1|)"];
38 [label="Exit when branch condition"];
}
subgraph cluster_16 {
color=blue
39 [label="Enter when branch condition "];
40 [label="Exit $subj"];
41 [label="Type operator: ($subj$ is R|SubClass2|)"];
42 [label="Exit when branch condition"];
}
43 [label="Enter when branch result"];
subgraph cluster_17 {
color=blue
44 [label="Enter block"];
45 [label="Const: String()"];
46 [label="Exit block"];
}
47 [label="Exit when branch result"];
48 [label="Enter when branch result"];
subgraph cluster_18 {
color=blue
49 [label="Enter block"];
50 [label="Const: String()"];
51 [label="Postponed enter to lambda"];
subgraph cluster_19 {
color=blue
52 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_20 {
color=blue
53 [label="Enter block"];
54 [label="Access variable R|<local>/it|"];
55 [label="Exit block"];
}
56 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
57 [label="Postponed exit from lambda"];
58 [label="Function call: String().R|kotlin/let|<R|kotlin/String|, R|kotlin/String|>(...)" style="filled" fillcolor=yellow];
59 [label="Exit block"];
}
60 [label="Exit when branch result"];
61 [label="Exit when"];
}
62 [label="Access variable R|<local>/p|"];
63 [label="Access variable <Unresolved name: t>#"];
subgraph cluster_21 {
color=blue
64 [label="Enter when"];
65 [label="Access variable R|<local>/p|"];
subgraph cluster_22 {
color=blue
66 [label="Enter when branch condition "];
67 [label="Exit $subj"];
68 [label="Type operator: ($subj$ is R|SubClass1|)"];
69 [label="Exit when branch condition"];
}
subgraph cluster_23 {
color=blue
70 [label="Enter when branch condition "];
71 [label="Exit $subj"];
72 [label="Type operator: ($subj$ is R|SubClass2|)"];
73 [label="Exit when branch condition"];
}
74 [label="Enter when branch result"];
subgraph cluster_24 {
color=blue
75 [label="Enter block"];
76 [label="Const: String(2)"];
77 [label="Exit block"];
}
78 [label="Exit when branch result"];
79 [label="Enter when branch result"];
subgraph cluster_25 {
color=blue
80 [label="Enter block"];
81 [label="Access variable R|<local>/p|"];
82 [label="Smart cast: R|<local>/p|"];
83 [label="Access variable R|/SubClass1.t|"];
84 [label="Exit block"];
}
85 [label="Exit when branch result"];
86 [label="Exit when"];
}
87 [label="Access variable R|kotlin/String.length|"];
88 [label="Exit block"];
}
89 [label="Exit function foo" style="filled" fillcolor=red];
}
31 -> {32};
32 -> {33};
33 -> {34};
34 -> {35};
35 -> {36};
36 -> {37 46};
36 -> {37};
37 -> {38};
38 -> {39};
38 -> {39 48};
39 -> {40};
40 -> {41};
41 -> {42};
42 -> {43};
43 -> {44};
44 -> {45};
45 -> {59};
45 -> {46};
46 -> {47};
47 -> {48};
47 -> {61};
48 -> {49};
49 -> {50 56};
49 -> {55} [style=dotted];
49 -> {50} [style=dashed];
49 -> {50};
50 -> {51};
51 -> {52};
51 -> {52 58};
51 -> {57} [style=dotted];
51 -> {52} [style=dashed];
52 -> {53};
53 -> {54};
54 -> {55};
55 -> {56} [color=green];
55 -> {59} [color=red];
55 -> {56};
56 -> {57};
57 -> {58};
57 -> {58} [color=green];
57 -> {61} [color=red];
58 -> {59};
59 -> {60};
60 -> {61};
@@ -243,18 +248,18 @@ digraph lambdaInWhenBranch_kt {
64 -> {65};
65 -> {66};
66 -> {67};
67 -> {68 77};
67 -> {68};
68 -> {69};
69 -> {70};
69 -> {70 79};
70 -> {71};
71 -> {72};
72 -> {73};
73 -> {74};
74 -> {75};
75 -> {76};
76 -> {84};
76 -> {77};
77 -> {78};
78 -> {79};
78 -> {86};
79 -> {80};
80 -> {81};
81 -> {82};
@@ -263,5 +268,7 @@ digraph lambdaInWhenBranch_kt {
84 -> {85};
85 -> {86};
86 -> {87};
87 -> {88};
88 -> {89};
}
@@ -5,51 +5,58 @@ digraph smartcastOnLambda_kt {
subgraph cluster_0 {
color=red
0 [label="Enter function test" style="filled" fillcolor=red];
subgraph cluster_1 {
0 [label="Enter file smartcastOnLambda.kt" style="filled" fillcolor=red];
1 [label="Exit file smartcastOnLambda.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter function test" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
1 [label="Enter block"];
subgraph cluster_2 {
3 [label="Enter block"];
subgraph cluster_3 {
color=blue
2 [label="Enter when"];
subgraph cluster_3 {
color=blue
3 [label="Enter when branch condition "];
4 [label="Access variable R|<local>/func|"];
5 [label="Const: Null(null)"];
6 [label="Equality operator !="];
7 [label="Exit when branch condition"];
}
8 [label="Synthetic else branch"];
9 [label="Enter when branch result"];
4 [label="Enter when"];
subgraph cluster_4 {
color=blue
10 [label="Enter block"];
11 [label="Function call: R|<local>/func|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
12 [label="Exit block"];
5 [label="Enter when branch condition "];
6 [label="Access variable R|<local>/func|"];
7 [label="Const: Null(null)"];
8 [label="Equality operator !="];
9 [label="Exit when branch condition"];
}
13 [label="Exit when branch result"];
14 [label="Exit when"];
10 [label="Synthetic else branch"];
11 [label="Enter when branch result"];
subgraph cluster_5 {
color=blue
12 [label="Enter block"];
13 [label="Function call: R|<local>/func|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
14 [label="Exit block"];
}
15 [label="Exit when branch result"];
16 [label="Exit when"];
}
15 [label="Exit block"];
17 [label="Exit block"];
}
16 [label="Exit function test" style="filled" fillcolor=red];
18 [label="Exit function test" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
2 -> {3};
3 -> {4};
4 -> {5};
5 -> {6};
6 -> {7};
7 -> {8 9};
8 -> {14};
9 -> {10};
10 -> {11};
7 -> {8};
8 -> {9};
9 -> {10 11};
10 -> {16};
11 -> {12};
12 -> {13};
13 -> {14};
14 -> {15};
15 -> {16};
16 -> {17};
17 -> {18};
}
@@ -5,80 +5,85 @@ digraph dataFlowInfoFromWhileCondition_kt {
subgraph cluster_0 {
color=red
0 [label="Enter class A" style="filled" fillcolor=red];
1 [label="Exit class A" style="filled" fillcolor=red];
0 [label="Enter file dataFlowInfoFromWhileCondition.kt" style="filled" fillcolor=red];
1 [label="Exit file dataFlowInfoFromWhileCondition.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter function foo" style="filled" fillcolor=red];
3 [label="Exit function foo" style="filled" fillcolor=red];
2 [label="Enter class A" style="filled" fillcolor=red];
3 [label="Exit class A" style="filled" fillcolor=red];
}
2 -> {3};
2 -> {3} [color=green];
subgraph cluster_2 {
color=red
4 [label="Enter class B" style="filled" fillcolor=red];
5 [label="Exit class B" style="filled" fillcolor=red];
4 [label="Enter function foo" style="filled" fillcolor=red];
5 [label="Exit function foo" style="filled" fillcolor=red];
}
4 -> {5} [color=green];
4 -> {5};
subgraph cluster_3 {
color=red
6 [label="Enter class C" style="filled" fillcolor=red];
7 [label="Exit class C" style="filled" fillcolor=red];
6 [label="Enter class B" style="filled" fillcolor=red];
7 [label="Exit class B" style="filled" fillcolor=red];
}
6 -> {7} [color=green];
subgraph cluster_4 {
color=red
8 [label="Enter function test" style="filled" fillcolor=red];
subgraph cluster_5 {
color=blue
9 [label="Enter block"];
10 [label="Const: Null(null)"];
11 [label="Variable declaration: lvar a: R|A?|"];
subgraph cluster_6 {
color=blue
12 [label="Enter while loop"];
subgraph cluster_7 {
color=blue
13 [label="Enter loop condition"];
subgraph cluster_8 {
color=blue
14 [label="Enter ||"];
15 [label="Access variable R|<local>/a|"];
16 [label="Type operator: (R|<local>/a| is R|B|)"];
17 [label="Exit left part of ||"];
18 [label="Enter right part of ||"];
19 [label="Access variable R|<local>/a|"];
20 [label="Type operator: (R|<local>/a| is R|C|)"];
21 [label="Exit ||"];
}
22 [label="Exit loop condition"];
}
subgraph cluster_9 {
color=blue
23 [label="Enter loop block"];
subgraph cluster_10 {
color=blue
24 [label="Enter block"];
25 [label="Access variable R|<local>/a|"];
26 [label="Smart cast: R|<local>/a|"];
27 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
28 [label="Exit block"];
}
29 [label="Exit loop block"];
}
30 [label="Exit while loop"];
}
31 [label="Exit block"];
}
32 [label="Exit function test" style="filled" fillcolor=red];
8 [label="Enter class C" style="filled" fillcolor=red];
9 [label="Exit class C" style="filled" fillcolor=red];
}
8 -> {9} [color=green];
subgraph cluster_5 {
color=red
10 [label="Enter function test" style="filled" fillcolor=red];
subgraph cluster_6 {
color=blue
11 [label="Enter block"];
12 [label="Const: Null(null)"];
13 [label="Variable declaration: lvar a: R|A?|"];
subgraph cluster_7 {
color=blue
14 [label="Enter while loop"];
subgraph cluster_8 {
color=blue
15 [label="Enter loop condition"];
subgraph cluster_9 {
color=blue
16 [label="Enter ||"];
17 [label="Access variable R|<local>/a|"];
18 [label="Type operator: (R|<local>/a| is R|B|)"];
19 [label="Exit left part of ||"];
20 [label="Enter right part of ||"];
21 [label="Access variable R|<local>/a|"];
22 [label="Type operator: (R|<local>/a| is R|C|)"];
23 [label="Exit ||"];
}
24 [label="Exit loop condition"];
}
subgraph cluster_10 {
color=blue
25 [label="Enter loop block"];
subgraph cluster_11 {
color=blue
26 [label="Enter block"];
27 [label="Access variable R|<local>/a|"];
28 [label="Smart cast: R|<local>/a|"];
29 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
30 [label="Exit block"];
}
31 [label="Exit loop block"];
}
32 [label="Exit while loop"];
}
33 [label="Exit block"];
}
34 [label="Exit function test" style="filled" fillcolor=red];
}
8 -> {9};
9 -> {10};
10 -> {11};
11 -> {12};
12 -> {13};
@@ -86,20 +91,22 @@ digraph dataFlowInfoFromWhileCondition_kt {
14 -> {15};
15 -> {16};
16 -> {17};
17 -> {18 21};
17 -> {18};
18 -> {19};
19 -> {20};
19 -> {20 23};
20 -> {21};
21 -> {22};
22 -> {23 30};
22 -> {23};
23 -> {24};
24 -> {25};
24 -> {25 32};
25 -> {26};
26 -> {27};
27 -> {28};
28 -> {29};
29 -> {13} [color=green style=dashed];
29 -> {30};
30 -> {31};
31 -> {32};
31 -> {15} [color=green style=dashed];
32 -> {33};
33 -> {34};
}
File diff suppressed because it is too large Load Diff
@@ -5,79 +5,84 @@ digraph multipleCasts_kt {
subgraph cluster_0 {
color=red
0 [label="Enter class A" style="filled" fillcolor=red];
1 [label="Exit class A" style="filled" fillcolor=red];
0 [label="Enter file multipleCasts.kt" style="filled" fillcolor=red];
1 [label="Exit file multipleCasts.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter function foo" style="filled" fillcolor=red];
3 [label="Exit function foo" style="filled" fillcolor=red];
2 [label="Enter class A" style="filled" fillcolor=red];
3 [label="Exit class A" style="filled" fillcolor=red];
}
2 -> {3};
2 -> {3} [color=green];
subgraph cluster_2 {
color=red
4 [label="Enter class B" style="filled" fillcolor=red];
5 [label="Exit class B" style="filled" fillcolor=red];
4 [label="Enter function foo" style="filled" fillcolor=red];
5 [label="Exit function foo" style="filled" fillcolor=red];
}
4 -> {5} [color=green];
4 -> {5};
subgraph cluster_3 {
color=red
6 [label="Enter function foo" style="filled" fillcolor=red];
7 [label="Exit function foo" style="filled" fillcolor=red];
6 [label="Enter class B" style="filled" fillcolor=red];
7 [label="Exit class B" style="filled" fillcolor=red];
}
6 -> {7};
6 -> {7} [color=green];
subgraph cluster_4 {
color=red
8 [label="Enter function getAny" style="filled" fillcolor=red];
subgraph cluster_5 {
color=blue
9 [label="Enter block"];
10 [label="Const: Null(null)"];
11 [label="Jump: ^getAny Null(null)"];
12 [label="Stub" style="filled" fillcolor=gray];
13 [label="Exit block" style="filled" fillcolor=gray];
}
14 [label="Exit function getAny" style="filled" fillcolor=red];
8 [label="Enter function foo" style="filled" fillcolor=red];
9 [label="Exit function foo" style="filled" fillcolor=red];
}
8 -> {9};
9 -> {10};
10 -> {11};
11 -> {14};
11 -> {12} [style=dotted];
12 -> {13} [style=dotted];
13 -> {14} [style=dotted];
subgraph cluster_6 {
subgraph cluster_5 {
color=red
15 [label="Enter function test_0" style="filled" fillcolor=red];
subgraph cluster_7 {
10 [label="Enter function getAny" style="filled" fillcolor=red];
subgraph cluster_6 {
color=blue
16 [label="Enter block"];
17 [label="Function call: R|/getAny|()" style="filled" fillcolor=yellow];
18 [label="Variable declaration: lval a: R|kotlin/Any?|"];
19 [label="Function call: R|/getAny|()" style="filled" fillcolor=yellow];
20 [label="Variable declaration: lval b: R|kotlin/Any?|"];
21 [label="Access variable R|<local>/a|"];
22 [label="Type operator: (R|<local>/a| as R|A|)"];
23 [label="Access variable R|<local>/a|"];
24 [label="Smart cast: R|<local>/a|"];
25 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
26 [label="Access variable R|<local>/b|"];
27 [label="Type operator: (R|<local>/b| as R|B|)"];
28 [label="Access variable R|<local>/b|"];
29 [label="Smart cast: R|<local>/b|"];
30 [label="Function call: R|<local>/b|.R|/B.foo|()" style="filled" fillcolor=yellow];
31 [label="Exit block"];
11 [label="Enter block"];
12 [label="Const: Null(null)"];
13 [label="Jump: ^getAny Null(null)"];
14 [label="Stub" style="filled" fillcolor=gray];
15 [label="Exit block" style="filled" fillcolor=gray];
}
32 [label="Exit function test_0" style="filled" fillcolor=red];
16 [label="Exit function getAny" style="filled" fillcolor=red];
}
10 -> {11};
11 -> {12};
12 -> {13};
13 -> {16};
13 -> {14} [style=dotted];
14 -> {15} [style=dotted];
15 -> {16} [style=dotted];
subgraph cluster_7 {
color=red
17 [label="Enter function test_0" style="filled" fillcolor=red];
subgraph cluster_8 {
color=blue
18 [label="Enter block"];
19 [label="Function call: R|/getAny|()" style="filled" fillcolor=yellow];
20 [label="Variable declaration: lval a: R|kotlin/Any?|"];
21 [label="Function call: R|/getAny|()" style="filled" fillcolor=yellow];
22 [label="Variable declaration: lval b: R|kotlin/Any?|"];
23 [label="Access variable R|<local>/a|"];
24 [label="Type operator: (R|<local>/a| as R|A|)"];
25 [label="Access variable R|<local>/a|"];
26 [label="Smart cast: R|<local>/a|"];
27 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
28 [label="Access variable R|<local>/b|"];
29 [label="Type operator: (R|<local>/b| as R|B|)"];
30 [label="Access variable R|<local>/b|"];
31 [label="Smart cast: R|<local>/b|"];
32 [label="Function call: R|<local>/b|.R|/B.foo|()" style="filled" fillcolor=yellow];
33 [label="Exit block"];
}
34 [label="Exit function test_0" style="filled" fillcolor=red];
}
15 -> {16};
16 -> {17};
17 -> {18};
18 -> {19};
19 -> {20};
@@ -93,58 +98,58 @@ digraph multipleCasts_kt {
29 -> {30};
30 -> {31};
31 -> {32};
subgraph cluster_8 {
color=red
33 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_9 {
color=blue
34 [label="Enter block"];
35 [label="Function call: R|/getAny|()" style="filled" fillcolor=yellow];
36 [label="Variable declaration: lval a: R|kotlin/Any?|"];
37 [label="Function call: R|/getAny|()" style="filled" fillcolor=yellow];
38 [label="Variable declaration: lval b: R|kotlin/Any?|"];
subgraph cluster_10 {
color=blue
39 [label="Enter when"];
subgraph cluster_11 {
color=blue
40 [label="Enter when branch condition "];
subgraph cluster_12 {
color=blue
41 [label="Enter &&"];
42 [label="Access variable R|<local>/a|"];
43 [label="Type operator: (R|<local>/a| is R|A|)"];
44 [label="Exit left part of &&"];
45 [label="Enter right part of &&"];
46 [label="Access variable R|<local>/b|"];
47 [label="Type operator: (R|<local>/b| is R|B|)"];
48 [label="Exit &&"];
}
49 [label="Exit when branch condition"];
}
50 [label="Synthetic else branch"];
51 [label="Enter when branch result"];
subgraph cluster_13 {
color=blue
52 [label="Enter block"];
53 [label="Access variable R|<local>/a|"];
54 [label="Smart cast: R|<local>/a|"];
55 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
56 [label="Access variable R|<local>/b|"];
57 [label="Smart cast: R|<local>/b|"];
58 [label="Function call: R|<local>/b|.R|/B.foo|()" style="filled" fillcolor=yellow];
59 [label="Exit block"];
}
60 [label="Exit when branch result"];
61 [label="Exit when"];
}
62 [label="Exit block"];
}
63 [label="Exit function test_1" style="filled" fillcolor=red];
}
32 -> {33};
33 -> {34};
34 -> {35};
subgraph cluster_9 {
color=red
35 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_10 {
color=blue
36 [label="Enter block"];
37 [label="Function call: R|/getAny|()" style="filled" fillcolor=yellow];
38 [label="Variable declaration: lval a: R|kotlin/Any?|"];
39 [label="Function call: R|/getAny|()" style="filled" fillcolor=yellow];
40 [label="Variable declaration: lval b: R|kotlin/Any?|"];
subgraph cluster_11 {
color=blue
41 [label="Enter when"];
subgraph cluster_12 {
color=blue
42 [label="Enter when branch condition "];
subgraph cluster_13 {
color=blue
43 [label="Enter &&"];
44 [label="Access variable R|<local>/a|"];
45 [label="Type operator: (R|<local>/a| is R|A|)"];
46 [label="Exit left part of &&"];
47 [label="Enter right part of &&"];
48 [label="Access variable R|<local>/b|"];
49 [label="Type operator: (R|<local>/b| is R|B|)"];
50 [label="Exit &&"];
}
51 [label="Exit when branch condition"];
}
52 [label="Synthetic else branch"];
53 [label="Enter when branch result"];
subgraph cluster_14 {
color=blue
54 [label="Enter block"];
55 [label="Access variable R|<local>/a|"];
56 [label="Smart cast: R|<local>/a|"];
57 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
58 [label="Access variable R|<local>/b|"];
59 [label="Smart cast: R|<local>/b|"];
60 [label="Function call: R|<local>/b|.R|/B.foo|()" style="filled" fillcolor=yellow];
61 [label="Exit block"];
}
62 [label="Exit when branch result"];
63 [label="Exit when"];
}
64 [label="Exit block"];
}
65 [label="Exit function test_1" style="filled" fillcolor=red];
}
35 -> {36};
36 -> {37};
37 -> {38};
@@ -154,15 +159,15 @@ digraph multipleCasts_kt {
41 -> {42};
42 -> {43};
43 -> {44};
44 -> {45 48};
44 -> {45};
45 -> {46};
46 -> {47};
46 -> {47 50};
47 -> {48};
48 -> {49};
49 -> {50 51};
50 -> {61};
51 -> {52};
52 -> {53};
49 -> {50};
50 -> {51};
51 -> {52 53};
52 -> {63};
53 -> {54};
54 -> {55};
55 -> {56};
@@ -173,5 +178,7 @@ digraph multipleCasts_kt {
60 -> {61};
61 -> {62};
62 -> {63};
63 -> {64};
64 -> {65};
}
File diff suppressed because it is too large Load Diff
@@ -5,62 +5,69 @@ digraph implicitReceiverAsWhenSubject_kt {
subgraph cluster_0 {
color=red
0 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_1 {
0 [label="Enter file implicitReceiverAsWhenSubject.kt" style="filled" fillcolor=red];
1 [label="Exit file implicitReceiverAsWhenSubject.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
1 [label="Enter block"];
subgraph cluster_2 {
3 [label="Enter block"];
subgraph cluster_3 {
color=blue
2 [label="Enter when"];
3 [label="Access variable this@R|/test_1|"];
subgraph cluster_3 {
color=blue
4 [label="Enter when branch condition "];
5 [label="Exit $subj"];
6 [label="Type operator: ($subj$ is R|kotlin/collections/List<*>|)"];
7 [label="Exit when branch condition"];
}
4 [label="Enter when"];
5 [label="Access variable this@R|/test_1|"];
subgraph cluster_4 {
color=blue
8 [label="Enter when branch condition "];
9 [label="Exit $subj"];
10 [label="Type operator: ($subj$ is R|kotlin/String|)"];
11 [label="Exit when branch condition"];
6 [label="Enter when branch condition "];
7 [label="Exit $subj"];
8 [label="Type operator: ($subj$ is R|kotlin/collections/List<*>|)"];
9 [label="Exit when branch condition"];
}
subgraph cluster_5 {
color=blue
12 [label="Enter when branch condition else"];
10 [label="Enter when branch condition "];
11 [label="Exit $subj"];
12 [label="Type operator: ($subj$ is R|kotlin/String|)"];
13 [label="Exit when branch condition"];
}
14 [label="Enter when branch result"];
subgraph cluster_6 {
color=blue
15 [label="Enter block"];
16 [label="Const: Int(0)"];
17 [label="Exit block"];
14 [label="Enter when branch condition else"];
15 [label="Exit when branch condition"];
}
18 [label="Exit when branch result"];
19 [label="Enter when branch result"];
16 [label="Enter when branch result"];
subgraph cluster_7 {
color=blue
20 [label="Enter block"];
21 [label="Access variable R|kotlin/String.length|"];
22 [label="Exit block"];
17 [label="Enter block"];
18 [label="Const: Int(0)"];
19 [label="Exit block"];
}
23 [label="Exit when branch result"];
24 [label="Enter when branch result"];
20 [label="Exit when branch result"];
21 [label="Enter when branch result"];
subgraph cluster_8 {
color=blue
25 [label="Enter block"];
26 [label="Access variable this@R|/test_1|"];
27 [label="Smart cast: this@R|/test_1|"];
28 [label="Access variable R|SubstitutionOverride<kotlin/collections/List.size: R|kotlin/Int|>|"];
29 [label="Exit block"];
22 [label="Enter block"];
23 [label="Access variable R|kotlin/String.length|"];
24 [label="Exit block"];
}
30 [label="Exit when branch result"];
31 [label="Exit when"];
25 [label="Exit when branch result"];
26 [label="Enter when branch result"];
subgraph cluster_9 {
color=blue
27 [label="Enter block"];
28 [label="Access variable this@R|/test_1|"];
29 [label="Smart cast: this@R|/test_1|"];
30 [label="Access variable R|SubstitutionOverride<kotlin/collections/List.size: R|kotlin/Int|>|"];
31 [label="Exit block"];
}
32 [label="Exit when branch result"];
33 [label="Exit when"];
}
32 [label="Jump: ^test_1 when (this@R|/test_1|) {
34 [label="Jump: ^test_1 when (this@R|/test_1|) {
($subj$ is R|kotlin/collections/List<*>|) -> {
this@R|/test_1|.R|SubstitutionOverride<kotlin/collections/List.size: R|kotlin/Int|>|
}
@@ -72,113 +79,113 @@ digraph implicitReceiverAsWhenSubject_kt {
}
}
"];
33 [label="Stub" style="filled" fillcolor=gray];
34 [label="Exit block" style="filled" fillcolor=gray];
35 [label="Stub" style="filled" fillcolor=gray];
36 [label="Exit block" style="filled" fillcolor=gray];
}
35 [label="Exit function test_1" style="filled" fillcolor=red];
37 [label="Exit function test_1" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
2 -> {3};
3 -> {4};
4 -> {5};
5 -> {6};
6 -> {7};
7 -> {8 24};
7 -> {8};
8 -> {9};
9 -> {10};
9 -> {10 26};
10 -> {11};
11 -> {12 19};
11 -> {12};
12 -> {13};
13 -> {14};
13 -> {14 21};
14 -> {15};
15 -> {16};
16 -> {17};
17 -> {18};
18 -> {31};
18 -> {19};
19 -> {20};
20 -> {21};
20 -> {33};
21 -> {22};
22 -> {23};
23 -> {31};
23 -> {24};
24 -> {25};
25 -> {26};
25 -> {33};
26 -> {27};
27 -> {28};
28 -> {29};
29 -> {30};
30 -> {31};
31 -> {32};
32 -> {35};
32 -> {33} [style=dotted];
33 -> {34} [style=dotted];
32 -> {33};
33 -> {34};
34 -> {37};
34 -> {35} [style=dotted];
35 -> {36} [style=dotted];
36 -> {37} [style=dotted];
subgraph cluster_9 {
subgraph cluster_10 {
color=red
36 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_10 {
38 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_11 {
color=blue
37 [label="Enter block"];
subgraph cluster_11 {
39 [label="Enter block"];
subgraph cluster_12 {
color=blue
38 [label="Enter when"];
39 [label="Access variable this@R|/test_2|"];
40 [label="Variable declaration: lval x: R|kotlin/Any|"];
subgraph cluster_12 {
color=blue
41 [label="Enter when branch condition "];
42 [label="Exit $subj"];
43 [label="Type operator: ($subj$ is R|kotlin/collections/List<*>|)"];
44 [label="Exit when branch condition"];
}
40 [label="Enter when"];
41 [label="Access variable this@R|/test_2|"];
42 [label="Variable declaration: lval x: R|kotlin/Any|"];
subgraph cluster_13 {
color=blue
45 [label="Enter when branch condition "];
46 [label="Exit $subj"];
47 [label="Type operator: ($subj$ is R|kotlin/String|)"];
48 [label="Exit when branch condition"];
43 [label="Enter when branch condition "];
44 [label="Exit $subj"];
45 [label="Type operator: ($subj$ is R|kotlin/collections/List<*>|)"];
46 [label="Exit when branch condition"];
}
subgraph cluster_14 {
color=blue
49 [label="Enter when branch condition else"];
47 [label="Enter when branch condition "];
48 [label="Exit $subj"];
49 [label="Type operator: ($subj$ is R|kotlin/String|)"];
50 [label="Exit when branch condition"];
}
51 [label="Enter when branch result"];
subgraph cluster_15 {
color=blue
52 [label="Enter block"];
53 [label="Const: Int(0)"];
54 [label="Exit block"];
51 [label="Enter when branch condition else"];
52 [label="Exit when branch condition"];
}
55 [label="Exit when branch result"];
56 [label="Enter when branch result"];
53 [label="Enter when branch result"];
subgraph cluster_16 {
color=blue
57 [label="Enter block"];
58 [label="Access variable R|<local>/x|"];
59 [label="Smart cast: R|<local>/x|"];
60 [label="Access variable R|kotlin/String.length|"];
61 [label="Access variable R|kotlin/String.length|"];
62 [label="Exit block"];
54 [label="Enter block"];
55 [label="Const: Int(0)"];
56 [label="Exit block"];
}
63 [label="Exit when branch result"];
64 [label="Enter when branch result"];
57 [label="Exit when branch result"];
58 [label="Enter when branch result"];
subgraph cluster_17 {
color=blue
65 [label="Enter block"];
66 [label="Access variable R|<local>/x|"];
67 [label="Smart cast: R|<local>/x|"];
68 [label="Access variable R|SubstitutionOverride<kotlin/collections/List.size: R|kotlin/Int|>|"];
69 [label="Access variable this@R|/test_2|"];
70 [label="Smart cast: this@R|/test_2|"];
71 [label="Access variable R|SubstitutionOverride<kotlin/collections/List.size: R|kotlin/Int|>|"];
72 [label="Exit block"];
59 [label="Enter block"];
60 [label="Access variable R|<local>/x|"];
61 [label="Smart cast: R|<local>/x|"];
62 [label="Access variable R|kotlin/String.length|"];
63 [label="Access variable R|kotlin/String.length|"];
64 [label="Exit block"];
}
73 [label="Exit when branch result"];
74 [label="Exit when"];
65 [label="Exit when branch result"];
66 [label="Enter when branch result"];
subgraph cluster_18 {
color=blue
67 [label="Enter block"];
68 [label="Access variable R|<local>/x|"];
69 [label="Smart cast: R|<local>/x|"];
70 [label="Access variable R|SubstitutionOverride<kotlin/collections/List.size: R|kotlin/Int|>|"];
71 [label="Access variable this@R|/test_2|"];
72 [label="Smart cast: this@R|/test_2|"];
73 [label="Access variable R|SubstitutionOverride<kotlin/collections/List.size: R|kotlin/Int|>|"];
74 [label="Exit block"];
}
75 [label="Exit when branch result"];
76 [label="Exit when"];
}
75 [label="Jump: ^test_2 when (lval x: R|kotlin/Any| = this@R|/test_2|) {
77 [label="Jump: ^test_2 when (lval x: R|kotlin/Any| = this@R|/test_2|) {
($subj$ is R|kotlin/collections/List<*>|) -> {
R|<local>/x|.R|SubstitutionOverride<kotlin/collections/List.size: R|kotlin/Int|>|
this@R|/test_2|.R|SubstitutionOverride<kotlin/collections/List.size: R|kotlin/Int|>|
@@ -192,41 +199,39 @@ digraph implicitReceiverAsWhenSubject_kt {
}
}
"];
76 [label="Stub" style="filled" fillcolor=gray];
77 [label="Exit block" style="filled" fillcolor=gray];
78 [label="Stub" style="filled" fillcolor=gray];
79 [label="Exit block" style="filled" fillcolor=gray];
}
78 [label="Exit function test_2" style="filled" fillcolor=red];
80 [label="Exit function test_2" style="filled" fillcolor=red];
}
36 -> {37};
37 -> {38};
38 -> {39};
39 -> {40};
40 -> {41};
41 -> {42};
42 -> {43};
43 -> {44};
44 -> {45 64};
44 -> {45};
45 -> {46};
46 -> {47};
46 -> {47 66};
47 -> {48};
48 -> {49 56};
48 -> {49};
49 -> {50};
50 -> {51};
50 -> {51 58};
51 -> {52};
52 -> {53};
53 -> {54};
54 -> {55};
55 -> {74};
55 -> {56};
56 -> {57};
57 -> {58};
57 -> {76};
58 -> {59};
59 -> {60};
60 -> {61};
61 -> {62};
62 -> {63};
63 -> {74};
63 -> {64};
64 -> {65};
65 -> {66};
65 -> {76};
66 -> {67};
67 -> {68};
68 -> {69};
@@ -236,9 +241,11 @@ digraph implicitReceiverAsWhenSubject_kt {
72 -> {73};
73 -> {74};
74 -> {75};
75 -> {78};
75 -> {76} [style=dotted];
76 -> {77} [style=dotted];
75 -> {76};
76 -> {77};
77 -> {80};
77 -> {78} [style=dotted];
78 -> {79} [style=dotted];
79 -> {80} [style=dotted];
}
@@ -5,151 +5,156 @@ digraph implicitReceivers_kt {
subgraph cluster_0 {
color=red
0 [label="Enter class A" style="filled" fillcolor=red];
subgraph cluster_1 {
color=blue
1 [label="Enter function <init>" style="filled" fillcolor=red];
2 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
3 [label="Exit function <init>" style="filled" fillcolor=red];
}
4 [label="Exit class A" style="filled" fillcolor=red];
0 [label="Enter file implicitReceivers.kt" style="filled" fillcolor=red];
1 [label="Exit file implicitReceivers.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
0 -> {4} [style=dotted];
0 -> {1} [style=dashed];
1 -> {2};
2 -> {3};
3 -> {4} [color=green];
subgraph cluster_2 {
subgraph cluster_1 {
color=red
5 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_3 {
2 [label="Enter class A" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
6 [label="Enter block"];
7 [label="Exit block"];
3 [label="Enter function <init>" style="filled" fillcolor=red];
4 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
5 [label="Exit function <init>" style="filled" fillcolor=red];
}
8 [label="Exit function foo" style="filled" fillcolor=red];
6 [label="Exit class A" style="filled" fillcolor=red];
}
2 -> {3} [color=green];
2 -> {6} [style=dotted];
2 -> {3} [style=dashed];
3 -> {4};
4 -> {5};
5 -> {6} [color=green];
subgraph cluster_3 {
color=red
7 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_4 {
color=blue
8 [label="Enter block"];
9 [label="Exit block"];
}
10 [label="Exit function foo" style="filled" fillcolor=red];
}
5 -> {6};
6 -> {7};
7 -> {8};
8 -> {9};
9 -> {10};
subgraph cluster_4 {
subgraph cluster_5 {
color=red
9 [label="Enter class B" style="filled" fillcolor=red];
subgraph cluster_5 {
11 [label="Enter class B" style="filled" fillcolor=red];
subgraph cluster_6 {
color=blue
10 [label="Enter function <init>" style="filled" fillcolor=red];
11 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
12 [label="Exit function <init>" style="filled" fillcolor=red];
12 [label="Enter function <init>" style="filled" fillcolor=red];
13 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
14 [label="Exit function <init>" style="filled" fillcolor=red];
}
13 [label="Exit class B" style="filled" fillcolor=red];
15 [label="Exit class B" style="filled" fillcolor=red];
}
9 -> {10} [color=green];
9 -> {13} [style=dotted];
9 -> {10} [style=dashed];
10 -> {11};
11 -> {12};
12 -> {13} [color=green];
11 -> {12} [color=green];
11 -> {15} [style=dotted];
11 -> {12} [style=dashed];
12 -> {13};
13 -> {14};
14 -> {15} [color=green];
subgraph cluster_6 {
subgraph cluster_7 {
color=red
14 [label="Enter function bar" style="filled" fillcolor=red];
subgraph cluster_7 {
16 [label="Enter function bar" style="filled" fillcolor=red];
subgraph cluster_8 {
color=blue
15 [label="Enter block"];
16 [label="Exit block"];
17 [label="Enter block"];
18 [label="Exit block"];
}
17 [label="Exit function bar" style="filled" fillcolor=red];
19 [label="Exit function bar" style="filled" fillcolor=red];
}
14 -> {15};
15 -> {16};
16 -> {17};
subgraph cluster_8 {
color=red
18 [label="Enter function with" style="filled" fillcolor=red];
subgraph cluster_9 {
color=blue
19 [label="Enter block"];
20 [label="Exit block"];
}
21 [label="Exit function with" style="filled" fillcolor=red];
}
17 -> {18};
18 -> {19};
19 -> {20};
20 -> {21};
subgraph cluster_10 {
subgraph cluster_9 {
color=red
22 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_11 {
20 [label="Enter function with" style="filled" fillcolor=red];
subgraph cluster_10 {
color=blue
23 [label="Enter block"];
subgraph cluster_12 {
21 [label="Enter block"];
22 [label="Exit block"];
}
23 [label="Exit function with" style="filled" fillcolor=red];
}
20 -> {21};
21 -> {22};
22 -> {23};
subgraph cluster_11 {
color=red
24 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_12 {
color=blue
25 [label="Enter block"];
subgraph cluster_13 {
color=blue
24 [label="Enter when"];
subgraph cluster_13 {
color=blue
25 [label="Enter when branch condition "];
26 [label="Access variable this@R|/test_1|"];
27 [label="Type operator: (this@R|/test_1| is R|A|)"];
28 [label="Exit when branch condition"];
}
26 [label="Enter when"];
subgraph cluster_14 {
color=blue
29 [label="Enter when branch condition else"];
27 [label="Enter when branch condition "];
28 [label="Access variable this@R|/test_1|"];
29 [label="Type operator: (this@R|/test_1| is R|A|)"];
30 [label="Exit when branch condition"];
}
31 [label="Enter when branch result"];
subgraph cluster_15 {
color=blue
32 [label="Enter block"];
33 [label="Access variable this@R|/test_1|"];
34 [label="Function call: this@R|/test_1|.<Unresolved name: foo>#()" style="filled" fillcolor=yellow];
35 [label="Function call: <Unresolved name: foo>#()" style="filled" fillcolor=yellow];
36 [label="Exit block"];
31 [label="Enter when branch condition else"];
32 [label="Exit when branch condition"];
}
37 [label="Exit when branch result"];
38 [label="Enter when branch result"];
33 [label="Enter when branch result"];
subgraph cluster_16 {
color=blue
39 [label="Enter block"];
40 [label="Access variable this@R|/test_1|"];
41 [label="Smart cast: this@R|/test_1|"];
42 [label="Function call: this@R|/test_1|.R|/A.foo|()" style="filled" fillcolor=yellow];
43 [label="Function call: this@R|/test_1|.R|/A.foo|()" style="filled" fillcolor=yellow];
44 [label="Exit block"];
34 [label="Enter block"];
35 [label="Access variable this@R|/test_1|"];
36 [label="Function call: this@R|/test_1|.<Unresolved name: foo>#()" style="filled" fillcolor=yellow];
37 [label="Function call: <Unresolved name: foo>#()" style="filled" fillcolor=yellow];
38 [label="Exit block"];
}
45 [label="Exit when branch result"];
46 [label="Exit when"];
39 [label="Exit when branch result"];
40 [label="Enter when branch result"];
subgraph cluster_17 {
color=blue
41 [label="Enter block"];
42 [label="Access variable this@R|/test_1|"];
43 [label="Smart cast: this@R|/test_1|"];
44 [label="Function call: this@R|/test_1|.R|/A.foo|()" style="filled" fillcolor=yellow];
45 [label="Function call: this@R|/test_1|.R|/A.foo|()" style="filled" fillcolor=yellow];
46 [label="Exit block"];
}
47 [label="Exit when branch result"];
48 [label="Exit when"];
}
47 [label="Access variable this@R|/test_1|"];
48 [label="Function call: this@R|/test_1|.<Unresolved name: foo>#()" style="filled" fillcolor=yellow];
49 [label="Function call: <Unresolved name: foo>#()" style="filled" fillcolor=yellow];
50 [label="Exit block"];
49 [label="Access variable this@R|/test_1|"];
50 [label="Function call: this@R|/test_1|.<Unresolved name: foo>#()" style="filled" fillcolor=yellow];
51 [label="Function call: <Unresolved name: foo>#()" style="filled" fillcolor=yellow];
52 [label="Exit block"];
}
51 [label="Exit function test_1" style="filled" fillcolor=red];
53 [label="Exit function test_1" style="filled" fillcolor=red];
}
22 -> {23};
23 -> {24};
24 -> {25};
25 -> {26};
26 -> {27};
27 -> {28};
28 -> {29 38};
28 -> {29};
29 -> {30};
30 -> {31};
30 -> {31 40};
31 -> {32};
32 -> {33};
33 -> {34};
34 -> {35};
35 -> {36};
36 -> {37};
37 -> {46};
37 -> {38};
38 -> {39};
39 -> {40};
39 -> {48};
40 -> {41};
41 -> {42};
42 -> {43};
@@ -161,67 +166,67 @@ digraph implicitReceivers_kt {
48 -> {49};
49 -> {50};
50 -> {51};
51 -> {52};
52 -> {53};
subgraph cluster_17 {
subgraph cluster_18 {
color=red
52 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_18 {
54 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_19 {
color=blue
53 [label="Enter block"];
subgraph cluster_19 {
55 [label="Enter block"];
subgraph cluster_20 {
color=blue
54 [label="Enter when"];
subgraph cluster_20 {
color=blue
55 [label="Enter when branch condition "];
56 [label="Access variable this@R|/test_2|"];
57 [label="Type operator: (this@R|/test_2| !is R|A|)"];
58 [label="Exit when branch condition"];
}
56 [label="Enter when"];
subgraph cluster_21 {
color=blue
59 [label="Enter when branch condition else"];
57 [label="Enter when branch condition "];
58 [label="Access variable this@R|/test_2|"];
59 [label="Type operator: (this@R|/test_2| !is R|A|)"];
60 [label="Exit when branch condition"];
}
61 [label="Enter when branch result"];
subgraph cluster_22 {
color=blue
62 [label="Enter block"];
63 [label="Access variable this@R|/test_2|"];
64 [label="Smart cast: this@R|/test_2|"];
65 [label="Function call: this@R|/test_2|.R|/A.foo|()" style="filled" fillcolor=yellow];
66 [label="Function call: this@R|/test_2|.R|/A.foo|()" style="filled" fillcolor=yellow];
67 [label="Exit block"];
61 [label="Enter when branch condition else"];
62 [label="Exit when branch condition"];
}
68 [label="Exit when branch result"];
69 [label="Enter when branch result"];
63 [label="Enter when branch result"];
subgraph cluster_23 {
color=blue
70 [label="Enter block"];
71 [label="Access variable this@R|/test_2|"];
72 [label="Function call: this@R|/test_2|.<Unresolved name: foo>#()" style="filled" fillcolor=yellow];
73 [label="Function call: <Unresolved name: foo>#()" style="filled" fillcolor=yellow];
74 [label="Exit block"];
64 [label="Enter block"];
65 [label="Access variable this@R|/test_2|"];
66 [label="Smart cast: this@R|/test_2|"];
67 [label="Function call: this@R|/test_2|.R|/A.foo|()" style="filled" fillcolor=yellow];
68 [label="Function call: this@R|/test_2|.R|/A.foo|()" style="filled" fillcolor=yellow];
69 [label="Exit block"];
}
75 [label="Exit when branch result"];
76 [label="Exit when"];
70 [label="Exit when branch result"];
71 [label="Enter when branch result"];
subgraph cluster_24 {
color=blue
72 [label="Enter block"];
73 [label="Access variable this@R|/test_2|"];
74 [label="Function call: this@R|/test_2|.<Unresolved name: foo>#()" style="filled" fillcolor=yellow];
75 [label="Function call: <Unresolved name: foo>#()" style="filled" fillcolor=yellow];
76 [label="Exit block"];
}
77 [label="Exit when branch result"];
78 [label="Exit when"];
}
77 [label="Access variable this@R|/test_2|"];
78 [label="Function call: this@R|/test_2|.<Unresolved name: foo>#()" style="filled" fillcolor=yellow];
79 [label="Function call: <Unresolved name: foo>#()" style="filled" fillcolor=yellow];
80 [label="Exit block"];
79 [label="Access variable this@R|/test_2|"];
80 [label="Function call: this@R|/test_2|.<Unresolved name: foo>#()" style="filled" fillcolor=yellow];
81 [label="Function call: <Unresolved name: foo>#()" style="filled" fillcolor=yellow];
82 [label="Exit block"];
}
81 [label="Exit function test_2" style="filled" fillcolor=red];
83 [label="Exit function test_2" style="filled" fillcolor=red];
}
52 -> {53};
53 -> {54};
54 -> {55};
55 -> {56};
56 -> {57};
57 -> {58};
58 -> {59 69};
58 -> {59};
59 -> {60};
60 -> {61};
60 -> {61 71};
61 -> {62};
62 -> {63};
63 -> {64};
@@ -229,9 +234,9 @@ digraph implicitReceivers_kt {
65 -> {66};
66 -> {67};
67 -> {68};
68 -> {76};
68 -> {69};
69 -> {70};
70 -> {71};
70 -> {78};
71 -> {72};
72 -> {73};
73 -> {74};
@@ -242,89 +247,89 @@ digraph implicitReceivers_kt {
78 -> {79};
79 -> {80};
80 -> {81};
subgraph cluster_24 {
color=red
82 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_25 {
color=blue
83 [label="Enter block"];
84 [label="Access variable R|<local>/a|"];
85 [label="Postponed enter to lambda"];
subgraph cluster_26 {
color=blue
86 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_27 {
color=blue
87 [label="Enter block"];
88 [label="Access variable R|<local>/b|"];
89 [label="Postponed enter to lambda"];
subgraph cluster_28 {
color=blue
90 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_29 {
color=blue
91 [label="Enter block"];
92 [label="Access variable R|<local>/c|"];
93 [label="Postponed enter to lambda"];
subgraph cluster_30 {
color=blue
94 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_31 {
color=blue
95 [label="Enter block"];
96 [label="Access variable this@R|special/anonymous|"];
97 [label="Type operator: (this@R|special/anonymous| as R|A|)"];
98 [label="Access variable this@R|special/anonymous|"];
99 [label="Smart cast: this@R|special/anonymous|"];
100 [label="Function call: this@R|special/anonymous|.R|/A.foo|()" style="filled" fillcolor=yellow];
101 [label="Function call: this@R|special/anonymous|.R|/A.foo|()" style="filled" fillcolor=yellow];
102 [label="Exit block"];
}
103 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
104 [label="Postponed exit from lambda"];
105 [label="Function call: R|kotlin/with|<R|kotlin/Any|, R|kotlin/Unit|>(...)" style="filled" fillcolor=yellow];
106 [label="Access variable this@R|special/anonymous|"];
107 [label="Smart cast: this@R|special/anonymous|"];
108 [label="Function call: this@R|special/anonymous|.R|/A.foo|()" style="filled" fillcolor=yellow];
109 [label="Function call: this@R|special/anonymous|.R|/A.foo|()" style="filled" fillcolor=yellow];
110 [label="Exit block"];
}
111 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
112 [label="Postponed exit from lambda"];
113 [label="Function call: R|kotlin/with|<R|kotlin/Any|, R|kotlin/Unit|>(...)" style="filled" fillcolor=yellow];
114 [label="Exit block"];
}
115 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
116 [label="Postponed exit from lambda"];
117 [label="Function call: R|kotlin/with|<R|kotlin/Any|, R|kotlin/Unit|>(...)" style="filled" fillcolor=yellow];
118 [label="Exit block"];
}
119 [label="Exit function test_3" style="filled" fillcolor=red];
}
81 -> {82};
82 -> {83};
83 -> {84};
subgraph cluster_25 {
color=red
84 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_26 {
color=blue
85 [label="Enter block"];
86 [label="Access variable R|<local>/a|"];
87 [label="Postponed enter to lambda"];
subgraph cluster_27 {
color=blue
88 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_28 {
color=blue
89 [label="Enter block"];
90 [label="Access variable R|<local>/b|"];
91 [label="Postponed enter to lambda"];
subgraph cluster_29 {
color=blue
92 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_30 {
color=blue
93 [label="Enter block"];
94 [label="Access variable R|<local>/c|"];
95 [label="Postponed enter to lambda"];
subgraph cluster_31 {
color=blue
96 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_32 {
color=blue
97 [label="Enter block"];
98 [label="Access variable this@R|special/anonymous|"];
99 [label="Type operator: (this@R|special/anonymous| as R|A|)"];
100 [label="Access variable this@R|special/anonymous|"];
101 [label="Smart cast: this@R|special/anonymous|"];
102 [label="Function call: this@R|special/anonymous|.R|/A.foo|()" style="filled" fillcolor=yellow];
103 [label="Function call: this@R|special/anonymous|.R|/A.foo|()" style="filled" fillcolor=yellow];
104 [label="Exit block"];
}
105 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
106 [label="Postponed exit from lambda"];
107 [label="Function call: R|kotlin/with|<R|kotlin/Any|, R|kotlin/Unit|>(...)" style="filled" fillcolor=yellow];
108 [label="Access variable this@R|special/anonymous|"];
109 [label="Smart cast: this@R|special/anonymous|"];
110 [label="Function call: this@R|special/anonymous|.R|/A.foo|()" style="filled" fillcolor=yellow];
111 [label="Function call: this@R|special/anonymous|.R|/A.foo|()" style="filled" fillcolor=yellow];
112 [label="Exit block"];
}
113 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
114 [label="Postponed exit from lambda"];
115 [label="Function call: R|kotlin/with|<R|kotlin/Any|, R|kotlin/Unit|>(...)" style="filled" fillcolor=yellow];
116 [label="Exit block"];
}
117 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
118 [label="Postponed exit from lambda"];
119 [label="Function call: R|kotlin/with|<R|kotlin/Any|, R|kotlin/Unit|>(...)" style="filled" fillcolor=yellow];
120 [label="Exit block"];
}
121 [label="Exit function test_3" style="filled" fillcolor=red];
}
84 -> {85};
85 -> {86 117};
85 -> {116} [style=dotted];
85 -> {86} [style=dashed];
85 -> {86};
86 -> {87};
87 -> {88};
87 -> {88 119};
87 -> {118} [style=dotted];
87 -> {88} [style=dashed];
88 -> {89};
89 -> {90 113};
89 -> {112} [style=dotted];
89 -> {90} [style=dashed];
89 -> {90};
90 -> {91};
91 -> {92};
91 -> {92 115};
91 -> {114} [style=dotted];
91 -> {92} [style=dashed];
92 -> {93};
93 -> {94 105};
93 -> {104} [style=dotted];
93 -> {94} [style=dashed];
93 -> {94};
94 -> {95};
95 -> {96};
95 -> {96 107};
95 -> {106} [style=dotted];
95 -> {96} [style=dashed];
96 -> {97};
97 -> {98};
98 -> {99};
@@ -341,113 +346,113 @@ digraph implicitReceivers_kt {
109 -> {110};
110 -> {111};
111 -> {112};
112 -> {113} [color=green];
112 -> {117} [color=red];
112 -> {113};
113 -> {114};
114 -> {115};
114 -> {115} [color=green];
114 -> {119} [color=red];
115 -> {116};
116 -> {117};
117 -> {118};
118 -> {119};
119 -> {120};
120 -> {121};
subgraph cluster_32 {
subgraph cluster_33 {
color=red
120 [label="Enter function test_4" style="filled" fillcolor=red];
subgraph cluster_33 {
122 [label="Enter function test_4" style="filled" fillcolor=red];
subgraph cluster_34 {
color=blue
121 [label="Enter block"];
subgraph cluster_34 {
123 [label="Enter block"];
subgraph cluster_35 {
color=blue
122 [label="Enter when"];
subgraph cluster_35 {
color=blue
123 [label="Enter when branch condition "];
124 [label="Access variable this@R|/test_4|"];
125 [label="Type operator: (this@R|/test_4| !is R|A|)"];
126 [label="Exit when branch condition"];
}
124 [label="Enter when"];
subgraph cluster_36 {
color=blue
127 [label="Enter when branch condition "];
128 [label="Access variable this@R|/test_4|"];
129 [label="Smart cast: this@R|/test_4|"];
130 [label="Type operator: (this@R|/test_4| !is R|B|)"];
131 [label="Exit when branch condition"];
125 [label="Enter when branch condition "];
126 [label="Access variable this@R|/test_4|"];
127 [label="Type operator: (this@R|/test_4| !is R|A|)"];
128 [label="Exit when branch condition"];
}
subgraph cluster_37 {
color=blue
132 [label="Enter when branch condition else"];
129 [label="Enter when branch condition "];
130 [label="Access variable this@R|/test_4|"];
131 [label="Smart cast: this@R|/test_4|"];
132 [label="Type operator: (this@R|/test_4| !is R|B|)"];
133 [label="Exit when branch condition"];
}
134 [label="Enter when branch result"];
subgraph cluster_38 {
color=blue
135 [label="Enter block"];
136 [label="Access variable this@R|/test_4|"];
137 [label="Smart cast: this@R|/test_4|"];
138 [label="Function call: this@R|/test_4|.R|/A.foo|()" style="filled" fillcolor=yellow];
139 [label="Function call: this@R|/test_4|.R|/A.foo|()" style="filled" fillcolor=yellow];
140 [label="Access variable this@R|/test_4|"];
141 [label="Smart cast: this@R|/test_4|"];
142 [label="Function call: this@R|/test_4|.R|/B.bar|()" style="filled" fillcolor=yellow];
143 [label="Function call: this@R|/test_4|.R|/B.bar|()" style="filled" fillcolor=yellow];
144 [label="Exit block"];
134 [label="Enter when branch condition else"];
135 [label="Exit when branch condition"];
}
145 [label="Exit when branch result"];
146 [label="Enter when branch result"];
136 [label="Enter when branch result"];
subgraph cluster_39 {
color=blue
147 [label="Enter block"];
148 [label="Access variable this@R|/test_4|"];
149 [label="Smart cast: this@R|/test_4|"];
150 [label="Function call: this@R|/test_4|.<Unresolved name: bar>#()" style="filled" fillcolor=yellow];
151 [label="Function call: <Unresolved name: bar>#()" style="filled" fillcolor=yellow];
152 [label="Access variable this@R|/test_4|"];
153 [label="Smart cast: this@R|/test_4|"];
154 [label="Function call: this@R|/test_4|.R|/A.foo|()" style="filled" fillcolor=yellow];
155 [label="Function call: this@R|/test_4|.R|/A.foo|()" style="filled" fillcolor=yellow];
156 [label="Exit block"];
137 [label="Enter block"];
138 [label="Access variable this@R|/test_4|"];
139 [label="Smart cast: this@R|/test_4|"];
140 [label="Function call: this@R|/test_4|.R|/A.foo|()" style="filled" fillcolor=yellow];
141 [label="Function call: this@R|/test_4|.R|/A.foo|()" style="filled" fillcolor=yellow];
142 [label="Access variable this@R|/test_4|"];
143 [label="Smart cast: this@R|/test_4|"];
144 [label="Function call: this@R|/test_4|.R|/B.bar|()" style="filled" fillcolor=yellow];
145 [label="Function call: this@R|/test_4|.R|/B.bar|()" style="filled" fillcolor=yellow];
146 [label="Exit block"];
}
157 [label="Exit when branch result"];
158 [label="Enter when branch result"];
147 [label="Exit when branch result"];
148 [label="Enter when branch result"];
subgraph cluster_40 {
color=blue
159 [label="Enter block"];
160 [label="Access variable this@R|/test_4|"];
161 [label="Function call: this@R|/test_4|.<Unresolved name: foo>#()" style="filled" fillcolor=yellow];
162 [label="Function call: <Unresolved name: foo>#()" style="filled" fillcolor=yellow];
163 [label="Access variable this@R|/test_4|"];
164 [label="Function call: this@R|/test_4|.<Unresolved name: bar>#()" style="filled" fillcolor=yellow];
165 [label="Function call: <Unresolved name: bar>#()" style="filled" fillcolor=yellow];
166 [label="Exit block"];
149 [label="Enter block"];
150 [label="Access variable this@R|/test_4|"];
151 [label="Smart cast: this@R|/test_4|"];
152 [label="Function call: this@R|/test_4|.<Unresolved name: bar>#()" style="filled" fillcolor=yellow];
153 [label="Function call: <Unresolved name: bar>#()" style="filled" fillcolor=yellow];
154 [label="Access variable this@R|/test_4|"];
155 [label="Smart cast: this@R|/test_4|"];
156 [label="Function call: this@R|/test_4|.R|/A.foo|()" style="filled" fillcolor=yellow];
157 [label="Function call: this@R|/test_4|.R|/A.foo|()" style="filled" fillcolor=yellow];
158 [label="Exit block"];
}
167 [label="Exit when branch result"];
168 [label="Exit when"];
159 [label="Exit when branch result"];
160 [label="Enter when branch result"];
subgraph cluster_41 {
color=blue
161 [label="Enter block"];
162 [label="Access variable this@R|/test_4|"];
163 [label="Function call: this@R|/test_4|.<Unresolved name: foo>#()" style="filled" fillcolor=yellow];
164 [label="Function call: <Unresolved name: foo>#()" style="filled" fillcolor=yellow];
165 [label="Access variable this@R|/test_4|"];
166 [label="Function call: this@R|/test_4|.<Unresolved name: bar>#()" style="filled" fillcolor=yellow];
167 [label="Function call: <Unresolved name: bar>#()" style="filled" fillcolor=yellow];
168 [label="Exit block"];
}
169 [label="Exit when branch result"];
170 [label="Exit when"];
}
169 [label="Access variable this@R|/test_4|"];
170 [label="Function call: this@R|/test_4|.<Unresolved name: foo>#()" style="filled" fillcolor=yellow];
171 [label="Function call: <Unresolved name: foo>#()" style="filled" fillcolor=yellow];
172 [label="Access variable this@R|/test_4|"];
173 [label="Function call: this@R|/test_4|.<Unresolved name: bar>#()" style="filled" fillcolor=yellow];
174 [label="Function call: <Unresolved name: bar>#()" style="filled" fillcolor=yellow];
175 [label="Exit block"];
171 [label="Access variable this@R|/test_4|"];
172 [label="Function call: this@R|/test_4|.<Unresolved name: foo>#()" style="filled" fillcolor=yellow];
173 [label="Function call: <Unresolved name: foo>#()" style="filled" fillcolor=yellow];
174 [label="Access variable this@R|/test_4|"];
175 [label="Function call: this@R|/test_4|.<Unresolved name: bar>#()" style="filled" fillcolor=yellow];
176 [label="Function call: <Unresolved name: bar>#()" style="filled" fillcolor=yellow];
177 [label="Exit block"];
}
176 [label="Exit function test_4" style="filled" fillcolor=red];
178 [label="Exit function test_4" style="filled" fillcolor=red];
}
120 -> {121};
121 -> {122};
122 -> {123};
123 -> {124};
124 -> {125};
125 -> {126};
126 -> {127 158};
126 -> {127};
127 -> {128};
128 -> {129};
128 -> {129 160};
129 -> {130};
130 -> {131};
131 -> {132 146};
131 -> {132};
132 -> {133};
133 -> {134};
133 -> {134 148};
134 -> {135};
135 -> {136};
136 -> {137};
@@ -459,9 +464,9 @@ digraph implicitReceivers_kt {
142 -> {143};
143 -> {144};
144 -> {145};
145 -> {168};
145 -> {146};
146 -> {147};
147 -> {148};
147 -> {170};
148 -> {149};
149 -> {150};
150 -> {151};
@@ -471,9 +476,9 @@ digraph implicitReceivers_kt {
154 -> {155};
155 -> {156};
156 -> {157};
157 -> {168};
157 -> {158};
158 -> {159};
159 -> {160};
159 -> {170};
160 -> {161};
161 -> {162};
162 -> {163};
@@ -490,62 +495,64 @@ digraph implicitReceivers_kt {
173 -> {174};
174 -> {175};
175 -> {176};
176 -> {177};
177 -> {178};
subgraph cluster_41 {
subgraph cluster_42 {
color=red
177 [label="Enter function test_5" style="filled" fillcolor=red];
subgraph cluster_42 {
179 [label="Enter function test_5" style="filled" fillcolor=red];
subgraph cluster_43 {
color=blue
178 [label="Enter block"];
subgraph cluster_43 {
180 [label="Enter block"];
subgraph cluster_44 {
color=blue
179 [label="Enter when"];
subgraph cluster_44 {
color=blue
180 [label="Enter when branch condition "];
181 [label="Access variable this@R|/test_5|"];
182 [label="Type operator: (this@R|/test_5| is R|kotlin/collections/List<*>|)"];
183 [label="Exit when branch condition"];
}
181 [label="Enter when"];
subgraph cluster_45 {
color=blue
184 [label="Enter when branch condition "];
185 [label="Access variable this@R|/test_5|"];
186 [label="Type operator: (this@R|/test_5| is R|kotlin/String|)"];
187 [label="Exit when branch condition"];
182 [label="Enter when branch condition "];
183 [label="Access variable this@R|/test_5|"];
184 [label="Type operator: (this@R|/test_5| is R|kotlin/collections/List<*>|)"];
185 [label="Exit when branch condition"];
}
subgraph cluster_46 {
color=blue
188 [label="Enter when branch condition else"];
186 [label="Enter when branch condition "];
187 [label="Access variable this@R|/test_5|"];
188 [label="Type operator: (this@R|/test_5| is R|kotlin/String|)"];
189 [label="Exit when branch condition"];
}
190 [label="Enter when branch result"];
subgraph cluster_47 {
color=blue
191 [label="Enter block"];
192 [label="Const: Int(0)"];
193 [label="Exit block"];
190 [label="Enter when branch condition else"];
191 [label="Exit when branch condition"];
}
194 [label="Exit when branch result"];
195 [label="Enter when branch result"];
192 [label="Enter when branch result"];
subgraph cluster_48 {
color=blue
196 [label="Enter block"];
197 [label="Access variable R|kotlin/String.length|"];
198 [label="Exit block"];
193 [label="Enter block"];
194 [label="Const: Int(0)"];
195 [label="Exit block"];
}
199 [label="Exit when branch result"];
200 [label="Enter when branch result"];
196 [label="Exit when branch result"];
197 [label="Enter when branch result"];
subgraph cluster_49 {
color=blue
201 [label="Enter block"];
202 [label="Access variable R|SubstitutionOverride<kotlin/collections/List.size: R|kotlin/Int|>|"];
203 [label="Exit block"];
198 [label="Enter block"];
199 [label="Access variable R|kotlin/String.length|"];
200 [label="Exit block"];
}
204 [label="Exit when branch result"];
205 [label="Exit when"];
201 [label="Exit when branch result"];
202 [label="Enter when branch result"];
subgraph cluster_50 {
color=blue
203 [label="Enter block"];
204 [label="Access variable R|SubstitutionOverride<kotlin/collections/List.size: R|kotlin/Int|>|"];
205 [label="Exit block"];
}
206 [label="Exit when branch result"];
207 [label="Exit when"];
}
206 [label="Jump: ^test_5 when () {
208 [label="Jump: ^test_5 when () {
(this@R|/test_5| is R|kotlin/collections/List<*>|) -> {
this@R|/test_5|.R|SubstitutionOverride<kotlin/collections/List.size: R|kotlin/Int|>|
}
@@ -557,64 +564,62 @@ digraph implicitReceivers_kt {
}
}
"];
207 [label="Stub" style="filled" fillcolor=gray];
208 [label="Exit block" style="filled" fillcolor=gray];
209 [label="Stub" style="filled" fillcolor=gray];
210 [label="Exit block" style="filled" fillcolor=gray];
}
209 [label="Exit function test_5" style="filled" fillcolor=red];
211 [label="Exit function test_5" style="filled" fillcolor=red];
}
177 -> {178};
178 -> {179};
179 -> {180};
180 -> {181};
181 -> {182};
182 -> {183};
183 -> {184 200};
183 -> {184};
184 -> {185};
185 -> {186};
185 -> {186 202};
186 -> {187};
187 -> {188 195};
187 -> {188};
188 -> {189};
189 -> {190};
189 -> {190 197};
190 -> {191};
191 -> {192};
192 -> {193};
193 -> {194};
194 -> {205};
194 -> {195};
195 -> {196};
196 -> {197};
196 -> {207};
197 -> {198};
198 -> {199};
199 -> {205};
199 -> {200};
200 -> {201};
201 -> {202};
201 -> {207};
202 -> {203};
203 -> {204};
204 -> {205};
205 -> {206};
206 -> {209};
206 -> {207} [style=dotted];
207 -> {208} [style=dotted];
206 -> {207};
207 -> {208};
208 -> {211};
208 -> {209} [style=dotted];
209 -> {210} [style=dotted];
210 -> {211} [style=dotted];
subgraph cluster_50 {
subgraph cluster_51 {
color=red
210 [label="Enter function test_6" style="filled" fillcolor=red];
subgraph cluster_51 {
212 [label="Enter function test_6" style="filled" fillcolor=red];
subgraph cluster_52 {
color=blue
211 [label="Enter block"];
212 [label="Access variable this@R|/test_6|"];
213 [label="Type operator: (this@R|/test_6| as R|kotlin/collections/List<*>|)"];
214 [label="Access variable R|SubstitutionOverride<kotlin/collections/List.size: R|kotlin/Int|>|"];
215 [label="Access variable this@R|/test_6|"];
216 [label="Smart cast: this@R|/test_6|"];
217 [label="Type operator: (this@R|/test_6| as R|kotlin/String|)"];
218 [label="Access variable R|kotlin/String.length|"];
219 [label="Exit block"];
213 [label="Enter block"];
214 [label="Access variable this@R|/test_6|"];
215 [label="Type operator: (this@R|/test_6| as R|kotlin/collections/List<*>|)"];
216 [label="Access variable R|SubstitutionOverride<kotlin/collections/List.size: R|kotlin/Int|>|"];
217 [label="Access variable this@R|/test_6|"];
218 [label="Smart cast: this@R|/test_6|"];
219 [label="Type operator: (this@R|/test_6| as R|kotlin/String|)"];
220 [label="Access variable R|kotlin/String.length|"];
221 [label="Exit block"];
}
220 [label="Exit function test_6" style="filled" fillcolor=red];
222 [label="Exit function test_6" style="filled" fillcolor=red];
}
210 -> {211};
211 -> {212};
212 -> {213};
213 -> {214};
214 -> {215};
@@ -623,5 +628,7 @@ digraph implicitReceivers_kt {
217 -> {218};
218 -> {219};
219 -> {220};
220 -> {221};
221 -> {222};
}
@@ -5,92 +5,99 @@ digraph thisOfExtensionProperty_kt {
subgraph cluster_0 {
color=red
0 [label="Enter class A" style="filled" fillcolor=red];
1 [label="Exit class A" style="filled" fillcolor=red];
0 [label="Enter file thisOfExtensionProperty.kt" style="filled" fillcolor=red];
1 [label="Exit file thisOfExtensionProperty.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter class B" style="filled" fillcolor=red];
3 [label="Exit class B" style="filled" fillcolor=red];
2 [label="Enter class A" style="filled" fillcolor=red];
3 [label="Exit class A" style="filled" fillcolor=red];
}
2 -> {3} [color=green];
subgraph cluster_2 {
color=red
4 [label="Enter function <getter>" style="filled" fillcolor=red];
subgraph cluster_3 {
color=blue
5 [label="Enter block"];
subgraph cluster_4 {
color=blue
6 [label="Enter &&"];
7 [label="Access variable this@R|/check_1|"];
8 [label="Type operator: (this@R|/check_1| is R|B|)"];
9 [label="Exit left part of &&"];
10 [label="Enter right part of &&"];
11 [label="Access variable R|/B.b|"];
12 [label="Exit &&"];
}
13 [label="Jump: ^ (this@R|/check_1| is R|B|) && this@R|/check_1|.R|/B.b|"];
14 [label="Stub" style="filled" fillcolor=gray];
15 [label="Exit block" style="filled" fillcolor=gray];
}
16 [label="Exit function <getter>" style="filled" fillcolor=red];
4 [label="Enter class B" style="filled" fillcolor=red];
5 [label="Exit class B" style="filled" fillcolor=red];
}
4 -> {5} [color=green];
subgraph cluster_3 {
color=red
6 [label="Enter function <getter>" style="filled" fillcolor=red];
subgraph cluster_4 {
color=blue
7 [label="Enter block"];
subgraph cluster_5 {
color=blue
8 [label="Enter &&"];
9 [label="Access variable this@R|/check_1|"];
10 [label="Type operator: (this@R|/check_1| is R|B|)"];
11 [label="Exit left part of &&"];
12 [label="Enter right part of &&"];
13 [label="Access variable R|/B.b|"];
14 [label="Exit &&"];
}
15 [label="Jump: ^ (this@R|/check_1| is R|B|) && this@R|/check_1|.R|/B.b|"];
16 [label="Stub" style="filled" fillcolor=gray];
17 [label="Exit block" style="filled" fillcolor=gray];
}
18 [label="Exit function <getter>" style="filled" fillcolor=red];
}
4 -> {5};
5 -> {6};
6 -> {7};
7 -> {8};
8 -> {9};
9 -> {10 12};
9 -> {10};
10 -> {11};
11 -> {12};
11 -> {12 14};
12 -> {13};
13 -> {16};
13 -> {14} [style=dotted];
14 -> {15} [style=dotted];
13 -> {14};
14 -> {15};
15 -> {18};
15 -> {16} [style=dotted];
16 -> {17} [style=dotted];
17 -> {18} [style=dotted];
subgraph cluster_5 {
subgraph cluster_6 {
color=red
17 [label="Enter function <getter>" style="filled" fillcolor=red];
subgraph cluster_6 {
19 [label="Enter function <getter>" style="filled" fillcolor=red];
subgraph cluster_7 {
color=blue
18 [label="Enter block"];
subgraph cluster_7 {
20 [label="Enter block"];
subgraph cluster_8 {
color=blue
19 [label="Enter &&"];
20 [label="Access variable this@R|/check_2|"];
21 [label="Type operator: (this@R|/check_2| is R|B|)"];
22 [label="Exit left part of &&"];
23 [label="Enter right part of &&"];
24 [label="Access variable this@R|/check_2|"];
25 [label="Smart cast: this@R|/check_2|"];
26 [label="Access variable R|/B.b|"];
27 [label="Exit &&"];
21 [label="Enter &&"];
22 [label="Access variable this@R|/check_2|"];
23 [label="Type operator: (this@R|/check_2| is R|B|)"];
24 [label="Exit left part of &&"];
25 [label="Enter right part of &&"];
26 [label="Access variable this@R|/check_2|"];
27 [label="Smart cast: this@R|/check_2|"];
28 [label="Access variable R|/B.b|"];
29 [label="Exit &&"];
}
28 [label="Jump: ^ (this@R|/check_2| is R|B|) && this@R|/check_2|.R|/B.b|"];
29 [label="Stub" style="filled" fillcolor=gray];
30 [label="Exit block" style="filled" fillcolor=gray];
30 [label="Jump: ^ (this@R|/check_2| is R|B|) && this@R|/check_2|.R|/B.b|"];
31 [label="Stub" style="filled" fillcolor=gray];
32 [label="Exit block" style="filled" fillcolor=gray];
}
31 [label="Exit function <getter>" style="filled" fillcolor=red];
33 [label="Exit function <getter>" style="filled" fillcolor=red];
}
17 -> {18};
18 -> {19};
19 -> {20};
20 -> {21};
21 -> {22};
22 -> {23 27};
22 -> {23};
23 -> {24};
24 -> {25};
24 -> {25 29};
25 -> {26};
26 -> {27};
27 -> {28};
28 -> {31};
28 -> {29} [style=dotted];
29 -> {30} [style=dotted];
28 -> {29};
29 -> {30};
30 -> {33};
30 -> {31} [style=dotted];
31 -> {32} [style=dotted];
32 -> {33} [style=dotted];
}
@@ -5,110 +5,115 @@ digraph assignSafeCall_kt {
subgraph cluster_0 {
color=red
0 [label="Enter class A" style="filled" fillcolor=red];
subgraph cluster_1 {
color=blue
1 [label="Enter property" style="filled" fillcolor=red];
2 [label="Const: Int(1)"];
3 [label="Exit property" style="filled" fillcolor=red];
}
subgraph cluster_2 {
color=blue
4 [label="Enter function <init>" style="filled" fillcolor=red];
5 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
6 [label="Exit function <init>" style="filled" fillcolor=red];
}
7 [label="Exit class A" style="filled" fillcolor=red];
0 [label="Enter file assignSafeCall.kt" style="filled" fillcolor=red];
1 [label="Exit file assignSafeCall.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
0 -> {7} [style=dotted];
0 -> {1 4} [style=dashed];
1 -> {2};
2 -> {3};
3 -> {4} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter class A" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
3 [label="Enter property" style="filled" fillcolor=red];
4 [label="Const: Int(1)"];
5 [label="Exit property" style="filled" fillcolor=red];
}
subgraph cluster_3 {
color=blue
6 [label="Enter function <init>" style="filled" fillcolor=red];
7 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
8 [label="Exit function <init>" style="filled" fillcolor=red];
}
9 [label="Exit class A" style="filled" fillcolor=red];
}
2 -> {3} [color=green];
2 -> {9} [style=dotted];
2 -> {3 6} [style=dashed];
3 -> {4};
4 -> {5};
5 -> {6};
6 -> {7} [color=green];
5 -> {6} [color=green];
6 -> {7};
7 -> {8};
8 -> {9} [color=green];
subgraph cluster_3 {
subgraph cluster_4 {
color=red
8 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_4 {
10 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_5 {
color=blue
9 [label="Enter block"];
10 [label="Const: Int(1)"];
11 [label="Jump: ^foo Int(1)"];
12 [label="Stub" style="filled" fillcolor=gray];
13 [label="Exit block" style="filled" fillcolor=gray];
11 [label="Enter block"];
12 [label="Const: Int(1)"];
13 [label="Jump: ^foo Int(1)"];
14 [label="Stub" style="filled" fillcolor=gray];
15 [label="Exit block" style="filled" fillcolor=gray];
}
14 [label="Exit function foo" style="filled" fillcolor=red];
16 [label="Exit function foo" style="filled" fillcolor=red];
}
8 -> {9};
9 -> {10};
10 -> {11};
11 -> {14};
11 -> {12} [style=dotted];
12 -> {13} [style=dotted];
11 -> {12};
12 -> {13};
13 -> {16};
13 -> {14} [style=dotted];
14 -> {15} [style=dotted];
15 -> {16} [style=dotted];
subgraph cluster_5 {
subgraph cluster_6 {
color=red
15 [label="Enter function bar" style="filled" fillcolor=red];
subgraph cluster_6 {
17 [label="Enter function bar" style="filled" fillcolor=red];
subgraph cluster_7 {
color=blue
16 [label="Enter block"];
17 [label="Exit block"];
18 [label="Enter block"];
19 [label="Exit block"];
}
18 [label="Exit function bar" style="filled" fillcolor=red];
20 [label="Exit function bar" style="filled" fillcolor=red];
}
15 -> {16};
16 -> {17};
17 -> {18};
18 -> {19};
19 -> {20};
subgraph cluster_7 {
subgraph cluster_8 {
color=red
19 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_8 {
21 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_9 {
color=blue
20 [label="Enter block"];
21 [label="Access variable R|<local>/a|"];
22 [label="Enter safe call"];
23 [label="Access variable R|/A.x|"];
24 [label="Exit safe call"];
25 [label="Variable declaration: lval x: R|kotlin/Int?|"];
subgraph cluster_9 {
22 [label="Enter block"];
23 [label="Access variable R|<local>/a|"];
24 [label="Enter safe call"];
25 [label="Access variable R|/A.x|"];
26 [label="Exit safe call"];
27 [label="Variable declaration: lval x: R|kotlin/Int?|"];
subgraph cluster_10 {
color=blue
26 [label="Enter when"];
subgraph cluster_10 {
color=blue
27 [label="Enter when branch condition "];
28 [label="Access variable R|<local>/x|"];
29 [label="Const: Null(null)"];
30 [label="Equality operator !="];
31 [label="Exit when branch condition"];
}
32 [label="Synthetic else branch"];
33 [label="Enter when branch result"];
28 [label="Enter when"];
subgraph cluster_11 {
color=blue
34 [label="Enter block"];
35 [label="Access variable R|<local>/a|"];
36 [label="Smart cast: R|<local>/a|"];
37 [label="Function call: R|<local>/a|.R|/A.bar|()" style="filled" fillcolor=yellow];
38 [label="Exit block"];
29 [label="Enter when branch condition "];
30 [label="Access variable R|<local>/x|"];
31 [label="Const: Null(null)"];
32 [label="Equality operator !="];
33 [label="Exit when branch condition"];
}
39 [label="Exit when branch result"];
40 [label="Exit when"];
34 [label="Synthetic else branch"];
35 [label="Enter when branch result"];
subgraph cluster_12 {
color=blue
36 [label="Enter block"];
37 [label="Access variable R|<local>/a|"];
38 [label="Smart cast: R|<local>/a|"];
39 [label="Function call: R|<local>/a|.R|/A.bar|()" style="filled" fillcolor=yellow];
40 [label="Exit block"];
}
41 [label="Exit when branch result"];
42 [label="Exit when"];
}
41 [label="Exit block"];
43 [label="Exit block"];
}
42 [label="Exit function test_1" style="filled" fillcolor=red];
44 [label="Exit function test_1" style="filled" fillcolor=red];
}
19 -> {20};
20 -> {21};
21 -> {22 24};
21 -> {22};
22 -> {23};
23 -> {24};
23 -> {24 26};
24 -> {25};
25 -> {26};
26 -> {27};
@@ -116,10 +121,10 @@ digraph assignSafeCall_kt {
28 -> {29};
29 -> {30};
30 -> {31};
31 -> {32 33};
32 -> {40};
33 -> {34};
34 -> {35};
31 -> {32};
32 -> {33};
33 -> {34 35};
34 -> {42};
35 -> {36};
36 -> {37};
37 -> {38};
@@ -127,51 +132,51 @@ digraph assignSafeCall_kt {
39 -> {40};
40 -> {41};
41 -> {42};
42 -> {43};
43 -> {44};
subgraph cluster_12 {
subgraph cluster_13 {
color=red
43 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_13 {
45 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_14 {
color=blue
44 [label="Enter block"];
45 [label="Access variable R|<local>/a|"];
46 [label="Enter safe call"];
47 [label="Function call: $subj$.R|/A.foo|()" style="filled" fillcolor=yellow];
48 [label="Exit safe call"];
49 [label="Variable declaration: lval x: R|kotlin/Int?|"];
subgraph cluster_14 {
46 [label="Enter block"];
47 [label="Access variable R|<local>/a|"];
48 [label="Enter safe call"];
49 [label="Function call: $subj$.R|/A.foo|()" style="filled" fillcolor=yellow];
50 [label="Exit safe call"];
51 [label="Variable declaration: lval x: R|kotlin/Int?|"];
subgraph cluster_15 {
color=blue
50 [label="Enter when"];
subgraph cluster_15 {
color=blue
51 [label="Enter when branch condition "];
52 [label="Access variable R|<local>/x|"];
53 [label="Const: Null(null)"];
54 [label="Equality operator !="];
55 [label="Exit when branch condition"];
}
56 [label="Synthetic else branch"];
57 [label="Enter when branch result"];
52 [label="Enter when"];
subgraph cluster_16 {
color=blue
58 [label="Enter block"];
59 [label="Access variable R|<local>/a|"];
60 [label="Smart cast: R|<local>/a|"];
61 [label="Function call: R|<local>/a|.R|/A.bar|()" style="filled" fillcolor=yellow];
62 [label="Exit block"];
53 [label="Enter when branch condition "];
54 [label="Access variable R|<local>/x|"];
55 [label="Const: Null(null)"];
56 [label="Equality operator !="];
57 [label="Exit when branch condition"];
}
63 [label="Exit when branch result"];
64 [label="Exit when"];
58 [label="Synthetic else branch"];
59 [label="Enter when branch result"];
subgraph cluster_17 {
color=blue
60 [label="Enter block"];
61 [label="Access variable R|<local>/a|"];
62 [label="Smart cast: R|<local>/a|"];
63 [label="Function call: R|<local>/a|.R|/A.bar|()" style="filled" fillcolor=yellow];
64 [label="Exit block"];
}
65 [label="Exit when branch result"];
66 [label="Exit when"];
}
65 [label="Exit block"];
67 [label="Exit block"];
}
66 [label="Exit function test_2" style="filled" fillcolor=red];
68 [label="Exit function test_2" style="filled" fillcolor=red];
}
43 -> {44};
44 -> {45};
45 -> {46 48};
45 -> {46};
46 -> {47};
47 -> {48};
47 -> {48 50};
48 -> {49};
49 -> {50};
50 -> {51};
@@ -179,10 +184,10 @@ digraph assignSafeCall_kt {
52 -> {53};
53 -> {54};
54 -> {55};
55 -> {56 57};
56 -> {64};
57 -> {58};
58 -> {59};
55 -> {56};
56 -> {57};
57 -> {58 59};
58 -> {66};
59 -> {60};
60 -> {61};
61 -> {62};
@@ -190,42 +195,42 @@ digraph assignSafeCall_kt {
63 -> {64};
64 -> {65};
65 -> {66};
subgraph cluster_17 {
color=red
67 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_18 {
color=blue
68 [label="Enter block"];
69 [label="Access variable R|<local>/x|"];
70 [label="Type operator: (R|<local>/x| as? R|A|)"];
71 [label="Exit lhs of ?:"];
72 [label="Enter rhs of ?:"];
73 [label="Jump: ^test_3 Unit"];
74 [label="Stub" style="filled" fillcolor=gray];
75 [label="Lhs of ?: is not null"];
76 [label="Exit ?:"];
77 [label="Variable declaration: lval a: R|A|"];
78 [label="Access variable R|<local>/a|"];
79 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
80 [label="Access variable R|<local>/x|"];
81 [label="Smart cast: R|<local>/x|"];
82 [label="Function call: R|<local>/x|.R|/A.foo|()" style="filled" fillcolor=yellow];
83 [label="Exit block"];
}
84 [label="Exit function test_3" style="filled" fillcolor=red];
}
66 -> {67};
67 -> {68};
68 -> {69};
subgraph cluster_18 {
color=red
69 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_19 {
color=blue
70 [label="Enter block"];
71 [label="Access variable R|<local>/x|"];
72 [label="Type operator: (R|<local>/x| as? R|A|)"];
73 [label="Exit lhs of ?:"];
74 [label="Enter rhs of ?:"];
75 [label="Jump: ^test_3 Unit"];
76 [label="Stub" style="filled" fillcolor=gray];
77 [label="Lhs of ?: is not null"];
78 [label="Exit ?:"];
79 [label="Variable declaration: lval a: R|A|"];
80 [label="Access variable R|<local>/a|"];
81 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
82 [label="Access variable R|<local>/x|"];
83 [label="Smart cast: R|<local>/x|"];
84 [label="Function call: R|<local>/x|.R|/A.foo|()" style="filled" fillcolor=yellow];
85 [label="Exit block"];
}
86 [label="Exit function test_3" style="filled" fillcolor=red];
}
69 -> {70};
70 -> {71};
71 -> {72 75};
71 -> {72};
72 -> {73};
73 -> {84};
73 -> {74} [style=dotted];
74 -> {76} [style=dotted];
75 -> {76};
76 -> {77};
73 -> {74 77};
74 -> {75};
75 -> {86};
75 -> {76} [style=dotted];
76 -> {78} [style=dotted];
77 -> {78};
78 -> {79};
79 -> {80};
@@ -233,72 +238,72 @@ digraph assignSafeCall_kt {
81 -> {82};
82 -> {83};
83 -> {84};
subgraph cluster_19 {
color=red
85 [label="Enter class B" style="filled" fillcolor=red];
86 [label="Exit class B" style="filled" fillcolor=red];
}
85 -> {86} [color=green];
84 -> {85};
85 -> {86};
subgraph cluster_20 {
color=red
87 [label="Enter function foo" style="filled" fillcolor=red];
88 [label="Exit function foo" style="filled" fillcolor=red];
87 [label="Enter class B" style="filled" fillcolor=red];
88 [label="Exit class B" style="filled" fillcolor=red];
}
87 -> {88};
87 -> {88} [color=green];
subgraph cluster_21 {
color=red
89 [label="Enter function bar" style="filled" fillcolor=red];
90 [label="Exit function bar" style="filled" fillcolor=red];
89 [label="Enter function foo" style="filled" fillcolor=red];
90 [label="Exit function foo" style="filled" fillcolor=red];
}
89 -> {90};
subgraph cluster_22 {
color=red
91 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_23 {
color=blue
92 [label="Enter block"];
93 [label="Access variable R|<local>/a|"];
94 [label="Enter safe call"];
95 [label="Access variable R|/B.x|"];
96 [label="Exit safe call"];
97 [label="Variable declaration: lval x: R|kotlin/Int?|"];
subgraph cluster_24 {
color=blue
98 [label="Enter when"];
subgraph cluster_25 {
color=blue
99 [label="Enter when branch condition "];
100 [label="Access variable R|<local>/x|"];
101 [label="Const: Null(null)"];
102 [label="Equality operator !="];
103 [label="Exit when branch condition"];
}
104 [label="Synthetic else branch"];
105 [label="Enter when branch result"];
subgraph cluster_26 {
color=blue
106 [label="Enter block"];
107 [label="Access variable R|<local>/a|"];
108 [label="Smart cast: R|<local>/a|"];
109 [label="Function call: R|<local>/a|.R|/B.bar|()" style="filled" fillcolor=yellow];
110 [label="Exit block"];
}
111 [label="Exit when branch result"];
112 [label="Exit when"];
}
113 [label="Exit block"];
}
114 [label="Exit function test_1" style="filled" fillcolor=red];
91 [label="Enter function bar" style="filled" fillcolor=red];
92 [label="Exit function bar" style="filled" fillcolor=red];
}
91 -> {92};
92 -> {93};
93 -> {94 96};
subgraph cluster_23 {
color=red
93 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_24 {
color=blue
94 [label="Enter block"];
95 [label="Access variable R|<local>/a|"];
96 [label="Enter safe call"];
97 [label="Access variable R|/B.x|"];
98 [label="Exit safe call"];
99 [label="Variable declaration: lval x: R|kotlin/Int?|"];
subgraph cluster_25 {
color=blue
100 [label="Enter when"];
subgraph cluster_26 {
color=blue
101 [label="Enter when branch condition "];
102 [label="Access variable R|<local>/x|"];
103 [label="Const: Null(null)"];
104 [label="Equality operator !="];
105 [label="Exit when branch condition"];
}
106 [label="Synthetic else branch"];
107 [label="Enter when branch result"];
subgraph cluster_27 {
color=blue
108 [label="Enter block"];
109 [label="Access variable R|<local>/a|"];
110 [label="Smart cast: R|<local>/a|"];
111 [label="Function call: R|<local>/a|.R|/B.bar|()" style="filled" fillcolor=yellow];
112 [label="Exit block"];
}
113 [label="Exit when branch result"];
114 [label="Exit when"];
}
115 [label="Exit block"];
}
116 [label="Exit function test_1" style="filled" fillcolor=red];
}
93 -> {94};
94 -> {95};
95 -> {96};
95 -> {96 98};
96 -> {97};
97 -> {98};
98 -> {99};
@@ -306,10 +311,10 @@ digraph assignSafeCall_kt {
100 -> {101};
101 -> {102};
102 -> {103};
103 -> {104 105};
104 -> {112};
105 -> {106};
106 -> {107};
103 -> {104};
104 -> {105};
105 -> {106 107};
106 -> {114};
107 -> {108};
108 -> {109};
109 -> {110};
@@ -317,51 +322,51 @@ digraph assignSafeCall_kt {
111 -> {112};
112 -> {113};
113 -> {114};
114 -> {115};
115 -> {116};
subgraph cluster_27 {
subgraph cluster_28 {
color=red
115 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_28 {
117 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_29 {
color=blue
116 [label="Enter block"];
117 [label="Access variable R|<local>/a|"];
118 [label="Enter safe call"];
119 [label="Function call: $subj$.R|/B.foo|()" style="filled" fillcolor=yellow];
120 [label="Exit safe call"];
121 [label="Variable declaration: lval x: R|kotlin/Int?|"];
subgraph cluster_29 {
118 [label="Enter block"];
119 [label="Access variable R|<local>/a|"];
120 [label="Enter safe call"];
121 [label="Function call: $subj$.R|/B.foo|()" style="filled" fillcolor=yellow];
122 [label="Exit safe call"];
123 [label="Variable declaration: lval x: R|kotlin/Int?|"];
subgraph cluster_30 {
color=blue
122 [label="Enter when"];
subgraph cluster_30 {
color=blue
123 [label="Enter when branch condition "];
124 [label="Access variable R|<local>/x|"];
125 [label="Const: Null(null)"];
126 [label="Equality operator !="];
127 [label="Exit when branch condition"];
}
128 [label="Synthetic else branch"];
129 [label="Enter when branch result"];
124 [label="Enter when"];
subgraph cluster_31 {
color=blue
130 [label="Enter block"];
131 [label="Access variable R|<local>/a|"];
132 [label="Smart cast: R|<local>/a|"];
133 [label="Function call: R|<local>/a|.R|/B.bar|()" style="filled" fillcolor=yellow];
134 [label="Exit block"];
125 [label="Enter when branch condition "];
126 [label="Access variable R|<local>/x|"];
127 [label="Const: Null(null)"];
128 [label="Equality operator !="];
129 [label="Exit when branch condition"];
}
135 [label="Exit when branch result"];
136 [label="Exit when"];
130 [label="Synthetic else branch"];
131 [label="Enter when branch result"];
subgraph cluster_32 {
color=blue
132 [label="Enter block"];
133 [label="Access variable R|<local>/a|"];
134 [label="Smart cast: R|<local>/a|"];
135 [label="Function call: R|<local>/a|.R|/B.bar|()" style="filled" fillcolor=yellow];
136 [label="Exit block"];
}
137 [label="Exit when branch result"];
138 [label="Exit when"];
}
137 [label="Exit block"];
139 [label="Exit block"];
}
138 [label="Exit function test_2" style="filled" fillcolor=red];
140 [label="Exit function test_2" style="filled" fillcolor=red];
}
115 -> {116};
116 -> {117};
117 -> {118 120};
117 -> {118};
118 -> {119};
119 -> {120};
119 -> {120 122};
120 -> {121};
121 -> {122};
122 -> {123};
@@ -369,10 +374,10 @@ digraph assignSafeCall_kt {
124 -> {125};
125 -> {126};
126 -> {127};
127 -> {128 129};
128 -> {136};
129 -> {130};
130 -> {131};
127 -> {128};
128 -> {129};
129 -> {130 131};
130 -> {138};
131 -> {132};
132 -> {133};
133 -> {134};
@@ -380,42 +385,42 @@ digraph assignSafeCall_kt {
135 -> {136};
136 -> {137};
137 -> {138};
subgraph cluster_32 {
color=red
139 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_33 {
color=blue
140 [label="Enter block"];
141 [label="Access variable R|<local>/x|"];
142 [label="Type operator: (R|<local>/x| as? R|B|)"];
143 [label="Exit lhs of ?:"];
144 [label="Enter rhs of ?:"];
145 [label="Jump: ^test_3 Unit"];
146 [label="Stub" style="filled" fillcolor=gray];
147 [label="Lhs of ?: is not null"];
148 [label="Exit ?:"];
149 [label="Variable declaration: lval a: R|B|"];
150 [label="Access variable R|<local>/a|"];
151 [label="Function call: R|<local>/a|.R|/B.foo|()" style="filled" fillcolor=yellow];
152 [label="Access variable R|<local>/x|"];
153 [label="Smart cast: R|<local>/x|"];
154 [label="Function call: R|<local>/x|.R|/B.foo|()" style="filled" fillcolor=yellow];
155 [label="Exit block"];
}
156 [label="Exit function test_3" style="filled" fillcolor=red];
}
138 -> {139};
139 -> {140};
140 -> {141};
subgraph cluster_33 {
color=red
141 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_34 {
color=blue
142 [label="Enter block"];
143 [label="Access variable R|<local>/x|"];
144 [label="Type operator: (R|<local>/x| as? R|B|)"];
145 [label="Exit lhs of ?:"];
146 [label="Enter rhs of ?:"];
147 [label="Jump: ^test_3 Unit"];
148 [label="Stub" style="filled" fillcolor=gray];
149 [label="Lhs of ?: is not null"];
150 [label="Exit ?:"];
151 [label="Variable declaration: lval a: R|B|"];
152 [label="Access variable R|<local>/a|"];
153 [label="Function call: R|<local>/a|.R|/B.foo|()" style="filled" fillcolor=yellow];
154 [label="Access variable R|<local>/x|"];
155 [label="Smart cast: R|<local>/x|"];
156 [label="Function call: R|<local>/x|.R|/B.foo|()" style="filled" fillcolor=yellow];
157 [label="Exit block"];
}
158 [label="Exit function test_3" style="filled" fillcolor=red];
}
141 -> {142};
142 -> {143};
143 -> {144 147};
143 -> {144};
144 -> {145};
145 -> {156};
145 -> {146} [style=dotted];
146 -> {148} [style=dotted];
147 -> {148};
148 -> {149};
145 -> {146 149};
146 -> {147};
147 -> {158};
147 -> {148} [style=dotted];
148 -> {150} [style=dotted];
149 -> {150};
150 -> {151};
151 -> {152};
@@ -423,5 +428,7 @@ digraph assignSafeCall_kt {
153 -> {154};
154 -> {155};
155 -> {156};
156 -> {157};
157 -> {158};
}
@@ -5,96 +5,101 @@ digraph safeCallAndEqualityToBool_kt {
subgraph cluster_0 {
color=red
0 [label="Enter function check" style="filled" fillcolor=red];
subgraph cluster_1 {
color=blue
1 [label="Enter block"];
2 [label="Const: Boolean(true)"];
3 [label="Jump: ^check Boolean(true)"];
4 [label="Stub" style="filled" fillcolor=gray];
5 [label="Exit block" style="filled" fillcolor=gray];
}
6 [label="Exit function check" style="filled" fillcolor=red];
0 [label="Enter file safeCallAndEqualityToBool.kt" style="filled" fillcolor=red];
1 [label="Exit file safeCallAndEqualityToBool.kt" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
2 -> {3};
3 -> {6};
3 -> {4} [style=dotted];
4 -> {5} [style=dotted];
5 -> {6} [style=dotted];
0 -> {1} [color=green];
subgraph cluster_2 {
subgraph cluster_1 {
color=red
7 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_3 {
2 [label="Enter function check" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
8 [label="Enter block"];
subgraph cluster_4 {
3 [label="Enter block"];
4 [label="Const: Boolean(true)"];
5 [label="Jump: ^check Boolean(true)"];
6 [label="Stub" style="filled" fillcolor=gray];
7 [label="Exit block" style="filled" fillcolor=gray];
}
8 [label="Exit function check" style="filled" fillcolor=red];
}
2 -> {3};
3 -> {4};
4 -> {5};
5 -> {8};
5 -> {6} [style=dotted];
6 -> {7} [style=dotted];
7 -> {8} [style=dotted];
subgraph cluster_3 {
color=red
9 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_4 {
color=blue
10 [label="Enter block"];
subgraph cluster_5 {
color=blue
9 [label="Enter when"];
subgraph cluster_5 {
color=blue
10 [label="Enter when branch condition "];
11 [label="Access variable R|<local>/s|"];
12 [label="Enter safe call"];
13 [label="Function call: $subj$.R|/check|()" style="filled" fillcolor=yellow];
14 [label="Exit safe call"];
15 [label="Const: Boolean(true)"];
16 [label="Equality operator =="];
17 [label="Exit when branch condition"];
}
11 [label="Enter when"];
subgraph cluster_6 {
color=blue
18 [label="Enter when branch condition else"];
12 [label="Enter when branch condition "];
13 [label="Access variable R|<local>/s|"];
14 [label="Enter safe call"];
15 [label="Function call: $subj$.R|/check|()" style="filled" fillcolor=yellow];
16 [label="Exit safe call"];
17 [label="Const: Boolean(true)"];
18 [label="Equality operator =="];
19 [label="Exit when branch condition"];
}
20 [label="Enter when branch result"];
subgraph cluster_7 {
color=blue
21 [label="Enter block"];
22 [label="Access variable R|<local>/s|"];
23 [label="Access variable R|kotlin/String.length<Inapplicable(UNSAFE_CALL): kotlin/String.length>#|"];
24 [label="Exit block"];
20 [label="Enter when branch condition else"];
21 [label="Exit when branch condition"];
}
25 [label="Exit when branch result"];
26 [label="Enter when branch result"];
22 [label="Enter when branch result"];
subgraph cluster_8 {
color=blue
27 [label="Enter block"];
28 [label="Access variable R|<local>/s|"];
29 [label="Smart cast: R|<local>/s|"];
30 [label="Access variable R|kotlin/String.length|"];
31 [label="Exit block"];
23 [label="Enter block"];
24 [label="Access variable R|<local>/s|"];
25 [label="Access variable R|kotlin/String.length<Inapplicable(UNSAFE_CALL): kotlin/String.length>#|"];
26 [label="Exit block"];
}
32 [label="Exit when branch result"];
33 [label="Exit when"];
27 [label="Exit when branch result"];
28 [label="Enter when branch result"];
subgraph cluster_9 {
color=blue
29 [label="Enter block"];
30 [label="Access variable R|<local>/s|"];
31 [label="Smart cast: R|<local>/s|"];
32 [label="Access variable R|kotlin/String.length|"];
33 [label="Exit block"];
}
34 [label="Exit when branch result"];
35 [label="Exit when"];
}
34 [label="Exit block"];
36 [label="Exit block"];
}
35 [label="Exit function test_1" style="filled" fillcolor=red];
37 [label="Exit function test_1" style="filled" fillcolor=red];
}
7 -> {8};
8 -> {9};
9 -> {10};
10 -> {11};
11 -> {12 14};
11 -> {12};
12 -> {13};
13 -> {14};
13 -> {14 16};
14 -> {15};
15 -> {16};
16 -> {17};
17 -> {18 26};
17 -> {18};
18 -> {19};
19 -> {20};
19 -> {20 28};
20 -> {21};
21 -> {22};
22 -> {23};
23 -> {24};
24 -> {25};
25 -> {33};
25 -> {26};
26 -> {27};
27 -> {28};
27 -> {35};
28 -> {29};
29 -> {30};
30 -> {31};
@@ -102,78 +107,78 @@ digraph safeCallAndEqualityToBool_kt {
32 -> {33};
33 -> {34};
34 -> {35};
35 -> {36};
36 -> {37};
subgraph cluster_9 {
subgraph cluster_10 {
color=red
36 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_10 {
38 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_11 {
color=blue
37 [label="Enter block"];
subgraph cluster_11 {
39 [label="Enter block"];
subgraph cluster_12 {
color=blue
38 [label="Enter when"];
subgraph cluster_12 {
color=blue
39 [label="Enter when branch condition "];
40 [label="Access variable R|<local>/s|"];
41 [label="Enter safe call"];
42 [label="Function call: $subj$.R|/check|()" style="filled" fillcolor=yellow];
43 [label="Exit safe call"];
44 [label="Const: Boolean(false)"];
45 [label="Equality operator =="];
46 [label="Exit when branch condition"];
}
40 [label="Enter when"];
subgraph cluster_13 {
color=blue
47 [label="Enter when branch condition else"];
41 [label="Enter when branch condition "];
42 [label="Access variable R|<local>/s|"];
43 [label="Enter safe call"];
44 [label="Function call: $subj$.R|/check|()" style="filled" fillcolor=yellow];
45 [label="Exit safe call"];
46 [label="Const: Boolean(false)"];
47 [label="Equality operator =="];
48 [label="Exit when branch condition"];
}
49 [label="Enter when branch result"];
subgraph cluster_14 {
color=blue
50 [label="Enter block"];
51 [label="Access variable R|<local>/s|"];
52 [label="Access variable R|kotlin/String.length<Inapplicable(UNSAFE_CALL): kotlin/String.length>#|"];
53 [label="Exit block"];
49 [label="Enter when branch condition else"];
50 [label="Exit when branch condition"];
}
54 [label="Exit when branch result"];
55 [label="Enter when branch result"];
51 [label="Enter when branch result"];
subgraph cluster_15 {
color=blue
56 [label="Enter block"];
57 [label="Access variable R|<local>/s|"];
58 [label="Smart cast: R|<local>/s|"];
59 [label="Access variable R|kotlin/String.length|"];
60 [label="Exit block"];
52 [label="Enter block"];
53 [label="Access variable R|<local>/s|"];
54 [label="Access variable R|kotlin/String.length<Inapplicable(UNSAFE_CALL): kotlin/String.length>#|"];
55 [label="Exit block"];
}
61 [label="Exit when branch result"];
62 [label="Exit when"];
56 [label="Exit when branch result"];
57 [label="Enter when branch result"];
subgraph cluster_16 {
color=blue
58 [label="Enter block"];
59 [label="Access variable R|<local>/s|"];
60 [label="Smart cast: R|<local>/s|"];
61 [label="Access variable R|kotlin/String.length|"];
62 [label="Exit block"];
}
63 [label="Exit when branch result"];
64 [label="Exit when"];
}
63 [label="Exit block"];
65 [label="Exit block"];
}
64 [label="Exit function test_2" style="filled" fillcolor=red];
66 [label="Exit function test_2" style="filled" fillcolor=red];
}
36 -> {37};
37 -> {38};
38 -> {39};
39 -> {40};
40 -> {41 43};
40 -> {41};
41 -> {42};
42 -> {43};
42 -> {43 45};
43 -> {44};
44 -> {45};
45 -> {46};
46 -> {47 55};
46 -> {47};
47 -> {48};
48 -> {49};
48 -> {49 57};
49 -> {50};
50 -> {51};
51 -> {52};
52 -> {53};
53 -> {54};
54 -> {62};
54 -> {55};
55 -> {56};
56 -> {57};
56 -> {64};
57 -> {58};
58 -> {59};
59 -> {60};
@@ -181,163 +186,165 @@ digraph safeCallAndEqualityToBool_kt {
61 -> {62};
62 -> {63};
63 -> {64};
64 -> {65};
65 -> {66};
subgraph cluster_16 {
subgraph cluster_17 {
color=red
65 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_17 {
67 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_18 {
color=blue
66 [label="Enter block"];
subgraph cluster_18 {
68 [label="Enter block"];
subgraph cluster_19 {
color=blue
67 [label="Enter when"];
subgraph cluster_19 {
color=blue
68 [label="Enter when branch condition "];
69 [label="Access variable R|<local>/s|"];
70 [label="Enter safe call"];
71 [label="Function call: $subj$.R|/check|()" style="filled" fillcolor=yellow];
72 [label="Exit safe call"];
73 [label="Const: Boolean(true)"];
74 [label="Equality operator !="];
75 [label="Exit when branch condition"];
}
69 [label="Enter when"];
subgraph cluster_20 {
color=blue
76 [label="Enter when branch condition else"];
70 [label="Enter when branch condition "];
71 [label="Access variable R|<local>/s|"];
72 [label="Enter safe call"];
73 [label="Function call: $subj$.R|/check|()" style="filled" fillcolor=yellow];
74 [label="Exit safe call"];
75 [label="Const: Boolean(true)"];
76 [label="Equality operator !="];
77 [label="Exit when branch condition"];
}
78 [label="Enter when branch result"];
subgraph cluster_21 {
color=blue
79 [label="Enter block"];
80 [label="Access variable R|<local>/s|"];
81 [label="Smart cast: R|<local>/s|"];
82 [label="Access variable R|kotlin/String.length|"];
83 [label="Exit block"];
78 [label="Enter when branch condition else"];
79 [label="Exit when branch condition"];
}
84 [label="Exit when branch result"];
85 [label="Enter when branch result"];
80 [label="Enter when branch result"];
subgraph cluster_22 {
color=blue
86 [label="Enter block"];
87 [label="Access variable R|<local>/s|"];
88 [label="Access variable R|kotlin/String.length<Inapplicable(UNSAFE_CALL): kotlin/String.length>#|"];
89 [label="Exit block"];
81 [label="Enter block"];
82 [label="Access variable R|<local>/s|"];
83 [label="Smart cast: R|<local>/s|"];
84 [label="Access variable R|kotlin/String.length|"];
85 [label="Exit block"];
}
90 [label="Exit when branch result"];
91 [label="Exit when"];
86 [label="Exit when branch result"];
87 [label="Enter when branch result"];
subgraph cluster_23 {
color=blue
88 [label="Enter block"];
89 [label="Access variable R|<local>/s|"];
90 [label="Access variable R|kotlin/String.length<Inapplicable(UNSAFE_CALL): kotlin/String.length>#|"];
91 [label="Exit block"];
}
92 [label="Exit when branch result"];
93 [label="Exit when"];
}
92 [label="Exit block"];
94 [label="Exit block"];
}
93 [label="Exit function test_3" style="filled" fillcolor=red];
95 [label="Exit function test_3" style="filled" fillcolor=red];
}
65 -> {66};
66 -> {67};
67 -> {68};
68 -> {69};
69 -> {70 72};
69 -> {70};
70 -> {71};
71 -> {72};
71 -> {72 74};
72 -> {73};
73 -> {74};
74 -> {75};
75 -> {76 85};
75 -> {76};
76 -> {77};
77 -> {78};
77 -> {78 87};
78 -> {79};
79 -> {80};
80 -> {81};
81 -> {82};
82 -> {83};
83 -> {84};
84 -> {91};
84 -> {85};
85 -> {86};
86 -> {87};
86 -> {93};
87 -> {88};
88 -> {89};
89 -> {90};
90 -> {91};
91 -> {92};
92 -> {93};
93 -> {94};
94 -> {95};
subgraph cluster_23 {
subgraph cluster_24 {
color=red
94 [label="Enter function test_4" style="filled" fillcolor=red];
subgraph cluster_24 {
96 [label="Enter function test_4" style="filled" fillcolor=red];
subgraph cluster_25 {
color=blue
95 [label="Enter block"];
subgraph cluster_25 {
97 [label="Enter block"];
subgraph cluster_26 {
color=blue
96 [label="Enter when"];
subgraph cluster_26 {
color=blue
97 [label="Enter when branch condition "];
98 [label="Access variable R|<local>/s|"];
99 [label="Enter safe call"];
100 [label="Function call: $subj$.R|/check|()" style="filled" fillcolor=yellow];
101 [label="Exit safe call"];
102 [label="Const: Boolean(false)"];
103 [label="Equality operator !="];
104 [label="Exit when branch condition"];
}
98 [label="Enter when"];
subgraph cluster_27 {
color=blue
105 [label="Enter when branch condition else"];
99 [label="Enter when branch condition "];
100 [label="Access variable R|<local>/s|"];
101 [label="Enter safe call"];
102 [label="Function call: $subj$.R|/check|()" style="filled" fillcolor=yellow];
103 [label="Exit safe call"];
104 [label="Const: Boolean(false)"];
105 [label="Equality operator !="];
106 [label="Exit when branch condition"];
}
107 [label="Enter when branch result"];
subgraph cluster_28 {
color=blue
108 [label="Enter block"];
109 [label="Access variable R|<local>/s|"];
110 [label="Smart cast: R|<local>/s|"];
111 [label="Access variable R|kotlin/String.length|"];
112 [label="Exit block"];
107 [label="Enter when branch condition else"];
108 [label="Exit when branch condition"];
}
113 [label="Exit when branch result"];
114 [label="Enter when branch result"];
109 [label="Enter when branch result"];
subgraph cluster_29 {
color=blue
115 [label="Enter block"];
116 [label="Access variable R|<local>/s|"];
117 [label="Access variable R|kotlin/String.length<Inapplicable(UNSAFE_CALL): kotlin/String.length>#|"];
118 [label="Exit block"];
110 [label="Enter block"];
111 [label="Access variable R|<local>/s|"];
112 [label="Smart cast: R|<local>/s|"];
113 [label="Access variable R|kotlin/String.length|"];
114 [label="Exit block"];
}
119 [label="Exit when branch result"];
120 [label="Exit when"];
115 [label="Exit when branch result"];
116 [label="Enter when branch result"];
subgraph cluster_30 {
color=blue
117 [label="Enter block"];
118 [label="Access variable R|<local>/s|"];
119 [label="Access variable R|kotlin/String.length<Inapplicable(UNSAFE_CALL): kotlin/String.length>#|"];
120 [label="Exit block"];
}
121 [label="Exit when branch result"];
122 [label="Exit when"];
}
121 [label="Exit block"];
123 [label="Exit block"];
}
122 [label="Exit function test_4" style="filled" fillcolor=red];
124 [label="Exit function test_4" style="filled" fillcolor=red];
}
94 -> {95};
95 -> {96};
96 -> {97};
97 -> {98};
98 -> {99 101};
98 -> {99};
99 -> {100};
100 -> {101};
100 -> {101 103};
101 -> {102};
102 -> {103};
103 -> {104};
104 -> {105 114};
104 -> {105};
105 -> {106};
106 -> {107};
106 -> {107 116};
107 -> {108};
108 -> {109};
109 -> {110};
110 -> {111};
111 -> {112};
112 -> {113};
113 -> {120};
113 -> {114};
114 -> {115};
115 -> {116};
115 -> {122};
116 -> {117};
117 -> {118};
118 -> {119};
119 -> {120};
120 -> {121};
121 -> {122};
122 -> {123};
123 -> {124};
}
@@ -5,65 +5,70 @@ digraph safeCalls_kt {
subgraph cluster_0 {
color=red
0 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_1 {
color=blue
1 [label="Enter block"];
2 [label="Const: String()"];
3 [label="Jump: ^foo String()"];
4 [label="Stub" style="filled" fillcolor=gray];
5 [label="Exit block" style="filled" fillcolor=gray];
}
6 [label="Exit function foo" style="filled" fillcolor=red];
0 [label="Enter file safeCalls.kt" style="filled" fillcolor=red];
1 [label="Exit file safeCalls.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
3 [label="Enter block"];
4 [label="Const: String()"];
5 [label="Jump: ^foo String()"];
6 [label="Stub" style="filled" fillcolor=gray];
7 [label="Exit block" style="filled" fillcolor=gray];
}
8 [label="Exit function foo" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
2 -> {3};
3 -> {6};
3 -> {4} [style=dotted];
4 -> {5} [style=dotted];
3 -> {4};
4 -> {5};
5 -> {8};
5 -> {6} [style=dotted];
6 -> {7} [style=dotted];
7 -> {8} [style=dotted];
subgraph cluster_2 {
subgraph cluster_3 {
color=red
7 [label="Enter function let" style="filled" fillcolor=red];
subgraph cluster_3 {
9 [label="Enter function let" style="filled" fillcolor=red];
subgraph cluster_4 {
color=blue
8 [label="Enter block"];
9 [label="Exit block"];
10 [label="Enter block"];
11 [label="Exit block"];
}
10 [label="Exit function let" style="filled" fillcolor=red];
12 [label="Exit function let" style="filled" fillcolor=red];
}
7 -> {8};
8 -> {9};
9 -> {10};
subgraph cluster_4 {
color=red
11 [label="Enter function test" style="filled" fillcolor=red];
subgraph cluster_5 {
color=blue
12 [label="Enter block"];
13 [label="Access variable R|<local>/x|"];
14 [label="Enter safe call"];
15 [label="Access variable R|<local>/x|"];
16 [label="Smart cast: R|<local>/x|"];
17 [label="Access variable R|kotlin/String.length|"];
18 [label="Const: Int(1)"];
19 [label="Equality operator =="];
20 [label="Function call: $subj$.R|/foo|(...)" style="filled" fillcolor=yellow];
21 [label="Exit safe call"];
22 [label="Access variable R|<local>/x|"];
23 [label="Access variable R|kotlin/String.length<Inapplicable(UNSAFE_CALL): kotlin/String.length>#|"];
24 [label="Exit block"];
}
25 [label="Exit function test" style="filled" fillcolor=red];
}
10 -> {11};
11 -> {12};
12 -> {13};
13 -> {14 21};
subgraph cluster_5 {
color=red
13 [label="Enter function test" style="filled" fillcolor=red];
subgraph cluster_6 {
color=blue
14 [label="Enter block"];
15 [label="Access variable R|<local>/x|"];
16 [label="Enter safe call"];
17 [label="Access variable R|<local>/x|"];
18 [label="Smart cast: R|<local>/x|"];
19 [label="Access variable R|kotlin/String.length|"];
20 [label="Const: Int(1)"];
21 [label="Equality operator =="];
22 [label="Function call: $subj$.R|/foo|(...)" style="filled" fillcolor=yellow];
23 [label="Exit safe call"];
24 [label="Access variable R|<local>/x|"];
25 [label="Access variable R|kotlin/String.length<Inapplicable(UNSAFE_CALL): kotlin/String.length>#|"];
26 [label="Exit block"];
}
27 [label="Exit function test" style="filled" fillcolor=red];
}
13 -> {14};
14 -> {15};
15 -> {16};
15 -> {16 23};
16 -> {17};
17 -> {18};
18 -> {19};
@@ -73,246 +78,248 @@ digraph safeCalls_kt {
22 -> {23};
23 -> {24};
24 -> {25};
subgraph cluster_6 {
color=red
26 [label="Enter class A" style="filled" fillcolor=red];
27 [label="Exit class A" style="filled" fillcolor=red];
}
26 -> {27} [color=green];
25 -> {26};
26 -> {27};
subgraph cluster_7 {
color=red
28 [label="Enter function bar" style="filled" fillcolor=red];
29 [label="Exit function bar" style="filled" fillcolor=red];
28 [label="Enter class A" style="filled" fillcolor=red];
29 [label="Exit class A" style="filled" fillcolor=red];
}
28 -> {29};
28 -> {29} [color=green];
subgraph cluster_8 {
color=red
30 [label="Enter function bool" style="filled" fillcolor=red];
31 [label="Exit function bool" style="filled" fillcolor=red];
30 [label="Enter function bar" style="filled" fillcolor=red];
31 [label="Exit function bar" style="filled" fillcolor=red];
}
30 -> {31};
subgraph cluster_9 {
color=red
32 [label="Enter function id" style="filled" fillcolor=red];
33 [label="Exit function id" style="filled" fillcolor=red];
32 [label="Enter function bool" style="filled" fillcolor=red];
33 [label="Exit function bool" style="filled" fillcolor=red];
}
32 -> {33};
subgraph cluster_10 {
color=red
34 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_11 {
color=blue
35 [label="Enter block"];
36 [label="Access variable R|<local>/x|"];
37 [label="Type operator: (R|<local>/x| as? R|A|)"];
38 [label="Enter safe call"];
39 [label="Access variable R|<local>/x|"];
40 [label="Smart cast: R|<local>/x|"];
41 [label="Function call: $subj$.R|/A.bar|(...)" style="filled" fillcolor=yellow];
42 [label="Exit safe call"];
43 [label="Exit block"];
}
44 [label="Exit function test_2" style="filled" fillcolor=red];
34 [label="Enter function id" style="filled" fillcolor=red];
35 [label="Exit function id" style="filled" fillcolor=red];
}
34 -> {35};
35 -> {36};
subgraph cluster_11 {
color=red
36 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_12 {
color=blue
37 [label="Enter block"];
38 [label="Access variable R|<local>/x|"];
39 [label="Type operator: (R|<local>/x| as? R|A|)"];
40 [label="Enter safe call"];
41 [label="Access variable R|<local>/x|"];
42 [label="Smart cast: R|<local>/x|"];
43 [label="Function call: $subj$.R|/A.bar|(...)" style="filled" fillcolor=yellow];
44 [label="Exit safe call"];
45 [label="Exit block"];
}
46 [label="Exit function test_2" style="filled" fillcolor=red];
}
36 -> {37};
37 -> {38 42};
37 -> {38};
38 -> {39};
39 -> {40};
39 -> {40 44};
40 -> {41};
41 -> {42};
42 -> {43};
43 -> {44};
subgraph cluster_12 {
color=red
45 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_13 {
color=blue
46 [label="Enter block"];
47 [label="Access variable R|<local>/x|"];
48 [label="Type operator: (R|<local>/x| as? R|A|)"];
49 [label="Enter safe call"];
50 [label="Access variable R|<local>/x|"];
51 [label="Smart cast: R|<local>/x|"];
52 [label="Function call: $subj$.R|/A.bar|(...)" style="filled" fillcolor=yellow];
53 [label="Enter safe call"];
54 [label="Access variable R|<local>/x|"];
55 [label="Smart cast: R|<local>/x|"];
56 [label="Function call: R|<local>/x|.R|/A.bool|()" style="filled" fillcolor=yellow];
57 [label="Function call: $subj$.R|/foo|(...)" style="filled" fillcolor=yellow];
58 [label="Enter safe call"];
59 [label="Postponed enter to lambda"];
subgraph cluster_14 {
color=blue
60 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_15 {
color=blue
61 [label="Enter block"];
62 [label="Access variable R|<local>/x|"];
63 [label="Smart cast: R|<local>/x|"];
64 [label="Function call: R|<local>/x|.R|/A.bool|()" style="filled" fillcolor=yellow];
65 [label="Exit block"];
}
66 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
67 [label="Postponed exit from lambda"];
68 [label="Function call: $subj$.R|/let|(...)" style="filled" fillcolor=yellow];
69 [label="Exit safe call"];
70 [label="Exit safe call"];
71 [label="Exit safe call"];
72 [label="Access variable R|<local>/x|"];
73 [label="Function call: R|<local>/x|.<Unresolved name: bool>#()" style="filled" fillcolor=yellow];
74 [label="Exit block"];
}
75 [label="Exit function test_3" style="filled" fillcolor=red];
}
44 -> {45};
45 -> {46};
46 -> {47};
subgraph cluster_13 {
color=red
47 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_14 {
color=blue
48 [label="Enter block"];
49 [label="Access variable R|<local>/x|"];
50 [label="Type operator: (R|<local>/x| as? R|A|)"];
51 [label="Enter safe call"];
52 [label="Access variable R|<local>/x|"];
53 [label="Smart cast: R|<local>/x|"];
54 [label="Function call: $subj$.R|/A.bar|(...)" style="filled" fillcolor=yellow];
55 [label="Enter safe call"];
56 [label="Access variable R|<local>/x|"];
57 [label="Smart cast: R|<local>/x|"];
58 [label="Function call: R|<local>/x|.R|/A.bool|()" style="filled" fillcolor=yellow];
59 [label="Function call: $subj$.R|/foo|(...)" style="filled" fillcolor=yellow];
60 [label="Enter safe call"];
61 [label="Postponed enter to lambda"];
subgraph cluster_15 {
color=blue
62 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_16 {
color=blue
63 [label="Enter block"];
64 [label="Access variable R|<local>/x|"];
65 [label="Smart cast: R|<local>/x|"];
66 [label="Function call: R|<local>/x|.R|/A.bool|()" style="filled" fillcolor=yellow];
67 [label="Exit block"];
}
68 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
69 [label="Postponed exit from lambda"];
70 [label="Function call: $subj$.R|/let|(...)" style="filled" fillcolor=yellow];
71 [label="Exit safe call"];
72 [label="Exit safe call"];
73 [label="Exit safe call"];
74 [label="Access variable R|<local>/x|"];
75 [label="Function call: R|<local>/x|.<Unresolved name: bool>#()" style="filled" fillcolor=yellow];
76 [label="Exit block"];
}
77 [label="Exit function test_3" style="filled" fillcolor=red];
}
47 -> {48};
48 -> {49 69};
48 -> {49};
49 -> {50};
50 -> {51};
50 -> {51 71};
51 -> {52};
52 -> {53 69};
52 -> {53};
53 -> {54};
54 -> {55};
54 -> {55 71};
55 -> {56};
56 -> {57};
57 -> {58 70};
57 -> {58};
58 -> {59};
59 -> {60 67 68};
59 -> {60} [style=dashed];
59 -> {60 72};
60 -> {61};
61 -> {62};
61 -> {62 69 70};
61 -> {62} [style=dashed];
62 -> {63};
63 -> {64};
64 -> {65};
65 -> {66};
66 -> {67};
67 -> {68};
68 -> {71};
69 -> {70};
70 -> {71};
70 -> {73};
71 -> {72};
72 -> {73};
73 -> {74};
74 -> {75};
subgraph cluster_16 {
color=red
76 [label="Enter function test_4" style="filled" fillcolor=red];
subgraph cluster_17 {
color=blue
77 [label="Enter block"];
78 [label="Access variable R|<local>/x|"];
79 [label="Enter safe call"];
80 [label="Function call: $subj$.R|/A.id|()" style="filled" fillcolor=yellow];
81 [label="Enter safe call"];
82 [label="Function call: $subj$.R|/A.bool|()" style="filled" fillcolor=yellow];
83 [label="Exit safe call"];
84 [label="Exit safe call"];
85 [label="Access variable R|<local>/x|"];
86 [label="Function call: R|<local>/x|.R|/A.id<Inapplicable(UNSAFE_CALL): /A.id>#|()" style="filled" fillcolor=yellow];
87 [label="Exit block"];
}
88 [label="Exit function test_4" style="filled" fillcolor=red];
}
75 -> {76};
76 -> {77};
77 -> {78};
78 -> {79 83};
subgraph cluster_17 {
color=red
78 [label="Enter function test_4" style="filled" fillcolor=red];
subgraph cluster_18 {
color=blue
79 [label="Enter block"];
80 [label="Access variable R|<local>/x|"];
81 [label="Enter safe call"];
82 [label="Function call: $subj$.R|/A.id|()" style="filled" fillcolor=yellow];
83 [label="Enter safe call"];
84 [label="Function call: $subj$.R|/A.bool|()" style="filled" fillcolor=yellow];
85 [label="Exit safe call"];
86 [label="Exit safe call"];
87 [label="Access variable R|<local>/x|"];
88 [label="Function call: R|<local>/x|.R|/A.id<Inapplicable(UNSAFE_CALL): /A.id>#|()" style="filled" fillcolor=yellow];
89 [label="Exit block"];
}
90 [label="Exit function test_4" style="filled" fillcolor=red];
}
78 -> {79};
79 -> {80};
80 -> {81 83};
80 -> {81 85};
81 -> {82};
82 -> {84};
82 -> {83 85};
83 -> {84};
84 -> {85};
84 -> {86};
85 -> {86};
86 -> {87};
87 -> {88};
subgraph cluster_18 {
color=red
89 [label="Enter function boo" style="filled" fillcolor=red];
subgraph cluster_19 {
color=blue
90 [label="Enter block"];
91 [label="Exit block"];
}
92 [label="Exit function boo" style="filled" fillcolor=red];
}
88 -> {89};
89 -> {90};
90 -> {91};
91 -> {92};
subgraph cluster_20 {
subgraph cluster_19 {
color=red
93 [label="Enter function test_5" style="filled" fillcolor=red];
subgraph cluster_21 {
91 [label="Enter function boo" style="filled" fillcolor=red];
subgraph cluster_20 {
color=blue
94 [label="Enter block"];
95 [label="Access variable R|<local>/x|"];
96 [label="Enter safe call"];
97 [label="Postponed enter to lambda"];
subgraph cluster_22 {
color=blue
98 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_23 {
color=blue
99 [label="Enter block"];
100 [label="Jump: ^test_5 Unit"];
101 [label="Stub" style="filled" fillcolor=gray];
102 [label="Exit block" style="filled" fillcolor=gray];
}
103 [label="Exit function <anonymous>" style="filled" fillcolor=gray];
}
104 [label="Postponed exit from lambda" style="filled" fillcolor=gray];
105 [label="Function call: $subj$.R|kotlin/let|<R|A|, R|kotlin/Nothing|>(...)" style="filled" fillcolor=gray];
106 [label="Stub" style="filled" fillcolor=gray];
107 [label="Enter safe call" style="filled" fillcolor=gray];
108 [label="Access variable R|<local>/x|" style="filled" fillcolor=gray];
109 [label="Smart cast: R|<local>/x|" style="filled" fillcolor=gray];
110 [label="Function call: R|<local>/x|.R|/A.bool|()" style="filled" fillcolor=gray];
111 [label="Function call: $subj$.R|/boo|(...)" style="filled" fillcolor=gray];
112 [label="Exit safe call"];
113 [label="Exit safe call"];
114 [label="Access variable R|<local>/x|"];
115 [label="Function call: R|<local>/x|.R|/A.id<Inapplicable(UNSAFE_CALL): /A.id>#|()" style="filled" fillcolor=yellow];
116 [label="Exit block"];
92 [label="Enter block"];
93 [label="Exit block"];
}
117 [label="Exit function test_5" style="filled" fillcolor=red];
94 [label="Exit function boo" style="filled" fillcolor=red];
}
91 -> {92};
92 -> {93};
93 -> {94};
94 -> {95};
95 -> {96 112};
subgraph cluster_21 {
color=red
95 [label="Enter function test_5" style="filled" fillcolor=red];
subgraph cluster_22 {
color=blue
96 [label="Enter block"];
97 [label="Access variable R|<local>/x|"];
98 [label="Enter safe call"];
99 [label="Postponed enter to lambda"];
subgraph cluster_23 {
color=blue
100 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_24 {
color=blue
101 [label="Enter block"];
102 [label="Jump: ^test_5 Unit"];
103 [label="Stub" style="filled" fillcolor=gray];
104 [label="Exit block" style="filled" fillcolor=gray];
}
105 [label="Exit function <anonymous>" style="filled" fillcolor=gray];
}
106 [label="Postponed exit from lambda" style="filled" fillcolor=gray];
107 [label="Function call: $subj$.R|kotlin/let|<R|A|, R|kotlin/Nothing|>(...)" style="filled" fillcolor=gray];
108 [label="Stub" style="filled" fillcolor=gray];
109 [label="Enter safe call" style="filled" fillcolor=gray];
110 [label="Access variable R|<local>/x|" style="filled" fillcolor=gray];
111 [label="Smart cast: R|<local>/x|" style="filled" fillcolor=gray];
112 [label="Function call: R|<local>/x|.R|/A.bool|()" style="filled" fillcolor=gray];
113 [label="Function call: $subj$.R|/boo|(...)" style="filled" fillcolor=gray];
114 [label="Exit safe call"];
115 [label="Exit safe call"];
116 [label="Access variable R|<local>/x|"];
117 [label="Function call: R|<local>/x|.R|/A.id<Inapplicable(UNSAFE_CALL): /A.id>#|()" style="filled" fillcolor=yellow];
118 [label="Exit block"];
}
119 [label="Exit function test_5" style="filled" fillcolor=red];
}
95 -> {96};
96 -> {97};
97 -> {98};
97 -> {104 105} [style=dotted];
97 -> {98} [style=dashed];
97 -> {98 114};
98 -> {99};
99 -> {100};
100 -> {117};
100 -> {101} [style=dotted];
101 -> {102} [style=dotted];
99 -> {106 107} [style=dotted];
99 -> {100} [style=dashed];
100 -> {101};
101 -> {102};
102 -> {119};
102 -> {103} [style=dotted];
103 -> {104} [style=dotted];
104 -> {105} [style=dotted];
105 -> {106} [style=dotted];
106 -> {107 112} [style=dotted];
106 -> {107} [style=dotted];
107 -> {108} [style=dotted];
108 -> {109} [style=dotted];
108 -> {109 114} [style=dotted];
109 -> {110} [style=dotted];
110 -> {111} [style=dotted];
111 -> {113} [style=dotted];
112 -> {113};
113 -> {114};
111 -> {112} [style=dotted];
112 -> {113} [style=dotted];
113 -> {115} [style=dotted];
114 -> {115};
115 -> {116};
116 -> {117};
117 -> {118};
118 -> {119};
}
@@ -5,87 +5,94 @@ digraph smartCastInInit_kt {
subgraph cluster_0 {
color=red
0 [label="Enter class I" style="filled" fillcolor=red];
1 [label="Exit class I" style="filled" fillcolor=red];
0 [label="Enter file smartCastInInit.kt" style="filled" fillcolor=red];
1 [label="Exit file smartCastInInit.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter class S" style="filled" fillcolor=red];
3 [label="Exit class S" style="filled" fillcolor=red];
2 [label="Enter class I" style="filled" fillcolor=red];
3 [label="Exit class I" style="filled" fillcolor=red];
}
2 -> {3} [color=green];
subgraph cluster_2 {
color=red
4 [label="Enter function foo" style="filled" fillcolor=red];
5 [label="Exit function foo" style="filled" fillcolor=red];
4 [label="Enter class S" style="filled" fillcolor=red];
5 [label="Exit class S" style="filled" fillcolor=red];
}
4 -> {5};
4 -> {5} [color=green];
subgraph cluster_3 {
color=red
6 [label="Enter function s" style="filled" fillcolor=red];
subgraph cluster_4 {
color=blue
7 [label="Enter block"];
8 [label="Function call: R|kotlin/TODO|()" style="filled" fillcolor=yellow];
9 [label="Stub" style="filled" fillcolor=gray];
10 [label="Jump: ^s R|kotlin/TODO|()" style="filled" fillcolor=gray];
11 [label="Stub" style="filled" fillcolor=gray];
12 [label="Exit block" style="filled" fillcolor=gray];
}
13 [label="Exit function s" style="filled" fillcolor=gray];
6 [label="Enter function foo" style="filled" fillcolor=red];
7 [label="Exit function foo" style="filled" fillcolor=red];
}
6 -> {7};
7 -> {8};
8 -> {9} [style=dotted];
9 -> {10} [style=dotted];
10 -> {11 13} [style=dotted];
11 -> {12} [style=dotted];
12 -> {13} [style=dotted];
subgraph cluster_5 {
subgraph cluster_4 {
color=red
14 [label="Enter class Main" style="filled" fillcolor=red];
subgraph cluster_6 {
8 [label="Enter function s" style="filled" fillcolor=red];
subgraph cluster_5 {
color=blue
15 [label="Enter init block" style="filled" fillcolor=red];
subgraph cluster_7 {
color=blue
16 [label="Enter block"];
17 [label="Function call: R|/s|()" style="filled" fillcolor=yellow];
18 [label="Assignment: R|/Main.x|"];
19 [label="Access variable R|/Main.x|"];
20 [label="Smart cast: this@R|/Main|.R|/Main.x|"];
21 [label="Function call: this@R|/Main|.R|/Main.x|.R|/S.foo|()" style="filled" fillcolor=yellow];
22 [label="Exit block"];
}
23 [label="Exit init block" style="filled" fillcolor=red];
9 [label="Enter block"];
10 [label="Function call: R|kotlin/TODO|()" style="filled" fillcolor=yellow];
11 [label="Stub" style="filled" fillcolor=gray];
12 [label="Jump: ^s R|kotlin/TODO|()" style="filled" fillcolor=gray];
13 [label="Stub" style="filled" fillcolor=gray];
14 [label="Exit block" style="filled" fillcolor=gray];
}
subgraph cluster_8 {
color=blue
24 [label="Enter function <init>" style="filled" fillcolor=red];
25 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
26 [label="Exit function <init>" style="filled" fillcolor=red];
}
27 [label="Exit class Main" style="filled" fillcolor=red];
15 [label="Exit function s" style="filled" fillcolor=gray];
}
14 -> {15} [color=green];
14 -> {27} [style=dotted];
14 -> {15 24} [style=dashed];
15 -> {16};
16 -> {17};
8 -> {9};
9 -> {10};
10 -> {11} [style=dotted];
11 -> {12} [style=dotted];
12 -> {13 15} [style=dotted];
13 -> {14} [style=dotted];
14 -> {15} [style=dotted];
subgraph cluster_6 {
color=red
16 [label="Enter class Main" style="filled" fillcolor=red];
subgraph cluster_7 {
color=blue
17 [label="Enter init block" style="filled" fillcolor=red];
subgraph cluster_8 {
color=blue
18 [label="Enter block"];
19 [label="Function call: R|/s|()" style="filled" fillcolor=yellow];
20 [label="Assignment: R|/Main.x|"];
21 [label="Access variable R|/Main.x|"];
22 [label="Smart cast: this@R|/Main|.R|/Main.x|"];
23 [label="Function call: this@R|/Main|.R|/Main.x|.R|/S.foo|()" style="filled" fillcolor=yellow];
24 [label="Exit block"];
}
25 [label="Exit init block" style="filled" fillcolor=red];
}
subgraph cluster_9 {
color=blue
26 [label="Enter function <init>" style="filled" fillcolor=red];
27 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
28 [label="Exit function <init>" style="filled" fillcolor=red];
}
29 [label="Exit class Main" style="filled" fillcolor=red];
}
16 -> {17} [color=green];
16 -> {29} [style=dotted];
16 -> {17 26} [style=dashed];
17 -> {18};
18 -> {19};
19 -> {20};
20 -> {21};
21 -> {22};
22 -> {23};
23 -> {24} [color=green];
23 -> {24};
24 -> {25};
25 -> {26};
26 -> {27} [color=green];
25 -> {26} [color=green];
26 -> {27};
27 -> {28};
28 -> {29} [color=green];
}
@@ -5,127 +5,134 @@ digraph smartcastInByClause_kt {
subgraph cluster_0 {
color=red
0 [label="Enter class A" style="filled" fillcolor=red];
subgraph cluster_1 {
color=blue
1 [label="Enter property" style="filled" fillcolor=red];
2 [label="Access variable R|<local>/path|"];
3 [label="Exit property" style="filled" fillcolor=red];
}
0 [label="Enter file smartcastInByClause.kt" style="filled" fillcolor=red];
1 [label="Exit file smartcastInByClause.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter class A" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
4 [label="Enter property" style="filled" fillcolor=red];
5 [label="Access variable R|<local>/index|"];
6 [label="Exit property" style="filled" fillcolor=red];
3 [label="Enter property" style="filled" fillcolor=red];
4 [label="Access variable R|<local>/path|"];
5 [label="Exit property" style="filled" fillcolor=red];
}
subgraph cluster_3 {
color=blue
7 [label="Enter function <init>" style="filled" fillcolor=red];
8 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
9 [label="Exit function <init>" style="filled" fillcolor=red];
6 [label="Enter property" style="filled" fillcolor=red];
7 [label="Access variable R|<local>/index|"];
8 [label="Exit property" style="filled" fillcolor=red];
}
10 [label="Exit class A" style="filled" fillcolor=red];
subgraph cluster_4 {
color=blue
9 [label="Enter function <init>" style="filled" fillcolor=red];
10 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
11 [label="Exit function <init>" style="filled" fillcolor=red];
}
12 [label="Exit class A" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
0 -> {10} [style=dotted];
0 -> {1 4 7} [style=dashed];
1 -> {2};
2 -> {3};
3 -> {4} [color=green];
2 -> {3} [color=green];
2 -> {12} [style=dotted];
2 -> {3 6 9} [style=dashed];
3 -> {4};
4 -> {5};
5 -> {6};
6 -> {7} [color=green];
5 -> {6} [color=green];
6 -> {7};
7 -> {8};
8 -> {9};
9 -> {10} [color=green];
subgraph cluster_4 {
color=red
11 [label="Enter class Base" style="filled" fillcolor=red];
12 [label="Exit class Base" style="filled" fillcolor=red];
}
8 -> {9} [color=green];
9 -> {10};
10 -> {11};
11 -> {12} [color=green];
subgraph cluster_5 {
color=red
13 [label="Enter class Derived" style="filled" fillcolor=red];
subgraph cluster_6 {
color=blue
14 [label="Enter property" style="filled" fillcolor=red];
15 [label="Access variable R|<local>/index|"];
16 [label="Exit property" style="filled" fillcolor=red];
}
subgraph cluster_7 {
color=blue
17 [label="Enter function <init>" style="filled" fillcolor=red];
18 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
19 [label="Exit function <init>" style="filled" fillcolor=red];
}
20 [label="Exit class Derived" style="filled" fillcolor=red];
13 [label="Enter class Base" style="filled" fillcolor=red];
14 [label="Exit class Base" style="filled" fillcolor=red];
}
13 -> {14} [color=green];
13 -> {20} [style=dotted];
13 -> {14 17} [style=dashed];
14 -> {15};
15 -> {16};
16 -> {17} [color=green];
17 -> {18};
18 -> {19};
19 -> {20} [color=green];
subgraph cluster_8 {
subgraph cluster_6 {
color=red
21 [label="Enter function test" style="filled" fillcolor=red];
subgraph cluster_9 {
15 [label="Enter class Derived" style="filled" fillcolor=red];
subgraph cluster_7 {
color=blue
22 [label="Enter block"];
23 [label="Access variable R|<local>/a|"];
24 [label="Enter safe call"];
25 [label="Access variable R|/A.path|"];
26 [label="Exit safe call"];
27 [label="Exit lhs of ?:"];
28 [label="Enter rhs of ?:"];
29 [label="Const: Null(null)"];
30 [label="Jump: ^test Null(null)"];
31 [label="Stub" style="filled" fillcolor=gray];
32 [label="Lhs of ?: is not null"];
33 [label="Exit ?:"];
34 [label="Variable declaration: lval path: R|kotlin/String|"];
35 [label="Access variable R|<local>/a|"];
36 [label="Smart cast: R|<local>/a|"];
37 [label="Access variable R|/A.index|"];
38 [label="Function call: R|/takeInt|(...)" style="filled" fillcolor=yellow];
39 [label="Enter anonymous object"];
subgraph cluster_10 {
16 [label="Enter property" style="filled" fillcolor=red];
17 [label="Access variable R|<local>/index|"];
18 [label="Exit property" style="filled" fillcolor=red];
}
subgraph cluster_8 {
color=blue
19 [label="Enter function <init>" style="filled" fillcolor=red];
20 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
21 [label="Exit function <init>" style="filled" fillcolor=red];
}
22 [label="Exit class Derived" style="filled" fillcolor=red];
}
15 -> {16} [color=green];
15 -> {22} [style=dotted];
15 -> {16 19} [style=dashed];
16 -> {17};
17 -> {18};
18 -> {19} [color=green];
19 -> {20};
20 -> {21};
21 -> {22} [color=green];
subgraph cluster_9 {
color=red
23 [label="Enter function test" style="filled" fillcolor=red];
subgraph cluster_10 {
color=blue
24 [label="Enter block"];
25 [label="Access variable R|<local>/a|"];
26 [label="Enter safe call"];
27 [label="Access variable R|/A.path|"];
28 [label="Exit safe call"];
29 [label="Exit lhs of ?:"];
30 [label="Enter rhs of ?:"];
31 [label="Const: Null(null)"];
32 [label="Jump: ^test Null(null)"];
33 [label="Stub" style="filled" fillcolor=gray];
34 [label="Lhs of ?: is not null"];
35 [label="Exit ?:"];
36 [label="Variable declaration: lval path: R|kotlin/String|"];
37 [label="Access variable R|<local>/a|"];
38 [label="Smart cast: R|<local>/a|"];
39 [label="Access variable R|/A.index|"];
40 [label="Function call: R|/takeInt|(...)" style="filled" fillcolor=yellow];
41 [label="Enter anonymous object"];
subgraph cluster_11 {
color=blue
40 [label="Enter class <anonymous object>" style="filled" fillcolor=red];
subgraph cluster_11 {
color=blue
41 [label="Enter field" style="filled" fillcolor=red];
42 [label="Access variable R|<local>/a|"];
43 [label="Smart cast: R|<local>/a|"];
44 [label="Access variable R|/A.index|"];
45 [label="Function call: R|/Derived.Derived|(...)" style="filled" fillcolor=yellow];
46 [label="Exit field" style="filled" fillcolor=red];
}
42 [label="Enter class <anonymous object>" style="filled" fillcolor=red];
subgraph cluster_12 {
color=blue
47 [label="Enter property" style="filled" fillcolor=red];
48 [label="Access variable R|<local>/a|"];
49 [label="Smart cast: R|<local>/a|"];
50 [label="Access variable R|/A.index|"];
51 [label="Exit property" style="filled" fillcolor=red];
43 [label="Enter field" style="filled" fillcolor=red];
44 [label="Access variable R|<local>/a|"];
45 [label="Smart cast: R|<local>/a|"];
46 [label="Access variable R|/A.index|"];
47 [label="Function call: R|/Derived.Derived|(...)" style="filled" fillcolor=yellow];
48 [label="Exit field" style="filled" fillcolor=red];
}
subgraph cluster_13 {
color=blue
52 [label="Enter function <init>" style="filled" fillcolor=red];
53 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
54 [label="Exit function <init>" style="filled" fillcolor=red];
49 [label="Enter property" style="filled" fillcolor=red];
50 [label="Access variable R|<local>/a|"];
51 [label="Smart cast: R|<local>/a|"];
52 [label="Access variable R|/A.index|"];
53 [label="Exit property" style="filled" fillcolor=red];
}
55 [label="Exit class <anonymous object>" style="filled" fillcolor=red];
subgraph cluster_14 {
color=blue
54 [label="Enter function <init>" style="filled" fillcolor=red];
55 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
56 [label="Exit function <init>" style="filled" fillcolor=red];
}
57 [label="Exit class <anonymous object>" style="filled" fillcolor=red];
}
56 [label="Exit anonymous object expression"];
57 [label="Jump: ^test object : R|Base| {
58 [label="Exit anonymous object expression"];
59 [label="Jump: ^test object : R|Base| {
private constructor(): R|<anonymous>| {
super<R|kotlin/Any|>()
}
@@ -141,95 +148,95 @@ digraph smartcastInByClause_kt {
}
"];
58 [label="Stub" style="filled" fillcolor=gray];
59 [label="Exit block" style="filled" fillcolor=gray];
60 [label="Stub" style="filled" fillcolor=gray];
61 [label="Exit block" style="filled" fillcolor=gray];
}
60 [label="Exit function test" style="filled" fillcolor=red];
62 [label="Exit function test" style="filled" fillcolor=red];
}
subgraph cluster_14 {
subgraph cluster_15 {
color=blue
61 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_15 {
63 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_16 {
color=blue
62 [label="Enter block"];
63 [label="Access variable R|<local>/a|"];
64 [label="Smart cast: R|<local>/a|"];
65 [label="Access variable R|/A.index|"];
66 [label="Function call: R|/takeInt|(...)" style="filled" fillcolor=yellow];
67 [label="Exit block"];
64 [label="Enter block"];
65 [label="Access variable R|<local>/a|"];
66 [label="Smart cast: R|<local>/a|"];
67 [label="Access variable R|/A.index|"];
68 [label="Function call: R|/takeInt|(...)" style="filled" fillcolor=yellow];
69 [label="Exit block"];
}
68 [label="Exit function foo" style="filled" fillcolor=red];
70 [label="Exit function foo" style="filled" fillcolor=red];
}
21 -> {22};
22 -> {23};
23 -> {24 28};
23 -> {24};
24 -> {25};
25 -> {26};
25 -> {26 30};
26 -> {27};
27 -> {28 32};
27 -> {28};
28 -> {29};
29 -> {30};
30 -> {60};
30 -> {31} [style=dotted];
31 -> {33} [style=dotted];
32 -> {33};
33 -> {34};
29 -> {30 34};
30 -> {31};
31 -> {32};
32 -> {62};
32 -> {33} [style=dotted];
33 -> {35} [style=dotted];
34 -> {35};
35 -> {36};
36 -> {37};
37 -> {38};
38 -> {39};
39 -> {40};
39 -> {56} [style=dotted];
39 -> {40} [style=dashed];
40 -> {41};
40 -> {47 52 61} [color=red];
40 -> {55} [style=dotted];
40 -> {41 47 52} [style=dashed];
41 -> {42};
41 -> {58} [style=dotted];
41 -> {42} [style=dashed];
42 -> {43};
42 -> {49 54 63} [color=red];
42 -> {57} [style=dotted];
42 -> {43 49 54} [style=dashed];
43 -> {44};
44 -> {45};
45 -> {46};
46 -> {47} [color=green];
46 -> {55} [color=red];
46 -> {47};
47 -> {48};
48 -> {49};
48 -> {49} [color=green];
48 -> {57} [color=red];
49 -> {50};
50 -> {51};
51 -> {52} [color=green];
51 -> {55} [color=red];
51 -> {52};
52 -> {53};
53 -> {54};
53 -> {54} [color=green];
53 -> {57} [color=red];
54 -> {55};
55 -> {56};
55 -> {61} [color=green];
55 -> {61} [style=dashed];
56 -> {57};
57 -> {60};
57 -> {58} [style=dotted];
58 -> {59} [style=dotted];
57 -> {58};
57 -> {63} [color=green];
57 -> {63} [style=dashed];
58 -> {59};
59 -> {62};
59 -> {60} [style=dotted];
61 -> {62};
62 -> {63};
60 -> {61} [style=dotted];
61 -> {62} [style=dotted];
63 -> {64};
64 -> {65};
65 -> {66};
66 -> {67};
67 -> {68};
subgraph cluster_16 {
color=red
69 [label="Enter function takeInt" style="filled" fillcolor=red];
subgraph cluster_17 {
color=blue
70 [label="Enter block"];
71 [label="Exit block"];
}
72 [label="Exit function takeInt" style="filled" fillcolor=red];
}
68 -> {69};
69 -> {70};
70 -> {71};
subgraph cluster_17 {
color=red
71 [label="Enter function takeInt" style="filled" fillcolor=red];
subgraph cluster_18 {
color=blue
72 [label="Enter block"];
73 [label="Exit block"];
}
74 [label="Exit function takeInt" style="filled" fillcolor=red];
}
71 -> {72};
72 -> {73};
73 -> {74};
}
@@ -5,248 +5,253 @@ digraph smartcastToNothing_kt {
subgraph cluster_0 {
color=red
0 [label="Enter function getNothing" style="filled" fillcolor=red];
subgraph cluster_1 {
0 [label="Enter file smartcastToNothing.kt" style="filled" fillcolor=red];
1 [label="Exit file smartcastToNothing.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter function getNothing" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
1 [label="Enter block"];
2 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
3 [label="Throw: throw R|java/lang/Exception.Exception|()"];
4 [label="Stub" style="filled" fillcolor=gray];
5 [label="Jump: ^getNothing throw R|java/lang/Exception.Exception|()" style="filled" fillcolor=gray];
3 [label="Enter block"];
4 [label="Function call: R|java/lang/Exception.Exception|()" style="filled" fillcolor=yellow];
5 [label="Throw: throw R|java/lang/Exception.Exception|()"];
6 [label="Stub" style="filled" fillcolor=gray];
7 [label="Exit block" style="filled" fillcolor=gray];
7 [label="Jump: ^getNothing throw R|java/lang/Exception.Exception|()" style="filled" fillcolor=gray];
8 [label="Stub" style="filled" fillcolor=gray];
9 [label="Exit block" style="filled" fillcolor=gray];
}
8 [label="Exit function getNothing" style="filled" fillcolor=gray];
10 [label="Exit function getNothing" style="filled" fillcolor=gray];
}
0 -> {1};
1 -> {2};
2 -> {3};
3 -> {4} [style=dotted];
4 -> {5} [style=dotted];
5 -> {6 8} [style=dotted];
3 -> {4};
4 -> {5};
5 -> {6} [style=dotted];
6 -> {7} [style=dotted];
7 -> {8} [style=dotted];
7 -> {8 10} [style=dotted];
8 -> {9} [style=dotted];
9 -> {10} [style=dotted];
subgraph cluster_2 {
subgraph cluster_3 {
color=red
9 [label="Enter function getNullableNothing" style="filled" fillcolor=red];
subgraph cluster_3 {
11 [label="Enter function getNullableNothing" style="filled" fillcolor=red];
subgraph cluster_4 {
color=blue
10 [label="Enter block"];
11 [label="Const: Null(null)"];
12 [label="Jump: ^getNullableNothing Null(null)"];
13 [label="Stub" style="filled" fillcolor=gray];
14 [label="Exit block" style="filled" fillcolor=gray];
12 [label="Enter block"];
13 [label="Const: Null(null)"];
14 [label="Jump: ^getNullableNothing Null(null)"];
15 [label="Stub" style="filled" fillcolor=gray];
16 [label="Exit block" style="filled" fillcolor=gray];
}
15 [label="Exit function getNullableNothing" style="filled" fillcolor=red];
17 [label="Exit function getNullableNothing" style="filled" fillcolor=red];
}
9 -> {10};
10 -> {11};
11 -> {12};
12 -> {15};
12 -> {13} [style=dotted];
13 -> {14} [style=dotted];
12 -> {13};
13 -> {14};
14 -> {17};
14 -> {15} [style=dotted];
15 -> {16} [style=dotted];
16 -> {17} [style=dotted];
subgraph cluster_4 {
subgraph cluster_5 {
color=red
16 [label="Enter function <getter>" style="filled" fillcolor=red];
subgraph cluster_5 {
18 [label="Enter function <getter>" style="filled" fillcolor=red];
subgraph cluster_6 {
color=blue
17 [label="Enter block"];
18 [label="Const: Int(1)"];
19 [label="Jump: ^ Int(1)"];
20 [label="Stub" style="filled" fillcolor=gray];
21 [label="Exit block" style="filled" fillcolor=gray];
19 [label="Enter block"];
20 [label="Const: Int(1)"];
21 [label="Jump: ^ Int(1)"];
22 [label="Stub" style="filled" fillcolor=gray];
23 [label="Exit block" style="filled" fillcolor=gray];
}
22 [label="Exit function <getter>" style="filled" fillcolor=red];
24 [label="Exit function <getter>" style="filled" fillcolor=red];
}
16 -> {17};
17 -> {18};
18 -> {19};
19 -> {22};
19 -> {20} [style=dotted];
20 -> {21} [style=dotted];
19 -> {20};
20 -> {21};
21 -> {24};
21 -> {22} [style=dotted];
22 -> {23} [style=dotted];
23 -> {24} [style=dotted];
subgraph cluster_6 {
subgraph cluster_7 {
color=red
23 [label="Enter function <getter>" style="filled" fillcolor=red];
subgraph cluster_7 {
25 [label="Enter function <getter>" style="filled" fillcolor=red];
subgraph cluster_8 {
color=blue
24 [label="Enter block"];
25 [label="Const: Int(2)"];
26 [label="Jump: ^ Int(2)"];
27 [label="Stub" style="filled" fillcolor=gray];
28 [label="Exit block" style="filled" fillcolor=gray];
26 [label="Enter block"];
27 [label="Const: Int(2)"];
28 [label="Jump: ^ Int(2)"];
29 [label="Stub" style="filled" fillcolor=gray];
30 [label="Exit block" style="filled" fillcolor=gray];
}
29 [label="Exit function <getter>" style="filled" fillcolor=red];
31 [label="Exit function <getter>" style="filled" fillcolor=red];
}
23 -> {24};
24 -> {25};
25 -> {26};
26 -> {29};
26 -> {27} [style=dotted];
27 -> {28} [style=dotted];
26 -> {27};
27 -> {28};
28 -> {31};
28 -> {29} [style=dotted];
29 -> {30} [style=dotted];
30 -> {31} [style=dotted];
subgraph cluster_8 {
subgraph cluster_9 {
color=red
30 [label="Enter function myListOf" style="filled" fillcolor=red];
subgraph cluster_9 {
32 [label="Enter function myListOf" style="filled" fillcolor=red];
subgraph cluster_10 {
color=blue
31 [label="Enter block"];
32 [label="Const: Null(null)"];
33 [label="Check not null: Null(null)!!" style="filled" fillcolor=yellow];
34 [label="Stub" style="filled" fillcolor=gray];
35 [label="Jump: ^myListOf Null(null)!!" style="filled" fillcolor=gray];
33 [label="Enter block"];
34 [label="Const: Null(null)"];
35 [label="Check not null: Null(null)!!" style="filled" fillcolor=yellow];
36 [label="Stub" style="filled" fillcolor=gray];
37 [label="Exit block" style="filled" fillcolor=gray];
37 [label="Jump: ^myListOf Null(null)!!" style="filled" fillcolor=gray];
38 [label="Stub" style="filled" fillcolor=gray];
39 [label="Exit block" style="filled" fillcolor=gray];
}
38 [label="Exit function myListOf" style="filled" fillcolor=gray];
40 [label="Exit function myListOf" style="filled" fillcolor=gray];
}
30 -> {31};
31 -> {32};
32 -> {33};
33 -> {34} [style=dotted];
34 -> {35} [style=dotted];
35 -> {36 38} [style=dotted];
33 -> {34};
34 -> {35};
35 -> {36} [style=dotted];
36 -> {37} [style=dotted];
37 -> {38} [style=dotted];
37 -> {38 40} [style=dotted];
38 -> {39} [style=dotted];
39 -> {40} [style=dotted];
subgraph cluster_10 {
subgraph cluster_11 {
color=red
39 [label="Enter class A" style="filled" fillcolor=red];
subgraph cluster_11 {
color=blue
40 [label="Enter property" style="filled" fillcolor=red];
41 [label="Const: Int(1)"];
42 [label="Exit property" style="filled" fillcolor=red];
}
41 [label="Enter class A" style="filled" fillcolor=red];
subgraph cluster_12 {
color=blue
43 [label="Enter property" style="filled" fillcolor=red];
44 [label="Const: Boolean(true)"];
45 [label="Exit property" style="filled" fillcolor=red];
42 [label="Enter property" style="filled" fillcolor=red];
43 [label="Const: Int(1)"];
44 [label="Exit property" style="filled" fillcolor=red];
}
subgraph cluster_13 {
color=blue
46 [label="Enter function <init>" style="filled" fillcolor=red];
47 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
48 [label="Exit function <init>" style="filled" fillcolor=red];
45 [label="Enter property" style="filled" fillcolor=red];
46 [label="Const: Boolean(true)"];
47 [label="Exit property" style="filled" fillcolor=red];
}
49 [label="Exit class A" style="filled" fillcolor=red];
}
39 -> {40} [color=green];
39 -> {49} [style=dotted];
39 -> {40 43 46} [style=dashed];
40 -> {41};
41 -> {42};
42 -> {43} [color=green];
43 -> {44};
44 -> {45};
45 -> {46} [color=green];
46 -> {47};
47 -> {48};
48 -> {49} [color=green];
subgraph cluster_14 {
color=red
50 [label="Enter function test_0" style="filled" fillcolor=red];
subgraph cluster_15 {
subgraph cluster_14 {
color=blue
51 [label="Enter block"];
52 [label="Const: Null(null)"];
53 [label="Variable declaration: lvar s: R|A?|"];
subgraph cluster_16 {
48 [label="Enter function <init>" style="filled" fillcolor=red];
49 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
50 [label="Exit function <init>" style="filled" fillcolor=red];
}
51 [label="Exit class A" style="filled" fillcolor=red];
}
41 -> {42} [color=green];
41 -> {51} [style=dotted];
41 -> {42 45 48} [style=dashed];
42 -> {43};
43 -> {44};
44 -> {45} [color=green];
45 -> {46};
46 -> {47};
47 -> {48} [color=green];
48 -> {49};
49 -> {50};
50 -> {51} [color=green];
subgraph cluster_15 {
color=red
52 [label="Enter function test_0" style="filled" fillcolor=red];
subgraph cluster_16 {
color=blue
53 [label="Enter block"];
54 [label="Const: Null(null)"];
55 [label="Variable declaration: lvar s: R|A?|"];
subgraph cluster_17 {
color=blue
54 [label="Enter block"];
55 [label="Access variable R|<local>/results|"];
56 [label="Function call: R|<local>/results|.R|SubstitutionOverride<kotlin/collections/List.iterator: R|kotlin/collections/Iterator<kotlin/Nothing>|>|()" style="filled" fillcolor=yellow];
57 [label="Variable declaration: lval <iterator>: R|kotlin/collections/Iterator<kotlin/Nothing>|"];
subgraph cluster_17 {
56 [label="Enter block"];
57 [label="Access variable R|<local>/results|"];
58 [label="Function call: R|<local>/results|.R|SubstitutionOverride<kotlin/collections/List.iterator: R|kotlin/collections/Iterator<kotlin/Nothing>|>|()" style="filled" fillcolor=yellow];
59 [label="Variable declaration: lval <iterator>: R|kotlin/collections/Iterator<kotlin/Nothing>|"];
subgraph cluster_18 {
color=blue
58 [label="Enter while loop"];
subgraph cluster_18 {
color=blue
59 [label="Enter loop condition"];
60 [label="Access variable R|<local>/<iterator>|"];
61 [label="Function call: R|<local>/<iterator>|.R|SubstitutionOverride<kotlin/collections/Iterator.hasNext: R|kotlin/Boolean|>|()" style="filled" fillcolor=yellow];
62 [label="Exit loop condition"];
}
60 [label="Enter while loop"];
subgraph cluster_19 {
color=blue
63 [label="Enter loop block"];
subgraph cluster_20 {
61 [label="Enter loop condition"];
62 [label="Access variable R|<local>/<iterator>|"];
63 [label="Function call: R|<local>/<iterator>|.R|SubstitutionOverride<kotlin/collections/Iterator.hasNext: R|kotlin/Boolean|>|()" style="filled" fillcolor=yellow];
64 [label="Exit loop condition"];
}
subgraph cluster_20 {
color=blue
65 [label="Enter loop block"];
subgraph cluster_21 {
color=blue
64 [label="Enter block"];
65 [label="Access variable R|<local>/<iterator>|"];
66 [label="Function call: R|<local>/<iterator>|.R|SubstitutionOverride<kotlin/collections/Iterator.next: R|kotlin/Nothing|>|()" style="filled" fillcolor=yellow];
67 [label="Stub" style="filled" fillcolor=gray];
68 [label="Variable declaration: lval result: R|kotlin/Nothing|" style="filled" fillcolor=gray];
subgraph cluster_21 {
66 [label="Enter block"];
67 [label="Access variable R|<local>/<iterator>|"];
68 [label="Function call: R|<local>/<iterator>|.R|SubstitutionOverride<kotlin/collections/Iterator.next: R|kotlin/Nothing|>|()" style="filled" fillcolor=yellow];
69 [label="Stub" style="filled" fillcolor=gray];
70 [label="Variable declaration: lval result: R|kotlin/Nothing|" style="filled" fillcolor=gray];
subgraph cluster_22 {
color=blue
69 [label="Enter block" style="filled" fillcolor=gray];
70 [label="Access variable R|<local>/result|" style="filled" fillcolor=gray];
71 [label="Stub" style="filled" fillcolor=gray];
72 [label="Assignment: R|<local>/s|" style="filled" fillcolor=gray];
subgraph cluster_22 {
71 [label="Enter block" style="filled" fillcolor=gray];
72 [label="Access variable R|<local>/result|" style="filled" fillcolor=gray];
73 [label="Stub" style="filled" fillcolor=gray];
74 [label="Assignment: R|<local>/s|" style="filled" fillcolor=gray];
subgraph cluster_23 {
color=blue
73 [label="Enter when" style="filled" fillcolor=gray];
subgraph cluster_23 {
color=blue
74 [label="Enter when branch condition " style="filled" fillcolor=gray];
75 [label="Access variable R|<local>/result|" style="filled" fillcolor=gray];
76 [label="Stub" style="filled" fillcolor=gray];
77 [label="Access variable <Unresolved name: b>#" style="filled" fillcolor=gray];
78 [label="Exit when branch condition" style="filled" fillcolor=gray];
}
79 [label="Synthetic else branch" style="filled" fillcolor=gray];
80 [label="Enter when branch result" style="filled" fillcolor=gray];
75 [label="Enter when" style="filled" fillcolor=gray];
subgraph cluster_24 {
color=blue
81 [label="Enter block" style="filled" fillcolor=gray];
82 [label="Jump: break@@@[R|<local>/<iterator>|.R|SubstitutionOverride<kotlin/collections/Iterator.hasNext: R|kotlin/Boolean|>|()] " style="filled" fillcolor=gray];
83 [label="Stub" style="filled" fillcolor=gray];
84 [label="Exit block" style="filled" fillcolor=gray];
76 [label="Enter when branch condition " style="filled" fillcolor=gray];
77 [label="Access variable R|<local>/result|" style="filled" fillcolor=gray];
78 [label="Stub" style="filled" fillcolor=gray];
79 [label="Access variable <Unresolved name: b>#" style="filled" fillcolor=gray];
80 [label="Exit when branch condition" style="filled" fillcolor=gray];
}
85 [label="Exit when branch result" style="filled" fillcolor=gray];
86 [label="Exit when" style="filled" fillcolor=gray];
81 [label="Synthetic else branch" style="filled" fillcolor=gray];
82 [label="Enter when branch result" style="filled" fillcolor=gray];
subgraph cluster_25 {
color=blue
83 [label="Enter block" style="filled" fillcolor=gray];
84 [label="Jump: break@@@[R|<local>/<iterator>|.R|SubstitutionOverride<kotlin/collections/Iterator.hasNext: R|kotlin/Boolean|>|()] " style="filled" fillcolor=gray];
85 [label="Stub" style="filled" fillcolor=gray];
86 [label="Exit block" style="filled" fillcolor=gray];
}
87 [label="Exit when branch result" style="filled" fillcolor=gray];
88 [label="Exit when" style="filled" fillcolor=gray];
}
87 [label="Exit block" style="filled" fillcolor=gray];
89 [label="Exit block" style="filled" fillcolor=gray];
}
88 [label="Exit block" style="filled" fillcolor=gray];
90 [label="Exit block" style="filled" fillcolor=gray];
}
89 [label="Exit loop block" style="filled" fillcolor=gray];
91 [label="Exit loop block" style="filled" fillcolor=gray];
}
90 [label="Exit while loop"];
92 [label="Exit while loop"];
}
91 [label="Exit block"];
93 [label="Exit block"];
}
92 [label="Access variable R|<local>/s|"];
93 [label="Enter safe call"];
94 [label="Postponed enter to lambda"];
subgraph cluster_25 {
94 [label="Access variable R|<local>/s|"];
95 [label="Enter safe call"];
96 [label="Postponed enter to lambda"];
subgraph cluster_26 {
color=blue
95 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_26 {
97 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_27 {
color=blue
96 [label="Enter block"];
97 [label="Access variable R|<local>/it|"];
98 [label="Access variable R|/A.a|"];
99 [label="Exit block"];
98 [label="Enter block"];
99 [label="Access variable R|<local>/it|"];
100 [label="Access variable R|/A.a|"];
101 [label="Exit block"];
}
100 [label="Exit function <anonymous>" style="filled" fillcolor=red];
102 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
101 [label="Postponed exit from lambda"];
102 [label="Function call: $subj$.R|kotlin/let|<R|A|, R|kotlin/Int|>(...)" style="filled" fillcolor=yellow];
103 [label="Exit safe call"];
104 [label="Exit block"];
103 [label="Postponed exit from lambda"];
104 [label="Function call: $subj$.R|kotlin/let|<R|A|, R|kotlin/Int|>(...)" style="filled" fillcolor=yellow];
105 [label="Exit safe call"];
106 [label="Exit block"];
}
105 [label="Exit function test_0" style="filled" fillcolor=red];
107 [label="Exit function test_0" style="filled" fillcolor=red];
}
50 -> {51};
51 -> {52};
52 -> {53};
53 -> {54};
54 -> {55};
@@ -257,12 +262,12 @@ digraph smartcastToNothing_kt {
59 -> {60};
60 -> {61};
61 -> {62};
62 -> {63 90};
62 -> {63};
63 -> {64};
64 -> {65};
64 -> {65 92};
65 -> {66};
66 -> {67} [style=dotted];
67 -> {68} [style=dotted];
66 -> {67};
67 -> {68};
68 -> {69} [style=dotted];
69 -> {70} [style=dotted];
70 -> {71} [style=dotted];
@@ -273,27 +278,27 @@ digraph smartcastToNothing_kt {
75 -> {76} [style=dotted];
76 -> {77} [style=dotted];
77 -> {78} [style=dotted];
78 -> {79 80} [style=dotted];
79 -> {86} [style=dotted];
80 -> {81} [style=dotted];
81 -> {82} [style=dotted];
82 -> {83 90} [style=dotted];
78 -> {79} [style=dotted];
79 -> {80} [style=dotted];
80 -> {81 82} [style=dotted];
81 -> {88} [style=dotted];
82 -> {83} [style=dotted];
83 -> {84} [style=dotted];
84 -> {85} [style=dotted];
84 -> {85 92} [style=dotted];
85 -> {86} [style=dotted];
86 -> {87} [style=dotted];
87 -> {88} [style=dotted];
88 -> {89} [style=dotted];
89 -> {59} [color=green style=dotted];
90 -> {91};
91 -> {92};
92 -> {93 103};
89 -> {90} [style=dotted];
90 -> {91} [style=dotted];
91 -> {61} [color=green style=dotted];
92 -> {93};
93 -> {94};
94 -> {95 102};
94 -> {101} [style=dotted];
94 -> {95} [style=dashed];
94 -> {95 105};
95 -> {96};
96 -> {97};
96 -> {97 104};
96 -> {103} [style=dotted];
96 -> {97} [style=dashed];
97 -> {98};
98 -> {99};
99 -> {100};
@@ -302,82 +307,82 @@ digraph smartcastToNothing_kt {
102 -> {103};
103 -> {104};
104 -> {105};
105 -> {106};
106 -> {107};
subgraph cluster_27 {
subgraph cluster_28 {
color=red
106 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_28 {
108 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_29 {
color=blue
107 [label="Enter block"];
subgraph cluster_29 {
109 [label="Enter block"];
subgraph cluster_30 {
color=blue
108 [label="Enter when"];
subgraph cluster_30 {
color=blue
109 [label="Enter when branch condition "];
110 [label="Access variable R|<local>/a|"];
111 [label="Type operator: (R|<local>/a| is R|kotlin/Nothing?|)"];
112 [label="Exit when branch condition"];
}
113 [label="Synthetic else branch"];
114 [label="Enter when branch result"];
110 [label="Enter when"];
subgraph cluster_31 {
color=blue
115 [label="Enter block"];
116 [label="Access variable R|<local>/a|"];
117 [label="Smart cast: R|<local>/a|"];
118 [label="Enter safe call"];
119 [label="Access variable R|kotlin/String.length|"];
120 [label="Exit safe call"];
121 [label="Variable declaration: lval b: R|kotlin/Int?|"];
122 [label="Exit block"];
111 [label="Enter when branch condition "];
112 [label="Access variable R|<local>/a|"];
113 [label="Type operator: (R|<local>/a| is R|kotlin/Nothing?|)"];
114 [label="Exit when branch condition"];
}
123 [label="Exit when branch result"];
124 [label="Exit when"];
}
subgraph cluster_32 {
color=blue
125 [label="Enter when"];
subgraph cluster_33 {
115 [label="Synthetic else branch"];
116 [label="Enter when branch result"];
subgraph cluster_32 {
color=blue
126 [label="Enter when branch condition "];
127 [label="Access variable R|<local>/a|"];
128 [label="Type operator: (R|<local>/a| is R|kotlin/Nothing|)"];
129 [label="Exit when branch condition"];
117 [label="Enter block"];
118 [label="Access variable R|<local>/a|"];
119 [label="Smart cast: R|<local>/a|"];
120 [label="Enter safe call"];
121 [label="Access variable R|kotlin/String.length|"];
122 [label="Exit safe call"];
123 [label="Variable declaration: lval b: R|kotlin/Int?|"];
124 [label="Exit block"];
}
130 [label="Synthetic else branch"];
131 [label="Enter when branch result"];
125 [label="Exit when branch result"];
126 [label="Exit when"];
}
subgraph cluster_33 {
color=blue
127 [label="Enter when"];
subgraph cluster_34 {
color=blue
132 [label="Enter block"];
133 [label="Access variable R|<local>/a|"];
134 [label="Smart cast: R|<local>/a|"];
135 [label="Stub" style="filled" fillcolor=gray];
136 [label="Access variable R|kotlin/String.length|" style="filled" fillcolor=gray];
137 [label="Variable declaration: lval b: R|kotlin/Int|" style="filled" fillcolor=gray];
138 [label="Exit block" style="filled" fillcolor=gray];
128 [label="Enter when branch condition "];
129 [label="Access variable R|<local>/a|"];
130 [label="Type operator: (R|<local>/a| is R|kotlin/Nothing|)"];
131 [label="Exit when branch condition"];
}
139 [label="Exit when branch result" style="filled" fillcolor=gray];
140 [label="Exit when"];
132 [label="Synthetic else branch"];
133 [label="Enter when branch result"];
subgraph cluster_35 {
color=blue
134 [label="Enter block"];
135 [label="Access variable R|<local>/a|"];
136 [label="Smart cast: R|<local>/a|"];
137 [label="Stub" style="filled" fillcolor=gray];
138 [label="Access variable R|kotlin/String.length|" style="filled" fillcolor=gray];
139 [label="Variable declaration: lval b: R|kotlin/Int|" style="filled" fillcolor=gray];
140 [label="Exit block" style="filled" fillcolor=gray];
}
141 [label="Exit when branch result" style="filled" fillcolor=gray];
142 [label="Exit when"];
}
141 [label="Exit block"];
143 [label="Exit block"];
}
142 [label="Exit function test_1" style="filled" fillcolor=red];
144 [label="Exit function test_1" style="filled" fillcolor=red];
}
106 -> {107};
107 -> {108};
108 -> {109};
109 -> {110};
110 -> {111};
111 -> {112};
112 -> {113 114};
113 -> {124};
114 -> {115};
115 -> {116};
112 -> {113};
113 -> {114};
114 -> {115 116};
115 -> {126};
116 -> {117};
117 -> {118 120};
117 -> {118};
118 -> {119};
119 -> {120};
119 -> {120 122};
120 -> {121};
121 -> {122};
122 -> {123};
@@ -387,18 +392,20 @@ digraph smartcastToNothing_kt {
126 -> {127};
127 -> {128};
128 -> {129};
129 -> {130 131};
130 -> {140};
131 -> {132};
132 -> {133};
129 -> {130};
130 -> {131};
131 -> {132 133};
132 -> {142};
133 -> {134};
134 -> {135} [style=dotted];
135 -> {136} [style=dotted];
134 -> {135};
135 -> {136};
136 -> {137} [style=dotted];
137 -> {138} [style=dotted];
138 -> {139} [style=dotted];
139 -> {140} [style=dotted];
140 -> {141};
141 -> {142};
140 -> {141} [style=dotted];
141 -> {142} [style=dotted];
142 -> {143};
143 -> {144};
}
@@ -5,94 +5,99 @@ digraph overridenOpenVal_kt {
subgraph cluster_0 {
color=red
0 [label="Enter class A" style="filled" fillcolor=red];
subgraph cluster_1 {
color=blue
1 [label="Enter property" style="filled" fillcolor=red];
2 [label="Access variable R|<local>/x|"];
3 [label="Exit property" style="filled" fillcolor=red];
}
subgraph cluster_2 {
color=blue
4 [label="Enter function <init>" style="filled" fillcolor=red];
5 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
6 [label="Exit function <init>" style="filled" fillcolor=red];
}
7 [label="Exit class A" style="filled" fillcolor=red];
0 [label="Enter file overridenOpenVal.kt" style="filled" fillcolor=red];
1 [label="Exit file overridenOpenVal.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
0 -> {7} [style=dotted];
0 -> {1 4} [style=dashed];
1 -> {2};
2 -> {3};
3 -> {4} [color=green];
4 -> {5};
5 -> {6};
6 -> {7} [color=green];
subgraph cluster_3 {
subgraph cluster_1 {
color=red
8 [label="Enter class B" style="filled" fillcolor=red];
subgraph cluster_4 {
2 [label="Enter class A" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
9 [label="Enter function <init>" style="filled" fillcolor=red];
10 [label="Access variable R|<local>/x|"];
11 [label="Delegated constructor call: super<R|A|>(...)" style="filled" fillcolor=yellow];
12 [label="Exit function <init>" style="filled" fillcolor=red];
3 [label="Enter property" style="filled" fillcolor=red];
4 [label="Access variable R|<local>/x|"];
5 [label="Exit property" style="filled" fillcolor=red];
}
13 [label="Exit class B" style="filled" fillcolor=red];
}
8 -> {9} [color=green];
8 -> {13} [style=dotted];
8 -> {9} [style=dashed];
9 -> {10};
10 -> {11};
11 -> {12};
12 -> {13} [color=green];
subgraph cluster_5 {
color=red
14 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_6 {
subgraph cluster_3 {
color=blue
15 [label="Enter block"];
subgraph cluster_7 {
6 [label="Enter function <init>" style="filled" fillcolor=red];
7 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
8 [label="Exit function <init>" style="filled" fillcolor=red];
}
9 [label="Exit class A" style="filled" fillcolor=red];
}
2 -> {3} [color=green];
2 -> {9} [style=dotted];
2 -> {3 6} [style=dashed];
3 -> {4};
4 -> {5};
5 -> {6} [color=green];
6 -> {7};
7 -> {8};
8 -> {9} [color=green];
subgraph cluster_4 {
color=red
10 [label="Enter class B" style="filled" fillcolor=red];
subgraph cluster_5 {
color=blue
11 [label="Enter function <init>" style="filled" fillcolor=red];
12 [label="Access variable R|<local>/x|"];
13 [label="Delegated constructor call: super<R|A|>(...)" style="filled" fillcolor=yellow];
14 [label="Exit function <init>" style="filled" fillcolor=red];
}
15 [label="Exit class B" style="filled" fillcolor=red];
}
10 -> {11} [color=green];
10 -> {15} [style=dotted];
10 -> {11} [style=dashed];
11 -> {12};
12 -> {13};
13 -> {14};
14 -> {15} [color=green];
subgraph cluster_6 {
color=red
16 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_7 {
color=blue
17 [label="Enter block"];
subgraph cluster_8 {
color=blue
16 [label="Enter when"];
subgraph cluster_8 {
color=blue
17 [label="Enter when branch condition "];
18 [label="Access variable R|/A.x|"];
19 [label="Type operator: (this@R|/B|.R|/A.x| is R|kotlin/String|)"];
20 [label="Exit when branch condition"];
}
21 [label="Synthetic else branch"];
22 [label="Enter when branch result"];
18 [label="Enter when"];
subgraph cluster_9 {
color=blue
23 [label="Enter block"];
24 [label="Access variable R|/A.x|"];
25 [label="Smart cast: this@R|/B|.R|/A.x|"];
26 [label="Access variable R|kotlin/String.length|"];
27 [label="Exit block"];
19 [label="Enter when branch condition "];
20 [label="Access variable R|/A.x|"];
21 [label="Type operator: (this@R|/B|.R|/A.x| is R|kotlin/String|)"];
22 [label="Exit when branch condition"];
}
28 [label="Exit when branch result"];
29 [label="Exit when"];
23 [label="Synthetic else branch"];
24 [label="Enter when branch result"];
subgraph cluster_10 {
color=blue
25 [label="Enter block"];
26 [label="Access variable R|/A.x|"];
27 [label="Smart cast: this@R|/B|.R|/A.x|"];
28 [label="Access variable R|kotlin/String.length|"];
29 [label="Exit block"];
}
30 [label="Exit when branch result"];
31 [label="Exit when"];
}
30 [label="Exit block"];
32 [label="Exit block"];
}
31 [label="Exit function test_1" style="filled" fillcolor=red];
33 [label="Exit function test_1" style="filled" fillcolor=red];
}
14 -> {15};
15 -> {16};
16 -> {17};
17 -> {18};
18 -> {19};
19 -> {20};
20 -> {21 22};
21 -> {29};
22 -> {23};
23 -> {24};
20 -> {21};
21 -> {22};
22 -> {23 24};
23 -> {31};
24 -> {25};
25 -> {26};
26 -> {27};
@@ -100,53 +105,53 @@ digraph overridenOpenVal_kt {
28 -> {29};
29 -> {30};
30 -> {31};
31 -> {32};
32 -> {33};
subgraph cluster_10 {
subgraph cluster_11 {
color=red
32 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_11 {
34 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_12 {
color=blue
33 [label="Enter block"];
subgraph cluster_12 {
35 [label="Enter block"];
subgraph cluster_13 {
color=blue
34 [label="Enter when"];
subgraph cluster_13 {
color=blue
35 [label="Enter when branch condition "];
36 [label="Access variable R|<local>/b|"];
37 [label="Access variable R|/A.x|"];
38 [label="Type operator: (R|<local>/b|.R|/A.x| is R|kotlin/String|)"];
39 [label="Exit when branch condition"];
}
40 [label="Synthetic else branch"];
41 [label="Enter when branch result"];
36 [label="Enter when"];
subgraph cluster_14 {
color=blue
42 [label="Enter block"];
43 [label="Access variable R|<local>/b|"];
44 [label="Access variable R|/A.x|"];
45 [label="Smart cast: R|<local>/b|.R|/A.x|"];
46 [label="Access variable R|kotlin/String.length|"];
47 [label="Exit block"];
37 [label="Enter when branch condition "];
38 [label="Access variable R|<local>/b|"];
39 [label="Access variable R|/A.x|"];
40 [label="Type operator: (R|<local>/b|.R|/A.x| is R|kotlin/String|)"];
41 [label="Exit when branch condition"];
}
48 [label="Exit when branch result"];
49 [label="Exit when"];
42 [label="Synthetic else branch"];
43 [label="Enter when branch result"];
subgraph cluster_15 {
color=blue
44 [label="Enter block"];
45 [label="Access variable R|<local>/b|"];
46 [label="Access variable R|/A.x|"];
47 [label="Smart cast: R|<local>/b|.R|/A.x|"];
48 [label="Access variable R|kotlin/String.length|"];
49 [label="Exit block"];
}
50 [label="Exit when branch result"];
51 [label="Exit when"];
}
50 [label="Exit block"];
52 [label="Exit block"];
}
51 [label="Exit function test_2" style="filled" fillcolor=red];
53 [label="Exit function test_2" style="filled" fillcolor=red];
}
32 -> {33};
33 -> {34};
34 -> {35};
35 -> {36};
36 -> {37};
37 -> {38};
38 -> {39};
39 -> {40 41};
40 -> {49};
41 -> {42};
42 -> {43};
39 -> {40};
40 -> {41};
41 -> {42 43};
42 -> {51};
43 -> {44};
44 -> {45};
45 -> {46};
@@ -155,5 +160,7 @@ digraph overridenOpenVal_kt {
48 -> {49};
49 -> {50};
50 -> {51};
51 -> {52};
52 -> {53};
}
@@ -5,103 +5,108 @@ digraph delayedAssignment_kt {
subgraph cluster_0 {
color=red
0 [label="Enter class A" style="filled" fillcolor=red];
subgraph cluster_1 {
color=blue
1 [label="Enter function <init>" style="filled" fillcolor=red];
2 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
3 [label="Exit function <init>" style="filled" fillcolor=red];
}
4 [label="Exit class A" style="filled" fillcolor=red];
0 [label="Enter file delayedAssignment.kt" style="filled" fillcolor=red];
1 [label="Exit file delayedAssignment.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
0 -> {4} [style=dotted];
0 -> {1} [style=dashed];
1 -> {2};
2 -> {3};
3 -> {4} [color=green];
subgraph cluster_2 {
subgraph cluster_1 {
color=red
5 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_3 {
2 [label="Enter class A" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
6 [label="Enter block"];
7 [label="Exit block"];
3 [label="Enter function <init>" style="filled" fillcolor=red];
4 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
5 [label="Exit function <init>" style="filled" fillcolor=red];
}
8 [label="Exit function foo" style="filled" fillcolor=red];
6 [label="Exit class A" style="filled" fillcolor=red];
}
5 -> {6};
6 -> {7};
7 -> {8};
2 -> {3} [color=green];
2 -> {6} [style=dotted];
2 -> {3} [style=dashed];
3 -> {4};
4 -> {5};
5 -> {6} [color=green];
subgraph cluster_4 {
subgraph cluster_3 {
color=red
9 [label="Enter function test" style="filled" fillcolor=red];
subgraph cluster_5 {
7 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_4 {
color=blue
10 [label="Enter block"];
11 [label="Variable declaration: lval a: R|A?|"];
subgraph cluster_6 {
8 [label="Enter block"];
9 [label="Exit block"];
}
10 [label="Exit function foo" style="filled" fillcolor=red];
}
7 -> {8};
8 -> {9};
9 -> {10};
subgraph cluster_5 {
color=red
11 [label="Enter function test" style="filled" fillcolor=red];
subgraph cluster_6 {
color=blue
12 [label="Enter block"];
13 [label="Variable declaration: lval a: R|A?|"];
subgraph cluster_7 {
color=blue
12 [label="Enter when"];
subgraph cluster_7 {
color=blue
13 [label="Enter when branch condition "];
14 [label="Access variable R|<local>/b|"];
15 [label="Exit when branch condition"];
}
14 [label="Enter when"];
subgraph cluster_8 {
color=blue
16 [label="Enter when branch condition else"];
15 [label="Enter when branch condition "];
16 [label="Access variable R|<local>/b|"];
17 [label="Exit when branch condition"];
}
18 [label="Enter when branch result"];
subgraph cluster_9 {
color=blue
19 [label="Enter block"];
20 [label="Const: Null(null)"];
21 [label="Assignment: R|<local>/a|"];
22 [label="Exit block"];
18 [label="Enter when branch condition else"];
19 [label="Exit when branch condition"];
}
23 [label="Exit when branch result"];
24 [label="Enter when branch result"];
20 [label="Enter when branch result"];
subgraph cluster_10 {
color=blue
25 [label="Enter block"];
26 [label="Function call: R|/A.A|()" style="filled" fillcolor=yellow];
27 [label="Assignment: R|<local>/a|"];
28 [label="Access variable R|<local>/a|"];
29 [label="Smart cast: R|<local>/a|"];
30 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
31 [label="Exit block"];
21 [label="Enter block"];
22 [label="Const: Null(null)"];
23 [label="Assignment: R|<local>/a|"];
24 [label="Exit block"];
}
32 [label="Exit when branch result"];
33 [label="Exit when"];
25 [label="Exit when branch result"];
26 [label="Enter when branch result"];
subgraph cluster_11 {
color=blue
27 [label="Enter block"];
28 [label="Function call: R|/A.A|()" style="filled" fillcolor=yellow];
29 [label="Assignment: R|<local>/a|"];
30 [label="Access variable R|<local>/a|"];
31 [label="Smart cast: R|<local>/a|"];
32 [label="Function call: R|<local>/a|.R|/A.foo|()" style="filled" fillcolor=yellow];
33 [label="Exit block"];
}
34 [label="Exit when branch result"];
35 [label="Exit when"];
}
34 [label="Access variable R|<local>/a|"];
35 [label="Function call: R|<local>/a|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
36 [label="Exit block"];
36 [label="Access variable R|<local>/a|"];
37 [label="Function call: R|<local>/a|.R|/A.foo<Inapplicable(UNSAFE_CALL): /A.foo>#|()" style="filled" fillcolor=yellow];
38 [label="Exit block"];
}
37 [label="Exit function test" style="filled" fillcolor=red];
39 [label="Exit function test" style="filled" fillcolor=red];
}
9 -> {10};
10 -> {11};
11 -> {12};
12 -> {13};
13 -> {14};
14 -> {15};
15 -> {16 24};
15 -> {16};
16 -> {17};
17 -> {18};
17 -> {18 26};
18 -> {19};
19 -> {20};
20 -> {21};
21 -> {22};
22 -> {23};
23 -> {33};
23 -> {24};
24 -> {25};
25 -> {26};
25 -> {35};
26 -> {27};
27 -> {28};
28 -> {29};
@@ -113,5 +118,7 @@ digraph delayedAssignment_kt {
34 -> {35};
35 -> {36};
36 -> {37};
37 -> {38};
38 -> {39};
}
@@ -5,23 +5,28 @@ digraph smartcastAfterReassignment_kt {
subgraph cluster_0 {
color=red
0 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_1 {
color=blue
1 [label="Enter block"];
2 [label="Const: Int(1)"];
3 [label="Variable declaration: lvar x: R|kotlin/Any|"];
4 [label="Const: String()"];
5 [label="Assignment: R|<local>/x|"];
6 [label="Access variable R|<local>/x|"];
7 [label="Smart cast: R|<local>/x|"];
8 [label="Access variable R|kotlin/String.length|"];
9 [label="Exit block"];
}
10 [label="Exit function test_1" style="filled" fillcolor=red];
0 [label="Enter file smartcastAfterReassignment.kt" style="filled" fillcolor=red];
1 [label="Exit file smartcastAfterReassignment.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
3 [label="Enter block"];
4 [label="Const: Int(1)"];
5 [label="Variable declaration: lvar x: R|kotlin/Any|"];
6 [label="Const: String()"];
7 [label="Assignment: R|<local>/x|"];
8 [label="Access variable R|<local>/x|"];
9 [label="Smart cast: R|<local>/x|"];
10 [label="Access variable R|kotlin/String.length|"];
11 [label="Exit block"];
}
12 [label="Exit function test_1" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
2 -> {3};
3 -> {4};
4 -> {5};
@@ -30,47 +35,47 @@ digraph smartcastAfterReassignment_kt {
7 -> {8};
8 -> {9};
9 -> {10};
10 -> {11};
11 -> {12};
subgraph cluster_2 {
subgraph cluster_3 {
color=red
11 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_3 {
13 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_4 {
color=blue
12 [label="Enter block"];
13 [label="Const: Null(null)"];
14 [label="Variable declaration: lvar x: R|kotlin/String?|"];
subgraph cluster_4 {
14 [label="Enter block"];
15 [label="Const: Null(null)"];
16 [label="Variable declaration: lvar x: R|kotlin/String?|"];
subgraph cluster_5 {
color=blue
15 [label="Enter when"];
subgraph cluster_5 {
color=blue
16 [label="Enter when branch condition "];
17 [label="Access variable R|<local>/x|"];
18 [label="Const: Null(null)"];
19 [label="Equality operator =="];
20 [label="Exit when branch condition"];
}
21 [label="Synthetic else branch"];
22 [label="Enter when branch result"];
17 [label="Enter when"];
subgraph cluster_6 {
color=blue
23 [label="Enter block"];
24 [label="Const: String()"];
25 [label="Assignment: R|<local>/x|"];
26 [label="Exit block"];
18 [label="Enter when branch condition "];
19 [label="Access variable R|<local>/x|"];
20 [label="Const: Null(null)"];
21 [label="Equality operator =="];
22 [label="Exit when branch condition"];
}
27 [label="Exit when branch result"];
28 [label="Exit when"];
23 [label="Synthetic else branch"];
24 [label="Enter when branch result"];
subgraph cluster_7 {
color=blue
25 [label="Enter block"];
26 [label="Const: String()"];
27 [label="Assignment: R|<local>/x|"];
28 [label="Exit block"];
}
29 [label="Exit when branch result"];
30 [label="Exit when"];
}
29 [label="Access variable R|<local>/x|"];
30 [label="Smart cast: R|<local>/x|"];
31 [label="Access variable R|kotlin/String.length|"];
32 [label="Exit block"];
31 [label="Access variable R|<local>/x|"];
32 [label="Smart cast: R|<local>/x|"];
33 [label="Access variable R|kotlin/String.length|"];
34 [label="Exit block"];
}
33 [label="Exit function test_2" style="filled" fillcolor=red];
35 [label="Exit function test_2" style="filled" fillcolor=red];
}
11 -> {12};
12 -> {13};
13 -> {14};
14 -> {15};
15 -> {16};
@@ -78,10 +83,10 @@ digraph smartcastAfterReassignment_kt {
17 -> {18};
18 -> {19};
19 -> {20};
20 -> {21 22};
21 -> {28};
22 -> {23};
23 -> {24};
20 -> {21};
21 -> {22};
22 -> {23 24};
23 -> {30};
24 -> {25};
25 -> {26};
26 -> {27};
@@ -91,31 +96,31 @@ digraph smartcastAfterReassignment_kt {
30 -> {31};
31 -> {32};
32 -> {33};
subgraph cluster_7 {
color=red
34 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_8 {
color=blue
35 [label="Enter block"];
36 [label="Const: Null(null)"];
37 [label="Variable declaration: lvar x: R|kotlin/String?|"];
38 [label="Const: String()"];
39 [label="Assignment: R|<local>/x|"];
40 [label="Access variable R|<local>/x|"];
41 [label="Smart cast: R|<local>/x|"];
42 [label="Access variable R|kotlin/String.length|"];
43 [label="Const: Null(null)"];
44 [label="Assignment: R|<local>/x|"];
45 [label="Access variable R|<local>/x|"];
46 [label="Smart cast: R|<local>/x|"];
47 [label="Access variable R|kotlin/String.length<Inapplicable(UNSAFE_CALL): kotlin/String.length>#|"];
48 [label="Exit block"];
}
49 [label="Exit function test_3" style="filled" fillcolor=red];
}
33 -> {34};
34 -> {35};
35 -> {36};
subgraph cluster_8 {
color=red
36 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_9 {
color=blue
37 [label="Enter block"];
38 [label="Const: Null(null)"];
39 [label="Variable declaration: lvar x: R|kotlin/String?|"];
40 [label="Const: String()"];
41 [label="Assignment: R|<local>/x|"];
42 [label="Access variable R|<local>/x|"];
43 [label="Smart cast: R|<local>/x|"];
44 [label="Access variable R|kotlin/String.length|"];
45 [label="Const: Null(null)"];
46 [label="Assignment: R|<local>/x|"];
47 [label="Access variable R|<local>/x|"];
48 [label="Smart cast: R|<local>/x|"];
49 [label="Access variable R|kotlin/String.length<Inapplicable(UNSAFE_CALL): kotlin/String.length>#|"];
50 [label="Exit block"];
}
51 [label="Exit function test_3" style="filled" fillcolor=red];
}
36 -> {37};
37 -> {38};
38 -> {39};
@@ -129,5 +134,7 @@ digraph smartcastAfterReassignment_kt {
46 -> {47};
47 -> {48};
48 -> {49};
49 -> {50};
50 -> {51};
}
@@ -5,109 +5,114 @@ digraph complexPostponedCfg_kt {
subgraph cluster_0 {
color=red
0 [label="Enter class FirBase" style="filled" fillcolor=red];
1 [label="Exit class FirBase" style="filled" fillcolor=red];
0 [label="Enter file complexPostponedCfg.kt" style="filled" fillcolor=red];
1 [label="Exit file complexPostponedCfg.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter class FirFunctionCall" style="filled" fillcolor=red];
3 [label="Exit class FirFunctionCall" style="filled" fillcolor=red];
2 [label="Enter class FirBase" style="filled" fillcolor=red];
3 [label="Exit class FirBase" style="filled" fillcolor=red];
}
2 -> {3} [color=green];
subgraph cluster_2 {
color=red
4 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_3 {
color=blue
5 [label="Enter block"];
6 [label="Access variable R|<local>/statements|"];
7 [label="Function call: R|<local>/statements|.R|kotlin/collections/last|<R|FirBase|>()" style="filled" fillcolor=yellow];
8 [label="Type operator: (R|<local>/statements|.R|kotlin/collections/last|<R|FirBase|>() as R|FirFunctionCall|)"];
9 [label="Postponed enter to lambda"];
subgraph cluster_4 {
color=blue
10 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_5 {
color=blue
11 [label="Enter block"];
12 [label="Postponed enter to lambda"];
subgraph cluster_6 {
color=blue
13 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_7 {
color=blue
14 [label="Enter block"];
15 [label="Access variable this@R|special/anonymous|"];
16 [label="Function call: this@R|special/anonymous|.R|SubstitutionOverride<kotlin/collections/MutableList.add: R|kotlin/Boolean|>|(...)" style="filled" fillcolor=yellow];
17 [label="Access variable R|<local>/arguments|"];
18 [label="Function call: R|<local>/arguments|.R|kotlin/collections/last|<R|FirBase|>()" style="filled" fillcolor=yellow];
19 [label="Type operator: (R|<local>/arguments|.R|kotlin/collections/last|<R|FirBase|>() as R|FirFunctionCall|)"];
20 [label="Postponed enter to lambda"];
subgraph cluster_8 {
color=blue
21 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_9 {
color=blue
22 [label="Enter block"];
23 [label="Access variable this@R|special/anonymous|"];
24 [label="Function call: this@R|special/anonymous|.R|SubstitutionOverride<kotlin/collections/MutableList.add: R|kotlin/Boolean|>|(...)" style="filled" fillcolor=yellow];
25 [label="Access variable R|<local>/explicitReceiver|"];
26 [label="Type operator: (R|<local>/explicitReceiver| as R|FirFunctionCall|)"];
27 [label="Function call: this@R|special/anonymous|.R|SubstitutionOverride<kotlin/collections/MutableList.add: R|kotlin/Boolean|>|(...)" style="filled" fillcolor=yellow];
28 [label="Exit block"];
}
29 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
30 [label="Postponed exit from lambda"];
31 [label="Function call: R|kotlin/with|<R|FirFunctionCall|, R|kotlin/Unit|>(...)" style="filled" fillcolor=yellow];
32 [label="Exit block"];
}
33 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
34 [label="Postponed exit from lambda"];
35 [label="Function call: R|kotlin/collections/buildList|<R|FirFunctionCall|>(...)" style="filled" fillcolor=yellow];
36 [label="Exit block"];
}
37 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
38 [label="Postponed exit from lambda"];
39 [label="Function call: R|kotlin/with|<R|FirFunctionCall|, R|kotlin/collections/List<FirFunctionCall>|>(...)" style="filled" fillcolor=yellow];
40 [label="Variable declaration: lval firstCalls: R|kotlin/collections/List<FirFunctionCall>|"];
41 [label="Access variable R|<local>/firstCalls|"];
42 [label="Jump: ^foo R|<local>/firstCalls|"];
43 [label="Stub" style="filled" fillcolor=gray];
44 [label="Exit block" style="filled" fillcolor=gray];
}
45 [label="Exit function foo" style="filled" fillcolor=red];
4 [label="Enter class FirFunctionCall" style="filled" fillcolor=red];
5 [label="Exit class FirFunctionCall" style="filled" fillcolor=red];
}
4 -> {5} [color=green];
subgraph cluster_3 {
color=red
6 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_4 {
color=blue
7 [label="Enter block"];
8 [label="Access variable R|<local>/statements|"];
9 [label="Function call: R|<local>/statements|.R|kotlin/collections/last|<R|FirBase|>()" style="filled" fillcolor=yellow];
10 [label="Type operator: (R|<local>/statements|.R|kotlin/collections/last|<R|FirBase|>() as R|FirFunctionCall|)"];
11 [label="Postponed enter to lambda"];
subgraph cluster_5 {
color=blue
12 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_6 {
color=blue
13 [label="Enter block"];
14 [label="Postponed enter to lambda"];
subgraph cluster_7 {
color=blue
15 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_8 {
color=blue
16 [label="Enter block"];
17 [label="Access variable this@R|special/anonymous|"];
18 [label="Function call: this@R|special/anonymous|.R|SubstitutionOverride<kotlin/collections/MutableList.add: R|kotlin/Boolean|>|(...)" style="filled" fillcolor=yellow];
19 [label="Access variable R|<local>/arguments|"];
20 [label="Function call: R|<local>/arguments|.R|kotlin/collections/last|<R|FirBase|>()" style="filled" fillcolor=yellow];
21 [label="Type operator: (R|<local>/arguments|.R|kotlin/collections/last|<R|FirBase|>() as R|FirFunctionCall|)"];
22 [label="Postponed enter to lambda"];
subgraph cluster_9 {
color=blue
23 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_10 {
color=blue
24 [label="Enter block"];
25 [label="Access variable this@R|special/anonymous|"];
26 [label="Function call: this@R|special/anonymous|.R|SubstitutionOverride<kotlin/collections/MutableList.add: R|kotlin/Boolean|>|(...)" style="filled" fillcolor=yellow];
27 [label="Access variable R|<local>/explicitReceiver|"];
28 [label="Type operator: (R|<local>/explicitReceiver| as R|FirFunctionCall|)"];
29 [label="Function call: this@R|special/anonymous|.R|SubstitutionOverride<kotlin/collections/MutableList.add: R|kotlin/Boolean|>|(...)" style="filled" fillcolor=yellow];
30 [label="Exit block"];
}
31 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
32 [label="Postponed exit from lambda"];
33 [label="Function call: R|kotlin/with|<R|FirFunctionCall|, R|kotlin/Unit|>(...)" style="filled" fillcolor=yellow];
34 [label="Exit block"];
}
35 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
36 [label="Postponed exit from lambda"];
37 [label="Function call: R|kotlin/collections/buildList|<R|FirFunctionCall|>(...)" style="filled" fillcolor=yellow];
38 [label="Exit block"];
}
39 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
40 [label="Postponed exit from lambda"];
41 [label="Function call: R|kotlin/with|<R|FirFunctionCall|, R|kotlin/collections/List<FirFunctionCall>|>(...)" style="filled" fillcolor=yellow];
42 [label="Variable declaration: lval firstCalls: R|kotlin/collections/List<FirFunctionCall>|"];
43 [label="Access variable R|<local>/firstCalls|"];
44 [label="Jump: ^foo R|<local>/firstCalls|"];
45 [label="Stub" style="filled" fillcolor=gray];
46 [label="Exit block" style="filled" fillcolor=gray];
}
47 [label="Exit function foo" style="filled" fillcolor=red];
}
4 -> {5};
5 -> {6};
6 -> {7};
7 -> {8};
8 -> {9};
9 -> {10 39};
9 -> {38} [style=dotted];
9 -> {10} [style=dashed];
9 -> {10};
10 -> {11};
11 -> {12};
12 -> {13 35};
12 -> {34} [style=dotted];
12 -> {13} [style=dashed];
11 -> {12 41};
11 -> {40} [style=dotted];
11 -> {12} [style=dashed];
12 -> {13};
13 -> {14};
14 -> {15};
14 -> {15 37};
14 -> {36} [style=dotted];
14 -> {15} [style=dashed];
15 -> {16};
16 -> {17};
17 -> {18};
18 -> {19};
19 -> {20};
20 -> {21 31};
20 -> {30} [style=dotted];
20 -> {21} [style=dashed];
20 -> {21};
21 -> {22};
22 -> {23};
22 -> {23 33};
22 -> {32} [style=dotted];
22 -> {23} [style=dashed];
23 -> {24};
24 -> {25};
25 -> {26};
@@ -119,18 +124,20 @@ digraph complexPostponedCfg_kt {
31 -> {32};
32 -> {33};
33 -> {34};
34 -> {35} [color=green];
34 -> {39} [color=red];
34 -> {35};
35 -> {36};
36 -> {37};
36 -> {37} [color=green];
36 -> {41} [color=red];
37 -> {38};
38 -> {39};
39 -> {40};
40 -> {41};
41 -> {42};
42 -> {45};
42 -> {43} [style=dotted];
43 -> {44} [style=dotted];
42 -> {43};
43 -> {44};
44 -> {47};
44 -> {45} [style=dotted];
45 -> {46} [style=dotted];
46 -> {47} [style=dotted];
}
@@ -5,40 +5,45 @@ digraph callsInPlace_kt {
subgraph cluster_0 {
color=red
0 [label="Enter function test" style="filled" fillcolor=red];
subgraph cluster_1 {
color=blue
1 [label="Enter block"];
2 [label="Variable declaration: lval x: R|kotlin/Int|"];
3 [label="Postponed enter to lambda"];
subgraph cluster_2 {
color=blue
4 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_3 {
color=blue
5 [label="Enter block"];
6 [label="Const: Int(1)"];
7 [label="Assignment: R|<local>/x|"];
8 [label="Exit block"];
}
9 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
10 [label="Postponed exit from lambda"];
11 [label="Function call: R|kotlin/run|<R|kotlin/Unit|>(...)" style="filled" fillcolor=yellow];
12 [label="Access variable R|<local>/x|"];
13 [label="Function call: R|<local>/x|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
14 [label="Exit block"];
}
15 [label="Exit function test" style="filled" fillcolor=red];
0 [label="Enter file callsInPlace.kt" style="filled" fillcolor=red];
1 [label="Exit file callsInPlace.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter function test" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
3 [label="Enter block"];
4 [label="Variable declaration: lval x: R|kotlin/Int|"];
5 [label="Postponed enter to lambda"];
subgraph cluster_3 {
color=blue
6 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_4 {
color=blue
7 [label="Enter block"];
8 [label="Const: Int(1)"];
9 [label="Assignment: R|<local>/x|"];
10 [label="Exit block"];
}
11 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
12 [label="Postponed exit from lambda"];
13 [label="Function call: R|kotlin/run|<R|kotlin/Unit|>(...)" style="filled" fillcolor=yellow];
14 [label="Access variable R|<local>/x|"];
15 [label="Function call: R|<local>/x|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
16 [label="Exit block"];
}
17 [label="Exit function test" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
2 -> {3};
3 -> {4 11};
3 -> {10} [style=dotted];
3 -> {4} [style=dashed];
3 -> {4};
4 -> {5};
5 -> {6};
5 -> {6 13};
5 -> {12} [style=dotted];
5 -> {6} [style=dashed];
6 -> {7};
7 -> {8};
8 -> {9};
@@ -48,124 +53,124 @@ digraph callsInPlace_kt {
12 -> {13};
13 -> {14};
14 -> {15};
subgraph cluster_4 {
color=red
16 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_5 {
color=blue
17 [label="Enter block"];
18 [label="Const: Int(10)"];
19 [label="Postponed enter to lambda"];
subgraph cluster_6 {
color=blue
20 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_7 {
color=blue
21 [label="Enter block"];
22 [label="Const: String(test_2)"];
23 [label="Exit block"];
}
24 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
25 [label="Postponed exit from lambda"];
26 [label="Function call: R|kotlin/repeat|(...)" style="filled" fillcolor=yellow];
27 [label="Exit block"];
}
28 [label="Exit function test_2" style="filled" fillcolor=red];
}
15 -> {16};
16 -> {17};
17 -> {18};
subgraph cluster_5 {
color=red
18 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_6 {
color=blue
19 [label="Enter block"];
20 [label="Const: Int(10)"];
21 [label="Postponed enter to lambda"];
subgraph cluster_7 {
color=blue
22 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_8 {
color=blue
23 [label="Enter block"];
24 [label="Const: String(test_2)"];
25 [label="Exit block"];
}
26 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
27 [label="Postponed exit from lambda"];
28 [label="Function call: R|kotlin/repeat|(...)" style="filled" fillcolor=yellow];
29 [label="Exit block"];
}
30 [label="Exit function test_2" style="filled" fillcolor=red];
}
18 -> {19};
19 -> {20 25 26};
19 -> {20} [style=dashed];
19 -> {20};
20 -> {21};
21 -> {22};
21 -> {22 27 28};
21 -> {22} [style=dashed];
22 -> {23};
23 -> {24};
24 -> {25};
25 -> {26};
25 -> {19} [color=green style=dashed];
26 -> {27};
27 -> {28};
subgraph cluster_8 {
color=red
29 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_9 {
color=blue
30 [label="Enter block"];
31 [label="Const: Int(10)"];
32 [label="Postponed enter to lambda"];
subgraph cluster_10 {
color=blue
33 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_11 {
color=blue
34 [label="Enter block"];
35 [label="Const: String(test_3)"];
36 [label="Exit block"];
}
37 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
38 [label="Postponed exit from lambda"];
39 [label="Function call: R|kotlin/repeat|(...)" style="filled" fillcolor=yellow];
40 [label="Exit block"];
}
41 [label="Exit function test_3" style="filled" fillcolor=red];
}
27 -> {21} [color=green style=dashed];
28 -> {29};
29 -> {30};
30 -> {31};
subgraph cluster_9 {
color=red
31 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_10 {
color=blue
32 [label="Enter block"];
33 [label="Const: Int(10)"];
34 [label="Postponed enter to lambda"];
subgraph cluster_11 {
color=blue
35 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_12 {
color=blue
36 [label="Enter block"];
37 [label="Const: String(test_3)"];
38 [label="Exit block"];
}
39 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
40 [label="Postponed exit from lambda"];
41 [label="Function call: R|kotlin/repeat|(...)" style="filled" fillcolor=yellow];
42 [label="Exit block"];
}
43 [label="Exit function test_3" style="filled" fillcolor=red];
}
31 -> {32};
32 -> {33 38 39};
32 -> {33} [style=dashed];
32 -> {33};
33 -> {34};
34 -> {35};
34 -> {35 40 41};
34 -> {35} [style=dashed];
35 -> {36};
36 -> {37};
37 -> {38};
38 -> {39};
38 -> {32} [color=green style=dashed];
39 -> {40};
40 -> {41};
subgraph cluster_12 {
color=red
42 [label="Enter function test_4" style="filled" fillcolor=red];
subgraph cluster_13 {
color=blue
43 [label="Enter block"];
44 [label="Const: Int(1)"];
45 [label="Postponed enter to lambda"];
subgraph cluster_14 {
color=blue
46 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_15 {
color=blue
47 [label="Enter block"];
48 [label="Const: String(test_4)"];
49 [label="Access variable R|<local>/it|"];
50 [label="Const: Int(0)"];
51 [label="Function call: R|<local>/it|.R|kotlin/Int.compareTo|(...)" style="filled" fillcolor=yellow];
52 [label="Comparison >"];
53 [label="Exit block"];
}
54 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
55 [label="Postponed exit from lambda"];
56 [label="Function call: Int(1).R|kotlin/takeUnless|<R|kotlin/Int|>(...)" style="filled" fillcolor=yellow];
57 [label="Exit block"];
}
58 [label="Exit function test_4" style="filled" fillcolor=red];
}
40 -> {34} [color=green style=dashed];
41 -> {42};
42 -> {43};
43 -> {44};
subgraph cluster_13 {
color=red
44 [label="Enter function test_4" style="filled" fillcolor=red];
subgraph cluster_14 {
color=blue
45 [label="Enter block"];
46 [label="Const: Int(1)"];
47 [label="Postponed enter to lambda"];
subgraph cluster_15 {
color=blue
48 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_16 {
color=blue
49 [label="Enter block"];
50 [label="Const: String(test_4)"];
51 [label="Access variable R|<local>/it|"];
52 [label="Const: Int(0)"];
53 [label="Function call: R|<local>/it|.R|kotlin/Int.compareTo|(...)" style="filled" fillcolor=yellow];
54 [label="Comparison >"];
55 [label="Exit block"];
}
56 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
57 [label="Postponed exit from lambda"];
58 [label="Function call: Int(1).R|kotlin/takeUnless|<R|kotlin/Int|>(...)" style="filled" fillcolor=yellow];
59 [label="Exit block"];
}
60 [label="Exit function test_4" style="filled" fillcolor=red];
}
44 -> {45};
45 -> {46 56};
45 -> {55} [style=dotted];
45 -> {46} [style=dashed];
45 -> {46};
46 -> {47};
47 -> {48};
47 -> {48 58};
47 -> {57} [style=dotted];
47 -> {48} [style=dashed];
48 -> {49};
49 -> {50};
50 -> {51};
@@ -176,44 +181,44 @@ digraph callsInPlace_kt {
55 -> {56};
56 -> {57};
57 -> {58};
subgraph cluster_16 {
color=red
59 [label="Enter function test_5" style="filled" fillcolor=red];
subgraph cluster_17 {
color=blue
60 [label="Enter block"];
61 [label="Const: Int(1)"];
62 [label="Postponed enter to lambda"];
subgraph cluster_18 {
color=blue
63 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_19 {
color=blue
64 [label="Enter block"];
65 [label="Const: String(test_5)"];
66 [label="Access variable R|<local>/it|"];
67 [label="Const: Int(0)"];
68 [label="Function call: R|<local>/it|.R|kotlin/Int.compareTo|(...)" style="filled" fillcolor=yellow];
69 [label="Comparison >"];
70 [label="Exit block"];
}
71 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
72 [label="Postponed exit from lambda"];
73 [label="Function call: Int(1).R|kotlin/takeUnless|<R|kotlin/Int|>(...)" style="filled" fillcolor=yellow];
74 [label="Exit block"];
}
75 [label="Exit function test_5" style="filled" fillcolor=red];
}
58 -> {59};
59 -> {60};
60 -> {61};
subgraph cluster_17 {
color=red
61 [label="Enter function test_5" style="filled" fillcolor=red];
subgraph cluster_18 {
color=blue
62 [label="Enter block"];
63 [label="Const: Int(1)"];
64 [label="Postponed enter to lambda"];
subgraph cluster_19 {
color=blue
65 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_20 {
color=blue
66 [label="Enter block"];
67 [label="Const: String(test_5)"];
68 [label="Access variable R|<local>/it|"];
69 [label="Const: Int(0)"];
70 [label="Function call: R|<local>/it|.R|kotlin/Int.compareTo|(...)" style="filled" fillcolor=yellow];
71 [label="Comparison >"];
72 [label="Exit block"];
}
73 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
74 [label="Postponed exit from lambda"];
75 [label="Function call: Int(1).R|kotlin/takeUnless|<R|kotlin/Int|>(...)" style="filled" fillcolor=yellow];
76 [label="Exit block"];
}
77 [label="Exit function test_5" style="filled" fillcolor=red];
}
61 -> {62};
62 -> {63 73};
62 -> {72} [style=dotted];
62 -> {63} [style=dashed];
62 -> {63};
63 -> {64};
64 -> {65};
64 -> {65 75};
64 -> {74} [style=dotted];
64 -> {65} [style=dashed];
65 -> {66};
66 -> {67};
67 -> {68};
@@ -224,189 +229,191 @@ digraph callsInPlace_kt {
72 -> {73};
73 -> {74};
74 -> {75};
subgraph cluster_20 {
color=red
76 [label="Enter function myRun" style="filled" fillcolor=red];
subgraph cluster_21 {
color=blue
77 [label="Enter block"];
78 [label="Function call: R|<local>/block1|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
79 [label="Function call: R|<local>/block2|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
80 [label="Exit block"];
}
81 [label="Exit function myRun" style="filled" fillcolor=red];
}
75 -> {76};
76 -> {77};
77 -> {78};
subgraph cluster_21 {
color=red
78 [label="Enter function myRun" style="filled" fillcolor=red];
subgraph cluster_22 {
color=blue
79 [label="Enter block"];
80 [label="Function call: R|<local>/block1|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
81 [label="Function call: R|<local>/block2|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
82 [label="Exit block"];
}
83 [label="Exit function myRun" style="filled" fillcolor=red];
}
78 -> {79};
79 -> {80};
80 -> {81};
subgraph cluster_22 {
color=red
82 [label="Enter function test_6" style="filled" fillcolor=red];
subgraph cluster_23 {
color=blue
83 [label="Enter block"];
84 [label="Postponed enter to lambda"];
subgraph cluster_24 {
color=blue
85 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_25 {
color=blue
86 [label="Enter block"];
87 [label="Const: String(test_6_2)"];
88 [label="Exit block"];
}
89 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
subgraph cluster_26 {
color=blue
90 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_27 {
color=blue
91 [label="Enter block"];
92 [label="Const: String(test_6_1)"];
93 [label="Exit block"];
}
94 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
95 [label="Postponed exit from lambda"];
96 [label="Postponed exit from lambda"];
97 [label="Function call: R|/myRun|(...)" style="filled" fillcolor=yellow];
98 [label="Exit block"];
}
99 [label="Exit function test_6" style="filled" fillcolor=red];
}
81 -> {82};
82 -> {83};
83 -> {84};
84 -> {85 90 95 96 97};
84 -> {85 90} [style=dashed];
subgraph cluster_23 {
color=red
84 [label="Enter function test_6" style="filled" fillcolor=red];
subgraph cluster_24 {
color=blue
85 [label="Enter block"];
86 [label="Postponed enter to lambda"];
subgraph cluster_25 {
color=blue
87 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_26 {
color=blue
88 [label="Enter block"];
89 [label="Const: String(test_6_2)"];
90 [label="Exit block"];
}
91 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
subgraph cluster_27 {
color=blue
92 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_28 {
color=blue
93 [label="Enter block"];
94 [label="Const: String(test_6_1)"];
95 [label="Exit block"];
}
96 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
97 [label="Postponed exit from lambda"];
98 [label="Postponed exit from lambda"];
99 [label="Function call: R|/myRun|(...)" style="filled" fillcolor=yellow];
100 [label="Exit block"];
}
101 [label="Exit function test_6" style="filled" fillcolor=red];
}
84 -> {85};
85 -> {86};
86 -> {87};
86 -> {87 92 97 98 99};
86 -> {87 92} [style=dashed];
87 -> {88};
88 -> {89};
89 -> {95};
89 -> {90};
90 -> {91};
91 -> {92};
91 -> {97};
92 -> {93};
93 -> {94};
94 -> {96};
95 -> {97};
95 -> {84} [color=green style=dashed];
96 -> {97};
96 -> {84} [color=green style=dashed];
97 -> {98};
94 -> {95};
95 -> {96};
96 -> {98};
97 -> {99};
97 -> {86} [color=green style=dashed];
98 -> {99};
subgraph cluster_28 {
color=red
100 [label="Enter function test_7" style="filled" fillcolor=red];
subgraph cluster_29 {
color=blue
101 [label="Enter block"];
102 [label="Postponed enter to lambda"];
subgraph cluster_30 {
color=blue
103 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_31 {
color=blue
104 [label="Enter block"];
105 [label="Const: String(test_7_1)"];
106 [label="Exit block"];
}
107 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
subgraph cluster_32 {
color=blue
108 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_33 {
color=blue
109 [label="Enter block"];
110 [label="Const: String(test_7_2)"];
111 [label="Exit block"];
}
112 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
113 [label="Postponed exit from lambda"];
114 [label="Postponed exit from lambda"];
115 [label="Function call: R|/myRun|(...)" style="filled" fillcolor=yellow];
116 [label="Exit block"];
}
117 [label="Exit function test_7" style="filled" fillcolor=red];
}
98 -> {86} [color=green style=dashed];
99 -> {100};
100 -> {101};
101 -> {102};
102 -> {103 108 113 114 115};
102 -> {103 108} [style=dashed];
subgraph cluster_29 {
color=red
102 [label="Enter function test_7" style="filled" fillcolor=red];
subgraph cluster_30 {
color=blue
103 [label="Enter block"];
104 [label="Postponed enter to lambda"];
subgraph cluster_31 {
color=blue
105 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_32 {
color=blue
106 [label="Enter block"];
107 [label="Const: String(test_7_1)"];
108 [label="Exit block"];
}
109 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
subgraph cluster_33 {
color=blue
110 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_34 {
color=blue
111 [label="Enter block"];
112 [label="Const: String(test_7_2)"];
113 [label="Exit block"];
}
114 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
115 [label="Postponed exit from lambda"];
116 [label="Postponed exit from lambda"];
117 [label="Function call: R|/myRun|(...)" style="filled" fillcolor=yellow];
118 [label="Exit block"];
}
119 [label="Exit function test_7" style="filled" fillcolor=red];
}
102 -> {103};
103 -> {104};
104 -> {105};
104 -> {105 110 115 116 117};
104 -> {105 110} [style=dashed];
105 -> {106};
106 -> {107};
107 -> {113};
107 -> {108};
108 -> {109};
109 -> {110};
109 -> {115};
110 -> {111};
111 -> {112};
112 -> {114};
113 -> {115};
113 -> {102} [color=green style=dashed];
114 -> {115};
114 -> {102} [color=green style=dashed];
115 -> {116};
112 -> {113};
113 -> {114};
114 -> {116};
115 -> {117};
115 -> {104} [color=green style=dashed];
116 -> {117};
subgraph cluster_34 {
color=red
118 [label="Enter function myDummyRun" style="filled" fillcolor=red];
subgraph cluster_35 {
color=blue
119 [label="Enter block"];
120 [label="Function call: R|<local>/block|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
121 [label="Exit block"];
}
122 [label="Exit function myDummyRun" style="filled" fillcolor=red];
}
116 -> {104} [color=green style=dashed];
117 -> {118};
118 -> {119};
119 -> {120};
subgraph cluster_35 {
color=red
120 [label="Enter function myDummyRun" style="filled" fillcolor=red];
subgraph cluster_36 {
color=blue
121 [label="Enter block"];
122 [label="Function call: R|<local>/block|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
123 [label="Exit block"];
}
124 [label="Exit function myDummyRun" style="filled" fillcolor=red];
}
120 -> {121};
121 -> {122};
subgraph cluster_36 {
color=red
123 [label="Enter function test_8" style="filled" fillcolor=red];
subgraph cluster_37 {
color=blue
124 [label="Enter block"];
125 [label="Postponed enter to lambda"];
subgraph cluster_38 {
color=blue
126 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_39 {
color=blue
127 [label="Enter block"];
128 [label="Const: String(test_8)"];
129 [label="Exit block"];
}
130 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
131 [label="Postponed exit from lambda"];
132 [label="Function call: R|/myDummyRun|(...)" style="filled" fillcolor=yellow];
133 [label="Exit block"];
}
134 [label="Exit function test_8" style="filled" fillcolor=red];
}
122 -> {123};
123 -> {124};
124 -> {125};
125 -> {126 131 132};
125 -> {126} [style=dashed];
subgraph cluster_37 {
color=red
125 [label="Enter function test_8" style="filled" fillcolor=red];
subgraph cluster_38 {
color=blue
126 [label="Enter block"];
127 [label="Postponed enter to lambda"];
subgraph cluster_39 {
color=blue
128 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_40 {
color=blue
129 [label="Enter block"];
130 [label="Const: String(test_8)"];
131 [label="Exit block"];
}
132 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
133 [label="Postponed exit from lambda"];
134 [label="Function call: R|/myDummyRun|(...)" style="filled" fillcolor=yellow];
135 [label="Exit block"];
}
136 [label="Exit function test_8" style="filled" fillcolor=red];
}
125 -> {126};
126 -> {127};
127 -> {128};
127 -> {128 133 134};
127 -> {128} [style=dashed];
128 -> {129};
129 -> {130};
130 -> {131};
131 -> {132};
132 -> {133};
133 -> {134};
134 -> {135};
135 -> {136};
}
@@ -5,22 +5,27 @@ digraph conditionalEffects_kt {
subgraph cluster_0 {
color=red
0 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_1 {
color=blue
1 [label="Enter block"];
2 [label="Access variable R|<local>/x|"];
3 [label="Type operator: (R|<local>/x| is R|kotlin/Int|)"];
4 [label="Function call: R|kotlin/require|(...)" style="filled" fillcolor=yellow];
5 [label="Access variable R|<local>/x|"];
6 [label="Smart cast: R|<local>/x|"];
7 [label="Function call: R|<local>/x|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
8 [label="Exit block"];
}
9 [label="Exit function test_1" style="filled" fillcolor=red];
0 [label="Enter file conditionalEffects.kt" style="filled" fillcolor=red];
1 [label="Exit file conditionalEffects.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
3 [label="Enter block"];
4 [label="Access variable R|<local>/x|"];
5 [label="Type operator: (R|<local>/x| is R|kotlin/Int|)"];
6 [label="Function call: R|kotlin/require|(...)" style="filled" fillcolor=yellow];
7 [label="Access variable R|<local>/x|"];
8 [label="Smart cast: R|<local>/x|"];
9 [label="Function call: R|<local>/x|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
10 [label="Exit block"];
}
11 [label="Exit function test_1" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
2 -> {3};
3 -> {4};
4 -> {5};
@@ -28,50 +33,50 @@ digraph conditionalEffects_kt {
6 -> {7};
7 -> {8};
8 -> {9};
subgraph cluster_2 {
color=red
10 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_3 {
color=blue
11 [label="Enter block"];
12 [label="Access variable R|<local>/x|"];
13 [label="Function call: R|kotlin/requireNotNull|<R|kotlin/String|>(...)" style="filled" fillcolor=yellow];
14 [label="Access variable R|<local>/x|"];
15 [label="Smart cast: R|<local>/x|"];
16 [label="Access variable R|kotlin/String.length|"];
17 [label="Exit block"];
}
18 [label="Exit function test_2" style="filled" fillcolor=red];
}
9 -> {10};
10 -> {11};
11 -> {12};
subgraph cluster_3 {
color=red
12 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_4 {
color=blue
13 [label="Enter block"];
14 [label="Access variable R|<local>/x|"];
15 [label="Function call: R|kotlin/requireNotNull|<R|kotlin/String|>(...)" style="filled" fillcolor=yellow];
16 [label="Access variable R|<local>/x|"];
17 [label="Smart cast: R|<local>/x|"];
18 [label="Access variable R|kotlin/String.length|"];
19 [label="Exit block"];
}
20 [label="Exit function test_2" style="filled" fillcolor=red];
}
12 -> {13};
13 -> {14};
14 -> {15};
15 -> {16};
16 -> {17};
17 -> {18};
subgraph cluster_4 {
color=red
19 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_5 {
color=blue
20 [label="Enter block"];
21 [label="Access variable R|<local>/x|"];
22 [label="Const: Null(null)"];
23 [label="Equality operator !="];
24 [label="Function call: R|kotlin/require|(...)" style="filled" fillcolor=yellow];
25 [label="Access variable R|<local>/x|"];
26 [label="Smart cast: R|<local>/x|"];
27 [label="Access variable R|kotlin/String.length|"];
28 [label="Exit block"];
}
29 [label="Exit function test_3" style="filled" fillcolor=red];
}
18 -> {19};
19 -> {20};
20 -> {21};
subgraph cluster_5 {
color=red
21 [label="Enter function test_3" style="filled" fillcolor=red];
subgraph cluster_6 {
color=blue
22 [label="Enter block"];
23 [label="Access variable R|<local>/x|"];
24 [label="Const: Null(null)"];
25 [label="Equality operator !="];
26 [label="Function call: R|kotlin/require|(...)" style="filled" fillcolor=yellow];
27 [label="Access variable R|<local>/x|"];
28 [label="Smart cast: R|<local>/x|"];
29 [label="Access variable R|kotlin/String.length|"];
30 [label="Exit block"];
}
31 [label="Exit function test_3" style="filled" fillcolor=red];
}
21 -> {22};
22 -> {23};
23 -> {24};
@@ -80,44 +85,44 @@ digraph conditionalEffects_kt {
26 -> {27};
27 -> {28};
28 -> {29};
subgraph cluster_6 {
color=red
30 [label="Enter function test_4" style="filled" fillcolor=red];
subgraph cluster_7 {
color=blue
31 [label="Enter block"];
subgraph cluster_8 {
color=blue
32 [label="Enter &&"];
33 [label="Access variable R|<local>/x|"];
34 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
35 [label="Exit left part of &&"];
36 [label="Enter right part of &&"];
37 [label="Access variable R|<local>/y|"];
38 [label="Const: Null(null)"];
39 [label="Equality operator !="];
40 [label="Exit &&"];
}
41 [label="Function call: R|kotlin/require|(...)" style="filled" fillcolor=yellow];
42 [label="Access variable R|<local>/x|"];
43 [label="Smart cast: R|<local>/x|"];
44 [label="Access variable R|kotlin/String.length|"];
45 [label="Access variable R|<local>/y|"];
46 [label="Smart cast: R|<local>/y|"];
47 [label="Access variable R|kotlin/String.length|"];
48 [label="Exit block"];
}
49 [label="Exit function test_4" style="filled" fillcolor=red];
}
29 -> {30};
30 -> {31};
31 -> {32};
subgraph cluster_7 {
color=red
32 [label="Enter function test_4" style="filled" fillcolor=red];
subgraph cluster_8 {
color=blue
33 [label="Enter block"];
subgraph cluster_9 {
color=blue
34 [label="Enter &&"];
35 [label="Access variable R|<local>/x|"];
36 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
37 [label="Exit left part of &&"];
38 [label="Enter right part of &&"];
39 [label="Access variable R|<local>/y|"];
40 [label="Const: Null(null)"];
41 [label="Equality operator !="];
42 [label="Exit &&"];
}
43 [label="Function call: R|kotlin/require|(...)" style="filled" fillcolor=yellow];
44 [label="Access variable R|<local>/x|"];
45 [label="Smart cast: R|<local>/x|"];
46 [label="Access variable R|kotlin/String.length|"];
47 [label="Access variable R|<local>/y|"];
48 [label="Smart cast: R|<local>/y|"];
49 [label="Access variable R|kotlin/String.length|"];
50 [label="Exit block"];
}
51 [label="Exit function test_4" style="filled" fillcolor=red];
}
32 -> {33};
33 -> {34};
34 -> {35};
35 -> {36 40};
35 -> {36};
36 -> {37};
37 -> {38};
37 -> {38 42};
38 -> {39};
39 -> {40};
40 -> {41};
@@ -129,73 +134,73 @@ digraph conditionalEffects_kt {
46 -> {47};
47 -> {48};
48 -> {49};
49 -> {50};
50 -> {51};
subgraph cluster_9 {
subgraph cluster_10 {
color=red
50 [label="Enter function test_5" style="filled" fillcolor=red];
subgraph cluster_10 {
52 [label="Enter function test_5" style="filled" fillcolor=red];
subgraph cluster_11 {
color=blue
51 [label="Enter block"];
subgraph cluster_11 {
53 [label="Enter block"];
subgraph cluster_12 {
color=blue
52 [label="Enter when"];
subgraph cluster_12 {
color=blue
53 [label="Enter when branch condition "];
54 [label="Access variable R|<local>/b|"];
55 [label="Exit when branch condition"];
}
54 [label="Enter when"];
subgraph cluster_13 {
color=blue
56 [label="Enter when branch condition else"];
55 [label="Enter when branch condition "];
56 [label="Access variable R|<local>/b|"];
57 [label="Exit when branch condition"];
}
58 [label="Enter when branch result"];
subgraph cluster_14 {
color=blue
59 [label="Enter block"];
60 [label="Access variable R|<local>/x|"];
61 [label="Access variable <Unresolved name: length>#"];
62 [label="Exit block"];
58 [label="Enter when branch condition else"];
59 [label="Exit when branch condition"];
}
63 [label="Exit when branch result"];
64 [label="Enter when branch result"];
60 [label="Enter when branch result"];
subgraph cluster_15 {
color=blue
65 [label="Enter block"];
66 [label="Access variable R|<local>/x|"];
67 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
68 [label="Function call: R|kotlin/require|(...)" style="filled" fillcolor=yellow];
69 [label="Access variable R|<local>/x|"];
70 [label="Smart cast: R|<local>/x|"];
71 [label="Access variable R|kotlin/String.length|"];
72 [label="Exit block"];
61 [label="Enter block"];
62 [label="Access variable R|<local>/x|"];
63 [label="Access variable <Unresolved name: length>#"];
64 [label="Exit block"];
}
73 [label="Exit when branch result"];
74 [label="Exit when"];
65 [label="Exit when branch result"];
66 [label="Enter when branch result"];
subgraph cluster_16 {
color=blue
67 [label="Enter block"];
68 [label="Access variable R|<local>/x|"];
69 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
70 [label="Function call: R|kotlin/require|(...)" style="filled" fillcolor=yellow];
71 [label="Access variable R|<local>/x|"];
72 [label="Smart cast: R|<local>/x|"];
73 [label="Access variable R|kotlin/String.length|"];
74 [label="Exit block"];
}
75 [label="Exit when branch result"];
76 [label="Exit when"];
}
75 [label="Access variable R|<local>/x|"];
76 [label="Access variable <Unresolved name: length>#"];
77 [label="Exit block"];
77 [label="Access variable R|<local>/x|"];
78 [label="Access variable <Unresolved name: length>#"];
79 [label="Exit block"];
}
78 [label="Exit function test_5" style="filled" fillcolor=red];
80 [label="Exit function test_5" style="filled" fillcolor=red];
}
50 -> {51};
51 -> {52};
52 -> {53};
53 -> {54};
54 -> {55};
55 -> {56 64};
55 -> {56};
56 -> {57};
57 -> {58};
57 -> {58 66};
58 -> {59};
59 -> {60};
60 -> {61};
61 -> {62};
62 -> {63};
63 -> {74};
63 -> {64};
64 -> {65};
65 -> {66};
65 -> {76};
66 -> {67};
67 -> {68};
68 -> {69};
@@ -208,70 +213,70 @@ digraph conditionalEffects_kt {
75 -> {76};
76 -> {77};
77 -> {78};
78 -> {79};
79 -> {80};
subgraph cluster_16 {
subgraph cluster_17 {
color=red
79 [label="Enter function test_6" style="filled" fillcolor=red];
subgraph cluster_17 {
81 [label="Enter function test_6" style="filled" fillcolor=red];
subgraph cluster_18 {
color=blue
80 [label="Enter block"];
subgraph cluster_18 {
82 [label="Enter block"];
subgraph cluster_19 {
color=blue
81 [label="Enter when"];
subgraph cluster_19 {
color=blue
82 [label="Enter when branch condition "];
83 [label="Access variable R|<local>/b|"];
84 [label="Exit when branch condition"];
}
83 [label="Enter when"];
subgraph cluster_20 {
color=blue
85 [label="Enter when branch condition else"];
84 [label="Enter when branch condition "];
85 [label="Access variable R|<local>/b|"];
86 [label="Exit when branch condition"];
}
87 [label="Enter when branch result"];
subgraph cluster_21 {
color=blue
88 [label="Enter block"];
89 [label="Access variable R|<local>/x|"];
90 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
91 [label="Function call: R|kotlin/require|(...)" style="filled" fillcolor=yellow];
92 [label="Access variable R|<local>/x|"];
93 [label="Smart cast: R|<local>/x|"];
94 [label="Access variable R|kotlin/String.length|"];
95 [label="Exit block"];
87 [label="Enter when branch condition else"];
88 [label="Exit when branch condition"];
}
96 [label="Exit when branch result"];
97 [label="Enter when branch result"];
89 [label="Enter when branch result"];
subgraph cluster_22 {
color=blue
98 [label="Enter block"];
99 [label="Access variable R|<local>/x|"];
100 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
101 [label="Function call: R|kotlin/require|(...)" style="filled" fillcolor=yellow];
102 [label="Access variable R|<local>/x|"];
103 [label="Smart cast: R|<local>/x|"];
104 [label="Access variable R|kotlin/String.length|"];
105 [label="Exit block"];
90 [label="Enter block"];
91 [label="Access variable R|<local>/x|"];
92 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
93 [label="Function call: R|kotlin/require|(...)" style="filled" fillcolor=yellow];
94 [label="Access variable R|<local>/x|"];
95 [label="Smart cast: R|<local>/x|"];
96 [label="Access variable R|kotlin/String.length|"];
97 [label="Exit block"];
}
106 [label="Exit when branch result"];
107 [label="Exit when"];
98 [label="Exit when branch result"];
99 [label="Enter when branch result"];
subgraph cluster_23 {
color=blue
100 [label="Enter block"];
101 [label="Access variable R|<local>/x|"];
102 [label="Type operator: (R|<local>/x| is R|kotlin/String|)"];
103 [label="Function call: R|kotlin/require|(...)" style="filled" fillcolor=yellow];
104 [label="Access variable R|<local>/x|"];
105 [label="Smart cast: R|<local>/x|"];
106 [label="Access variable R|kotlin/String.length|"];
107 [label="Exit block"];
}
108 [label="Exit when branch result"];
109 [label="Exit when"];
}
108 [label="Access variable R|<local>/x|"];
109 [label="Smart cast: R|<local>/x|"];
110 [label="Access variable R|kotlin/String.length|"];
111 [label="Exit block"];
110 [label="Access variable R|<local>/x|"];
111 [label="Smart cast: R|<local>/x|"];
112 [label="Access variable R|kotlin/String.length|"];
113 [label="Exit block"];
}
112 [label="Exit function test_6" style="filled" fillcolor=red];
114 [label="Exit function test_6" style="filled" fillcolor=red];
}
79 -> {80};
80 -> {81};
81 -> {82};
82 -> {83};
83 -> {84};
84 -> {85 97};
84 -> {85};
85 -> {86};
86 -> {87};
86 -> {87 99};
87 -> {88};
88 -> {89};
89 -> {90};
@@ -281,9 +286,9 @@ digraph conditionalEffects_kt {
93 -> {94};
94 -> {95};
95 -> {96};
96 -> {107};
96 -> {97};
97 -> {98};
98 -> {99};
98 -> {109};
99 -> {100};
100 -> {101};
101 -> {102};
@@ -297,5 +302,7 @@ digraph conditionalEffects_kt {
109 -> {110};
110 -> {111};
111 -> {112};
112 -> {113};
113 -> {114};
}
@@ -5,102 +5,109 @@ digraph inAnonymousObject_kt {
subgraph cluster_0 {
color=red
0 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_1 {
0 [label="Enter file inAnonymousObject.kt" style="filled" fillcolor=red];
1 [label="Exit file inAnonymousObject.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
1 [label="Enter block"];
subgraph cluster_2 {
color=blue
2 [label="Enter block"];
3 [label="Exit block"];
}
4 [label="Enter anonymous object"];
3 [label="Enter block"];
subgraph cluster_3 {
color=blue
5 [label="Enter class <anonymous object>" style="filled" fillcolor=red];
subgraph cluster_4 {
color=blue
6 [label="Enter property" style="filled" fillcolor=red];
7 [label="Access variable R|<local>/a|"];
8 [label="Exit property" style="filled" fillcolor=red];
}
4 [label="Enter block"];
5 [label="Exit block"];
}
6 [label="Enter anonymous object"];
subgraph cluster_4 {
color=blue
7 [label="Enter class <anonymous object>" style="filled" fillcolor=red];
subgraph cluster_5 {
color=blue
9 [label="Enter init block" style="filled" fillcolor=red];
subgraph cluster_6 {
color=blue
10 [label="Enter block"];
11 [label="Access variable R|<local>/b|"];
12 [label="Assignment: R|/<anonymous>.leaked|"];
13 [label="Exit block"];
}
14 [label="Exit init block" style="filled" fillcolor=red];
8 [label="Enter property" style="filled" fillcolor=red];
9 [label="Access variable R|<local>/a|"];
10 [label="Exit property" style="filled" fillcolor=red];
}
subgraph cluster_7 {
subgraph cluster_6 {
color=blue
15 [label="Enter function <init>" style="filled" fillcolor=red];
16 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
17 [label="Exit function <init>" style="filled" fillcolor=red];
11 [label="Enter init block" style="filled" fillcolor=red];
subgraph cluster_7 {
color=blue
12 [label="Enter block"];
13 [label="Access variable R|<local>/b|"];
14 [label="Assignment: R|/<anonymous>.leaked|"];
15 [label="Exit block"];
}
16 [label="Exit init block" style="filled" fillcolor=red];
}
18 [label="Exit class <anonymous object>" style="filled" fillcolor=red];
subgraph cluster_8 {
color=blue
17 [label="Enter function <init>" style="filled" fillcolor=red];
18 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
19 [label="Exit function <init>" style="filled" fillcolor=red];
}
20 [label="Exit class <anonymous object>" style="filled" fillcolor=red];
}
19 [label="Exit anonymous object expression"];
20 [label="Variable declaration: lval obj: R|<anonymous>|"];
21 [label="Access variable R|<local>/obj|"];
22 [label="Function call: R|<local>/obj|.R|/<anonymous>.run|()" style="filled" fillcolor=yellow];
23 [label="Function call: R|<local>/d|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
24 [label="Exit block"];
21 [label="Exit anonymous object expression"];
22 [label="Variable declaration: lval obj: R|<anonymous>|"];
23 [label="Access variable R|<local>/obj|"];
24 [label="Function call: R|<local>/obj|.R|/<anonymous>.run|()" style="filled" fillcolor=yellow];
25 [label="Function call: R|<local>/d|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
26 [label="Exit block"];
}
25 [label="Exit function foo" style="filled" fillcolor=red];
27 [label="Exit function foo" style="filled" fillcolor=red];
}
subgraph cluster_8 {
subgraph cluster_9 {
color=blue
26 [label="Enter function run" style="filled" fillcolor=red];
subgraph cluster_9 {
28 [label="Enter function run" style="filled" fillcolor=red];
subgraph cluster_10 {
color=blue
27 [label="Enter block"];
28 [label="Function call: R|<local>/c|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
29 [label="Exit block"];
29 [label="Enter block"];
30 [label="Function call: R|<local>/c|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
31 [label="Exit block"];
}
30 [label="Exit function run" style="filled" fillcolor=red];
32 [label="Exit function run" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
2 -> {3};
3 -> {4};
4 -> {5};
4 -> {19} [style=dotted];
4 -> {5} [style=dashed];
5 -> {6};
5 -> {9 15 26} [color=red];
5 -> {18} [style=dotted];
5 -> {6 9 15} [style=dashed];
6 -> {7};
6 -> {21} [style=dotted];
6 -> {7} [style=dashed];
7 -> {8};
8 -> {9} [color=green];
8 -> {18} [color=red];
7 -> {11 17 28} [color=red];
7 -> {20} [style=dotted];
7 -> {8 11 17} [style=dashed];
8 -> {9};
9 -> {10};
10 -> {11};
10 -> {11} [color=green];
10 -> {20} [color=red];
11 -> {12};
12 -> {13};
13 -> {14};
14 -> {15} [color=green];
14 -> {18} [color=red];
14 -> {15};
15 -> {16};
16 -> {17};
16 -> {17} [color=green];
16 -> {20} [color=red];
17 -> {18};
18 -> {19};
18 -> {26} [color=green];
18 -> {26} [style=dashed];
19 -> {20};
20 -> {21};
20 -> {28} [color=green];
20 -> {28} [style=dashed];
21 -> {22};
22 -> {23};
23 -> {24};
24 -> {25};
25 -> {26};
26 -> {27};
27 -> {28};
28 -> {29};
29 -> {30};
30 -> {31};
31 -> {32};
}
@@ -5,103 +5,110 @@ digraph inLocalClass_kt {
subgraph cluster_0 {
color=red
0 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_1 {
color=blue
1 [label="Enter block"];
subgraph cluster_2 {
color=blue
2 [label="Enter block"];
3 [label="Exit block"];
}
4 [label="Local class declaration"];
5 [label="Function call: R|<local>/LocalClass.LocalClass|()" style="filled" fillcolor=yellow];
6 [label="Function call: R|<local>/LocalClass.LocalClass|().R|<local>/run|()" style="filled" fillcolor=yellow];
7 [label="Function call: R|<local>/e|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
8 [label="Exit block"];
}
9 [label="Exit function foo" style="filled" fillcolor=red];
0 [label="Enter file inLocalClass.kt" style="filled" fillcolor=red];
1 [label="Exit file inLocalClass.kt" style="filled" fillcolor=red];
}
subgraph cluster_3 {
color=blue
10 [label="Enter class LocalClass" style="filled" fillcolor=red];
subgraph cluster_4 {
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
11 [label="Enter property" style="filled" fillcolor=red];
12 [label="Access variable R|<local>/a|"];
13 [label="Exit property" style="filled" fillcolor=red];
3 [label="Enter block"];
subgraph cluster_3 {
color=blue
4 [label="Enter block"];
5 [label="Exit block"];
}
6 [label="Local class declaration"];
7 [label="Function call: R|<local>/LocalClass.LocalClass|()" style="filled" fillcolor=yellow];
8 [label="Function call: R|<local>/LocalClass.LocalClass|().R|<local>/run|()" style="filled" fillcolor=yellow];
9 [label="Function call: R|<local>/e|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
10 [label="Exit block"];
}
11 [label="Exit function foo" style="filled" fillcolor=red];
}
subgraph cluster_4 {
color=blue
12 [label="Enter class LocalClass" style="filled" fillcolor=red];
subgraph cluster_5 {
color=blue
14 [label="Enter init block" style="filled" fillcolor=red];
subgraph cluster_6 {
color=blue
15 [label="Enter block"];
16 [label="Access variable R|<local>/c|"];
17 [label="Assignment: R|<local>/leaked|"];
18 [label="Exit block"];
}
19 [label="Exit init block" style="filled" fillcolor=red];
13 [label="Enter property" style="filled" fillcolor=red];
14 [label="Access variable R|<local>/a|"];
15 [label="Exit property" style="filled" fillcolor=red];
}
subgraph cluster_7 {
subgraph cluster_6 {
color=blue
20 [label="Enter function <init>" style="filled" fillcolor=red];
21 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
subgraph cluster_8 {
16 [label="Enter init block" style="filled" fillcolor=red];
subgraph cluster_7 {
color=blue
22 [label="Enter block"];
23 [label="Function call: R|<local>/b|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
24 [label="Exit block"];
17 [label="Enter block"];
18 [label="Access variable R|<local>/c|"];
19 [label="Assignment: R|<local>/leaked|"];
20 [label="Exit block"];
}
25 [label="Exit function <init>" style="filled" fillcolor=red];
21 [label="Exit init block" style="filled" fillcolor=red];
}
26 [label="Exit class LocalClass" style="filled" fillcolor=red];
subgraph cluster_8 {
color=blue
22 [label="Enter function <init>" style="filled" fillcolor=red];
23 [label="Delegated constructor call: super<R|kotlin/Any|>()" style="filled" fillcolor=yellow];
subgraph cluster_9 {
color=blue
24 [label="Enter block"];
25 [label="Function call: R|<local>/b|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
26 [label="Exit block"];
}
27 [label="Exit function <init>" style="filled" fillcolor=red];
}
28 [label="Exit class LocalClass" style="filled" fillcolor=red];
}
subgraph cluster_9 {
subgraph cluster_10 {
color=blue
27 [label="Enter function run" style="filled" fillcolor=red];
subgraph cluster_10 {
29 [label="Enter function run" style="filled" fillcolor=red];
subgraph cluster_11 {
color=blue
28 [label="Enter block"];
29 [label="Function call: R|<local>/d|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
30 [label="Exit block"];
30 [label="Enter block"];
31 [label="Function call: R|<local>/d|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
32 [label="Exit block"];
}
31 [label="Exit function run" style="filled" fillcolor=red];
33 [label="Exit function run" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
2 -> {3};
3 -> {4};
4 -> {5 10};
4 -> {10} [style=dashed];
4 -> {5};
5 -> {6};
6 -> {7};
6 -> {7 12};
6 -> {12} [style=dashed];
7 -> {8};
8 -> {9};
9 -> {10};
10 -> {11};
10 -> {14 20 27} [color=red];
10 -> {26} [style=dotted];
10 -> {11 14 20} [style=dashed];
11 -> {12};
12 -> {13};
13 -> {14} [color=green];
12 -> {16 22 29} [color=red];
12 -> {28} [style=dotted];
12 -> {13 16 22} [style=dashed];
13 -> {14};
14 -> {15};
15 -> {16};
15 -> {16} [color=green];
16 -> {17};
17 -> {18};
18 -> {19};
19 -> {20} [color=green];
19 -> {20};
20 -> {21};
21 -> {22};
21 -> {22} [color=green];
22 -> {23};
23 -> {24};
24 -> {25};
25 -> {26} [color=green];
26 -> {27} [color=green];
26 -> {27} [style=dashed];
27 -> {28};
28 -> {29};
25 -> {26};
26 -> {27};
27 -> {28} [color=green];
28 -> {29} [color=green];
28 -> {29} [style=dashed];
29 -> {30};
30 -> {31};
31 -> {32};
32 -> {33};
}
@@ -5,49 +5,56 @@ digraph inLocalFunction_kt {
subgraph cluster_0 {
color=red
0 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_1 {
0 [label="Enter file inLocalFunction.kt" style="filled" fillcolor=red];
1 [label="Exit file inLocalFunction.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
1 [label="Enter block"];
subgraph cluster_2 {
3 [label="Enter block"];
subgraph cluster_3 {
color=blue
2 [label="Enter block"];
3 [label="Exit block"];
4 [label="Enter block"];
5 [label="Exit block"];
}
4 [label="Local function declaration"];
5 [label="Function call: R|<local>/localFun|()" style="filled" fillcolor=yellow];
6 [label="Function call: R|<local>/b|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
7 [label="Exit block"];
6 [label="Local function declaration"];
7 [label="Function call: R|<local>/localFun|()" style="filled" fillcolor=yellow];
8 [label="Function call: R|<local>/b|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
9 [label="Exit block"];
}
8 [label="Exit function foo" style="filled" fillcolor=red];
10 [label="Exit function foo" style="filled" fillcolor=red];
}
subgraph cluster_3 {
subgraph cluster_4 {
color=blue
9 [label="Enter function localFun" style="filled" fillcolor=red];
subgraph cluster_4 {
11 [label="Enter function localFun" style="filled" fillcolor=red];
subgraph cluster_5 {
color=blue
10 [label="Enter block"];
11 [label="Access variable R|<local>/a|"];
12 [label="Function call: R|<local>/a|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
13 [label="Function call: R|<local>/a|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
14 [label="Exit block"];
12 [label="Enter block"];
13 [label="Access variable R|<local>/a|"];
14 [label="Function call: R|<local>/a|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
15 [label="Function call: R|<local>/a|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
16 [label="Exit block"];
}
15 [label="Exit function localFun" style="filled" fillcolor=red];
17 [label="Exit function localFun" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
2 -> {3};
3 -> {4};
4 -> {5 9};
4 -> {9} [style=dashed];
4 -> {5};
5 -> {6};
6 -> {7};
6 -> {7 11};
6 -> {11} [style=dashed];
7 -> {8};
8 -> {9};
9 -> {10};
10 -> {11};
11 -> {12};
12 -> {13};
13 -> {14};
14 -> {15};
15 -> {16};
16 -> {17};
}
@@ -5,91 +5,96 @@ digraph toLocalVariables_kt {
subgraph cluster_0 {
color=red
0 [label="Enter function bar" style="filled" fillcolor=red];
subgraph cluster_1 {
color=blue
1 [label="Enter block"];
2 [label="Exit block"];
}
3 [label="Exit function bar" style="filled" fillcolor=red];
0 [label="Enter file toLocalVariables.kt" style="filled" fillcolor=red];
1 [label="Exit file toLocalVariables.kt" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
2 -> {3};
0 -> {1} [color=green];
subgraph cluster_2 {
subgraph cluster_1 {
color=red
4 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_3 {
2 [label="Enter function bar" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
5 [label="Enter block"];
subgraph cluster_4 {
color=blue
6 [label="Enter block"];
7 [label="Exit block"];
}
3 [label="Enter block"];
4 [label="Exit block"];
}
5 [label="Exit function bar" style="filled" fillcolor=red];
}
2 -> {3};
3 -> {4};
4 -> {5};
subgraph cluster_3 {
color=red
6 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_4 {
color=blue
7 [label="Enter block"];
subgraph cluster_5 {
color=blue
8 [label="Enter when"];
subgraph cluster_6 {
color=blue
9 [label="Enter when branch condition "];
10 [label="Const: Boolean(true)"];
11 [label="Exit when branch condition"];
}
8 [label="Enter block"];
9 [label="Exit block"];
}
subgraph cluster_6 {
color=blue
10 [label="Enter when"];
subgraph cluster_7 {
color=blue
12 [label="Enter when branch condition else"];
11 [label="Enter when branch condition "];
12 [label="Const: Boolean(true)"];
13 [label="Exit when branch condition"];
}
14 [label="Enter when branch result"];
subgraph cluster_8 {
color=blue
15 [label="Enter block"];
16 [label="Access variable R|<local>/y|"];
17 [label="Variable declaration: lval yCopy: R|() -> kotlin/Unit|"];
18 [label="Function call: R|<local>/yCopy|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
19 [label="Exit block"];
14 [label="Enter when branch condition else"];
15 [label="Exit when branch condition"];
}
20 [label="Exit when branch result"];
21 [label="Enter when branch result"];
16 [label="Enter when branch result"];
subgraph cluster_9 {
color=blue
22 [label="Enter block"];
23 [label="Access variable R|<local>/x|"];
24 [label="Function call: R|/bar|(...)" style="filled" fillcolor=yellow];
25 [label="Exit block"];
17 [label="Enter block"];
18 [label="Access variable R|<local>/y|"];
19 [label="Variable declaration: lval yCopy: R|() -> kotlin/Unit|"];
20 [label="Function call: R|<local>/yCopy|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
21 [label="Exit block"];
}
26 [label="Exit when branch result"];
27 [label="Exit when"];
22 [label="Exit when branch result"];
23 [label="Enter when branch result"];
subgraph cluster_10 {
color=blue
24 [label="Enter block"];
25 [label="Access variable R|<local>/x|"];
26 [label="Function call: R|/bar|(...)" style="filled" fillcolor=yellow];
27 [label="Exit block"];
}
28 [label="Exit when branch result"];
29 [label="Exit when"];
}
28 [label="Variable declaration: lval zCopy: R|() -> kotlin/Unit|"];
29 [label="Access variable R|<local>/z|"];
30 [label="Assignment: R|<local>/zCopy|"];
31 [label="Function call: R|<local>/zCopy|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
32 [label="Exit block"];
30 [label="Variable declaration: lval zCopy: R|() -> kotlin/Unit|"];
31 [label="Access variable R|<local>/z|"];
32 [label="Assignment: R|<local>/zCopy|"];
33 [label="Function call: R|<local>/zCopy|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
34 [label="Exit block"];
}
33 [label="Exit function foo" style="filled" fillcolor=red];
35 [label="Exit function foo" style="filled" fillcolor=red];
}
4 -> {5};
5 -> {6};
6 -> {7};
7 -> {8};
8 -> {9};
9 -> {10};
10 -> {11};
11 -> {12 21};
11 -> {12};
12 -> {13};
13 -> {14};
13 -> {14 23};
14 -> {15};
15 -> {16};
16 -> {17};
17 -> {18};
18 -> {19};
19 -> {20};
20 -> {27};
20 -> {21};
21 -> {22};
22 -> {23};
22 -> {29};
23 -> {24};
24 -> {25};
25 -> {26};
@@ -100,5 +105,7 @@ digraph toLocalVariables_kt {
30 -> {31};
31 -> {32};
32 -> {33};
33 -> {34};
34 -> {35};
}
@@ -5,142 +5,149 @@ digraph atLeastOnce_kt {
subgraph cluster_0 {
color=red
0 [label="Enter function inlineRun" style="filled" fillcolor=red];
subgraph cluster_1 {
color=blue
1 [label="Enter block"];
subgraph cluster_2 {
color=blue
2 [label="Enter block"];
3 [label="Exit block"];
}
4 [label="Function call: R|<local>/block|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
5 [label="Exit block"];
}
6 [label="Exit function inlineRun" style="filled" fillcolor=red];
0 [label="Enter file atLeastOnce.kt" style="filled" fillcolor=red];
1 [label="Exit file atLeastOnce.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter function inlineRun" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
3 [label="Enter block"];
subgraph cluster_3 {
color=blue
4 [label="Enter block"];
5 [label="Exit block"];
}
6 [label="Function call: R|<local>/block|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
7 [label="Exit block"];
}
8 [label="Exit function inlineRun" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
2 -> {3};
3 -> {4};
4 -> {5};
5 -> {6};
subgraph cluster_3 {
color=red
7 [label="Enter function myRun" style="filled" fillcolor=red];
subgraph cluster_4 {
color=blue
8 [label="Enter block"];
subgraph cluster_5 {
color=blue
9 [label="Enter block"];
10 [label="Exit block"];
}
11 [label="Function call: R|<local>/block|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
12 [label="Exit block"];
}
13 [label="Exit function myRun" style="filled" fillcolor=red];
}
6 -> {7};
7 -> {8};
8 -> {9};
subgraph cluster_4 {
color=red
9 [label="Enter function myRun" style="filled" fillcolor=red];
subgraph cluster_5 {
color=blue
10 [label="Enter block"];
subgraph cluster_6 {
color=blue
11 [label="Enter block"];
12 [label="Exit block"];
}
13 [label="Function call: R|<local>/block|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
14 [label="Exit block"];
}
15 [label="Exit function myRun" style="filled" fillcolor=red];
}
9 -> {10};
10 -> {11};
11 -> {12};
12 -> {13};
subgraph cluster_6 {
color=red
14 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_7 {
color=blue
15 [label="Enter block"];
16 [label="Variable declaration: lval x: R|kotlin/Int|"];
17 [label="Postponed enter to lambda"];
subgraph cluster_8 {
color=blue
18 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_9 {
color=blue
19 [label="Enter block"];
20 [label="Const: Int(1)"];
21 [label="Assignment: R|<local>/x|"];
22 [label="Exit block"];
}
23 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
24 [label="Postponed exit from lambda"];
25 [label="Function call: R|/inlineRun|(...)" style="filled" fillcolor=yellow];
26 [label="Access variable R|<local>/x|"];
27 [label="Function call: R|<local>/x|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
28 [label="Exit block"];
}
29 [label="Exit function test_1" style="filled" fillcolor=red];
}
13 -> {14};
14 -> {15};
15 -> {16};
subgraph cluster_7 {
color=red
16 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_8 {
color=blue
17 [label="Enter block"];
18 [label="Variable declaration: lval x: R|kotlin/Int|"];
19 [label="Postponed enter to lambda"];
subgraph cluster_9 {
color=blue
20 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_10 {
color=blue
21 [label="Enter block"];
22 [label="Const: Int(1)"];
23 [label="Assignment: R|<local>/x|"];
24 [label="Exit block"];
}
25 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
26 [label="Postponed exit from lambda"];
27 [label="Function call: R|/inlineRun|(...)" style="filled" fillcolor=yellow];
28 [label="Access variable R|<local>/x|"];
29 [label="Function call: R|<local>/x|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
30 [label="Exit block"];
}
31 [label="Exit function test_1" style="filled" fillcolor=red];
}
16 -> {17};
17 -> {18 25};
17 -> {24} [style=dotted];
17 -> {18} [style=dashed];
17 -> {18};
18 -> {19};
19 -> {20};
19 -> {20 27};
19 -> {26} [style=dotted];
19 -> {20} [style=dashed];
20 -> {21};
21 -> {22};
22 -> {23};
23 -> {24};
24 -> {25};
24 -> {17} [color=green style=dashed];
25 -> {26};
26 -> {27};
26 -> {19} [color=green style=dashed];
27 -> {28};
28 -> {29};
subgraph cluster_10 {
color=red
30 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_11 {
color=blue
31 [label="Enter block"];
32 [label="Variable declaration: lval x: R|kotlin/Int|"];
33 [label="Postponed enter to lambda"];
subgraph cluster_12 {
color=blue
34 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_13 {
color=blue
35 [label="Enter block"];
36 [label="Const: Int(1)"];
37 [label="Assignment: R|<local>/x|"];
38 [label="Exit block"];
}
39 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
40 [label="Postponed exit from lambda"];
41 [label="Function call: R|/myRun|(...)" style="filled" fillcolor=yellow];
42 [label="Access variable R|<local>/x|"];
43 [label="Function call: R|<local>/x|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
44 [label="Exit block"];
}
45 [label="Exit function test_2" style="filled" fillcolor=red];
}
29 -> {30};
30 -> {31};
31 -> {32};
subgraph cluster_11 {
color=red
32 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_12 {
color=blue
33 [label="Enter block"];
34 [label="Variable declaration: lval x: R|kotlin/Int|"];
35 [label="Postponed enter to lambda"];
subgraph cluster_13 {
color=blue
36 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_14 {
color=blue
37 [label="Enter block"];
38 [label="Const: Int(1)"];
39 [label="Assignment: R|<local>/x|"];
40 [label="Exit block"];
}
41 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
42 [label="Postponed exit from lambda"];
43 [label="Function call: R|/myRun|(...)" style="filled" fillcolor=yellow];
44 [label="Access variable R|<local>/x|"];
45 [label="Function call: R|<local>/x|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
46 [label="Exit block"];
}
47 [label="Exit function test_2" style="filled" fillcolor=red];
}
32 -> {33};
33 -> {34 41};
33 -> {40} [style=dotted];
33 -> {34} [style=dashed];
33 -> {34};
34 -> {35};
35 -> {36};
35 -> {36 43};
35 -> {42} [style=dotted];
35 -> {36} [style=dashed];
36 -> {37};
37 -> {38};
38 -> {39};
39 -> {40};
40 -> {41};
40 -> {33} [color=green style=dashed];
41 -> {42};
42 -> {43};
42 -> {35} [color=green style=dashed];
43 -> {44};
44 -> {45};
45 -> {46};
46 -> {47};
}
@@ -5,85 +5,90 @@ digraph atMostOnce_kt {
subgraph cluster_0 {
color=red
0 [label="Enter function inlineRun" style="filled" fillcolor=red];
subgraph cluster_1 {
color=blue
1 [label="Enter block"];
subgraph cluster_2 {
color=blue
2 [label="Enter block"];
3 [label="Exit block"];
}
4 [label="Function call: R|<local>/block|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
5 [label="Exit block"];
}
6 [label="Exit function inlineRun" style="filled" fillcolor=red];
0 [label="Enter file atMostOnce.kt" style="filled" fillcolor=red];
1 [label="Exit file atMostOnce.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter function inlineRun" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
3 [label="Enter block"];
subgraph cluster_3 {
color=blue
4 [label="Enter block"];
5 [label="Exit block"];
}
6 [label="Function call: R|<local>/block|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
7 [label="Exit block"];
}
8 [label="Exit function inlineRun" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
2 -> {3};
3 -> {4};
4 -> {5};
5 -> {6};
subgraph cluster_3 {
color=red
7 [label="Enter function myRun" style="filled" fillcolor=red];
subgraph cluster_4 {
color=blue
8 [label="Enter block"];
subgraph cluster_5 {
color=blue
9 [label="Enter block"];
10 [label="Exit block"];
}
11 [label="Function call: R|<local>/block|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
12 [label="Exit block"];
}
13 [label="Exit function myRun" style="filled" fillcolor=red];
}
6 -> {7};
7 -> {8};
8 -> {9};
subgraph cluster_4 {
color=red
9 [label="Enter function myRun" style="filled" fillcolor=red];
subgraph cluster_5 {
color=blue
10 [label="Enter block"];
subgraph cluster_6 {
color=blue
11 [label="Enter block"];
12 [label="Exit block"];
}
13 [label="Function call: R|<local>/block|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
14 [label="Exit block"];
}
15 [label="Exit function myRun" style="filled" fillcolor=red];
}
9 -> {10};
10 -> {11};
11 -> {12};
12 -> {13};
subgraph cluster_6 {
color=red
14 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_7 {
color=blue
15 [label="Enter block"];
16 [label="Variable declaration: lval x: R|kotlin/Int|"];
17 [label="Postponed enter to lambda"];
subgraph cluster_8 {
color=blue
18 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_9 {
color=blue
19 [label="Enter block"];
20 [label="Const: Int(1)"];
21 [label="Assignment: R|<local>/x|"];
22 [label="Exit block"];
}
23 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
24 [label="Postponed exit from lambda"];
25 [label="Function call: R|/inlineRun|(...)" style="filled" fillcolor=yellow];
26 [label="Access variable R|<local>/x|"];
27 [label="Function call: R|<local>/x|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
28 [label="Exit block"];
}
29 [label="Exit function test_1" style="filled" fillcolor=red];
}
13 -> {14};
14 -> {15};
15 -> {16};
subgraph cluster_7 {
color=red
16 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_8 {
color=blue
17 [label="Enter block"];
18 [label="Variable declaration: lval x: R|kotlin/Int|"];
19 [label="Postponed enter to lambda"];
subgraph cluster_9 {
color=blue
20 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_10 {
color=blue
21 [label="Enter block"];
22 [label="Const: Int(1)"];
23 [label="Assignment: R|<local>/x|"];
24 [label="Exit block"];
}
25 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
26 [label="Postponed exit from lambda"];
27 [label="Function call: R|/inlineRun|(...)" style="filled" fillcolor=yellow];
28 [label="Access variable R|<local>/x|"];
29 [label="Function call: R|<local>/x|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
30 [label="Exit block"];
}
31 [label="Exit function test_1" style="filled" fillcolor=red];
}
16 -> {17};
17 -> {18 24 25};
17 -> {18} [style=dashed];
17 -> {18};
18 -> {19};
19 -> {20};
19 -> {20 26 27};
19 -> {20} [style=dashed];
20 -> {21};
21 -> {22};
22 -> {23};
@@ -93,42 +98,42 @@ digraph atMostOnce_kt {
26 -> {27};
27 -> {28};
28 -> {29};
subgraph cluster_10 {
color=red
30 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_11 {
color=blue
31 [label="Enter block"];
32 [label="Variable declaration: lval x: R|kotlin/Int|"];
33 [label="Postponed enter to lambda"];
subgraph cluster_12 {
color=blue
34 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_13 {
color=blue
35 [label="Enter block"];
36 [label="Const: Int(1)"];
37 [label="Assignment: R|<local>/x|"];
38 [label="Exit block"];
}
39 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
40 [label="Postponed exit from lambda"];
41 [label="Function call: R|/myRun|(...)" style="filled" fillcolor=yellow];
42 [label="Access variable R|<local>/x|"];
43 [label="Function call: R|<local>/x|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
44 [label="Exit block"];
}
45 [label="Exit function test_2" style="filled" fillcolor=red];
}
29 -> {30};
30 -> {31};
31 -> {32};
subgraph cluster_11 {
color=red
32 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_12 {
color=blue
33 [label="Enter block"];
34 [label="Variable declaration: lval x: R|kotlin/Int|"];
35 [label="Postponed enter to lambda"];
subgraph cluster_13 {
color=blue
36 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_14 {
color=blue
37 [label="Enter block"];
38 [label="Const: Int(1)"];
39 [label="Assignment: R|<local>/x|"];
40 [label="Exit block"];
}
41 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
42 [label="Postponed exit from lambda"];
43 [label="Function call: R|/myRun|(...)" style="filled" fillcolor=yellow];
44 [label="Access variable R|<local>/x|"];
45 [label="Function call: R|<local>/x|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
46 [label="Exit block"];
}
47 [label="Exit function test_2" style="filled" fillcolor=red];
}
32 -> {33};
33 -> {34 40 41};
33 -> {34} [style=dashed];
33 -> {34};
34 -> {35};
35 -> {36};
35 -> {36 42 43};
35 -> {36} [style=dashed];
36 -> {37};
37 -> {38};
38 -> {39};
@@ -138,5 +143,7 @@ digraph atMostOnce_kt {
42 -> {43};
43 -> {44};
44 -> {45};
45 -> {46};
46 -> {47};
}
@@ -5,148 +5,155 @@ digraph contractsUsage_kt {
subgraph cluster_0 {
color=red
0 [label="Enter function bar" style="filled" fillcolor=red];
subgraph cluster_1 {
color=blue
1 [label="Enter block"];
subgraph cluster_2 {
color=blue
2 [label="Enter block"];
3 [label="Exit block"];
}
4 [label="Access variable R|<local>/x|"];
5 [label="Function call: R|<local>/x|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
6 [label="Exit block"];
}
7 [label="Exit function bar" style="filled" fillcolor=red];
0 [label="Enter file contractsUsage.kt" style="filled" fillcolor=red];
1 [label="Exit file contractsUsage.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter function bar" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
3 [label="Enter block"];
subgraph cluster_3 {
color=blue
4 [label="Enter block"];
5 [label="Exit block"];
}
6 [label="Access variable R|<local>/x|"];
7 [label="Function call: R|<local>/x|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
8 [label="Exit block"];
}
9 [label="Exit function bar" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
2 -> {3};
3 -> {4};
4 -> {5};
5 -> {6};
6 -> {7};
7 -> {8};
8 -> {9};
subgraph cluster_3 {
subgraph cluster_4 {
color=red
8 [label="Enter function baz" style="filled" fillcolor=red];
subgraph cluster_4 {
10 [label="Enter function baz" style="filled" fillcolor=red];
subgraph cluster_5 {
color=blue
9 [label="Enter block"];
subgraph cluster_5 {
color=blue
10 [label="Enter block"];
11 [label="Exit block"];
}
11 [label="Enter block"];
subgraph cluster_6 {
color=blue
12 [label="Enter when"];
subgraph cluster_7 {
color=blue
13 [label="Enter when branch condition "];
14 [label="Const: Boolean(true)"];
15 [label="Exit when branch condition"];
}
16 [label="Synthetic else branch"];
17 [label="Enter when branch result"];
12 [label="Enter block"];
13 [label="Exit block"];
}
subgraph cluster_7 {
color=blue
14 [label="Enter when"];
subgraph cluster_8 {
color=blue
18 [label="Enter block"];
19 [label="Access variable this@R|/baz|"];
20 [label="Function call: this@R|/baz|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
21 [label="Exit block"];
15 [label="Enter when branch condition "];
16 [label="Const: Boolean(true)"];
17 [label="Exit when branch condition"];
}
22 [label="Exit when branch result"];
23 [label="Exit when"];
18 [label="Synthetic else branch"];
19 [label="Enter when branch result"];
subgraph cluster_9 {
color=blue
20 [label="Enter block"];
21 [label="Access variable this@R|/baz|"];
22 [label="Function call: this@R|/baz|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
23 [label="Exit block"];
}
24 [label="Exit when branch result"];
25 [label="Exit when"];
}
24 [label="Exit block"];
26 [label="Exit block"];
}
25 [label="Exit function baz" style="filled" fillcolor=red];
27 [label="Exit function baz" style="filled" fillcolor=red];
}
8 -> {9};
9 -> {10};
10 -> {11};
11 -> {12};
12 -> {13};
13 -> {14};
14 -> {15};
15 -> {16 17};
16 -> {23};
17 -> {18};
18 -> {19};
15 -> {16};
16 -> {17};
17 -> {18 19};
18 -> {25};
19 -> {20};
20 -> {21};
21 -> {22};
22 -> {23};
23 -> {24};
24 -> {25};
25 -> {26};
26 -> {27};
subgraph cluster_9 {
subgraph cluster_10 {
color=red
26 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_10 {
28 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_11 {
color=blue
27 [label="Enter block"];
subgraph cluster_11 {
color=blue
28 [label="Enter block"];
29 [label="Exit block"];
}
29 [label="Enter block"];
subgraph cluster_12 {
color=blue
30 [label="Enter when"];
subgraph cluster_13 {
color=blue
31 [label="Enter when branch condition "];
32 [label="Const: Boolean(true)"];
33 [label="Exit when branch condition"];
}
34 [label="Synthetic else branch"];
35 [label="Enter when branch result"];
30 [label="Enter block"];
31 [label="Exit block"];
}
subgraph cluster_13 {
color=blue
32 [label="Enter when"];
subgraph cluster_14 {
color=blue
36 [label="Enter block"];
37 [label="Access variable R|<local>/x|"];
38 [label="Function call: R|<local>/x|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
39 [label="Access variable R|<local>/y|"];
40 [label="Function call: R|<local>/y|.R|/baz|()" style="filled" fillcolor=yellow];
41 [label="Jump: ^foo Unit"];
42 [label="Stub" style="filled" fillcolor=gray];
43 [label="Exit block" style="filled" fillcolor=gray];
33 [label="Enter when branch condition "];
34 [label="Const: Boolean(true)"];
35 [label="Exit when branch condition"];
}
44 [label="Exit when branch result" style="filled" fillcolor=gray];
45 [label="Exit when"];
36 [label="Synthetic else branch"];
37 [label="Enter when branch result"];
subgraph cluster_15 {
color=blue
38 [label="Enter block"];
39 [label="Access variable R|<local>/x|"];
40 [label="Function call: R|<local>/x|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
41 [label="Access variable R|<local>/y|"];
42 [label="Function call: R|<local>/y|.R|/baz|()" style="filled" fillcolor=yellow];
43 [label="Jump: ^foo Unit"];
44 [label="Stub" style="filled" fillcolor=gray];
45 [label="Exit block" style="filled" fillcolor=gray];
}
46 [label="Exit when branch result" style="filled" fillcolor=gray];
47 [label="Exit when"];
}
46 [label="Access variable R|<local>/x|"];
47 [label="Function call: R|/bar|(...)" style="filled" fillcolor=yellow];
48 [label="Exit block"];
48 [label="Access variable R|<local>/x|"];
49 [label="Function call: R|/bar|(...)" style="filled" fillcolor=yellow];
50 [label="Exit block"];
}
49 [label="Exit function foo" style="filled" fillcolor=red];
51 [label="Exit function foo" style="filled" fillcolor=red];
}
26 -> {27};
27 -> {28};
28 -> {29};
29 -> {30};
30 -> {31};
31 -> {32};
32 -> {33};
33 -> {34 35};
34 -> {45};
35 -> {36};
36 -> {37};
33 -> {34};
34 -> {35};
35 -> {36 37};
36 -> {47};
37 -> {38};
38 -> {39};
39 -> {40};
40 -> {41};
41 -> {49};
41 -> {42} [style=dotted];
42 -> {43} [style=dotted];
41 -> {42};
42 -> {43};
43 -> {51};
43 -> {44} [style=dotted];
44 -> {45} [style=dotted];
45 -> {46};
46 -> {47};
45 -> {46} [style=dotted];
46 -> {47} [style=dotted];
47 -> {48};
48 -> {49};
49 -> {50};
50 -> {51};
}
@@ -5,86 +5,91 @@ digraph exactlyOnce_kt {
subgraph cluster_0 {
color=red
0 [label="Enter function inlineRun" style="filled" fillcolor=red];
subgraph cluster_1 {
color=blue
1 [label="Enter block"];
subgraph cluster_2 {
color=blue
2 [label="Enter block"];
3 [label="Exit block"];
}
4 [label="Function call: R|<local>/block|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
5 [label="Exit block"];
}
6 [label="Exit function inlineRun" style="filled" fillcolor=red];
0 [label="Enter file exactlyOnce.kt" style="filled" fillcolor=red];
1 [label="Exit file exactlyOnce.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter function inlineRun" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
3 [label="Enter block"];
subgraph cluster_3 {
color=blue
4 [label="Enter block"];
5 [label="Exit block"];
}
6 [label="Function call: R|<local>/block|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
7 [label="Exit block"];
}
8 [label="Exit function inlineRun" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
2 -> {3};
3 -> {4};
4 -> {5};
5 -> {6};
subgraph cluster_3 {
color=red
7 [label="Enter function myRun" style="filled" fillcolor=red];
subgraph cluster_4 {
color=blue
8 [label="Enter block"];
subgraph cluster_5 {
color=blue
9 [label="Enter block"];
10 [label="Exit block"];
}
11 [label="Function call: R|<local>/block|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
12 [label="Exit block"];
}
13 [label="Exit function myRun" style="filled" fillcolor=red];
}
6 -> {7};
7 -> {8};
8 -> {9};
subgraph cluster_4 {
color=red
9 [label="Enter function myRun" style="filled" fillcolor=red];
subgraph cluster_5 {
color=blue
10 [label="Enter block"];
subgraph cluster_6 {
color=blue
11 [label="Enter block"];
12 [label="Exit block"];
}
13 [label="Function call: R|<local>/block|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
14 [label="Exit block"];
}
15 [label="Exit function myRun" style="filled" fillcolor=red];
}
9 -> {10};
10 -> {11};
11 -> {12};
12 -> {13};
subgraph cluster_6 {
color=red
14 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_7 {
color=blue
15 [label="Enter block"];
16 [label="Variable declaration: lval x: R|kotlin/Int|"];
17 [label="Postponed enter to lambda"];
subgraph cluster_8 {
color=blue
18 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_9 {
color=blue
19 [label="Enter block"];
20 [label="Const: Int(1)"];
21 [label="Assignment: R|<local>/x|"];
22 [label="Exit block"];
}
23 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
24 [label="Postponed exit from lambda"];
25 [label="Function call: R|/inlineRun|(...)" style="filled" fillcolor=yellow];
26 [label="Access variable R|<local>/x|"];
27 [label="Function call: R|<local>/x|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
28 [label="Exit block"];
}
29 [label="Exit function test_1" style="filled" fillcolor=red];
}
13 -> {14};
14 -> {15};
15 -> {16};
subgraph cluster_7 {
color=red
16 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_8 {
color=blue
17 [label="Enter block"];
18 [label="Variable declaration: lval x: R|kotlin/Int|"];
19 [label="Postponed enter to lambda"];
subgraph cluster_9 {
color=blue
20 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_10 {
color=blue
21 [label="Enter block"];
22 [label="Const: Int(1)"];
23 [label="Assignment: R|<local>/x|"];
24 [label="Exit block"];
}
25 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
26 [label="Postponed exit from lambda"];
27 [label="Function call: R|/inlineRun|(...)" style="filled" fillcolor=yellow];
28 [label="Access variable R|<local>/x|"];
29 [label="Function call: R|<local>/x|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
30 [label="Exit block"];
}
31 [label="Exit function test_1" style="filled" fillcolor=red];
}
16 -> {17};
17 -> {18 25};
17 -> {24} [style=dotted];
17 -> {18} [style=dashed];
17 -> {18};
18 -> {19};
19 -> {20};
19 -> {20 27};
19 -> {26} [style=dotted];
19 -> {20} [style=dashed];
20 -> {21};
21 -> {22};
22 -> {23};
@@ -94,43 +99,43 @@ digraph exactlyOnce_kt {
26 -> {27};
27 -> {28};
28 -> {29};
subgraph cluster_10 {
color=red
30 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_11 {
color=blue
31 [label="Enter block"];
32 [label="Variable declaration: lval x: R|kotlin/Int|"];
33 [label="Postponed enter to lambda"];
subgraph cluster_12 {
color=blue
34 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_13 {
color=blue
35 [label="Enter block"];
36 [label="Const: Int(1)"];
37 [label="Assignment: R|<local>/x|"];
38 [label="Exit block"];
}
39 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
40 [label="Postponed exit from lambda"];
41 [label="Function call: R|/myRun|(...)" style="filled" fillcolor=yellow];
42 [label="Access variable R|<local>/x|"];
43 [label="Function call: R|<local>/x|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
44 [label="Exit block"];
}
45 [label="Exit function test_2" style="filled" fillcolor=red];
}
29 -> {30};
30 -> {31};
31 -> {32};
subgraph cluster_11 {
color=red
32 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_12 {
color=blue
33 [label="Enter block"];
34 [label="Variable declaration: lval x: R|kotlin/Int|"];
35 [label="Postponed enter to lambda"];
subgraph cluster_13 {
color=blue
36 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_14 {
color=blue
37 [label="Enter block"];
38 [label="Const: Int(1)"];
39 [label="Assignment: R|<local>/x|"];
40 [label="Exit block"];
}
41 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
42 [label="Postponed exit from lambda"];
43 [label="Function call: R|/myRun|(...)" style="filled" fillcolor=yellow];
44 [label="Access variable R|<local>/x|"];
45 [label="Function call: R|<local>/x|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
46 [label="Exit block"];
}
47 [label="Exit function test_2" style="filled" fillcolor=red];
}
32 -> {33};
33 -> {34 41};
33 -> {40} [style=dotted];
33 -> {34} [style=dashed];
33 -> {34};
34 -> {35};
35 -> {36};
35 -> {36 43};
35 -> {42} [style=dotted];
35 -> {36} [style=dashed];
36 -> {37};
37 -> {38};
38 -> {39};
@@ -140,5 +145,7 @@ digraph exactlyOnce_kt {
42 -> {43};
43 -> {44};
44 -> {45};
45 -> {46};
46 -> {47};
}
@@ -5,257 +5,262 @@ digraph flow_kt {
subgraph cluster_0 {
color=red
0 [label="Enter function bar" style="filled" fillcolor=red];
subgraph cluster_1 {
0 [label="Enter file flow.kt" style="filled" fillcolor=red];
1 [label="Exit file flow.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter function bar" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
1 [label="Enter block"];
subgraph cluster_2 {
color=blue
2 [label="Enter block"];
3 [label="Exit block"];
}
3 [label="Enter block"];
subgraph cluster_3 {
color=blue
4 [label="Enter when"];
subgraph cluster_4 {
color=blue
5 [label="Enter when branch condition "];
6 [label="Const: Boolean(true)"];
7 [label="Exit when branch condition"];
}
8 [label="Synthetic else branch"];
9 [label="Enter when branch result"];
4 [label="Enter block"];
5 [label="Exit block"];
}
subgraph cluster_4 {
color=blue
6 [label="Enter when"];
subgraph cluster_5 {
color=blue
10 [label="Enter block"];
11 [label="Access variable R|<local>/x|"];
12 [label="Function call: R|<local>/x|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
13 [label="Jump: ^bar Unit"];
14 [label="Stub" style="filled" fillcolor=gray];
15 [label="Exit block" style="filled" fillcolor=gray];
7 [label="Enter when branch condition "];
8 [label="Const: Boolean(true)"];
9 [label="Exit when branch condition"];
}
16 [label="Exit when branch result" style="filled" fillcolor=gray];
17 [label="Exit when"];
10 [label="Synthetic else branch"];
11 [label="Enter when branch result"];
subgraph cluster_6 {
color=blue
12 [label="Enter block"];
13 [label="Access variable R|<local>/x|"];
14 [label="Function call: R|<local>/x|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
15 [label="Jump: ^bar Unit"];
16 [label="Stub" style="filled" fillcolor=gray];
17 [label="Exit block" style="filled" fillcolor=gray];
}
18 [label="Exit when branch result" style="filled" fillcolor=gray];
19 [label="Exit when"];
}
18 [label="Access variable R|<local>/x|"];
19 [label="Function call: R|/bar|(...)" style="filled" fillcolor=yellow];
20 [label="Exit block"];
20 [label="Access variable R|<local>/x|"];
21 [label="Function call: R|/bar|(...)" style="filled" fillcolor=yellow];
22 [label="Exit block"];
}
21 [label="Exit function bar" style="filled" fillcolor=red];
23 [label="Exit function bar" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
2 -> {3};
3 -> {4};
4 -> {5};
5 -> {6};
6 -> {7};
7 -> {8 9};
8 -> {17};
9 -> {10};
10 -> {11};
7 -> {8};
8 -> {9};
9 -> {10 11};
10 -> {19};
11 -> {12};
12 -> {13};
13 -> {21};
13 -> {14} [style=dotted];
14 -> {15} [style=dotted];
13 -> {14};
14 -> {15};
15 -> {23};
15 -> {16} [style=dotted];
16 -> {17} [style=dotted];
17 -> {18};
18 -> {19};
17 -> {18} [style=dotted];
18 -> {19} [style=dotted];
19 -> {20};
20 -> {21};
21 -> {22};
22 -> {23};
subgraph cluster_6 {
subgraph cluster_7 {
color=red
22 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_7 {
24 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_8 {
color=blue
23 [label="Enter block"];
subgraph cluster_8 {
color=blue
24 [label="Enter block"];
25 [label="Exit block"];
}
25 [label="Enter block"];
subgraph cluster_9 {
color=blue
26 [label="Enter when"];
subgraph cluster_10 {
color=blue
27 [label="Enter when branch condition "];
28 [label="Const: Boolean(true)"];
29 [label="Exit when branch condition"];
}
26 [label="Enter block"];
27 [label="Exit block"];
}
subgraph cluster_10 {
color=blue
28 [label="Enter when"];
subgraph cluster_11 {
color=blue
30 [label="Enter when branch condition else"];
29 [label="Enter when branch condition "];
30 [label="Const: Boolean(true)"];
31 [label="Exit when branch condition"];
}
32 [label="Enter when branch result"];
subgraph cluster_12 {
color=blue
33 [label="Enter block"];
subgraph cluster_13 {
32 [label="Enter when branch condition else"];
33 [label="Exit when branch condition"];
}
34 [label="Enter when branch result"];
subgraph cluster_13 {
color=blue
35 [label="Enter block"];
subgraph cluster_14 {
color=blue
34 [label="Enter when"];
subgraph cluster_14 {
color=blue
35 [label="Enter when branch condition "];
36 [label="Const: Boolean(false)"];
37 [label="Exit when branch condition"];
}
36 [label="Enter when"];
subgraph cluster_15 {
color=blue
38 [label="Enter when branch condition else"];
37 [label="Enter when branch condition "];
38 [label="Const: Boolean(false)"];
39 [label="Exit when branch condition"];
}
40 [label="Enter when branch result"];
subgraph cluster_16 {
color=blue
41 [label="Enter block"];
42 [label="Access variable R|<local>/y|"];
43 [label="Function call: R|<local>/y|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
44 [label="Access variable R|<local>/z|"];
45 [label="Function call: R|<local>/z|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
46 [label="Jump: ^foo Unit"];
47 [label="Stub" style="filled" fillcolor=gray];
48 [label="Exit block" style="filled" fillcolor=gray];
40 [label="Enter when branch condition else"];
41 [label="Exit when branch condition"];
}
49 [label="Exit when branch result" style="filled" fillcolor=gray];
50 [label="Enter when branch result"];
42 [label="Enter when branch result"];
subgraph cluster_17 {
color=blue
51 [label="Enter block"];
52 [label="Access variable R|<local>/y|"];
53 [label="Function call: R|<local>/y|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
54 [label="Exit block"];
43 [label="Enter block"];
44 [label="Access variable R|<local>/y|"];
45 [label="Function call: R|<local>/y|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
46 [label="Access variable R|<local>/z|"];
47 [label="Function call: R|<local>/z|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
48 [label="Jump: ^foo Unit"];
49 [label="Stub" style="filled" fillcolor=gray];
50 [label="Exit block" style="filled" fillcolor=gray];
}
55 [label="Exit when branch result"];
56 [label="Exit when"];
}
57 [label="Exit block"];
}
58 [label="Exit when branch result"];
59 [label="Enter when branch result"];
subgraph cluster_18 {
color=blue
60 [label="Enter block"];
subgraph cluster_19 {
color=blue
61 [label="Enter block"];
62 [label="Const: Int(0)"];
63 [label="Const: Int(0)"];
64 [label="Function call: Int(0).R|kotlin/Int.rangeTo|(...)" style="filled" fillcolor=yellow];
65 [label="Function call: Int(0).R|kotlin/Int.rangeTo|(...).R|kotlin/ranges/IntProgression.iterator|()" style="filled" fillcolor=yellow];
66 [label="Variable declaration: lval <iterator>: R|kotlin/collections/IntIterator|"];
subgraph cluster_20 {
51 [label="Exit when branch result" style="filled" fillcolor=gray];
52 [label="Enter when branch result"];
subgraph cluster_18 {
color=blue
67 [label="Enter while loop"];
subgraph cluster_21 {
color=blue
68 [label="Enter loop condition"];
69 [label="Access variable R|<local>/<iterator>|"];
70 [label="Function call: R|<local>/<iterator>|.R|SubstitutionOverride<kotlin/collections/IntIterator.hasNext: R|kotlin/Boolean|>|()" style="filled" fillcolor=yellow];
71 [label="Exit loop condition"];
}
53 [label="Enter block"];
54 [label="Access variable R|<local>/y|"];
55 [label="Function call: R|<local>/y|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
56 [label="Exit block"];
}
57 [label="Exit when branch result"];
58 [label="Exit when"];
}
59 [label="Exit block"];
}
60 [label="Exit when branch result"];
61 [label="Enter when branch result"];
subgraph cluster_19 {
color=blue
62 [label="Enter block"];
subgraph cluster_20 {
color=blue
63 [label="Enter block"];
64 [label="Const: Int(0)"];
65 [label="Const: Int(0)"];
66 [label="Function call: Int(0).R|kotlin/Int.rangeTo|(...)" style="filled" fillcolor=yellow];
67 [label="Function call: Int(0).R|kotlin/Int.rangeTo|(...).R|kotlin/ranges/IntProgression.iterator|()" style="filled" fillcolor=yellow];
68 [label="Variable declaration: lval <iterator>: R|kotlin/collections/IntIterator|"];
subgraph cluster_21 {
color=blue
69 [label="Enter while loop"];
subgraph cluster_22 {
color=blue
72 [label="Enter loop block"];
subgraph cluster_23 {
color=blue
73 [label="Enter block"];
74 [label="Access variable R|<local>/<iterator>|"];
75 [label="Function call: R|<local>/<iterator>|.R|kotlin/collections/IntIterator.next|()" style="filled" fillcolor=yellow];
76 [label="Variable declaration: lval i: R|kotlin/Int|"];
subgraph cluster_24 {
color=blue
77 [label="Enter block"];
78 [label="Access variable R|<local>/x|"];
79 [label="Function call: R|<local>/x|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
80 [label="Exit block"];
}
81 [label="Exit block"];
}
82 [label="Exit loop block"];
70 [label="Enter loop condition"];
71 [label="Access variable R|<local>/<iterator>|"];
72 [label="Function call: R|<local>/<iterator>|.R|SubstitutionOverride<kotlin/collections/IntIterator.hasNext: R|kotlin/Boolean|>|()" style="filled" fillcolor=yellow];
73 [label="Exit loop condition"];
}
83 [label="Exit while loop"];
subgraph cluster_23 {
color=blue
74 [label="Enter loop block"];
subgraph cluster_24 {
color=blue
75 [label="Enter block"];
76 [label="Access variable R|<local>/<iterator>|"];
77 [label="Function call: R|<local>/<iterator>|.R|kotlin/collections/IntIterator.next|()" style="filled" fillcolor=yellow];
78 [label="Variable declaration: lval i: R|kotlin/Int|"];
subgraph cluster_25 {
color=blue
79 [label="Enter block"];
80 [label="Access variable R|<local>/x|"];
81 [label="Function call: R|<local>/x|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
82 [label="Exit block"];
}
83 [label="Exit block"];
}
84 [label="Exit loop block"];
}
85 [label="Exit while loop"];
}
84 [label="Exit block"];
86 [label="Exit block"];
}
85 [label="Access variable R|<local>/y|"];
86 [label="Function call: R|<local>/y|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
87 [label="Exit block"];
87 [label="Access variable R|<local>/y|"];
88 [label="Function call: R|<local>/y|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
89 [label="Exit block"];
}
88 [label="Exit when branch result"];
89 [label="Exit when"];
90 [label="Exit when branch result"];
91 [label="Exit when"];
}
subgraph cluster_25 {
subgraph cluster_26 {
color=blue
90 [label="Enter do-while loop"];
subgraph cluster_26 {
92 [label="Enter do-while loop"];
subgraph cluster_27 {
color=blue
91 [label="Enter loop block"];
subgraph cluster_27 {
93 [label="Enter loop block"];
subgraph cluster_28 {
color=blue
92 [label="Enter block"];
93 [label="Access variable R|<local>/z|"];
94 [label="Function call: R|/bar|(...)" style="filled" fillcolor=yellow];
95 [label="Exit block"];
94 [label="Enter block"];
95 [label="Access variable R|<local>/z|"];
96 [label="Function call: R|/bar|(...)" style="filled" fillcolor=yellow];
97 [label="Exit block"];
}
96 [label="Exit loop block"];
98 [label="Exit loop block"];
}
subgraph cluster_28 {
subgraph cluster_29 {
color=blue
97 [label="Enter loop condition"];
98 [label="Const: Boolean(true)"];
99 [label="Exit loop condition"];
99 [label="Enter loop condition"];
100 [label="Const: Boolean(true)"];
101 [label="Exit loop condition"];
}
100 [label="Exit do-while loop" style="filled" fillcolor=gray];
102 [label="Exit do-while loop" style="filled" fillcolor=gray];
}
101 [label="Exit block" style="filled" fillcolor=gray];
103 [label="Exit block" style="filled" fillcolor=gray];
}
102 [label="Exit function foo" style="filled" fillcolor=red];
104 [label="Exit function foo" style="filled" fillcolor=red];
}
22 -> {23};
23 -> {24};
24 -> {25};
25 -> {26};
26 -> {27};
27 -> {28};
28 -> {29};
29 -> {30 59};
29 -> {30};
30 -> {31};
31 -> {32};
31 -> {32 61};
32 -> {33};
33 -> {34};
34 -> {35};
35 -> {36};
36 -> {37};
37 -> {38 50};
37 -> {38};
38 -> {39};
39 -> {40};
39 -> {40 52};
40 -> {41};
41 -> {42};
42 -> {43};
43 -> {44};
44 -> {45};
45 -> {46};
46 -> {102};
46 -> {47} [style=dotted];
47 -> {48} [style=dotted];
46 -> {47};
47 -> {48};
48 -> {104};
48 -> {49} [style=dotted];
49 -> {56} [style=dotted];
50 -> {51};
51 -> {52};
49 -> {50} [style=dotted];
50 -> {51} [style=dotted];
51 -> {58} [style=dotted];
52 -> {53};
53 -> {54};
54 -> {55};
55 -> {56};
56 -> {57};
57 -> {58};
58 -> {89};
58 -> {59};
59 -> {60};
60 -> {61};
60 -> {91};
61 -> {62};
62 -> {63};
63 -> {64};
@@ -266,9 +271,9 @@ digraph flow_kt {
68 -> {69};
69 -> {70};
70 -> {71};
71 -> {72 83};
71 -> {72};
72 -> {73};
73 -> {74};
73 -> {74 85};
74 -> {75};
75 -> {76};
76 -> {77};
@@ -277,9 +282,9 @@ digraph flow_kt {
79 -> {80};
80 -> {81};
81 -> {82};
82 -> {68} [color=green style=dashed];
82 -> {83};
83 -> {84};
84 -> {85};
84 -> {70} [color=green style=dashed];
85 -> {86};
86 -> {87};
87 -> {88};
@@ -294,9 +299,11 @@ digraph flow_kt {
96 -> {97};
97 -> {98};
98 -> {99};
99 -> {91} [color=green style=dashed];
99 -> {100} [style=dotted];
100 -> {101} [style=dotted];
99 -> {100};
100 -> {101};
101 -> {93} [color=green style=dashed];
101 -> {102} [style=dotted];
102 -> {103} [style=dotted];
103 -> {104} [style=dotted];
}
@@ -5,100 +5,107 @@ digraph inPlaceLambda_kt {
subgraph cluster_0 {
color=red
0 [label="Enter function bar" style="filled" fillcolor=red];
subgraph cluster_1 {
0 [label="Enter file inPlaceLambda.kt" style="filled" fillcolor=red];
1 [label="Exit file inPlaceLambda.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter function bar" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
1 [label="Enter block"];
subgraph cluster_2 {
color=blue
2 [label="Enter block"];
3 [label="Exit block"];
}
3 [label="Enter block"];
subgraph cluster_3 {
color=blue
4 [label="Enter when"];
subgraph cluster_4 {
color=blue
5 [label="Enter when branch condition "];
6 [label="Const: Boolean(true)"];
7 [label="Exit when branch condition"];
}
8 [label="Synthetic else branch"];
9 [label="Enter when branch result"];
4 [label="Enter block"];
5 [label="Exit block"];
}
subgraph cluster_4 {
color=blue
6 [label="Enter when"];
subgraph cluster_5 {
color=blue
10 [label="Enter block"];
11 [label="Function call: R|<local>/x|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
12 [label="Exit block"];
7 [label="Enter when branch condition "];
8 [label="Const: Boolean(true)"];
9 [label="Exit when branch condition"];
}
13 [label="Exit when branch result"];
14 [label="Exit when"];
10 [label="Synthetic else branch"];
11 [label="Enter when branch result"];
subgraph cluster_6 {
color=blue
12 [label="Enter block"];
13 [label="Function call: R|<local>/x|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
14 [label="Exit block"];
}
15 [label="Exit when branch result"];
16 [label="Exit when"];
}
15 [label="Exit block"];
17 [label="Exit block"];
}
16 [label="Exit function bar" style="filled" fillcolor=red];
18 [label="Exit function bar" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
2 -> {3};
3 -> {4};
4 -> {5};
5 -> {6};
6 -> {7};
7 -> {8 9};
8 -> {14};
9 -> {10};
10 -> {11};
7 -> {8};
8 -> {9};
9 -> {10 11};
10 -> {16};
11 -> {12};
12 -> {13};
13 -> {14};
14 -> {15};
15 -> {16};
16 -> {17};
17 -> {18};
subgraph cluster_6 {
subgraph cluster_7 {
color=red
17 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_7 {
19 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_8 {
color=blue
18 [label="Enter block"];
subgraph cluster_8 {
color=blue
19 [label="Enter block"];
20 [label="Exit block"];
}
21 [label="Function call: R|<local>/x|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
22 [label="Postponed enter to lambda"];
20 [label="Enter block"];
subgraph cluster_9 {
color=blue
23 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_10 {
color=blue
24 [label="Enter block"];
25 [label="Function call: R|<local>/x|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
26 [label="Exit block"];
}
27 [label="Exit function <anonymous>" style="filled" fillcolor=red];
21 [label="Enter block"];
22 [label="Exit block"];
}
28 [label="Postponed exit from lambda"];
29 [label="Function call: R|/bar|(...)" style="filled" fillcolor=yellow];
30 [label="Exit block"];
23 [label="Function call: R|<local>/x|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
24 [label="Postponed enter to lambda"];
subgraph cluster_10 {
color=blue
25 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_11 {
color=blue
26 [label="Enter block"];
27 [label="Function call: R|<local>/x|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
28 [label="Exit block"];
}
29 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
30 [label="Postponed exit from lambda"];
31 [label="Function call: R|/bar|(...)" style="filled" fillcolor=yellow];
32 [label="Exit block"];
}
31 [label="Exit function foo" style="filled" fillcolor=red];
33 [label="Exit function foo" style="filled" fillcolor=red];
}
17 -> {18};
18 -> {19};
19 -> {20};
20 -> {21};
21 -> {22};
22 -> {23 28 29};
22 -> {23} [style=dashed];
22 -> {23};
23 -> {24};
24 -> {25};
24 -> {25 30 31};
24 -> {25} [style=dashed];
25 -> {26};
26 -> {27};
27 -> {28};
28 -> {29};
29 -> {30};
30 -> {31};
31 -> {32};
32 -> {33};
}
@@ -5,70 +5,75 @@ digraph simple_kt {
subgraph cluster_0 {
color=red
0 [label="Enter function bar" style="filled" fillcolor=red];
subgraph cluster_1 {
color=blue
1 [label="Enter block"];
subgraph cluster_2 {
color=blue
2 [label="Enter block"];
3 [label="Exit block"];
}
4 [label="Access variable R|<local>/x|"];
5 [label="Function call: R|<local>/x|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
6 [label="Exit block"];
}
7 [label="Exit function bar" style="filled" fillcolor=red];
0 [label="Enter file simple.kt" style="filled" fillcolor=red];
1 [label="Exit file simple.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter function bar" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
3 [label="Enter block"];
subgraph cluster_3 {
color=blue
4 [label="Enter block"];
5 [label="Exit block"];
}
6 [label="Access variable R|<local>/x|"];
7 [label="Function call: R|<local>/x|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
8 [label="Exit block"];
}
9 [label="Exit function bar" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
2 -> {3};
3 -> {4};
4 -> {5};
5 -> {6};
6 -> {7};
7 -> {8};
8 -> {9};
subgraph cluster_3 {
subgraph cluster_4 {
color=red
8 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_4 {
10 [label="Enter function foo" style="filled" fillcolor=red];
subgraph cluster_5 {
color=blue
9 [label="Enter block"];
subgraph cluster_5 {
color=blue
10 [label="Enter block"];
11 [label="Exit block"];
}
12 [label="Access variable R|<local>/x|"];
13 [label="Function call: R|<local>/x|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
11 [label="Enter block"];
subgraph cluster_6 {
color=blue
14 [label="Enter when"];
subgraph cluster_7 {
color=blue
15 [label="Enter when branch condition "];
16 [label="Const: Boolean(true)"];
17 [label="Exit when branch condition"];
}
18 [label="Synthetic else branch"];
19 [label="Enter when branch result"];
12 [label="Enter block"];
13 [label="Exit block"];
}
14 [label="Access variable R|<local>/x|"];
15 [label="Function call: R|<local>/x|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
subgraph cluster_7 {
color=blue
16 [label="Enter when"];
subgraph cluster_8 {
color=blue
20 [label="Enter block"];
21 [label="Function call: R|<local>/y|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
22 [label="Exit block"];
17 [label="Enter when branch condition "];
18 [label="Const: Boolean(true)"];
19 [label="Exit when branch condition"];
}
23 [label="Exit when branch result"];
24 [label="Exit when"];
20 [label="Synthetic else branch"];
21 [label="Enter when branch result"];
subgraph cluster_9 {
color=blue
22 [label="Enter block"];
23 [label="Function call: R|<local>/y|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
24 [label="Exit block"];
}
25 [label="Exit when branch result"];
26 [label="Exit when"];
}
25 [label="Access variable R|<local>/z|"];
26 [label="Function call: R|/bar|(...)" style="filled" fillcolor=yellow];
27 [label="Exit block"];
27 [label="Access variable R|<local>/z|"];
28 [label="Function call: R|/bar|(...)" style="filled" fillcolor=yellow];
29 [label="Exit block"];
}
28 [label="Exit function foo" style="filled" fillcolor=red];
30 [label="Exit function foo" style="filled" fillcolor=red];
}
8 -> {9};
9 -> {10};
10 -> {11};
11 -> {12};
12 -> {13};
@@ -76,10 +81,10 @@ digraph simple_kt {
14 -> {15};
15 -> {16};
16 -> {17};
17 -> {18 19};
18 -> {24};
19 -> {20};
20 -> {21};
17 -> {18};
18 -> {19};
19 -> {20 21};
20 -> {26};
21 -> {22};
22 -> {23};
23 -> {24};
@@ -87,5 +92,7 @@ digraph simple_kt {
25 -> {26};
26 -> {27};
27 -> {28};
28 -> {29};
29 -> {30};
}
@@ -5,140 +5,147 @@ digraph unknown_kt {
subgraph cluster_0 {
color=red
0 [label="Enter function inlineRun" style="filled" fillcolor=red];
subgraph cluster_1 {
color=blue
1 [label="Enter block"];
subgraph cluster_2 {
color=blue
2 [label="Enter block"];
3 [label="Exit block"];
}
4 [label="Function call: R|<local>/block|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
5 [label="Exit block"];
}
6 [label="Exit function inlineRun" style="filled" fillcolor=red];
0 [label="Enter file unknown.kt" style="filled" fillcolor=red];
1 [label="Exit file unknown.kt" style="filled" fillcolor=red];
}
0 -> {1} [color=green];
subgraph cluster_1 {
color=red
2 [label="Enter function inlineRun" style="filled" fillcolor=red];
subgraph cluster_2 {
color=blue
3 [label="Enter block"];
subgraph cluster_3 {
color=blue
4 [label="Enter block"];
5 [label="Exit block"];
}
6 [label="Function call: R|<local>/block|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
7 [label="Exit block"];
}
8 [label="Exit function inlineRun" style="filled" fillcolor=red];
}
0 -> {1};
1 -> {2};
2 -> {3};
3 -> {4};
4 -> {5};
5 -> {6};
subgraph cluster_3 {
color=red
7 [label="Enter function myRun" style="filled" fillcolor=red];
subgraph cluster_4 {
color=blue
8 [label="Enter block"];
subgraph cluster_5 {
color=blue
9 [label="Enter block"];
10 [label="Exit block"];
}
11 [label="Function call: R|<local>/block|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
12 [label="Exit block"];
}
13 [label="Exit function myRun" style="filled" fillcolor=red];
}
6 -> {7};
7 -> {8};
8 -> {9};
subgraph cluster_4 {
color=red
9 [label="Enter function myRun" style="filled" fillcolor=red];
subgraph cluster_5 {
color=blue
10 [label="Enter block"];
subgraph cluster_6 {
color=blue
11 [label="Enter block"];
12 [label="Exit block"];
}
13 [label="Function call: R|<local>/block|.R|SubstitutionOverride<kotlin/Function0.invoke: R|kotlin/Unit|>|()" style="filled" fillcolor=yellow];
14 [label="Exit block"];
}
15 [label="Exit function myRun" style="filled" fillcolor=red];
}
9 -> {10};
10 -> {11};
11 -> {12};
12 -> {13};
subgraph cluster_6 {
color=red
14 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_7 {
color=blue
15 [label="Enter block"];
16 [label="Variable declaration: lval x: R|kotlin/Int|"];
17 [label="Postponed enter to lambda"];
subgraph cluster_8 {
color=blue
18 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_9 {
color=blue
19 [label="Enter block"];
20 [label="Const: Int(1)"];
21 [label="Assignment: R|<local>/x|"];
22 [label="Exit block"];
}
23 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
24 [label="Postponed exit from lambda"];
25 [label="Function call: R|/inlineRun|(...)" style="filled" fillcolor=yellow];
26 [label="Access variable R|<local>/x|"];
27 [label="Function call: R|<local>/x|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
28 [label="Exit block"];
}
29 [label="Exit function test_1" style="filled" fillcolor=red];
}
13 -> {14};
14 -> {15};
15 -> {16};
subgraph cluster_7 {
color=red
16 [label="Enter function test_1" style="filled" fillcolor=red];
subgraph cluster_8 {
color=blue
17 [label="Enter block"];
18 [label="Variable declaration: lval x: R|kotlin/Int|"];
19 [label="Postponed enter to lambda"];
subgraph cluster_9 {
color=blue
20 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_10 {
color=blue
21 [label="Enter block"];
22 [label="Const: Int(1)"];
23 [label="Assignment: R|<local>/x|"];
24 [label="Exit block"];
}
25 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
26 [label="Postponed exit from lambda"];
27 [label="Function call: R|/inlineRun|(...)" style="filled" fillcolor=yellow];
28 [label="Access variable R|<local>/x|"];
29 [label="Function call: R|<local>/x|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
30 [label="Exit block"];
}
31 [label="Exit function test_1" style="filled" fillcolor=red];
}
16 -> {17};
17 -> {18 24 25};
17 -> {18} [style=dashed];
17 -> {18};
18 -> {19};
19 -> {20};
19 -> {20 26 27};
19 -> {20} [style=dashed];
20 -> {21};
21 -> {22};
22 -> {23};
23 -> {24};
24 -> {25};
24 -> {17} [color=green style=dashed];
25 -> {26};
26 -> {27};
26 -> {19} [color=green style=dashed];
27 -> {28};
28 -> {29};
subgraph cluster_10 {
color=red
30 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_11 {
color=blue
31 [label="Enter block"];
32 [label="Variable declaration: lval x: R|kotlin/Int|"];
33 [label="Postponed enter to lambda"];
subgraph cluster_12 {
color=blue
34 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_13 {
color=blue
35 [label="Enter block"];
36 [label="Const: Int(1)"];
37 [label="Assignment: R|<local>/x|"];
38 [label="Exit block"];
}
39 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
40 [label="Postponed exit from lambda"];
41 [label="Function call: R|/myRun|(...)" style="filled" fillcolor=yellow];
42 [label="Access variable R|<local>/x|"];
43 [label="Function call: R|<local>/x|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
44 [label="Exit block"];
}
45 [label="Exit function test_2" style="filled" fillcolor=red];
}
29 -> {30};
30 -> {31};
31 -> {32};
subgraph cluster_11 {
color=red
32 [label="Enter function test_2" style="filled" fillcolor=red];
subgraph cluster_12 {
color=blue
33 [label="Enter block"];
34 [label="Variable declaration: lval x: R|kotlin/Int|"];
35 [label="Postponed enter to lambda"];
subgraph cluster_13 {
color=blue
36 [label="Enter function <anonymous>" style="filled" fillcolor=red];
subgraph cluster_14 {
color=blue
37 [label="Enter block"];
38 [label="Const: Int(1)"];
39 [label="Assignment: R|<local>/x|"];
40 [label="Exit block"];
}
41 [label="Exit function <anonymous>" style="filled" fillcolor=red];
}
42 [label="Postponed exit from lambda"];
43 [label="Function call: R|/myRun|(...)" style="filled" fillcolor=yellow];
44 [label="Access variable R|<local>/x|"];
45 [label="Function call: R|<local>/x|.R|kotlin/Int.inc|()" style="filled" fillcolor=yellow];
46 [label="Exit block"];
}
47 [label="Exit function test_2" style="filled" fillcolor=red];
}
32 -> {33};
33 -> {34 40 41};
33 -> {34} [style=dashed];
33 -> {34};
34 -> {35};
35 -> {36};
35 -> {36 42 43};
35 -> {36} [style=dashed];
36 -> {37};
37 -> {38};
38 -> {39};
39 -> {40};
40 -> {41};
40 -> {33} [color=green style=dashed];
41 -> {42};
42 -> {43};
42 -> {35} [color=green style=dashed];
43 -> {44};
44 -> {45};
45 -> {46};
46 -> {47};
}

Some files were not shown because too many files have changed in this diff Show More