Supported alternative signatures for vararg parameters.
This commit is contained in:
+13
-3
@@ -25,6 +25,7 @@ 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.TypeUtils;
|
||||||
|
import org.jetbrains.jet.lang.types.lang.JetStandardLibrary;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -83,11 +84,20 @@ class AlternativeSignatureParsing {
|
|||||||
for (int i = 0, size = parameterDescriptors.size(); i < size; i++) {
|
for (int i = 0, size = parameterDescriptors.size(); i < size; i++) {
|
||||||
ValueParameterDescriptor pd = parameterDescriptors.get(i);
|
ValueParameterDescriptor pd = parameterDescriptors.get(i);
|
||||||
JetTypeElement alternativeTypeElement = altFunDeclaration.getValueParameters().get(i).getTypeReference().getTypeElement();
|
JetTypeElement alternativeTypeElement = altFunDeclaration.getValueParameters().get(i).getTypeReference().getTypeElement();
|
||||||
JetType alternativeType = computeAlternativeTypeFromAnnotation(alternativeTypeElement, pd.getType());
|
JetType alternativeType;
|
||||||
// TODO vararg
|
JetType alternativeVarargElementType;
|
||||||
|
// TODO check that alternative PSI has "vararg" modifier
|
||||||
|
if (pd.getVarargElementType() == null) {
|
||||||
|
alternativeType = computeAlternativeTypeFromAnnotation(alternativeTypeElement, pd.getType());
|
||||||
|
alternativeVarargElementType = null;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
alternativeVarargElementType = computeAlternativeTypeFromAnnotation(alternativeTypeElement, pd.getVarargElementType());
|
||||||
|
alternativeType = JetStandardLibrary.getInstance().getArrayType(alternativeVarargElementType);
|
||||||
|
}
|
||||||
altParamDescriptors.add(new ValueParameterDescriptorImpl(pd.getContainingDeclaration(), pd.getIndex(), pd.getAnnotations(),
|
altParamDescriptors.add(new ValueParameterDescriptorImpl(pd.getContainingDeclaration(), pd.getIndex(), pd.getAnnotations(),
|
||||||
pd.getName(), pd.isVar(), alternativeType, pd.declaresDefaultValue(),
|
pd.getName(), pd.isVar(), alternativeType, pd.declaresDefaultValue(),
|
||||||
pd.getVarargElementType()));
|
alternativeVarargElementType));
|
||||||
}
|
}
|
||||||
JetType altReceiverType = null;
|
JetType altReceiverType = null;
|
||||||
if (valueParameterDescriptors.receiverType != null) {
|
if (valueParameterDescriptors.receiverType != null) {
|
||||||
|
|||||||
Reference in New Issue
Block a user