visibility can be set only after resolve overridden members, so method 'setVisibility' was separated
This commit is contained in:
@@ -251,12 +251,12 @@ public abstract class CodegenContext {
|
||||
PropertyDescriptor myAccessor = new PropertyDescriptor(contextType,
|
||||
Collections.<AnnotationDescriptor>emptyList(),
|
||||
pd.getModality(),
|
||||
pd.getVisibility(),
|
||||
pd.isVar(),
|
||||
pd.isObjectDeclaration(),
|
||||
pd.getName() + "$bridge$" + accessors.size(),
|
||||
CallableMemberDescriptor.Kind.DECLARATION
|
||||
);
|
||||
myAccessor.setVisibility(pd.getVisibility());
|
||||
JetType receiverType = pd.getReceiverParameter().exists() ? pd.getReceiverParameter().getType() : null;
|
||||
myAccessor.setType(pd.getType(), Collections.<TypeParameterDescriptor>emptyList(), pd.getExpectedThisObject(), receiverType);
|
||||
|
||||
|
||||
+1
-1
@@ -1150,11 +1150,11 @@ public class JavaDescriptorResolver {
|
||||
owner,
|
||||
resolveAnnotations(anyMember.getMember().psiMember),
|
||||
modality,
|
||||
resolveVisibilityFromPsiModifiers(anyMember.getMember().psiMember),
|
||||
isVar,
|
||||
false,
|
||||
propertyName,
|
||||
CallableMemberDescriptor.Kind.DECLARATION);
|
||||
propertyDescriptor.setVisibility(resolveVisibilityFromPsiModifiers(anyMember.getMember().psiMember));
|
||||
|
||||
PropertyGetterDescriptor getterDescriptor = null;
|
||||
PropertySetterDescriptor setterDescriptor = null;
|
||||
|
||||
+2
-1
@@ -48,7 +48,8 @@ public class ConstructorDescriptorImpl extends FunctionDescriptorImpl implements
|
||||
|
||||
//isStatic - for java only
|
||||
public ConstructorDescriptorImpl initialize(@NotNull List<TypeParameterDescriptor> typeParameters, @NotNull List<ValueParameterDescriptor> unsubstitutedValueParameters, Visibility visibility, boolean isStatic) {
|
||||
super.initialize(null, isStatic ? ReceiverDescriptor.NO_RECEIVER : getExpectedThisObject(getContainingDeclaration()), typeParameters, unsubstitutedValueParameters, null, Modality.FINAL, visibility);
|
||||
super.initialize(null, isStatic ? ReceiverDescriptor.NO_RECEIVER : getExpectedThisObject(getContainingDeclaration()), typeParameters, unsubstitutedValueParameters, null, Modality.FINAL);
|
||||
setVisibility(visibility);
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
+7
-6
@@ -78,13 +78,11 @@ public abstract class FunctionDescriptorImpl extends DeclarationDescriptorImpl i
|
||||
@NotNull List<TypeParameterDescriptor> typeParameters,
|
||||
@NotNull List<ValueParameterDescriptor> unsubstitutedValueParameters,
|
||||
@Nullable JetType unsubstitutedReturnType,
|
||||
@Nullable Modality modality,
|
||||
@NotNull Visibility visibility) {
|
||||
@Nullable Modality modality) {
|
||||
this.typeParameters = typeParameters;
|
||||
this.unsubstitutedValueParameters = unsubstitutedValueParameters;
|
||||
this.unsubstitutedReturnType = unsubstitutedReturnType;
|
||||
this.modality = modality;
|
||||
this.visibility = visibility;
|
||||
this.receiver = receiverType == null ? NO_RECEIVER : new ExtensionReceiver(this, receiverType);
|
||||
this.expectedThisObject = expectedThisObject;
|
||||
|
||||
@@ -106,6 +104,10 @@ public abstract class FunctionDescriptorImpl extends DeclarationDescriptorImpl i
|
||||
return this;
|
||||
}
|
||||
|
||||
public void setVisibility(@NotNull Visibility visibility) {
|
||||
this.visibility = visibility;
|
||||
}
|
||||
|
||||
public void setReturnType(@NotNull JetType unsubstitutedReturnType) {
|
||||
this.unsubstitutedReturnType = unsubstitutedReturnType;
|
||||
}
|
||||
@@ -221,9 +223,8 @@ public abstract class FunctionDescriptorImpl extends DeclarationDescriptorImpl i
|
||||
substitutedTypeParameters,
|
||||
substitutedValueParameters,
|
||||
substitutedReturnType,
|
||||
newModality,
|
||||
visibility
|
||||
);
|
||||
newModality);
|
||||
substitutedDescriptor.setVisibility(visibility);
|
||||
if (copyOverrides) {
|
||||
for (FunctionDescriptor overriddenFunction : overriddenFunctions) {
|
||||
substitutedDescriptor.addOverriddenDescriptor(overriddenFunction.substitute(substitutor));
|
||||
|
||||
+2
-1
@@ -126,7 +126,8 @@ public class FunctionDescriptorUtil {
|
||||
Collections.<TypeParameterDescriptor>emptyList(),
|
||||
JetStandardClasses.getValueParameters(functionDescriptor, functionType),
|
||||
JetStandardClasses.getReturnTypeFromFunctionType(functionType),
|
||||
Modality.FINAL, Visibilities.LOCAL);
|
||||
Modality.FINAL);
|
||||
functionDescriptor.setVisibility(Visibilities.LOCAL);
|
||||
}
|
||||
|
||||
public static <D extends CallableDescriptor> D alphaConvertTypeParameters(D candidate) {
|
||||
|
||||
@@ -39,7 +39,7 @@ import static org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverDescriptor
|
||||
public class PropertyDescriptor extends VariableDescriptorImpl implements CallableMemberDescriptor {
|
||||
|
||||
private final Modality modality;
|
||||
private final Visibility visibility;
|
||||
private Visibility visibility;
|
||||
private final boolean isVar;
|
||||
private final boolean isObject;
|
||||
private final Set<PropertyDescriptor> overriddenProperties = Sets.newLinkedHashSet();
|
||||
@@ -48,7 +48,7 @@ public class PropertyDescriptor extends VariableDescriptorImpl implements Callab
|
||||
|
||||
private ReceiverDescriptor expectedThisObject;
|
||||
private ReceiverDescriptor receiver;
|
||||
private List<TypeParameterDescriptor> typeParemeters;
|
||||
private List<TypeParameterDescriptor> typeParameters;
|
||||
private PropertyGetterDescriptor getter;
|
||||
private PropertySetterDescriptor setter;
|
||||
|
||||
@@ -67,7 +67,6 @@ public class PropertyDescriptor extends VariableDescriptorImpl implements Callab
|
||||
@NotNull DeclarationDescriptor containingDeclaration,
|
||||
@NotNull List<AnnotationDescriptor> annotations,
|
||||
@NotNull Modality modality,
|
||||
@NotNull Visibility visibility,
|
||||
boolean isVar,
|
||||
boolean isObject,
|
||||
@NotNull String name,
|
||||
@@ -76,7 +75,6 @@ public class PropertyDescriptor extends VariableDescriptorImpl implements Callab
|
||||
this.isVar = isVar;
|
||||
this.isObject = isObject;
|
||||
this.modality = modality;
|
||||
this.visibility = visibility;
|
||||
this.original = original == null ? this : original.getOriginal();
|
||||
this.kind = kind;
|
||||
}
|
||||
@@ -85,12 +83,11 @@ public class PropertyDescriptor extends VariableDescriptorImpl implements Callab
|
||||
@NotNull DeclarationDescriptor containingDeclaration,
|
||||
@NotNull List<AnnotationDescriptor> annotations,
|
||||
@NotNull Modality modality,
|
||||
@NotNull Visibility visibility,
|
||||
boolean isVar,
|
||||
boolean isObject,
|
||||
@NotNull String name,
|
||||
Kind kind) {
|
||||
this(null, containingDeclaration, annotations, modality, visibility, isVar, isObject, name, kind);
|
||||
this(null, containingDeclaration, annotations, modality, isVar, isObject, name, kind);
|
||||
}
|
||||
|
||||
public PropertyDescriptor(
|
||||
@@ -106,7 +103,7 @@ public class PropertyDescriptor extends VariableDescriptorImpl implements Callab
|
||||
@NotNull JetType outType,
|
||||
Kind kind
|
||||
) {
|
||||
this(containingDeclaration, annotations, modality, visibility, isVar, isObject, name, kind);
|
||||
this(containingDeclaration, annotations, modality, isVar, isObject, name, kind);
|
||||
setType(outType, Collections.<TypeParameterDescriptor>emptyList(), expectedThisObject, receiverType);
|
||||
}
|
||||
|
||||
@@ -120,7 +117,7 @@ public class PropertyDescriptor extends VariableDescriptorImpl implements Callab
|
||||
public void setType(@NotNull JetType outType, @NotNull List<TypeParameterDescriptor> typeParameters, @NotNull ReceiverDescriptor expectedThisObject, @NotNull ReceiverDescriptor receiver) {
|
||||
setOutType(outType);
|
||||
|
||||
this.typeParemeters = typeParameters;
|
||||
this.typeParameters = typeParameters;
|
||||
|
||||
this.receiver = receiver;
|
||||
this.expectedThisObject = expectedThisObject;
|
||||
@@ -131,10 +128,14 @@ public class PropertyDescriptor extends VariableDescriptorImpl implements Callab
|
||||
this.setter = setter;
|
||||
}
|
||||
|
||||
public void setVisibility(@NotNull Visibility visibility) {
|
||||
this.visibility = visibility;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public List<TypeParameterDescriptor> getTypeParameters() {
|
||||
return typeParemeters;
|
||||
return typeParameters;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -206,8 +207,16 @@ public class PropertyDescriptor extends VariableDescriptorImpl implements Callab
|
||||
|
||||
private PropertyDescriptor doSubstitute(TypeSubstitutor originalSubstitutor,
|
||||
DeclarationDescriptor newOwner, Modality newModality, boolean preserveOriginal, boolean copyOverrides, Kind kind) {
|
||||
final PropertyDescriptor thisProperty = this;
|
||||
PropertyDescriptor substitutedDescriptor = new PropertyDescriptor(preserveOriginal ? getOriginal() : this, newOwner,
|
||||
getAnnotations(), newModality, getVisibility(), isVar(), isObjectDeclaration(), getName(), kind);
|
||||
getAnnotations(), newModality, isVar(), isObjectDeclaration(), getName(), kind) {
|
||||
@NotNull
|
||||
@Override
|
||||
public Visibility getVisibility() {
|
||||
// visibility of property can be not set yet
|
||||
return thisProperty.getVisibility();
|
||||
}
|
||||
};
|
||||
|
||||
List<TypeParameterDescriptor> substitutedTypeParameters = Lists.newArrayList();
|
||||
TypeSubstitutor substitutor = DescriptorSubstitutor.substituteTypeParameters(getTypeParameters(), originalSubstitutor, substitutedDescriptor, substitutedTypeParameters);
|
||||
|
||||
+13
-12
@@ -50,18 +50,19 @@ public class SimpleFunctionDescriptorImpl extends FunctionDescriptorImpl impleme
|
||||
super(containingDeclaration, original, annotations, name, kind);
|
||||
}
|
||||
|
||||
public SimpleFunctionDescriptorImpl initialize(@Nullable JetType receiverType,
|
||||
@NotNull ReceiverDescriptor expectedThisObject,
|
||||
@NotNull List<TypeParameterDescriptor> typeParameters,
|
||||
@NotNull List<ValueParameterDescriptor> unsubstitutedValueParameters,
|
||||
@Nullable JetType unsubstitutedReturnType,
|
||||
@Nullable Modality modality,
|
||||
@NotNull Visibility visibility,
|
||||
boolean isInline) {
|
||||
SimpleFunctionDescriptorImpl result = (SimpleFunctionDescriptorImpl)super.initialize(receiverType, expectedThisObject, typeParameters, unsubstitutedValueParameters,
|
||||
unsubstitutedReturnType, modality, visibility);
|
||||
result.isInline = isInline;
|
||||
return result;
|
||||
public SimpleFunctionDescriptorImpl initialize(
|
||||
@Nullable JetType receiverType,
|
||||
@NotNull ReceiverDescriptor expectedThisObject,
|
||||
@NotNull List<TypeParameterDescriptor> typeParameters,
|
||||
@NotNull List<ValueParameterDescriptor> unsubstitutedValueParameters,
|
||||
@Nullable JetType unsubstitutedReturnType,
|
||||
@Nullable Modality modality,
|
||||
@NotNull Visibility visibility,
|
||||
boolean isInline) {
|
||||
super.initialize(receiverType, expectedThisObject, typeParameters, unsubstitutedValueParameters, unsubstitutedReturnType, modality);
|
||||
setVisibility(visibility);
|
||||
this.isInline = isInline;
|
||||
return this;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
@@ -482,17 +482,16 @@ public class DescriptorResolver {
|
||||
@NotNull JetClassOrObject objectDeclaration,
|
||||
@NotNull ClassDescriptor classDescriptor, BindingTrace trace) {
|
||||
JetModifierList modifierList = objectDeclaration.getModifierList();
|
||||
Visibility visibility = resolveVisibilityFromModifiers(objectDeclaration.getModifierList());
|
||||
PropertyDescriptor propertyDescriptor = new PropertyDescriptor(
|
||||
containingDeclaration,
|
||||
annotationResolver.createAnnotationStubs(modifierList, trace),
|
||||
Modality.FINAL,
|
||||
visibility,
|
||||
false,
|
||||
true,
|
||||
JetPsiUtil.safeName(objectDeclaration.getName()),
|
||||
CallableMemberDescriptor.Kind.DECLARATION
|
||||
);
|
||||
propertyDescriptor.setVisibility(resolveVisibilityFromModifiers(modifierList));
|
||||
propertyDescriptor.setType(classDescriptor.getDefaultType(), Collections.<TypeParameterDescriptor>emptyList(), DescriptorUtils.getExpectedThisObjectIfNeeded(containingDeclaration), ReceiverDescriptor.NO_RECEIVER);
|
||||
propertyDescriptor.initialize(createDefaultGetter(propertyDescriptor), null);
|
||||
JetObjectDeclarationName nameAsDeclaration = objectDeclaration.getNameAsDeclaration();
|
||||
@@ -544,12 +543,12 @@ public class DescriptorResolver {
|
||||
containingDeclaration,
|
||||
annotationResolver.resolveAnnotations(scope, modifierList, trace),
|
||||
resolveModalityFromModifiers(property.getModifierList(), defaultModality),
|
||||
resolveVisibilityFromModifiers(property.getModifierList()),
|
||||
isVar,
|
||||
false,
|
||||
JetPsiUtil.safeName(property.getName()),
|
||||
CallableMemberDescriptor.Kind.DECLARATION
|
||||
);
|
||||
propertyDescriptor.setVisibility(resolveVisibilityFromModifiers(property.getModifierList()));
|
||||
|
||||
List<TypeParameterDescriptor> typeParameterDescriptors;
|
||||
JetScope scopeWithTypeParameters;
|
||||
@@ -683,6 +682,9 @@ public class DescriptorResolver {
|
||||
}
|
||||
return Visibilities.PROTECTED;
|
||||
}
|
||||
if (modifierList.hasModifier(JetTokens.INTERNAL_KEYWORD)) {
|
||||
return Visibilities.INTERNAL;
|
||||
}
|
||||
return defaultVisibility;
|
||||
}
|
||||
|
||||
@@ -859,12 +861,12 @@ public class DescriptorResolver {
|
||||
classDescriptor,
|
||||
annotationResolver.resolveAnnotations(scope, modifierList, trace),
|
||||
resolveModalityFromModifiers(parameter.getModifierList(), Modality.FINAL),
|
||||
resolveVisibilityFromModifiers(parameter.getModifierList()),
|
||||
isMutable,
|
||||
false,
|
||||
name == null ? "<no name>" : name,
|
||||
CallableMemberDescriptor.Kind.DECLARATION
|
||||
);
|
||||
propertyDescriptor.setVisibility(resolveVisibilityFromModifiers(parameter.getModifierList()));
|
||||
propertyDescriptor.setType(type, Collections.<TypeParameterDescriptor>emptyList(), DescriptorUtils.getExpectedThisObjectIfNeeded(classDescriptor), ReceiverDescriptor.NO_RECEIVER);
|
||||
|
||||
PropertyGetterDescriptor getter = createDefaultGetter(propertyDescriptor);
|
||||
|
||||
@@ -155,7 +155,8 @@ public class JetStandardClasses {
|
||||
Collections.<AnnotationDescriptor>emptyList(),
|
||||
true, Variance.OUT_VARIANCE, "T" + (j + 1), j);
|
||||
parameters.add(typeParameterDescriptor);
|
||||
PropertyDescriptor propertyDescriptor = new PropertyDescriptor(classDescriptor, Collections.<AnnotationDescriptor>emptyList(), Modality.FINAL, Visibilities.PUBLIC, false, false, "_" + (j + 1), CallableMemberDescriptor.Kind.DECLARATION);
|
||||
PropertyDescriptor propertyDescriptor = new PropertyDescriptor(classDescriptor, Collections.<AnnotationDescriptor>emptyList(), Modality.FINAL, false, false, "_" + (j + 1), CallableMemberDescriptor.Kind.DECLARATION);
|
||||
propertyDescriptor.setVisibility(Visibilities.PUBLIC);
|
||||
propertyDescriptor.setType(typeParameterDescriptor.getDefaultType(), Collections.<TypeParameterDescriptor>emptyList(), classDescriptor.getImplicitReceiver(), ReceiverDescriptor.NO_RECEIVER);
|
||||
PropertyGetterDescriptor getterDescriptor = new PropertyGetterDescriptor(propertyDescriptor, Collections.<AnnotationDescriptor>emptyList(), Modality.FINAL, Visibilities.PUBLIC, false, true, CallableMemberDescriptor.Kind.DECLARATION);
|
||||
getterDescriptor.initialize(typeParameterDescriptor.getDefaultType());
|
||||
|
||||
Reference in New Issue
Block a user