Got rid of conustructors zoo in value parameter and getter/setter descriptors.

This commit is contained in:
Evgeny Gerashchenko
2014-03-25 19:46:39 +04:00
parent cf61446d69
commit b736d1602e
20 changed files with 55 additions and 92 deletions
@@ -55,16 +55,14 @@ public class AccessorForPropertyDescriptor extends PropertyDescriptorImpl {
public Getter(AccessorForPropertyDescriptor property) {
super(property, Annotations.EMPTY, Modality.FINAL, Visibilities.LOCAL,
false,
false, Kind.DECLARATION);
false, Kind.DECLARATION, null);
initialize(property.getType());
}
}
public static class Setter extends PropertySetterDescriptorImpl {
public Setter(AccessorForPropertyDescriptor property) {
super(property, Annotations.EMPTY, Modality.FINAL, Visibilities.LOCAL,
false,
false, Kind.DECLARATION);
super(property, Annotations.EMPTY, Modality.FINAL, Visibilities.LOCAL, false, false, Kind.DECLARATION, null);
initializeDefault();
}
}
@@ -207,6 +207,7 @@ public class AlternativeMethodSignatureData extends ElementAlternativeSignatureD
altParamDescriptors.add(new ValueParameterDescriptorImpl(
originalParameterDescriptor.getContainingDeclaration(),
null,
originalParameterDescriptor.getIndex(),
originalParameterDescriptor.getAnnotations(),
altName != null ? altName : originalParameterDescriptor.getName(),
@@ -222,6 +222,7 @@ public class SignaturesPropagationData {
resultParameters.add(new ValueParameterDescriptorImpl(
originalParam.getContainingDeclaration(),
null,
shouldBeExtension ? originalIndex - 1 : originalIndex,
originalParam.getAnnotations(),
stableName != null ? stableName : originalParam.getName(),
@@ -165,11 +165,11 @@ public class DescriptorDeserializer {
int getterFlags = proto.getGetterFlags();
boolean isNotDefault = proto.hasGetterFlags() && Flags.IS_NOT_DEFAULT.get(getterFlags);
if (isNotDefault) {
getter = new PropertyGetterDescriptorImpl(
property, getAnnotations(proto, getterFlags, AnnotatedCallableKind.PROPERTY_GETTER),
modality(Flags.MODALITY.get(getterFlags)), visibility(Flags.VISIBILITY.get(getterFlags)),
isNotDefault, !isNotDefault, property.getKind()
);
getter = new PropertyGetterDescriptorImpl(property,
getAnnotations(proto, getterFlags, AnnotatedCallableKind.PROPERTY_GETTER),
modality(Flags.MODALITY.get(getterFlags)),
visibility(Flags.VISIBILITY.get(getterFlags)), isNotDefault, !isNotDefault,
property.getKind(), null);
}
else {
getter = DescriptorFactory.createDefaultGetter(property);
@@ -181,11 +181,11 @@ public class DescriptorDeserializer {
int setterFlags = proto.getSetterFlags();
boolean isNotDefault = proto.hasSetterFlags() && Flags.IS_NOT_DEFAULT.get(setterFlags);
if (isNotDefault) {
setter = new PropertySetterDescriptorImpl(
property, getAnnotations(proto, setterFlags, AnnotatedCallableKind.PROPERTY_SETTER),
modality(Flags.MODALITY.get(setterFlags)), visibility(Flags.VISIBILITY.get(setterFlags)),
isNotDefault, !isNotDefault, property.getKind()
);
setter = new PropertySetterDescriptorImpl(property,
getAnnotations(proto, setterFlags, AnnotatedCallableKind.PROPERTY_SETTER),
modality(Flags.MODALITY.get(setterFlags)),
visibility(Flags.VISIBILITY.get(setterFlags)), isNotDefault, !isNotDefault,
property.getKind(), null);
DescriptorDeserializer setterLocal = local.createChildDeserializer(setter, Collections.<TypeParameter>emptyList(),
Collections.<TypeParameterDescriptor>emptyList());
List<ValueParameterDescriptor> valueParameters = setterLocal.valueParameters(proto, AnnotatedCallableKind.PROPERTY_SETTER);
@@ -401,6 +401,7 @@ public class DescriptorDeserializer {
Callable.ValueParameter proto = protos.get(i);
result.add(new ValueParameterDescriptorImpl(
containingDeclaration,
null,
i,
getAnnotations(classOrPackage, callable, kind, proto),
nameResolver.getName(proto.getName()),
@@ -423,7 +423,7 @@ public class DescriptorResolver {
// If parameter hasn't corresponding property, so it mustn't have default value as a parameter in copy function for data class
boolean declaresDefaultValue = propertyDescriptor != null;
ValueParameterDescriptorImpl parameterDescriptor =
new ValueParameterDescriptorImpl(functionDescriptor, parameter.getIndex(), parameter.getAnnotations(),
new ValueParameterDescriptorImpl(functionDescriptor, null, parameter.getIndex(), parameter.getAnnotations(),
parameter.getName(), parameter.getType(),
declaresDefaultValue,
parameter.getVarargElementType());
@@ -546,6 +546,7 @@ public class DescriptorResolver {
}
ValueParameterDescriptorImpl valueParameterDescriptor = new ValueParameterDescriptorImpl(
declarationDescriptor,
null,
index,
annotations,
JetPsiUtil.safeName(valueParameter.getName()),
@@ -1127,11 +1128,11 @@ public class DescriptorResolver {
annotationResolver.resolveAnnotationsWithoutArguments(scope, setter.getModifierList(), trace);
JetParameter parameter = setter.getParameter();
setterDescriptor = new PropertySetterDescriptorImpl(
propertyDescriptor, annotations,
resolveModalityFromModifiers(setter, propertyDescriptor.getModality()),
resolveVisibilityFromModifiers(setter, propertyDescriptor.getVisibility()),
setter.getBodyExpression() != null, false, CallableMemberDescriptor.Kind.DECLARATION);
setterDescriptor = new PropertySetterDescriptorImpl(propertyDescriptor, annotations,
resolveModalityFromModifiers(setter, propertyDescriptor.getModality()),
resolveVisibilityFromModifiers(setter, propertyDescriptor.getVisibility()),
setter.getBodyExpression() != null, false,
CallableMemberDescriptor.Kind.DECLARATION, null);
if (parameter != null) {
// This check is redundant: the parser does not allow a default value, but we'll keep it just in case
@@ -1204,11 +1205,11 @@ public class DescriptorResolver {
}
}
getterDescriptor = new PropertyGetterDescriptorImpl(
propertyDescriptor, annotations,
resolveModalityFromModifiers(getter, propertyDescriptor.getModality()),
resolveVisibilityFromModifiers(getter, propertyDescriptor.getVisibility()),
getter.getBodyExpression() != null, false, CallableMemberDescriptor.Kind.DECLARATION);
getterDescriptor = new PropertyGetterDescriptorImpl(propertyDescriptor, annotations,
resolveModalityFromModifiers(getter, propertyDescriptor.getModality()),
resolveVisibilityFromModifiers(getter, propertyDescriptor.getVisibility()),
getter.getBodyExpression() != null, false,
CallableMemberDescriptor.Kind.DECLARATION, null);
getterDescriptor.initialize(returnType);
trace.record(BindingContext.PROPERTY_ACCESSOR, getter, getterDescriptor);
}
@@ -131,6 +131,7 @@ public class FunctionDescriptorUtil {
parameters.add(new ValueParameterDescriptorImpl(
descriptor,
null,
idx,
parameter.getAnnotations(),
parameter.getName(),
@@ -100,7 +100,7 @@ public class ScriptHeaderResolver {
int index,
@NotNull ScriptDescriptor script) {
JetType type = resolveTypeName(scriptParameter.getType());
return new ValueParameterDescriptorImpl(script, index, Annotations.EMPTY, scriptParameter.getName(), type, false, null);
return new ValueParameterDescriptorImpl(script, null, index, Annotations.EMPTY, scriptParameter.getName(), type, false, null);
}
public void processScriptHierarchy(@NotNull TopDownAnalysisContext c, @NotNull JetScript script, @NotNull JetScope outerScope) {
@@ -228,7 +228,7 @@ public class ClosureExpressionsTypingVisitor extends ExpressionTypingVisitor {
if (functionTypeExpected && !hasDeclaredValueParameters && expectedValueParameters.size() == 1) {
ValueParameterDescriptor valueParameterDescriptor = expectedValueParameters.get(0);
ValueParameterDescriptor it = new ValueParameterDescriptorImpl(
functionDescriptor, 0, Annotations.EMPTY, Name.identifier("it"),
functionDescriptor, null, 0, Annotations.EMPTY, Name.identifier("it"),
valueParameterDescriptor.getType(), valueParameterDescriptor.hasDefaultValue(), valueParameterDescriptor.getVarargElementType()
);
valueParameterDescriptors.add(it);
@@ -106,7 +106,7 @@ public class ControlStructureTypingUtils {
for (int i = 0; i < argumentNames.size(); i++) {
JetType argumentType = isArgumentNullable.get(i) ? nullableType : type;
ValueParameterDescriptorImpl valueParameter = new ValueParameterDescriptorImpl(
function, i, Annotations.EMPTY, Name.identifier(argumentNames.get(i)), argumentType, false, null);
function, null, i, Annotations.EMPTY, Name.identifier(argumentNames.get(i)), argumentType, false, null);
valueParameters.add(valueParameter);
}
function.initialize(