Tuple classes have constructors
This commit is contained in:
@@ -161,7 +161,8 @@ public class JetStandardClasses {
|
|||||||
private static final ClassDescriptor[] TUPLE = new ClassDescriptor[MAX_TUPLE_ORDER + 1];
|
private static final ClassDescriptor[] TUPLE = new ClassDescriptor[MAX_TUPLE_ORDER + 1];
|
||||||
static {
|
static {
|
||||||
for (int i = 0; i <= MAX_TUPLE_ORDER; i++) {
|
for (int i = 0; i <= MAX_TUPLE_ORDER; i++) {
|
||||||
List<TypeParameterDescriptor> parameters = new ArrayList<TypeParameterDescriptor>();
|
List<TypeParameterDescriptor> typeParameters = Lists.newArrayList();
|
||||||
|
List<ValueParameterDescriptor> constructorValueParameters = Lists.newArrayList();
|
||||||
ClassDescriptorImpl classDescriptor = new ClassDescriptorImpl(
|
ClassDescriptorImpl classDescriptor = new ClassDescriptorImpl(
|
||||||
STANDARD_CLASSES_NAMESPACE,
|
STANDARD_CLASSES_NAMESPACE,
|
||||||
Collections.<AnnotationDescriptor>emptyList(),
|
Collections.<AnnotationDescriptor>emptyList(),
|
||||||
@@ -173,23 +174,37 @@ public class JetStandardClasses {
|
|||||||
classDescriptor,
|
classDescriptor,
|
||||||
Collections.<AnnotationDescriptor>emptyList(),
|
Collections.<AnnotationDescriptor>emptyList(),
|
||||||
false, Variance.OUT_VARIANCE, Name.identifier("T" + (j + 1)), j);
|
false, Variance.OUT_VARIANCE, Name.identifier("T" + (j + 1)), j);
|
||||||
parameters.add(typeParameterDescriptor);
|
typeParameters.add(typeParameterDescriptor);
|
||||||
|
|
||||||
PropertyDescriptor propertyDescriptor = new PropertyDescriptor(classDescriptor, Collections.<AnnotationDescriptor>emptyList(), Modality.FINAL, Visibilities.PUBLIC, false, false, Name.identifier("_" + (j + 1)), CallableMemberDescriptor.Kind.DECLARATION);
|
PropertyDescriptor propertyDescriptor = new PropertyDescriptor(classDescriptor, Collections.<AnnotationDescriptor>emptyList(), Modality.FINAL, Visibilities.PUBLIC, false, false, Name.identifier("_" + (j + 1)), CallableMemberDescriptor.Kind.DECLARATION);
|
||||||
propertyDescriptor.setType(typeParameterDescriptor.getDefaultType(), Collections.<TypeParameterDescriptorImpl>emptyList(), classDescriptor.getImplicitReceiver(), ReceiverDescriptor.NO_RECEIVER);
|
propertyDescriptor.setType(typeParameterDescriptor.getDefaultType(), Collections.<TypeParameterDescriptorImpl>emptyList(), classDescriptor.getImplicitReceiver(), ReceiverDescriptor.NO_RECEIVER);
|
||||||
PropertyGetterDescriptor getterDescriptor = new PropertyGetterDescriptor(propertyDescriptor, Collections.<AnnotationDescriptor>emptyList(), Modality.FINAL, Visibilities.PUBLIC, false, true, CallableMemberDescriptor.Kind.DECLARATION);
|
PropertyGetterDescriptor getterDescriptor = new PropertyGetterDescriptor(propertyDescriptor, Collections.<AnnotationDescriptor>emptyList(), Modality.FINAL, Visibilities.PUBLIC, false, true, CallableMemberDescriptor.Kind.DECLARATION);
|
||||||
getterDescriptor.initialize(typeParameterDescriptor.getDefaultType());
|
getterDescriptor.initialize(typeParameterDescriptor.getDefaultType());
|
||||||
propertyDescriptor.initialize(getterDescriptor, null);
|
propertyDescriptor.initialize(getterDescriptor, null);
|
||||||
writableScope.addPropertyDescriptor(propertyDescriptor);
|
writableScope.addPropertyDescriptor(propertyDescriptor);
|
||||||
|
|
||||||
|
ValueParameterDescriptorImpl valueParameterDescriptor =
|
||||||
|
new ValueParameterDescriptorImpl(classDescriptor, j, Collections.<AnnotationDescriptor>emptyList(),
|
||||||
|
Name.identifier("_" + (j + 1)), false, typeParameterDescriptor.getDefaultType(),
|
||||||
|
false,
|
||||||
|
null);
|
||||||
|
constructorValueParameters.add(valueParameterDescriptor);
|
||||||
}
|
}
|
||||||
writableScope.changeLockLevel(WritableScope.LockLevel.READING);
|
writableScope.changeLockLevel(WritableScope.LockLevel.READING);
|
||||||
|
|
||||||
|
ConstructorDescriptorImpl constructorDescriptor = new ConstructorDescriptorImpl(classDescriptor, Collections.<AnnotationDescriptor>emptyList(), true);
|
||||||
|
|
||||||
TUPLE[i] = classDescriptor.initialize(
|
TUPLE[i] = classDescriptor.initialize(
|
||||||
true,
|
true,
|
||||||
parameters,
|
typeParameters,
|
||||||
Collections.singleton(getAnyType()),
|
Collections.singleton(getAnyType()),
|
||||||
writableScope,
|
writableScope,
|
||||||
Collections.<ConstructorDescriptor>emptySet(), // TODO
|
Collections.<ConstructorDescriptor>singleton(constructorDescriptor),
|
||||||
null); // TODO : constructor
|
null);
|
||||||
TUPLE_CONSTRUCTORS.add(TUPLE[i].getTypeConstructor());
|
TUPLE_CONSTRUCTORS.add(TUPLE[i].getTypeConstructor());
|
||||||
|
|
||||||
|
constructorDescriptor.initialize(classDescriptor.getTypeConstructor().getParameters(), constructorValueParameters, Visibilities.PUBLIC);
|
||||||
|
constructorDescriptor.setReturnType(classDescriptor.getDefaultType());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user