reading varargs
generics do not work yet: === fun <P> varargGeneric(a: Int, vararg b: P) = 1 ===
This commit is contained in:
+14
-2
@@ -1,17 +1,18 @@
|
|||||||
package org.jetbrains.jet.lang.resolve.java;
|
package org.jetbrains.jet.lang.resolve.java;
|
||||||
|
|
||||||
import org.jetbrains.jet.rt.signature.JetSignatureExceptionsAdapter;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
||||||
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
|
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.ErrorUtils;
|
||||||
import org.jetbrains.jet.lang.types.JetStandardClasses;
|
import org.jetbrains.jet.lang.types.JetStandardClasses;
|
||||||
import org.jetbrains.jet.lang.types.JetStandardLibrary;
|
import org.jetbrains.jet.lang.types.JetStandardLibrary;
|
||||||
import org.jetbrains.jet.lang.types.JetType;
|
import org.jetbrains.jet.lang.types.JetType;
|
||||||
import org.jetbrains.jet.lang.types.JetTypeImpl;
|
import org.jetbrains.jet.lang.types.JetTypeImpl;
|
||||||
import org.jetbrains.jet.lang.types.TypeProjection;
|
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.lang.types.Variance;
|
||||||
|
import org.jetbrains.jet.rt.signature.JetSignatureExceptionsAdapter;
|
||||||
|
import org.jetbrains.jet.rt.signature.JetSignatureVisitor;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
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
|
@Override
|
||||||
public void visitEnd() {
|
public void visitEnd() {
|
||||||
JetType jetType = new JetTypeImpl(
|
JetType jetType = new JetTypeImpl(
|
||||||
|
|||||||
@@ -0,0 +1,3 @@
|
|||||||
|
namespace test
|
||||||
|
|
||||||
|
fun varargCharSequence(a: Int, vararg b: java.lang.CharSequence) = 1
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
namespace test
|
||||||
|
|
||||||
|
fun varargInt(a: Int, vararg b: Int) = 1
|
||||||
@@ -256,11 +256,13 @@ public class ReadClassDataTest extends UsefulTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void serialize(ValueParameterDescriptor valueParameter, StringBuilder sb) {
|
private void serialize(ValueParameterDescriptor valueParameter, StringBuilder sb) {
|
||||||
|
if (valueParameter.getVarargElementType() != null) {
|
||||||
|
sb.append("vararg ");
|
||||||
|
}
|
||||||
sb.append(valueParameter.getName());
|
sb.append(valueParameter.getName());
|
||||||
sb.append(": ");
|
sb.append(": ");
|
||||||
if (valueParameter.getVarargElementType() != null) {
|
if (valueParameter.getVarargElementType() != null) {
|
||||||
sb.append("vararg ");
|
serialize(valueParameter.getVarargElementType(), sb);
|
||||||
serialize(valueParameter.getVarargElementType());
|
|
||||||
} else {
|
} else {
|
||||||
serialize(valueParameter.getOutType(), sb);
|
serialize(valueParameter.getOutType(), sb);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user