diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/AlternativeSignatureParsing.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/AlternativeSignatureParsing.java index bbcee33fe6e..e79a90b14cd 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/AlternativeSignatureParsing.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/AlternativeSignatureParsing.java @@ -49,6 +49,11 @@ class AlternativeSignatureParsing { @Override public JetType visitNullableType(JetNullableType nullableType, Void data) { try { + if (!autoType.isNullable()) { + throw new AlternativeSignatureMismatchException(String.format( + "Auto type '%s' is not-null, while type in alternative signature is nullable: '%s'", + DescriptorRenderer.TEXT.renderType(autoType), nullableType.getText())); + } return TypeUtils.makeNullable(computeAlternativeTypeFromAnnotation(nullableType.getInnerType(), autoType)); } catch (AlternativeSignatureMismatchException e) { diff --git a/compiler/testData/readJavaBinaryClass/kotlinSignature/error/AddingNullability.java b/compiler/testData/readJavaBinaryClass/kotlinSignature/error/AddingNullability.java new file mode 100644 index 00000000000..d815af6199b --- /dev/null +++ b/compiler/testData/readJavaBinaryClass/kotlinSignature/error/AddingNullability.java @@ -0,0 +1,10 @@ +package test; + +import jet.runtime.typeinfo.KotlinSignature; + +public class AddingNullability { + @KotlinSignature("fun foo() : Int?") + public int foo() { + throw new UnsupportedOperationException(); + } +} diff --git a/compiler/testData/readJavaBinaryClass/kotlinSignature/error/AddingNullability.kt b/compiler/testData/readJavaBinaryClass/kotlinSignature/error/AddingNullability.kt new file mode 100644 index 00000000000..0cbe94c078b --- /dev/null +++ b/compiler/testData/readJavaBinaryClass/kotlinSignature/error/AddingNullability.kt @@ -0,0 +1,9 @@ +package test + +import java.util.* + +public open class AddingNullability : Object() { + public open fun foo() : Int { + throw UnsupportedOperationException() + } +} diff --git a/compiler/testData/readJavaBinaryClass/kotlinSignature/error/AddingNullability.txt b/compiler/testData/readJavaBinaryClass/kotlinSignature/error/AddingNullability.txt new file mode 100644 index 00000000000..223d50ebc1a --- /dev/null +++ b/compiler/testData/readJavaBinaryClass/kotlinSignature/error/AddingNullability.txt @@ -0,0 +1,6 @@ +namespace test + +public open class test.AddingNullability : java.lang.Object { + public final /*constructor*/ fun (): test.AddingNullability + public open fun foo(): jet.Int +}