diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JetTypeJetSignatureReader.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JetTypeJetSignatureReader.java index 64bf4d30633..2984dc9e057 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JetTypeJetSignatureReader.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JetTypeJetSignatureReader.java @@ -1,17 +1,18 @@ package org.jetbrains.jet.lang.resolve.java; -import org.jetbrains.jet.rt.signature.JetSignatureExceptionsAdapter; import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.lang.descriptors.ClassDescriptor; import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor; -import org.jetbrains.jet.rt.signature.JetSignatureVisitor; import org.jetbrains.jet.lang.types.ErrorUtils; import org.jetbrains.jet.lang.types.JetStandardClasses; import org.jetbrains.jet.lang.types.JetStandardLibrary; import org.jetbrains.jet.lang.types.JetType; import org.jetbrains.jet.lang.types.JetTypeImpl; import org.jetbrains.jet.lang.types.TypeProjection; +import org.jetbrains.jet.lang.types.TypeUtils; import org.jetbrains.jet.lang.types.Variance; +import org.jetbrains.jet.rt.signature.JetSignatureExceptionsAdapter; +import org.jetbrains.jet.rt.signature.JetSignatureVisitor; import java.util.ArrayList; import java.util.Collections; @@ -119,6 +120,17 @@ public abstract class JetTypeJetSignatureReader extends JetSignatureExceptionsAd }; } + @Override + public JetSignatureVisitor visitArrayType(final boolean nullable) { + return new JetTypeJetSignatureReader(javaDescriptorResolver, jetStandardLibrary) { + @Override + protected void done(@NotNull JetType jetType) { + JetType arrayType = TypeUtils.makeNullableAsSpecified(jetStandardLibrary.getArrayType(jetType), nullable); + JetTypeJetSignatureReader.this.done(arrayType); + } + }; + } + @Override public void visitEnd() { JetType jetType = new JetTypeImpl( diff --git a/compiler/testData/readClass/fun/FunVarargCharSequence.kt b/compiler/testData/readClass/fun/FunVarargCharSequence.kt new file mode 100644 index 00000000000..4d1f154c1e7 --- /dev/null +++ b/compiler/testData/readClass/fun/FunVarargCharSequence.kt @@ -0,0 +1,3 @@ +namespace test + +fun varargCharSequence(a: Int, vararg b: java.lang.CharSequence) = 1 diff --git a/compiler/testData/readClass/fun/FunVarargInt.kt b/compiler/testData/readClass/fun/FunVarargInt.kt new file mode 100644 index 00000000000..5b51bb4cb3d --- /dev/null +++ b/compiler/testData/readClass/fun/FunVarargInt.kt @@ -0,0 +1,3 @@ +namespace test + +fun varargInt(a: Int, vararg b: Int) = 1 diff --git a/compiler/tests/org/jetbrains/jet/ReadClassDataTest.java b/compiler/tests/org/jetbrains/jet/ReadClassDataTest.java index 04458738032..c653d33579d 100644 --- a/compiler/tests/org/jetbrains/jet/ReadClassDataTest.java +++ b/compiler/tests/org/jetbrains/jet/ReadClassDataTest.java @@ -256,11 +256,13 @@ public class ReadClassDataTest extends UsefulTestCase { } private void serialize(ValueParameterDescriptor valueParameter, StringBuilder sb) { + if (valueParameter.getVarargElementType() != null) { + sb.append("vararg "); + } sb.append(valueParameter.getName()); sb.append(": "); if (valueParameter.getVarargElementType() != null) { - sb.append("vararg "); - serialize(valueParameter.getVarargElementType()); + serialize(valueParameter.getVarargElementType(), sb); } else { serialize(valueParameter.getOutType(), sb); }