[RAW FIR] Put destructuring statements outside of main lambda block

This fixes a false positive REDECLARATION when you want to shadow
a destructured lambda parameter inside the lambda.

#KT-60771 Fixed
This commit is contained in:
Kirill Rakhman
2023-08-18 17:35:24 +02:00
committed by Space Team
parent 6a9c50325e
commit 8de36c416e
19 changed files with 215 additions and 90 deletions
@@ -6,8 +6,12 @@ fun foo3(i: (Pair) -> Unit) {}
fun bar(x: Int, y: Int) {
foo1 { x -> x }
foo2 { x: Int, y: Int -> x + y }
foo3 { (x, y) -> x + y }
foo2 { x: Int, y: Int ->
val x = x
}
foo3 { (x, y) ->
val x = x
}
}
data class Pair(val a: Int, val b: Int)
@@ -6,8 +6,12 @@ fun foo3(i: (Pair) -> Unit) {}
fun bar(x: Int, y: Int) {
foo1 { <!NAME_SHADOWING!>x<!> -> x }
foo2 { <!NAME_SHADOWING!>x<!>: Int, <!NAME_SHADOWING!>y<!>: Int -> x + y }
foo3 { (x, y) -> x + y }
foo2 { <!NAME_SHADOWING!>x<!>: Int, <!NAME_SHADOWING!>y<!>: Int ->
val <!NAME_SHADOWING!>x<!> = x
}
foo3 { (x, y) ->
val <!NAME_SHADOWING!>x<!> = x
}
}
data class Pair(val a: Int, val b: Int)
@@ -1,6 +1,13 @@
// WITH_STDLIB
fun ff(): Int {
var i = 1
for (i in 0..10) {
}
for ((i, j) in listOf(Pair(1,2))) {
val i = i
}
return i
}
@@ -1,6 +1,13 @@
// WITH_STDLIB
fun ff(): Int {
var i = 1
for (<!NAME_SHADOWING!>i<!> in 0..10) {
}
for ((<!NAME_SHADOWING!>i<!>, j) in listOf(Pair(1,2))) {
val <!NAME_SHADOWING!>i<!> = i
}
return i
}