blob: c4ec00645e458845796e24423c423bdc90c6c8b6 [file]
flowchart TD
classDef nowrapClass text-align:center,white-space:nowrap;
classDef callStyle fill:#f2debb,stroke:#333,stroke-width:4px;
classDef candidateStyle fill:#f2e5ce,stroke:#333,stroke-width:4px;
classDef stageStyle fill:#c8f0f7,stroke:#333,stroke-width:4px;
classDef readinessStyle fill:#fff4d6,stroke:#777,stroke-width:1px;
session0["<tt>Source session for module &lt;main></tt>"]
class session0 nowrapClass;
session0 --> call1
call1["Call 1<br><br><pre style="display: inline-block;vertical-align: middle;text-align: left;margin: 0;"><tt>IllegalStateException#(String(Something is not defined.))</tt></pre>"]
class call1 nowrapClass;
class call1 callStyle;
call1 --> candidate2
candidate2["Candidate 1: <tt>FirConstructorSymbol java/lang/IllegalStateException.IllegalStateException</tt><br><br><pre style="display: inline-block;vertical-align: middle;text-align: left;margin: 0;"><tt>constructor(p0: String!): {kotlin/IllegalStateException=} IllegalStateException</tt></pre>"]
class candidate2 nowrapClass;
class candidate2 candidateStyle;
candidate2 --> stage3
stage3["Resolution Stages > CheckArguments"]
class stage3 nowrapClass;
class stage3 stageStyle;
constraint4["<tt>String &lt;: String!</tt><br><br><i><div style="display: inline-block;vertical-align: middle;">from</div> <pre style="display: inline-block;vertical-align: middle;text-align: left;margin: 0;"><tt>Argument String(Something is not defined.)</tt></pre></i>"]
class constraint4 nowrapClass;
stage3 ~~~ constraint4
constraint4 ~~~ stage5
stage5["Continue Resolution Stages > CheckLambdaAgainstTypeVariableContradiction"]
class stage5 nowrapClass;
class stage5 stageStyle;
constraint6["<tt>{IllegalStateException=} IllegalStateException &lt;: Throwable</tt><br><br><i><div style="display: inline-block;vertical-align: middle;">from</div> <pre style="display: inline-block;vertical-align: middle;text-align: left;margin: 0;"><tt>ExpectedType for some call</tt></pre></i>"]
class constraint6 nowrapClass;
stage5 ~~~ constraint6
constraint6 ~~~ call7
call7["Call 2<br><br><pre style="display: inline-block;vertical-align: middle;text-align: left;margin: 0;"><tt>parse#(R|&lt;local>/data|)</tt></pre>"]
class call7 nowrapClass;
class call7 callStyle;
call7 --> candidate8
candidate8["Candidate 1: <tt>FirNamedFunctionSymbol /parse</tt><br><br><pre style="display: inline-block;vertical-align: middle;text-align: left;margin: 0;"><tt>fun &lt;T> parse(data: String): T</tt></pre>"]
class candidate8 nowrapClass;
class candidate8 candidateStyle;
candidate8 --> stage9
stage9["Resolution Stages > CreateFreshTypeVariableSubstitutorStage"]
class stage9 nowrapClass;
class stage9 stageStyle;
stage9 ~~~ newVariable10
newVariable10["New <tt>TypeVariable(T)</tt> for <tt>FirNamedFunctionSymbol /parse</tt>s parameter 0"]
class newVariable10 nowrapClass;
newVariable10 ~~~ stage11
stage11["Resolution Stages > CheckArguments"]
class stage11 nowrapClass;
class stage11 stageStyle;
constraint12["<tt>String &lt;: String</tt><br><br><i><div style="display: inline-block;vertical-align: middle;">from</div> <pre style="display: inline-block;vertical-align: middle;text-align: left;margin: 0;"><tt>Argument R|&lt;local>/data|</tt></pre></i>"]
class constraint12 nowrapClass;
stage11 ~~~ constraint12
constraint12 ~~~ stage13
stage13["Resolution Stages > CheckLambdaAgainstTypeVariableContradiction"]
class stage13 nowrapClass;
class stage13 stageStyle;
constraint14["<tt>TypeVariable(T) &lt;: dynamic</tt><br><br><i><div style="display: inline-block;vertical-align: middle;">from</div> <pre style="display: inline-block;vertical-align: middle;text-align: left;margin: 0;"><tt>ExpectedType for some call</tt></pre></i>"]
class constraint14 nowrapClass;
stage13 ~~~ constraint14
constraint14 ~~~ stage15
stage15["Call Completion"]
class stage15 nowrapClass;
class stage15 stageStyle;
stage15 ~~~ variableReadiness16
variableReadiness16["Choose <tt>TypeVariable(T)</tt> with <pre style="display: inline-block;vertical-align: middle;text-align: left;margin: 0;"><tt>Readiness(
false ALLOWED
false HAS_PROPER_CONSTRAINTS
false HAS_NO_OUTER_TYPE_VARIABLE_DEPENDENCY
false HAS_CAPTURED_UPPER_BOUND_WITH_SELF_TYPES
false HAS_PROPER_NON_SELF_TYPE_BASED_CONSTRAINT
false HAS_NO_DEPENDENCIES_TO_OTHER_VARIABLES
false HAS_PROPER_NON_TRIVIAL_CONSTRAINTS
false HAS_PROPER_NON_TRIVIAL_CONSTRAINTS_OTHER_THAN_INCORPORATED_FROM_DECLARED_UPPER_BOUND
false REIFIED
false HAS_PROPER_FLEXIBLE_LOWER_CONSTRAINT
false HAS_PROPER_NON_ILT_CONSTRAINT
false HAS_NO_EXPLICIT_LOWER_NOTHING_CONSTRAINT
false HAS_PROPER_EQUALITY_CONSTRAINT
false HAS_PROPER_NON_NOTHING_NON_UPPER_CONSTRAINT
)</tt></pre>"]
class variableReadiness16 nowrapClass;
class variableReadiness16 readinessStyle;
variableReadiness16 ~~~ call17
call17["Call 3<br><br><pre style="display: inline-block;vertical-align: middle;text-align: left;margin: 0;"><tt>when () {
==(this@R|/Test|.R|/Test.something|, Null(null)) -> {
throw R|java/lang/IllegalStateException.IllegalStateException|(String(Something is not defined.))
}
else -> {
R?C|/parse|(R|&lt;local>/data|)
}
}
</tt></pre>"]
class call17 nowrapClass;
class call17 callStyle;
call17 --> candidate18
candidate18["Candidate 1: <tt>FirSyntheticFunctionSymbol _synthetic/WHEN_CALL</tt><br><br><pre style="display: inline-block;vertical-align: middle;text-align: left;margin: 0;"><tt>fun &lt;K> WHEN_CALL(vararg branches: K): K
</tt></pre>"]
class candidate18 nowrapClass;
class candidate18 candidateStyle;
candidate18 --> stage19
stage19["Resolution Stages > CreateFreshTypeVariableSubstitutorStage"]
class stage19 nowrapClass;
class stage19 stageStyle;
stage19 ~~~ newVariable20
newVariable20["New <tt>TypeVariable(K)</tt> for <tt>FirSyntheticFunctionSymbol _synthetic/WHEN_CALL</tt>s parameter 0"]
class newVariable20 nowrapClass;
newVariable20 ~~~ stage21
stage21["Resolution Stages > CheckArguments"]
class stage21 nowrapClass;
class stage21 stageStyle;
constraint22["<tt>Nothing &lt;: TypeVariable(K)</tt><br><br><i><div style="display: inline-block;vertical-align: middle;">from</div> <pre style="display: inline-block;vertical-align: middle;text-align: left;margin: 0;"><tt>Argument throw R|java/lang/IllegalStateException.IllegalStateException|(String(Something is not defined.))</tt></pre></i>"]
class constraint22 nowrapClass;
stage21 ~~~ constraint22
constraint23["<tt>TypeVariable(T) &lt;: TypeVariable(K)</tt><br><br><i><div style="display: inline-block;vertical-align: middle;">from</div> <pre style="display: inline-block;vertical-align: middle;text-align: left;margin: 0;"><tt>Argument R?C|/parse|(R|&lt;local>/data|)</tt></pre></i>"]
class constraint23 nowrapClass;
stage21 ~~~ constraint23
constraint22 ~~~ stage24
constraint23 ~~~ stage24
stage24["Resolution Stages > CheckIncompatibleTypeVariableUpperBounds"]
class stage24 nowrapClass;
class stage24 stageStyle;
constraint25["<tt>TypeVariable(K) == dynamic</tt><br><br><i><div style="display: inline-block;vertical-align: middle;">from</div> <pre style="display: inline-block;vertical-align: middle;text-align: left;margin: 0;"><tt>ExpectedType for some call</tt></pre></i>"]
class constraint25 nowrapClass;
stage24 ~~~ constraint25
constraint26["<tt>TypeVariable(T) &lt;: dynamic</tt>"]
class constraint26 nowrapClass;
constraint23 --> constraint26
constraint25 --> constraint26
constraint26 ~~~ stage27
stage27["Call Completion"]
class stage27 nowrapClass;
class stage27 stageStyle;
stage27 ~~~ variableReadiness28
variableReadiness28["Choose <tt>TypeVariable(T)</tt> with <pre style="display: inline-block;vertical-align: middle;text-align: left;margin: 0;"><tt>Readiness(
true ALLOWED
true HAS_PROPER_CONSTRAINTS
true HAS_NO_OUTER_TYPE_VARIABLE_DEPENDENCY
false HAS_CAPTURED_UPPER_BOUND_WITH_SELF_TYPES
true HAS_PROPER_NON_SELF_TYPE_BASED_CONSTRAINT
true HAS_NO_DEPENDENCIES_TO_OTHER_VARIABLES
true HAS_PROPER_NON_TRIVIAL_CONSTRAINTS
true HAS_PROPER_NON_TRIVIAL_CONSTRAINTS_OTHER_THAN_INCORPORATED_FROM_DECLARED_UPPER_BOUND
false REIFIED
false HAS_PROPER_FLEXIBLE_LOWER_CONSTRAINT
true HAS_PROPER_NON_ILT_CONSTRAINT
true HAS_NO_EXPLICIT_LOWER_NOTHING_CONSTRAINT
false HAS_PROPER_EQUALITY_CONSTRAINT
false HAS_PROPER_NON_NOTHING_NON_UPPER_CONSTRAINT
)</tt></pre>"]
class variableReadiness28 nowrapClass;
class variableReadiness28 readinessStyle;
constraint30["<tt>TypeVariable(T) == dynamic</tt><br><br><i><div style="display: inline-block;vertical-align: middle;">from</div> <pre style="display: inline-block;vertical-align: middle;text-align: left;margin: 0;"><tt>Fix variable T</tt></pre></i>"]
class constraint30 nowrapClass;
variableReadiness28 ~~~ constraint30
constraint31["<tt>dynamic &lt;: TypeVariable(K)</tt>"]
class constraint31 nowrapClass;
constraint30 --> constraint31
constraint23 --> constraint31
constraint32["<tt>dynamic &lt;: TypeVariable(K)</tt><br><br><i><div style="display: inline-block;vertical-align: middle;">from</div> <pre style="display: inline-block;vertical-align: middle;text-align: left;margin: 0;"><tt>Fix variable T</tt></pre></i>"]
class constraint32 nowrapClass;
variableReadiness28 ~~~ constraint32
constraint31 ~~~ variableReadiness29
constraint32 ~~~~ variableReadiness29
variableReadiness29["Choose <tt>TypeVariable(K)</tt> with <pre style="display: inline-block;vertical-align: middle;text-align: left;margin: 0;"><tt>Readiness(
true ALLOWED
true HAS_PROPER_CONSTRAINTS
true HAS_NO_OUTER_TYPE_VARIABLE_DEPENDENCY
false HAS_CAPTURED_UPPER_BOUND_WITH_SELF_TYPES
true HAS_PROPER_NON_SELF_TYPE_BASED_CONSTRAINT
true HAS_NO_DEPENDENCIES_TO_OTHER_VARIABLES
true HAS_PROPER_NON_TRIVIAL_CONSTRAINTS
true HAS_PROPER_NON_TRIVIAL_CONSTRAINTS_OTHER_THAN_INCORPORATED_FROM_DECLARED_UPPER_BOUND
false REIFIED
false HAS_PROPER_FLEXIBLE_LOWER_CONSTRAINT
true HAS_PROPER_NON_ILT_CONSTRAINT
false HAS_NO_EXPLICIT_LOWER_NOTHING_CONSTRAINT
true HAS_PROPER_EQUALITY_CONSTRAINT
false HAS_PROPER_NON_NOTHING_NON_UPPER_CONSTRAINT
)</tt></pre>"]
class variableReadiness29 nowrapClass;
class variableReadiness29 readinessStyle;
constraint33["<tt>TypeVariable(K) == dynamic</tt><br><br><i><div style="display: inline-block;vertical-align: middle;">from</div> <pre style="display: inline-block;vertical-align: middle;text-align: left;margin: 0;"><tt>Fix variable K</tt></pre></i>"]
class constraint33 nowrapClass;
variableReadiness29 ~~~ constraint33
constraint33 ~~~ call34
call34["Call 4<br><br><pre style="display: inline-block;vertical-align: middle;text-align: left;margin: 0;"><tt>TODO#()</tt></pre>"]
class call34 nowrapClass;
class call34 callStyle;
call34 --> candidate35
candidate35["Candidate 1: <tt>FirNamedFunctionSymbol kotlin/TODO</tt><br><br><pre style="display: inline-block;vertical-align: middle;text-align: left;margin: 0;"><tt>@InlineOnly() fun TODO(): Nothing
</tt></pre>"]
class candidate35 nowrapClass;
class candidate35 candidateStyle;
candidate35 --> stage36
stage36["Continue Resolution Stages > CheckLambdaAgainstTypeVariableContradiction"]
class stage36 nowrapClass;
class stage36 stageStyle;
constraint37["<tt>Nothing &lt;: T</tt><br><br><i><div style="display: inline-block;vertical-align: middle;">from</div> <pre style="display: inline-block;vertical-align: middle;text-align: left;margin: 0;"><tt>ExpectedType for some call</tt></pre></i>"]
class constraint37 nowrapClass;
stage36 ~~~ constraint37
linkStyle 4 stroke:#990000
linkStyle 6 stroke:#009999
linkStyle 12 stroke:#4c9900
linkStyle 14 stroke:#4c0099
linkStyle 23 stroke:#994900
linkStyle 24 stroke:#004f99
linkStyle 26 stroke:#004f99
linkStyle 27 stroke:#039900
linkStyle 28 stroke:#950099
linkStyle 31 stroke:#992400
linkStyle 32 stroke:#004f99
linkStyle 34 stroke:#007499
linkStyle 35 stroke:#279900
linkStyle 37 stroke:#710099
style constraint4 stroke:#990000;
style constraint6 stroke:#009999;
style constraint12 stroke:#4c9900;
style constraint14 stroke:#4c0099;
style constraint22 stroke:#994900;
style constraint23 stroke:#004f99;
style constraint25 stroke:#039900;
style constraint26 stroke:#950099;
style constraint30 stroke:#992400;
style constraint31 stroke:#007499;
style constraint32 stroke:#279900;
style constraint33 stroke:#710099;