Extraction Engine: Do not extract type parameter if it's resolved in the target scope

#KT-7246 Fixed
This commit is contained in:
Alexey Sedunov
2015-05-12 12:44:34 +03:00
parent 7045140d11
commit b69b66feab
12 changed files with 197 additions and 48 deletions
@@ -0,0 +1,16 @@
// WITH_RUNTIME
// PARAM_TYPES: Foo<T>
// PARAM_TYPES: kotlin.String, Comparable<String>, CharSequence, kotlin.Any
// PARAM_DESCRIPTOR: internal final class Foo<T> defined in root package
// PARAM_DESCRIPTOR: value-parameter val l: kotlin.String defined in Foo.test
import java.util.*
// SIBLING:
class Foo<T> {
val map = HashMap<String, T>()
fun test(l: String): T {
return <selection>map[l]</selection>
}
}
@@ -0,0 +1,18 @@
// WITH_RUNTIME
// PARAM_TYPES: Foo<T>
// PARAM_TYPES: kotlin.String, Comparable<String>, CharSequence, kotlin.Any
// PARAM_DESCRIPTOR: internal final class Foo<T> defined in root package
// PARAM_DESCRIPTOR: value-parameter val l: kotlin.String defined in Foo.test
import java.util.*
// SIBLING:
class Foo<T> {
val map = HashMap<String, T>()
fun test(l: String): T {
return t(l)
}
}
private fun <T> Foo<T>.t(l: String) = map[l]
@@ -0,0 +1,13 @@
// WITH_RUNTIME
// PARAM_TYPES: kotlin.String, Comparable<String>, CharSequence, kotlin.Any
// PARAM_DESCRIPTOR: value-parameter val l: kotlin.String defined in Foo.test
import java.util.*
class Foo<T> {
val map = HashMap<String, T>()
fun test(l: String): T {
return <selection>map[l]</selection>
}
}
@@ -0,0 +1,15 @@
// WITH_RUNTIME
// PARAM_TYPES: kotlin.String, Comparable<String>, CharSequence, kotlin.Any
// PARAM_DESCRIPTOR: value-parameter val l: kotlin.String defined in Foo.test
import java.util.*
class Foo<T> {
val map = HashMap<String, T>()
fun test(l: String): T {
return t(l)
}
private fun t(l: String) = map[l]
}