Use 'name-hash' mangling scheme

'-' is allowed as a name character both in JVM and in Dalvik, but can't
be a part of a Java identifier.
This commit is contained in:
Dmitry Petrov
2018-08-21 14:14:51 +03:00
committed by Ilya Gorbunov
parent a56d1d3ce8
commit 99498eb7b8
14 changed files with 37 additions and 37 deletions
@@ -1084,7 +1084,7 @@ public class KotlinTypeMapper {
String manglingSuffix = InlineClassManglingUtilsKt.getInlineClassValueParametersManglingSuffix(descriptor); String manglingSuffix = InlineClassManglingUtilsKt.getInlineClassValueParametersManglingSuffix(descriptor);
if (manglingSuffix != null) { if (manglingSuffix != null) {
name += "$" + manglingSuffix; name += "-" + manglingSuffix;
} }
if (DescriptorUtils.isTopLevelDeclaration(descriptor)) { if (DescriptorUtils.isTopLevelDeclaration(descriptor)) {
@@ -26,10 +26,10 @@ fun box(): String {
} }
for (entry in stackTrace) { for (entry in stackTrace) {
if (entry.methodName.startsWith("test$")) { if (entry.methodName.startsWith("test")) {
return "OK" return "OK"
} }
} }
throw AssertionError() throw AssertionError(stackTrace.asList().toString())
} }
@@ -14,5 +14,5 @@ inline class Foo(val x: Int) {
// 1 INVOKESTATIC Foo\$Erased.empty \(I\)V // 1 INVOKESTATIC Foo\$Erased.empty \(I\)V
// 1 INVOKESTATIC Foo\$Erased.withParam \(ILjava/lang/String;\)V // 1 INVOKESTATIC Foo\$Erased.withParam \(ILjava/lang/String;\)V
// 1 INVOKESTATIC Foo\$Erased.withInlineClassParam\$1e4ch6lh \(II\)V // 1 INVOKESTATIC Foo\$Erased.withInlineClassParam-1e4ch6lh \(II\)V
// 5 INVOKEVIRTUAL // 5 INVOKEVIRTUAL
@@ -23,7 +23,7 @@ fun test(password: Password) {
if (password.password != "OK") throw AssertionError() if (password.password != "OK") throw AssertionError()
} }
// 1 public final static test\$9zx0e0j9\(Ljava/lang/String;\)V // 1 public final static test-9zx0e0j9\(Ljava/lang/String;\)V
// 1 public final static test\$79jv2l6i\(Ljava/lang/String;\)V // 1 public final static test-79jv2l6i\(Ljava/lang/String;\)V
// 1 public final static test\$d4pejdz3\(Ljava/lang/String;\)V // 1 public final static test-d4pejdz3\(Ljava/lang/String;\)V
// 1 public final static test\$c6sgoxk6\(Ljava/lang/String;\)V // 1 public final static test-c6sgoxk6\(Ljava/lang/String;\)V
@@ -7,4 +7,4 @@ class C {
} }
// 1 public final getS\(\)Ljava/lang/String; // 1 public final getS\(\)Ljava/lang/String;
// 1 public final setS\$90215lrx\(Ljava/lang/String;\)V // 1 public final setS-90215lrx\(Ljava/lang/String;\)V
@@ -25,6 +25,6 @@ inline class Foo(val x: Int) {
// jvm signature: (ILjava/lang/Object;D)V // jvm signature: (ILjava/lang/Object;D)V
// generic signature: null // generic signature: null
// method: Foo$Erased::withInlineClassType$1e4ch6lh // method: Foo$Erased::withInlineClassType-1e4ch6lh
// jvm signature: (II)V // jvm signature: (II)V
// generic signature: null // generic signature: null
@@ -9,15 +9,15 @@ object Test {
fun nullableValue(f: Foo<Long>?) {} fun nullableValue(f: Foo<Long>?) {}
} }
// method: Test::nonNullTypeArgument$1e4ch6lh // method: Test::nonNullTypeArgument-1e4ch6lh
// jvm signature: (Ljava/util/List;)V // jvm signature: (Ljava/util/List;)V
// generic signature: (Ljava/util/List<Ljava/lang/Integer;>;)V // generic signature: (Ljava/util/List<Ljava/lang/Integer;>;)V
// method: Test::nullableTypeArgument$1e4ch6lh // method: Test::nullableTypeArgument-1e4ch6lh
// jvm signature: (Ljava/util/List;)V // jvm signature: (Ljava/util/List;)V
// generic signature: (Ljava/util/List<Ljava/lang/String;>;)V // generic signature: (Ljava/util/List<Ljava/lang/String;>;)V
// method: Test::nullableValue$31ee2c96 // method: Test::nullableValue-31ee2c96
// jvm signature: (Ljava/util/List;)V // jvm signature: (Ljava/util/List;)V
// generic signature: (Ljava/util/List<Ljava/lang/Long;>;)V // generic signature: (Ljava/util/List<Ljava/lang/Long;>;)V
@@ -15,23 +15,23 @@ object Test {
fun asNullableAndNullableTypeArgument(a: Default<Int?>?) {} fun asNullableAndNullableTypeArgument(a: Default<Int?>?) {}
} }
// method: Test::withNotNullPrimitive$7odoyk9m // method: Test::withNotNullPrimitive-7odoyk9m
// jvm signature: (Ljava/lang/Object;)V // jvm signature: (Ljava/lang/Object;)V
// generic signature: null // generic signature: null
// method: Test::withAdditionalGenericParameter$1k09dck1 // method: Test::withAdditionalGenericParameter-1k09dck1
// jvm signature: (LInv;Ljava/lang/Object;)V // jvm signature: (LInv;Ljava/lang/Object;)V
// generic signature: (LInv<Ljava/lang/String;>;Ljava/lang/Object;)V // generic signature: (LInv<Ljava/lang/String;>;Ljava/lang/Object;)V
// method: Test::asNullable$ao7usvyu // method: Test::asNullable-ao7usvyu
// jvm signature: (LDefault;)V // jvm signature: (LDefault;)V
// generic signature: (LDefault<Ljava/lang/Integer;>;)V // generic signature: (LDefault<Ljava/lang/Integer;>;)V
// method: Test::asNullableTypeArgument$7odoyk9m // method: Test::asNullableTypeArgument-7odoyk9m
// jvm signature: (Ljava/lang/Object;)V // jvm signature: (Ljava/lang/Object;)V
// generic signature: null // generic signature: null
// method: Test::asNullableAndNullableTypeArgument$ao7usvyu // method: Test::asNullableAndNullableTypeArgument-ao7usvyu
// jvm signature: (LDefault;)V // jvm signature: (LDefault;)V
// generic signature: (LDefault<Ljava/lang/Integer;>;)V // generic signature: (LDefault<Ljava/lang/Integer;>;)V
@@ -14,18 +14,18 @@ object Test {
fun asNullableForNullableValue(a: NullableValue<Int>?) {} fun asNullableForNullableValue(a: NullableValue<Int>?) {}
} }
// method: Test::withNotNullPrimitive$7l8qu2mt // method: Test::withNotNullPrimitive-7l8qu2mt
// jvm signature: (Ljava/lang/Object;)V // jvm signature: (Ljava/lang/Object;)V
// generic signature: null // generic signature: null
// method: Test::asNullable$4hed6sie // method: Test::asNullable-4hed6sie
// jvm signature: (Ljava/lang/Object;)V // jvm signature: (Ljava/lang/Object;)V
// generic signature: null // generic signature: null
// method: Test::withNotNullForNullableValue$c6wvqrdl // method: Test::withNotNullForNullableValue-c6wvqrdl
// jvm signature: (Ljava/lang/Object;)V // jvm signature: (Ljava/lang/Object;)V
// generic signature: null // generic signature: null
// method: Test::asNullableForNullableValue$aloai6d9 // method: Test::asNullableForNullableValue-aloai6d9
// jvm signature: (LNullableValue;)V // jvm signature: (LNullableValue;)V
// generic signature: (LNullableValue<Ljava/lang/Integer;>;)V // generic signature: (LNullableValue<Ljava/lang/Integer;>;)V
@@ -8,7 +8,7 @@ object Test {
fun listOfFoo(f: List<Foo>) {} fun listOfFoo(f: List<Foo>) {}
} }
// method: Test::simple$1e4ch6lh // method: Test::simple-1e4ch6lh
// jvm signature: (I)V // jvm signature: (I)V
// generic signature: null // generic signature: null
@@ -16,26 +16,26 @@ object Test {
fun withInnerGenericInlineClassIn(a: AsCmp<AsCmp<Comparable<UInt>>>) {} fun withInnerGenericInlineClassIn(a: AsCmp<AsCmp<Comparable<UInt>>>) {}
} }
// method: Test::withInlineClassArgumentOut$5xv5g663 // method: Test::withInlineClassArgumentOut-5xv5g663
// jvm signature: (Ljava/util/List;)V // jvm signature: (Ljava/util/List;)V
// generic signature: (Ljava/util/List<LUInt;>;)V // generic signature: (Ljava/util/List<LUInt;>;)V
// method: Test::withInlineClassArgumentIn$brqdr5wn // method: Test::withInlineClassArgumentIn-brqdr5wn
// jvm signature: (Ljava/lang/Comparable;)V // jvm signature: (Ljava/lang/Comparable;)V
// generic signature: (Ljava/lang/Comparable<-LUInt;>;)V // generic signature: (Ljava/lang/Comparable<-LUInt;>;)V
// method: Test::withListOfInlineClassArgument$5xv5g663 // method: Test::withListOfInlineClassArgument-5xv5g663
// jvm signature: (Ljava/util/List;)V // jvm signature: (Ljava/util/List;)V
// generic signature: (Ljava/util/List<+Ljava/util/List<LUInt;>;>;)V // generic signature: (Ljava/util/List<+Ljava/util/List<LUInt;>;>;)V
// method: Test::withComparableOfInlineClassArgument$brqdr5wn // method: Test::withComparableOfInlineClassArgument-brqdr5wn
// jvm signature: (Ljava/lang/Comparable;)V // jvm signature: (Ljava/lang/Comparable;)V
// generic signature: (Ljava/lang/Comparable<-Ljava/lang/Comparable<-LUInt;>;>;)V // generic signature: (Ljava/lang/Comparable<-Ljava/lang/Comparable<-LUInt;>;>;)V
// method: Test::withInnerGenericInlineClassOut$5xv5g663 // method: Test::withInnerGenericInlineClassOut-5xv5g663
// jvm signature: (Ljava/util/List;)V // jvm signature: (Ljava/util/List;)V
// generic signature: (Ljava/util/List<LAsList<Ljava/util/List<LUInt;>;>;>;)V // generic signature: (Ljava/util/List<LAsList<Ljava/util/List<LUInt;>;>;>;)V
// method: Test::withInnerGenericInlineClassIn$brqdr5wn // method: Test::withInnerGenericInlineClassIn-brqdr5wn
// jvm signature: (Ljava/lang/Comparable;)V // jvm signature: (Ljava/lang/Comparable;)V
// generic signature: (Ljava/lang/Comparable<-LAsCmp<Ljava/lang/Comparable<LUInt;>;>;>;)V // generic signature: (Ljava/lang/Comparable<-LAsCmp<Ljava/lang/Comparable<LUInt;>;>;>;)V
@@ -13,18 +13,18 @@ object Test {
fun withNullableReferenceAsNullable(a: InlineNullableReference?) {} fun withNullableReferenceAsNullable(a: InlineNullableReference?) {}
} }
// method: Test::withPrimitiveAsNullable$arwt9fzf // method: Test::withPrimitiveAsNullable-arwt9fzf
// jvm signature: (LInlinePrimitive;)V // jvm signature: (LInlinePrimitive;)V
// generic signature: null // generic signature: null
// method: Test::withReferenceAsNullable$8k1ogbuu // method: Test::withReferenceAsNullable-8k1ogbuu
// jvm signature: (Ljava/lang/String;)V // jvm signature: (Ljava/lang/String;)V
// generic signature: null // generic signature: null
// method: Test::withNullablePrimitiveAsNullable$aiqm4cvc // method: Test::withNullablePrimitiveAsNullable-aiqm4cvc
// jvm signature: (LInlineNullablePrimitive;)V // jvm signature: (LInlineNullablePrimitive;)V
// generic signature: null // generic signature: null
// method: Test::withNullableReferenceAsNullable$7pmrpo2y // method: Test::withNullableReferenceAsNullable-7pmrpo2y
// jvm signature: (LInlineNullableReference;)V // jvm signature: (LInlineNullableReference;)V
// generic signature: null // generic signature: null
@@ -9,7 +9,7 @@ object Test {
fun Foo.asAll(x: Any?, a: Foo, b: Int): Foo = TODO() fun Foo.asAll(x: Any?, a: Foo, b: Int): Foo = TODO()
} }
// method: Test::asParam$1e4ch6lh // method: Test::asParam-1e4ch6lh
// jvm signature: (I)V // jvm signature: (I)V
// generic signature: null // generic signature: null
@@ -17,10 +17,10 @@ object Test {
// jvm signature: ()I // jvm signature: ()I
// generic signature: null // generic signature: null
// method: Test::asExtension$1e4ch6lh // method: Test::asExtension-1e4ch6lh
// jvm signature: (I)V // jvm signature: (I)V
// generic signature: null // generic signature: null
// method: Test::asAll$dmjdpekg // method: Test::asAll-dmjdpekg
// jvm signature: (ILjava/lang/Object;II)I // jvm signature: (ILjava/lang/Object;II)I
// generic signature: null // generic signature: null
@@ -10,7 +10,7 @@ object Test {
fun asReturn(): Bar = TODO() fun asReturn(): Bar = TODO()
} }
// method: Test::asParam$1e4ch6lh // method: Test::asParam-1e4ch6lh
// jvm signature: (Ljava/lang/Integer;)V // jvm signature: (Ljava/lang/Integer;)V
// generic signature: null // generic signature: null