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:
Dmitry Petrov
2018-08-15 10:25:49 +03:00
committed by Ilya Gorbunov
parent ff9ba97d66
commit a56d1d3ce8
45 changed files with 1273 additions and 30 deletions
@@ -25,6 +25,6 @@ inline class Foo(val x: Int) {
// jvm signature: (ILjava/lang/Object;D)V
// generic signature: null
// method: Foo$Erased::withInlineClassType
// method: Foo$Erased::withInlineClassType$1e4ch6lh
// jvm signature: (II)V
// generic signature: null
@@ -9,15 +9,15 @@ object Test {
fun nullableValue(f: Foo<Long>?) {}
}
// method: Test::nonNullTypeArgument
// method: Test::nonNullTypeArgument$1e4ch6lh
// jvm signature: (Ljava/util/List;)V
// generic signature: (Ljava/util/List<Ljava/lang/Integer;>;)V
// method: Test::nullableTypeArgument
// method: Test::nullableTypeArgument$1e4ch6lh
// jvm signature: (Ljava/util/List;)V
// generic signature: (Ljava/util/List<Ljava/lang/String;>;)V
// method: Test::nullableValue
// method: Test::nullableValue$31ee2c96
// jvm signature: (Ljava/util/List;)V
// generic signature: (Ljava/util/List<Ljava/lang/Long;>;)V
@@ -15,23 +15,23 @@ object Test {
fun asNullableAndNullableTypeArgument(a: Default<Int?>?) {}
}
// method: Test::withNotNullPrimitive
// method: Test::withNotNullPrimitive$7odoyk9m
// jvm signature: (Ljava/lang/Object;)V
// generic signature: null
// method: Test::withAdditionalGenericParameter
// method: Test::withAdditionalGenericParameter$1k09dck1
// jvm signature: (LInv;Ljava/lang/Object;)V
// generic signature: (LInv<Ljava/lang/String;>;Ljava/lang/Object;)V
// method: Test::asNullable
// method: Test::asNullable$ao7usvyu
// jvm signature: (LDefault;)V
// generic signature: (LDefault<Ljava/lang/Integer;>;)V
// method: Test::asNullableTypeArgument
// method: Test::asNullableTypeArgument$7odoyk9m
// jvm signature: (Ljava/lang/Object;)V
// generic signature: null
// method: Test::asNullableAndNullableTypeArgument
// method: Test::asNullableAndNullableTypeArgument$ao7usvyu
// jvm signature: (LDefault;)V
// generic signature: (LDefault<Ljava/lang/Integer;>;)V
@@ -14,18 +14,18 @@ object Test {
fun asNullableForNullableValue(a: NullableValue<Int>?) {}
}
// method: Test::withNotNullPrimitive
// method: Test::withNotNullPrimitive$7l8qu2mt
// jvm signature: (Ljava/lang/Object;)V
// generic signature: null
// method: Test::asNullable
// method: Test::asNullable$4hed6sie
// jvm signature: (Ljava/lang/Object;)V
// generic signature: null
// method: Test::withNotNullForNullableValue
// method: Test::withNotNullForNullableValue$c6wvqrdl
// jvm signature: (Ljava/lang/Object;)V
// generic signature: null
// method: Test::asNullableForNullableValue
// method: Test::asNullableForNullableValue$aloai6d9
// jvm signature: (LNullableValue;)V
// generic signature: (LNullableValue<Ljava/lang/Integer;>;)V
@@ -8,7 +8,7 @@ object Test {
fun listOfFoo(f: List<Foo>) {}
}
// method: Test::simple
// method: Test::simple$1e4ch6lh
// jvm signature: (I)V
// generic signature: null
@@ -16,26 +16,26 @@ object Test {
fun withInnerGenericInlineClassIn(a: AsCmp<AsCmp<Comparable<UInt>>>) {}
}
// method: Test::withInlineClassArgumentOut
// method: Test::withInlineClassArgumentOut$5xv5g663
// jvm signature: (Ljava/util/List;)V
// generic signature: (Ljava/util/List<LUInt;>;)V
// method: Test::withInlineClassArgumentIn
// method: Test::withInlineClassArgumentIn$brqdr5wn
// jvm signature: (Ljava/lang/Comparable;)V
// generic signature: (Ljava/lang/Comparable<-LUInt;>;)V
// method: Test::withListOfInlineClassArgument
// method: Test::withListOfInlineClassArgument$5xv5g663
// jvm signature: (Ljava/util/List;)V
// generic signature: (Ljava/util/List<+Ljava/util/List<LUInt;>;>;)V
// method: Test::withComparableOfInlineClassArgument
// method: Test::withComparableOfInlineClassArgument$brqdr5wn
// jvm signature: (Ljava/lang/Comparable;)V
// generic signature: (Ljava/lang/Comparable<-Ljava/lang/Comparable<-LUInt;>;>;)V
// method: Test::withInnerGenericInlineClassOut
// method: Test::withInnerGenericInlineClassOut$5xv5g663
// jvm signature: (Ljava/util/List;)V
// generic signature: (Ljava/util/List<LAsList<Ljava/util/List<LUInt;>;>;>;)V
// method: Test::withInnerGenericInlineClassIn
// method: Test::withInnerGenericInlineClassIn$brqdr5wn
// jvm signature: (Ljava/lang/Comparable;)V
// generic signature: (Ljava/lang/Comparable<-LAsCmp<Ljava/lang/Comparable<LUInt;>;>;>;)V
@@ -13,18 +13,18 @@ object Test {
fun withNullableReferenceAsNullable(a: InlineNullableReference?) {}
}
// method: Test::withPrimitiveAsNullable
// method: Test::withPrimitiveAsNullable$arwt9fzf
// jvm signature: (LInlinePrimitive;)V
// generic signature: null
// method: Test::withReferenceAsNullable
// method: Test::withReferenceAsNullable$8k1ogbuu
// jvm signature: (Ljava/lang/String;)V
// generic signature: null
// method: Test::withNullablePrimitiveAsNullable
// method: Test::withNullablePrimitiveAsNullable$aiqm4cvc
// jvm signature: (LInlineNullablePrimitive;)V
// generic signature: null
// method: Test::withNullableReferenceAsNullable
// method: Test::withNullableReferenceAsNullable$7pmrpo2y
// jvm signature: (LInlineNullableReference;)V
// generic signature: null
@@ -9,7 +9,7 @@ object Test {
fun Foo.asAll(x: Any?, a: Foo, b: Int): Foo = TODO()
}
// method: Test::asParam
// method: Test::asParam$1e4ch6lh
// jvm signature: (I)V
// generic signature: null
@@ -17,10 +17,10 @@ object Test {
// jvm signature: ()I
// generic signature: null
// method: Test::asExtension
// method: Test::asExtension$1e4ch6lh
// jvm signature: (I)V
// generic signature: null
// method: Test::asAll
// method: Test::asAll$dmjdpekg
// jvm signature: (ILjava/lang/Object;II)I
// generic signature: null
@@ -10,7 +10,7 @@ object Test {
fun asReturn(): Bar = TODO()
}
// method: Test::asParam
// method: Test::asParam$1e4ch6lh
// jvm signature: (Ljava/lang/Integer;)V
// generic signature: null