FIR: support varargs in resolve

This commit is contained in:
Simon Ogorodnik
2019-04-18 14:27:18 +03:00
committed by Mikhail Glukhikh
parent fa135bbab0
commit 9dcf8f836a
13 changed files with 145 additions and 28 deletions
@@ -3,7 +3,7 @@ FILE: default.kt
}
public final fun bar(first: R|kotlin/Int|, second: R|kotlin/Double| = Double(2.71), third: R|kotlin/Boolean|, fourth: R|kotlin/String| = String()): R|kotlin/Unit| {
}
public final fun baz(x: R|kotlin/Int|, vararg y: R|kotlin/String|, z: R|kotlin/Boolean| = Boolean(false)): R|kotlin/Unit| {
public final fun baz(x: R|kotlin/Int|, vararg y: R|kotlin/Array<kotlin/String>|, z: R|kotlin/Boolean| = Boolean(false)): R|kotlin/Unit| {
}
public final fun test(): R|kotlin/Unit| {
R|/foo|(Int(1))
+3 -3
View File
@@ -1,7 +1,7 @@
FILE: vararg.kt
public final fun foo(x: R|kotlin/Int|, vararg y: R|kotlin/String|): R|kotlin/Unit| {
public final fun foo(x: R|kotlin/Int|, vararg y: R|kotlin/Array<kotlin/String>|): R|kotlin/Unit| {
}
public final fun bar(x: R|kotlin/Int|, vararg y: R|kotlin/String|, z: R|kotlin/Boolean|): R|kotlin/Unit| {
public final fun bar(x: R|kotlin/Int|, vararg y: R|kotlin/Array<kotlin/String>|, z: R|kotlin/Boolean|): R|kotlin/Unit| {
}
public final fun test(): R|kotlin/Unit| {
R|/foo|(Int(1))
@@ -9,7 +9,7 @@ FILE: vararg.kt
R|/foo|(Int(1), String(my), String(yours))
<Inapplicable(INAPPLICABLE): [/foo]>#(String())
<Inapplicable(INAPPLICABLE): [/foo]>#(Int(1), Int(2))
R|/bar|(Int(1), z = Boolean(true), y = <Inapplicable(INAPPLICABLE): [kotlin/arrayOf]>#(String(my), String(yours)))
R|/bar|(Int(1), z = Boolean(true), y = R|kotlin/arrayOf|<R|TypeVariable(T)|>(String(my), String(yours)))
<Inapplicable(PARAMETER_MAPPING_ERROR): [/bar]>#(Int(0), z = Boolean(false), y = String(), y = String(other))
<Inapplicable(PARAMETER_MAPPING_ERROR): [/bar]>#(Int(0), String(), Boolean(true))
}
@@ -0,0 +1,8 @@
fun foo(vararg x: String) {}
fun foo() {}
fun main() {
foo()
foo("!")
}
@@ -0,0 +1,9 @@
FILE: vararg.kt
public final fun foo(vararg x: R|kotlin/Array<kotlin/String>|): R|kotlin/Unit| {
}
public final fun foo(): R|kotlin/Unit| {
}
public final fun main(): R|kotlin/Unit| {
R|/foo|()
R|/foo|(String(!))
}