KT-8794 Parameter Information should work in index expression

#KT-8794 Fixed
This commit is contained in:
Valentin Kipyatkov
2015-10-06 15:21:21 +03:00
parent 9bd5f8affc
commit ab41641a19
44 changed files with 585 additions and 414 deletions
@@ -0,0 +1,5 @@
fun f() {
listOf(1).joinToString(<caret>)
}
//Text: (<highlight>separator: String = ", "</highlight>, prefix: String = "", postfix: String = "", limit: Int = -1, truncated: String = "...", transform: ((Int) -> String)? = null), Disabled: false, Strikeout: false, Green: true
+10
View File
@@ -0,0 +1,10 @@
Deprecated("") fun f(x: Int) = 2
fun f(x: Int, y: Boolean) = 3
fun d(x: Int) {
f(<caret>1)
}
/*
Text: (<highlight>x: Int</highlight>), Disabled: false, Strikeout: true, Green: true
Text: (<highlight>x: Int</highlight>, y: Boolean), Disabled: false, Strikeout: false, Green: false
*/
@@ -0,0 +1,15 @@
interface A
fun A.foo(i: Int) = i
class B {
companion object : A
}
fun test() {
B.foo(<caret>)
}
/*
Text: (<highlight>i: Int</highlight>), Disabled: false, Strikeout: false, Green: true
*/
@@ -0,0 +1,8 @@
fun x(name: String, next: (name: String) -> String): String {
return next(<caret>)
}
//TODO: use parameter names from functional type
/*
Text: (<highlight>p1: String</highlight>), Disabled: false, Strikeout: false, Green: true
*/
@@ -0,0 +1,12 @@
val header = { s: String, s1: String -> }
fun header(name: String, value: Int) { }
fun call() {
header(<caret>"sdf", "sdjfn")
}
//TODO: use parameter names from functional type
/*
Text: (<highlight>name: String</highlight>, value: Int), Disabled: false, Strikeout: false, Green: false
Text: (<highlight>p1: String</highlight>, p2: String), Disabled: false, Strikeout: false, Green: true
*/
@@ -0,0 +1,14 @@
open class A(x: Int) {
fun m(x: Int) = 1
fun m(x: Int, y: Boolean) = 2
}
class B(): A(5) {
fun d(x: Int, y: Boolean, z: String) {
m(1, <caret>false)
}
}
/*
Text: (x: Int), Disabled: true, Strikeout: false, Green: false
Text: (x: Int, <highlight>y: Boolean</highlight>), Disabled: false, Strikeout: false, Green: true
*/
@@ -0,0 +1,15 @@
open class A(x: Int) {
fun m(x: Int) = 1
fun m(x: Int, y: Boolean) = 2
}
class B(): A(5) {
fun m(x: Int, y: Boolean, z: String) {
m(1, <caret>false)
}
}
/*
Text: (x: Int), Disabled: true, Strikeout: false, Green: false
Text: (x: Int, <highlight>y: Boolean</highlight>), Disabled: false, Strikeout: false, Green: true
Text: (x: Int, <highlight>y: Boolean</highlight>, z: String), Disabled: false, Strikeout: false, Green: false
*/
+15
View File
@@ -0,0 +1,15 @@
package test
class A {
fun invoke(i: Int) {
}
}
fun main(args: Array<String>) {
val a = A()
a(<caret>)
}
/*
Text: (<highlight>i: Int</highlight>), Disabled: false, Strikeout: false, Green: true
*/
@@ -0,0 +1,9 @@
fun foo() {
fun fff(p: String, c: Char) {}
fff(<caret>)
}
// TYPE: "1, "
//Text: (p: String, <highlight>c: Char</highlight>), Disabled: true, Strikeout: false, Green: true
@@ -0,0 +1,12 @@
open class A(x: Int) {
fun m(x: Int) = 1
fun m(x: Int, y: Boolean = true, z: Long = 12345678901234, u: String = "abc\n", u0: String = "" + "123", uu: String = "$u", v: Char = '\u0000', vv: String = "asdfsdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdf") = 2
fun d(x: Int) {
m(<caret>y = false, x = 1)
}
}
/*
Text: (<highlight>[y: Boolean = true]</highlight>, [x: Int], [z: Long = 12345678901234], [u: String = "abc\n"], [u0: String = "" + "123"], [uu: String = "$u"], [v: Char = '\u0000'], [vv: String = "..."]), Disabled: false, Strikeout: false, Green: true
Text: ([x: Int]), Disabled: true, Strikeout: false, Green: false
*/
@@ -0,0 +1,12 @@
open class A(x: Int) {
fun m(x: Int) = 1
fun m(x: Int, y: Boolean) = 2
fun d(x: Int) {
m(x = 1, <caret>y = false)
}
}
/*
Text: ([x: Int]), Disabled: true, Strikeout: false, Green: false
Text: ([x: Int], <highlight>[y: Boolean]</highlight>), Disabled: false, Strikeout: false, Green: true
*/
@@ -0,0 +1,12 @@
open class A(x: Int) {
fun m(x: Int) = 1
fun m(x: Int, y: Boolean) = 2
fun d(x: Int) {
m(<caret>y = false, x = 1)
}
}
/*
Text: (<highlight>[y: Boolean]</highlight>, [x: Int]), Disabled: false, Strikeout: false, Green: true
Text: ([x: Int]), Disabled: true, Strikeout: false, Green: false
*/
@@ -0,0 +1,6 @@
fun foo(@Suppress("UNCHECKED_CAST") p: () -> Unit){}
fun bar() {
foo(<caret>)
}
//Text: (<highlight>p: () -> Unit</highlight>), Disabled: false, Strikeout: false, Green: true
@@ -0,0 +1,11 @@
class C {
fun foo(){}
protected fun foo(p: Int){}
}
fun f(c: C) {
c.foo(<caret>1)
}
/*
Text: (<no parameters>), Disabled: true, Strikeout: false, Green: true
*/
+12
View File
@@ -0,0 +1,12 @@
open class A(x: Int) {
fun m(x: Int, y: Boolean) = 2
fun m(x: Int) = 1
fun d(x: Int) {
m(<caret>1, false, false)
}
}
/*
Text: (<highlight>x: Int</highlight>), Disabled: false, Strikeout: false, Green: false
Text: (<highlight>x: Int</highlight>, y: Boolean), Disabled: false, Strikeout: false, Green: false
*/
@@ -0,0 +1,19 @@
class A()
fun A.index(x: Int) : Int {
return 1
}
fun A.index(x: Int, y: Int) : Int {
return x + y
}
fun f() {
val command : A? = null
if (command != null){
command.index(<caret>)
}
}
/*
Text: (<highlight>x: Int</highlight>), Disabled: false, Strikeout: false, Green: false
Text: (<highlight>x: Int</highlight>, y: Int), Disabled: false, Strikeout: false, Green: false
*/
+14
View File
@@ -0,0 +1,14 @@
open class A(x: Int) {
fun xprintln(x: String) {}
fun xprintln() {}
fun xprintln(x: Boolean) {}
fun d(x: Int) {
xprintln(<caret>)
}
}
/*
Text: (<highlight>x: Boolean</highlight>), Disabled: false, Strikeout: false, Green: false
Text: (<highlight>x: String</highlight>), Disabled: false, Strikeout: false, Green: false
Text: (<no parameters>), Disabled: false, Strikeout: false, Green: true
*/
+8
View File
@@ -0,0 +1,8 @@
open class A(x: Int) {
fun m(x: Int, y: Boolean) = 2
fun d(x: Int) {
m(<caret>1, false)
}
}
//Text: (<highlight>x: Int</highlight>, y: Boolean), Disabled: false, Strikeout: false, Green: true
@@ -0,0 +1,9 @@
open class A(x: Int) {
}
class B(): A(5) {
fun m() {
A(<caret>3)
}
}
//Text: (<highlight>x: Int</highlight>), Disabled: false, Strikeout: false, Green: true
@@ -0,0 +1,11 @@
fun test() {
foo(mapOf(<caret>))
}
fun foo(map: Map<Int, String>) {}
/*
Text: (<highlight>keyValuePair: Pair<Int, String></highlight>), Disabled: false, Strikeout: false, Green: false
Text: (<highlight>vararg values: Pair<Int, String></highlight>), Disabled: false, Strikeout: false, Green: false
Text: (<no parameters>), Disabled: false, Strikeout: false, Green: true
*/
@@ -0,0 +1,9 @@
fun test() {
mapOf<Int, String>(<caret>)
}
/*
Text: (<highlight>keyValuePair: Pair<Int, String></highlight>), Disabled: false, Strikeout: false, Green: false
Text: (<highlight>vararg values: Pair<Int, String></highlight>), Disabled: false, Strikeout: false, Green: false
Text: (<no parameters>), Disabled: false, Strikeout: false, Green: true
*/
@@ -0,0 +1,9 @@
fun test() {
mapOf(<caret>1 to "")
}
/*
Text: (<highlight>keyValuePair: Pair<Int, String></highlight>), Disabled: false, Strikeout: false, Green: true
Text: (<highlight>vararg values: Pair<Int, String></highlight>), Disabled: false, Strikeout: false, Green: false
Text: (<no parameters>), Disabled: true, Strikeout: false, Green: false
*/
@@ -0,0 +1,9 @@
fun <T1, T2> f(p: Int, t1: T1, t2: T2){}
fun test() {
f(<caret>1, "", 1)
}
/*
Text: (<highlight>p: Int</highlight>, t1: String, t2: Int), Disabled: false, Strikeout: false, Green: true
*/
@@ -0,0 +1,9 @@
fun <T1, T2> f(p: Int, t1: T1, t2: T2){}
fun test() {
f(1, "", <caret>)
}
/*
Text: (p: Int, t1: String, <highlight>t2: T2</highlight>), Disabled: false, Strikeout: false, Green: true
*/
@@ -0,0 +1,15 @@
fun <T1, T2> f(p: Int, t: T1, pair: Pair<T1, T2>){}
fun test() {
f(1, "", <caret>)
}
//TODO:
/*
Text: (p: Int, t: String, <highlight>pair: Pair<String, T2></highlight>), Disabled: false, Strikeout: false, Green: true
*/
//currently:
/*
Text: (p: Int, t: String, <highlight>pair: Pair<T1, T2></highlight>), Disabled: false, Strikeout: false, Green: true
*/
@@ -0,0 +1,11 @@
fun <T> f(t1: T, t2: T){}
fun test() {
f(<caret>)
}
// TYPE: "1"
/*
Text: (<highlight>t1: Int</highlight>, t2: Int), Disabled: false, Strikeout: false, Green: true
*/
@@ -0,0 +1,9 @@
open class A(x: Int) {
}
class B(): A(<caret>5) {
fun m() {
A(3)
}
}
//Text: (<highlight>x: Int</highlight>), Disabled: false, Strikeout: false, Green: true
@@ -0,0 +1,8 @@
open class A(x: Int) {
fun m(x: Int, y: Boolean) = 2
fun d(x: Int) {
m(1, false, <caret>)
}
}
//Text: (x: Int, y: Boolean), Disabled: true, Strikeout: false, Green: true
@@ -0,0 +1,12 @@
open class A(x: Int) {
fun m(x: Int) = 1
fun m(x: Int, y: Boolean) = 2
fun d(x: Int) {
m(<caret>1, false)
}
}
/*
Text: (<highlight>x: Int</highlight>), Disabled: false, Strikeout: false, Green: false
Text: (<highlight>x: Int</highlight>, y: Boolean), Disabled: false, Strikeout: false, Green: true
*/
@@ -0,0 +1,12 @@
open class A(x: Int) {
fun m(x: Int) = 1
fun m(x: Int, y: Boolean) = 2
fun d(x: Int) {
m(1, <caret>false)
}
}
/*
Text: (x: Int), Disabled: true, Strikeout: false, Green: false
Text: (x: Int, <highlight>y: Boolean</highlight>), Disabled: false, Strikeout: false, Green: true
*/
@@ -0,0 +1,9 @@
fun fff(p: String, c: Char) {}
fun foo() {
fff(<caret>)
}
// TYPE: "1, "
//Text: (p: String, <highlight>c: Char</highlight>), Disabled: true, Strikeout: false, Green: true