Mangle function names with inline class parameters
Avoid name clashes in cases such as
inline class Login(val login: String)
inline class Password(val password: String)
fun validate(login: Login) { ... }
fun validate(password: Password) { ... }
This commit is contained in:
committed by
Ilya Gorbunov
parent
ff9ba97d66
commit
a56d1d3ce8
+37
@@ -0,0 +1,37 @@
|
||||
// !LANGUAGE: +InlineClasses
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
|
||||
inline class X(val x: Int)
|
||||
inline class Z(val x: Int)
|
||||
inline class Str(val str: String)
|
||||
inline class Name(val name: String)
|
||||
inline class NStr(val str: String?)
|
||||
|
||||
fun testSimple(x: X) {}
|
||||
fun testSimple(z: Z) {}
|
||||
|
||||
fun testMixed(x: Int, y: Int) {}
|
||||
fun testMixed(x: X, y: Int) {}
|
||||
fun testMixed(x: Int, y: X) {}
|
||||
fun testMixed(x: X, y: X) {}
|
||||
|
||||
fun testNewType(s: Str) {}
|
||||
fun testNewType(name: Name) {}
|
||||
|
||||
fun testNullableVsNonNull1(s: Str) {}
|
||||
fun testNullableVsNonNull1(s: Str?) {}
|
||||
|
||||
fun testNullableVsNonNull2(ns: NStr) {}
|
||||
fun testNullableVsNonNull2(ns: NStr?) {}
|
||||
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun testFunVsExt(x: X)<!> {}
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun X.testFunVsExt()<!> {}
|
||||
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun testNonGenericVsGeneric(x: X, y: Number)<!> {}
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun <T : Number> testNonGenericVsGeneric(x: X, y: T)<!> {}
|
||||
|
||||
class C<TC : Number> {
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun testNonGenericVsGeneric(x: X, y: Number)<!> {}
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun <T : Number> testNonGenericVsGeneric(x: X, y: T)<!> {}
|
||||
<!CONFLICTING_JVM_DECLARATIONS!>fun testNonGenericVsGeneric(x: X, y: TC)<!> {}
|
||||
}
|
||||
Reference in New Issue
Block a user