Create DescriptorFactory utility class

Will contain utilities needed to create different common descriptors, such as
default getters/setters, enum values/valueOf methods, etc.
This commit is contained in:
Alexander Udalov
2013-08-21 20:32:08 +04:00
parent 6eeee31381
commit 6ca71349f8
15 changed files with 224 additions and 199 deletions
@@ -23,7 +23,7 @@ import org.jetbrains.jet.descriptors.serialization.descriptors.DeserializedTypeP
import org.jetbrains.jet.lang.descriptors.*;
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
import org.jetbrains.jet.lang.descriptors.impl.*;
import org.jetbrains.jet.lang.resolve.DescriptorResolver;
import org.jetbrains.jet.lang.resolve.DescriptorFactory;
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
import org.jetbrains.jet.lang.resolve.lazy.storage.StorageManager;
import org.jetbrains.jet.lang.resolve.name.FqNameUnsafe;
@@ -162,7 +162,7 @@ public class DescriptorDeserializer {
);
}
else {
getter = DescriptorResolver.createDefaultGetter(property);
getter = DescriptorFactory.createDefaultGetter(property);
}
getter.initialize(property.getReturnType());
}
@@ -182,7 +182,7 @@ public class DescriptorDeserializer {
property.getReturnType(), false, null));
}
else {
setter = DescriptorResolver.createDefaultSetter(property);
setter = DescriptorFactory.createDefaultSetter(property);
}
}
@@ -24,7 +24,7 @@ import org.jetbrains.jet.descriptors.serialization.*;
import org.jetbrains.jet.lang.descriptors.*;
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
import org.jetbrains.jet.lang.descriptors.impl.*;
import org.jetbrains.jet.lang.resolve.DescriptorResolver;
import org.jetbrains.jet.lang.resolve.DescriptorFactory;
import org.jetbrains.jet.lang.resolve.OverridingUtil;
import org.jetbrains.jet.lang.resolve.TraceUtil;
import org.jetbrains.jet.lang.resolve.lazy.storage.MemoizedFunctionToNullable;
@@ -285,14 +285,16 @@ public class DeserializedClassDescriptor extends ClassDescriptorBase implements
classObject.setTypeParameterDescriptors(Collections.<TypeParameterDescriptor>emptyList());
classObject.createTypeConstructor();
ConstructorDescriptorImpl primaryConstructor = DescriptorResolver.createPrimaryConstructorForObject(classObject);
ConstructorDescriptorImpl primaryConstructor = DescriptorFactory.createPrimaryConstructorForObject(classObject);
primaryConstructor.setReturnType(classObject.getDefaultType());
classObject.setPrimaryConstructor(primaryConstructor);
JetType defaultType = getDefaultType();
JetType defaultTypeArray = KotlinBuiltIns.getInstance().getArrayType(defaultType);
classObject.getBuilder().addFunctionDescriptor(DescriptorResolver.createEnumClassObjectValuesMethod(classObject, defaultTypeArray));
classObject.getBuilder().addFunctionDescriptor(DescriptorResolver.createEnumClassObjectValueOfMethod(classObject, defaultType));
classObject.getBuilder().addFunctionDescriptor(
DescriptorFactory.createEnumClassObjectValuesMethod(classObject, defaultTypeArray));
classObject.getBuilder().addFunctionDescriptor(
DescriptorFactory.createEnumClassObjectValueOfMethod(classObject, defaultType));
return classObject;
}
@@ -304,7 +306,7 @@ public class DeserializedClassDescriptor extends ClassDescriptorBase implements
property.setType(getDefaultType(), Collections.<TypeParameterDescriptor>emptyList(),
enumClassObject.getThisAsReceiverParameter(), NO_RECEIVER_PARAMETER);
PropertyGetterDescriptorImpl getter = DescriptorResolver.createDefaultGetter(property);
PropertyGetterDescriptorImpl getter = DescriptorFactory.createDefaultGetter(property);
getter.initialize(property.getReturnType());
property.initialize(getter, null);