diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/ImplementationBodyCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/ImplementationBodyCodegen.java index b6be7cc50dd..efec316cad6 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/ImplementationBodyCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/ImplementationBodyCodegen.java @@ -537,6 +537,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen { public void generateEqualsMethod(@NotNull FunctionDescriptor function, @NotNull List properties) { MethodContext context = ImplementationBodyCodegen.this.context.intoFunction(function); MethodVisitor mv = v.newMethod(JvmDeclarationOriginKt.OtherOrigin(function), ACC_PUBLIC, "equals", "(Ljava/lang/Object;)Z", null, null); + mv.visitParameterAnnotation(0, Type.getDescriptor(Nullable.class), true); InstructionAdapter iv = new InstructionAdapter(mv); mv.visitCode(); @@ -644,6 +645,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen { public void generateToStringMethod(@NotNull FunctionDescriptor function, @NotNull List properties) { MethodContext context = ImplementationBodyCodegen.this.context.intoFunction(function); MethodVisitor mv = v.newMethod(JvmDeclarationOriginKt.OtherOrigin(function), ACC_PUBLIC, "toString", "()Ljava/lang/String;", null, null); + mv.visitAnnotation(Type.getDescriptor(NotNull.class), true); InstructionAdapter iv = new InstructionAdapter(mv); mv.visitCode(); diff --git a/compiler/testData/asJava/lightClasses/DataClassWithCustomImplementedMembers.java b/compiler/testData/asJava/lightClasses/DataClassWithCustomImplementedMembers.java index 1988b04c7eb..a5a92b58574 100644 --- a/compiler/testData/asJava/lightClasses/DataClassWithCustomImplementedMembers.java +++ b/compiler/testData/asJava/lightClasses/DataClassWithCustomImplementedMembers.java @@ -18,6 +18,7 @@ public final class Wrapper { @org.jetbrains.annotations.NotNull public final p.Wrapper.Equals copy(@org.jetbrains.annotations.NotNull p.G code) { /* compiled code */ } + @org.jetbrains.annotations.NotNull public java.lang.String toString() { /* compiled code */ } public int hashCode() { /* compiled code */ } @@ -40,9 +41,10 @@ public final class Wrapper { @org.jetbrains.annotations.NotNull public final p.Wrapper.HashCode copy(@org.jetbrains.annotations.NotNull p.G code) { /* compiled code */ } + @org.jetbrains.annotations.NotNull public java.lang.String toString() { /* compiled code */ } - public boolean equals(java.lang.Object p) { /* compiled code */ } + public boolean equals(@org.jetbrains.annotations.Nullable java.lang.Object p) { /* compiled code */ } } public static final class ToString { @@ -65,6 +67,6 @@ public final class Wrapper { public int hashCode() { /* compiled code */ } - public boolean equals(java.lang.Object p) { /* compiled code */ } + public boolean equals(@org.jetbrains.annotations.Nullable java.lang.Object p) { /* compiled code */ } } } \ No newline at end of file diff --git a/compiler/testData/codegen/kapt/dataClass.txt b/compiler/testData/codegen/kapt/dataClass.txt index f7f0553904f..59494139879 100644 --- a/compiler/testData/codegen/kapt/dataClass.txt +++ b/compiler/testData/codegen/kapt/dataClass.txt @@ -7,9 +7,9 @@ public final class User { public final method component2(): int public synthetic static @org.jetbrains.annotations.NotNull method copy$default(p0: User, p1: java.lang.String, p2: int, p3: int, p4: java.lang.Object): User public final @org.jetbrains.annotations.NotNull method copy(@org.jetbrains.annotations.NotNull p0: java.lang.String, p1: int): User - public method equals(p0: java.lang.Object): boolean + public method equals(@org.jetbrains.annotations.Nullable p0: java.lang.Object): boolean public final method getAge(): int public final @org.jetbrains.annotations.NotNull method getName(): java.lang.String public method hashCode(): int - public method toString(): java.lang.String + public @org.jetbrains.annotations.NotNull method toString(): java.lang.String }