mirror of
https://github.com/jlengrand/kotlin.git
synced 2026-04-05 08:31:31 +00:00
tmp
This commit is contained in:
@@ -8,7 +8,7 @@ buildscript {
|
||||
extra["defaultSnapshotVersion"] = "1.3-SNAPSHOT"
|
||||
val cacheRedirectorEnabled = findProperty("cacheRedirectorEnabled")?.toString()?.toBoolean() == true
|
||||
|
||||
kotlinBootstrapFrom(BootstrapOption.BintrayBootstrap("1.3.70-dev-1416", cacheRedirectorEnabled))
|
||||
kotlinBootstrapFrom(BootstrapOption.BintrayBootstrap("1.3.70-dev-1806", cacheRedirectorEnabled))
|
||||
|
||||
repositories {
|
||||
bootstrapKotlinRepo?.let(::maven)
|
||||
|
||||
@@ -638,9 +638,9 @@ class FirDataFlowAnalyzer(private val components: FirAbstractBodyResolveTransfor
|
||||
* x.length
|
||||
* }
|
||||
*/
|
||||
val realVariable = getOrCreateRealVariable(variable)
|
||||
requireNotNull(realVariable)
|
||||
variableStorage[initializer]?.takeIf { it.isSynthetic() }?.let { initializerVariable ->
|
||||
val realVariable = getOrCreateRealVariable(variable)
|
||||
requireNotNull(realVariable)
|
||||
logicSystem.changeVariableForConditionFlow(node.flow, initializerVariable, realVariable)
|
||||
}
|
||||
|
||||
@@ -648,6 +648,21 @@ class FirDataFlowAnalyzer(private val components: FirAbstractBodyResolveTransfor
|
||||
getOrCreateRealVariable(initializer)?.let { rhsVariable ->
|
||||
variableStorage.createAliasVariable(variable.symbol, rhsVariable)
|
||||
}
|
||||
|
||||
getRealVariablesForSafeCallChain(initializer).takeIf { it.isNotEmpty() }?.let {
|
||||
val flow = node.flow
|
||||
for (variableFromSafeCall in it) {
|
||||
logicSystem.addConditionalInfo(
|
||||
flow,
|
||||
variableFromSafeCall,
|
||||
ConditionalFirDataFlowInfo(
|
||||
NotEqNull,
|
||||
realVariable,
|
||||
FirDataFlowInfo(setOf(session.builtinTypes.anyType.coneTypeUnsafe()), emptySet())
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun exitVariableAssignment(assignment: FirVariableAssignment) {
|
||||
|
||||
21
compiler/fir/resolve/testData/resolve/smartcasts/anotherBoundSmartcasts.kt
vendored
Normal file
21
compiler/fir/resolve/testData/resolve/smartcasts/anotherBoundSmartcasts.kt
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
interface A {
|
||||
fun foo(): Int
|
||||
|
||||
val x: Int
|
||||
|
||||
fun bar()
|
||||
}
|
||||
|
||||
fun test_1(a: A?) {
|
||||
val x = a?.x
|
||||
if (x != null) {
|
||||
a.bar()
|
||||
}
|
||||
}
|
||||
|
||||
fun test_2(a: A?) {
|
||||
val x = a?.foo()
|
||||
if (x != null) {
|
||||
a.bar()
|
||||
}
|
||||
}
|
||||
@@ -118,6 +118,11 @@ public class FirDiagnosticsWithCfgTestGenerated extends AbstractFirDiagnosticsWi
|
||||
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/fir/resolve/testData/resolve/smartcasts"), Pattern.compile("^([^.]+)\\.kt$"), true);
|
||||
}
|
||||
|
||||
@TestMetadata("anotherBoundSmartcasts.kt")
|
||||
public void testAnotherBoundSmartcasts() throws Exception {
|
||||
runTest("compiler/fir/resolve/testData/resolve/smartcasts/anotherBoundSmartcasts.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("bangbang.kt")
|
||||
public void testBangbang() throws Exception {
|
||||
runTest("compiler/fir/resolve/testData/resolve/smartcasts/bangbang.kt");
|
||||
|
||||
Reference in New Issue
Block a user