[LL API] Fix smart-cast collection for special 'FirElement's
'DFANode' is not created for certain elements, such as types or references. Before the change, only the target element itself was queried for DFA, making the 'ContextCollector' return an empty map of smart casts. ^KTIJ-26973 Fixed
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
Tower Data Context:
|
||||
Element 0
|
||||
Scope: FirDefaultStarImportingScope
|
||||
Element 1
|
||||
Scope: FirDefaultSimpleImportingScope
|
||||
Element 2
|
||||
Scope: FirExplicitStarImportingScope
|
||||
Element 3
|
||||
Scope: FirDefaultSimpleImportingScope
|
||||
Element 4
|
||||
Scope: FirDefaultSimpleImportingScope
|
||||
Element 5
|
||||
Scope: FirPackageMemberScope
|
||||
Element 6
|
||||
Scope: FirExplicitSimpleImportingScope
|
||||
Element 7
|
||||
Scope: FirLocalScope
|
||||
Properties:
|
||||
FirValueParameterSymbol a: R|kotlin/Any|
|
||||
Element 8
|
||||
Scope: FirLocalScope
|
||||
Properties:
|
||||
FirPropertySymbol lvar result: R|kotlin/Int|
|
||||
Smart Casts:
|
||||
FirValueParameterSymbol a: R|kotlin/Any|
|
||||
Types:
|
||||
Foo
|
||||
kotlin/Any
|
||||
|
||||
FILE: [ResolvedTo(IMPORTS)] onLabel.kt
|
||||
public final [ResolvedTo(BODY_RESOLVE)] fun test([ResolvedTo(BODY_RESOLVE)] a: R|kotlin/Any|): R|kotlin/Unit| {
|
||||
when () {
|
||||
(R|<local>/a| !is R|Foo|) -> {
|
||||
^test Unit
|
||||
}
|
||||
}
|
||||
|
||||
[ResolvedTo(BODY_RESOLVE)] lvar result: R|kotlin/Int| = Int(0)
|
||||
loop@while(Boolean(true)) {
|
||||
when () {
|
||||
R|<local>/a|.R|/Foo.process|().R|kotlin/Boolean.not|() -> {
|
||||
break@@@[Boolean(true)]
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
public abstract [ResolvedTo(STATUS)] interface Foo : R|kotlin/Any| {
|
||||
public abstract [ResolvedTo(CONTRACTS)] fun process(): R|kotlin/Boolean|
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user