Extract interface: PropertyGetterDescriptor
This commit is contained in:
@@ -35,7 +35,7 @@ public class AccessorForPropertyDescriptor extends PropertyDescriptorImpl {
|
||||
initialize(new Getter(this), new Setter(this));
|
||||
}
|
||||
|
||||
public static class Getter extends PropertyGetterDescriptor {
|
||||
public static class Getter extends PropertyGetterDescriptorImpl {
|
||||
public Getter(AccessorForPropertyDescriptor property) {
|
||||
super(property, Collections.<AnnotationDescriptor>emptyList(), Modality.FINAL, Visibilities.PUBLIC,
|
||||
false,
|
||||
|
||||
+4
-4
@@ -206,7 +206,7 @@ public final class JavaPropertyResolver {
|
||||
trace.record(BindingContext.OBJECT_DECLARATION_CLASS, propertyDescriptor, dummyClassDescriptorForEnumEntryObject);
|
||||
}
|
||||
|
||||
PropertyGetterDescriptor getterDescriptor = resolveGetter(visibility, kind, getter, propertyDescriptor);
|
||||
PropertyGetterDescriptorImpl getterDescriptor = resolveGetter(visibility, kind, getter, propertyDescriptor);
|
||||
PropertySetterDescriptor setterDescriptor = resolveSetter(psiData, kind, propertyDescriptor);
|
||||
|
||||
propertyDescriptor.initialize(getterDescriptor, setterDescriptor);
|
||||
@@ -268,7 +268,7 @@ public final class JavaPropertyResolver {
|
||||
|
||||
private static void initializeSetterAndGetter(
|
||||
PropertyDescriptor propertyDescriptor,
|
||||
PropertyGetterDescriptor getterDescriptor,
|
||||
PropertyGetterDescriptorImpl getterDescriptor,
|
||||
PropertySetterDescriptor setterDescriptor,
|
||||
JetType propertyType
|
||||
) {
|
||||
@@ -307,7 +307,7 @@ public final class JavaPropertyResolver {
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private PropertyGetterDescriptor resolveGetter(
|
||||
private PropertyGetterDescriptorImpl resolveGetter(
|
||||
Visibility visibility,
|
||||
CallableMemberDescriptor.Kind kind,
|
||||
PropertyPsiDataElement getter,
|
||||
@@ -316,7 +316,7 @@ public final class JavaPropertyResolver {
|
||||
if (getter == null) {
|
||||
return null;
|
||||
}
|
||||
return new PropertyGetterDescriptor(
|
||||
return new PropertyGetterDescriptorImpl(
|
||||
propertyDescriptor,
|
||||
annotationResolver.resolveAnnotations(getter.getMember().getPsiMember()),
|
||||
Modality.OPEN,
|
||||
|
||||
+4
-4
@@ -46,7 +46,7 @@ public class PropertyDescriptorImpl extends VariableDescriptorImpl implements Pr
|
||||
private ReceiverParameterDescriptor expectedThisObject;
|
||||
private ReceiverParameterDescriptor receiverParameter;
|
||||
private List<TypeParameterDescriptor> typeParameters;
|
||||
private PropertyGetterDescriptor getter;
|
||||
private PropertyGetterDescriptorImpl getter;
|
||||
private PropertySetterDescriptor setter;
|
||||
|
||||
private PropertyDescriptorImpl(
|
||||
@@ -119,7 +119,7 @@ public class PropertyDescriptorImpl extends VariableDescriptorImpl implements Pr
|
||||
this.expectedThisObject = expectedThisObject;
|
||||
}
|
||||
|
||||
public void initialize(@Nullable PropertyGetterDescriptor getter, @Nullable PropertySetterDescriptor setter) {
|
||||
public void initialize(@Nullable PropertyGetterDescriptorImpl getter, @Nullable PropertySetterDescriptor setter) {
|
||||
this.getter = getter;
|
||||
this.setter = setter;
|
||||
}
|
||||
@@ -171,7 +171,7 @@ public class PropertyDescriptorImpl extends VariableDescriptorImpl implements Pr
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public PropertyGetterDescriptor getGetter() {
|
||||
public PropertyGetterDescriptorImpl getGetter() {
|
||||
return getter;
|
||||
}
|
||||
|
||||
@@ -238,7 +238,7 @@ public class PropertyDescriptorImpl extends VariableDescriptorImpl implements Pr
|
||||
|
||||
substitutedDescriptor.setType(outType, substitutedTypeParameters, substitutedExpectedThisObject, substitutedReceiverType);
|
||||
|
||||
PropertyGetterDescriptor newGetter = getter == null ? null : new PropertyGetterDescriptor(
|
||||
PropertyGetterDescriptorImpl newGetter = getter == null ? null : new PropertyGetterDescriptorImpl(
|
||||
substitutedDescriptor, Lists.newArrayList(getter.getAnnotations()),
|
||||
DescriptorUtils.convertModality(getter.getModality(), false), convertVisibility(getter.getVisibility(), newVisibility),
|
||||
getter.hasBody(), getter.isDefault(), kind, getter.getOriginal());
|
||||
|
||||
+2
-66
@@ -17,73 +17,9 @@
|
||||
package org.jetbrains.jet.lang.descriptors;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
|
||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||
import org.jetbrains.jet.lang.types.JetType;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class PropertyGetterDescriptor extends PropertyAccessorDescriptorImpl {
|
||||
private JetType returnType;
|
||||
|
||||
@NotNull
|
||||
private final PropertyGetterDescriptor original;
|
||||
|
||||
public PropertyGetterDescriptor(@NotNull PropertyDescriptor correspondingProperty,
|
||||
@NotNull List<AnnotationDescriptor> annotations,
|
||||
@NotNull Modality modality,
|
||||
@NotNull Visibility visibility,
|
||||
boolean hasBody,
|
||||
boolean isDefault,
|
||||
@NotNull Kind kind) {
|
||||
this(correspondingProperty, annotations, modality, visibility, hasBody, isDefault, kind, null);
|
||||
}
|
||||
|
||||
public PropertyGetterDescriptor(@NotNull PropertyDescriptor correspondingProperty,
|
||||
@NotNull List<AnnotationDescriptor> annotations,
|
||||
@NotNull Modality modality,
|
||||
@NotNull Visibility visibility,
|
||||
boolean hasBody,
|
||||
boolean isDefault,
|
||||
@NotNull Kind kind,
|
||||
@Nullable PropertyGetterDescriptor original)
|
||||
{
|
||||
super(modality, visibility, correspondingProperty, annotations, Name.special("<get-" + correspondingProperty.getName() + ">"), hasBody, isDefault, kind);
|
||||
this.original = original != null ? original : this;
|
||||
}
|
||||
|
||||
public void initialize(JetType returnType) {
|
||||
this.returnType = returnType == null ? getCorrespondingProperty().getType() : returnType;
|
||||
}
|
||||
|
||||
public interface PropertyGetterDescriptor extends PropertyAccessorDescriptor {
|
||||
@NotNull
|
||||
@Override
|
||||
public Set<? extends PropertyAccessorDescriptor> getOverriddenDescriptors() {
|
||||
return super.getOverriddenDescriptors(true);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public List<ValueParameterDescriptor> getValueParameters() {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
@Override
|
||||
public JetType getReturnType() {
|
||||
return returnType;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <R, D> R accept(DeclarationDescriptorVisitor<R, D> visitor, D data) {
|
||||
return visitor.visitPropertyGetterDescriptor(this, data);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public PropertyGetterDescriptor getOriginal() {
|
||||
return this.original;
|
||||
}
|
||||
PropertyGetterDescriptor getOriginal();
|
||||
}
|
||||
|
||||
+93
@@ -0,0 +1,93 @@
|
||||
/*
|
||||
* Copyright 2010-2013 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.jetbrains.jet.lang.descriptors;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
|
||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||
import org.jetbrains.jet.lang.types.JetType;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class PropertyGetterDescriptorImpl extends PropertyAccessorDescriptorImpl implements PropertyGetterDescriptor {
|
||||
private JetType returnType;
|
||||
|
||||
@NotNull
|
||||
private final PropertyGetterDescriptor original;
|
||||
|
||||
public PropertyGetterDescriptorImpl(
|
||||
@NotNull PropertyDescriptor correspondingProperty,
|
||||
@NotNull List<AnnotationDescriptor> annotations,
|
||||
@NotNull Modality modality,
|
||||
@NotNull Visibility visibility,
|
||||
boolean hasBody,
|
||||
boolean isDefault,
|
||||
@NotNull Kind kind
|
||||
) {
|
||||
this(correspondingProperty, annotations, modality, visibility, hasBody, isDefault, kind, null);
|
||||
}
|
||||
|
||||
public PropertyGetterDescriptorImpl(
|
||||
@NotNull PropertyDescriptor correspondingProperty,
|
||||
@NotNull List<AnnotationDescriptor> annotations,
|
||||
@NotNull Modality modality,
|
||||
@NotNull Visibility visibility,
|
||||
boolean hasBody,
|
||||
boolean isDefault,
|
||||
@NotNull Kind kind,
|
||||
@Nullable PropertyGetterDescriptor original
|
||||
)
|
||||
{
|
||||
super(modality, visibility, correspondingProperty, annotations, Name.special("<get-" + correspondingProperty.getName() + ">"), hasBody, isDefault, kind);
|
||||
this.original = original != null ? original : this;
|
||||
}
|
||||
|
||||
public void initialize(JetType returnType) {
|
||||
this.returnType = returnType == null ? getCorrespondingProperty().getType() : returnType;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public Set<? extends PropertyAccessorDescriptor> getOverriddenDescriptors() {
|
||||
return super.getOverriddenDescriptors(true);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public List<ValueParameterDescriptor> getValueParameters() {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
@Override
|
||||
public JetType getReturnType() {
|
||||
return returnType;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <R, D> R accept(DeclarationDescriptorVisitor<R, D> visitor, D data) {
|
||||
return visitor.visitPropertyGetterDescriptor(this, data);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public PropertyGetterDescriptor getOriginal() {
|
||||
return this.original;
|
||||
}
|
||||
}
|
||||
@@ -118,7 +118,7 @@ public class ScriptDescriptor extends DeclarationDescriptorNonRootImpl {
|
||||
}
|
||||
|
||||
public static void initializeWithDefaultGetterSetter(PropertyDescriptorImpl propertyDescriptor) {
|
||||
PropertyGetterDescriptor getter = propertyDescriptor.getGetter();
|
||||
PropertyGetterDescriptorImpl getter = propertyDescriptor.getGetter();
|
||||
if(getter == null) {
|
||||
getter = propertyDescriptor.getVisibility() != Visibilities.PRIVATE ? DescriptorResolver.createDefaultGetter(propertyDescriptor) : null;
|
||||
if(getter != null)
|
||||
|
||||
@@ -946,7 +946,7 @@ public class DescriptorResolver {
|
||||
propertyDescriptor.setType(type, typeParameterDescriptors, getExpectedThisObjectIfNeeded(containingDeclaration),
|
||||
receiverDescriptor);
|
||||
|
||||
PropertyGetterDescriptor getter = resolvePropertyGetterDescriptor(scopeWithTypeParameters, property, propertyDescriptor, trace);
|
||||
PropertyGetterDescriptorImpl getter = resolvePropertyGetterDescriptor(scopeWithTypeParameters, property, propertyDescriptor, trace);
|
||||
PropertySetterDescriptor setter = resolvePropertySetterDescriptor(scopeWithTypeParameters, property, propertyDescriptor, trace);
|
||||
|
||||
propertyDescriptor.initialize(getter, setter);
|
||||
@@ -1087,13 +1087,13 @@ public class DescriptorResolver {
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private PropertyGetterDescriptor resolvePropertyGetterDescriptor(
|
||||
private PropertyGetterDescriptorImpl resolvePropertyGetterDescriptor(
|
||||
@NotNull JetScope scope,
|
||||
@NotNull JetProperty property,
|
||||
@NotNull PropertyDescriptor propertyDescriptor,
|
||||
BindingTrace trace
|
||||
) {
|
||||
PropertyGetterDescriptor getterDescriptor;
|
||||
PropertyGetterDescriptorImpl getterDescriptor;
|
||||
JetPropertyAccessor getter = property.getGetter();
|
||||
if (getter != null) {
|
||||
List<AnnotationDescriptor> annotations = annotationResolver.resolveAnnotations(scope, getter.getModifierList(), trace);
|
||||
@@ -1108,7 +1108,7 @@ public class DescriptorResolver {
|
||||
}
|
||||
}
|
||||
|
||||
getterDescriptor = new PropertyGetterDescriptor(
|
||||
getterDescriptor = new PropertyGetterDescriptorImpl(
|
||||
propertyDescriptor, annotations,
|
||||
resolveModalityFromModifiers(getter, propertyDescriptor.getModality()),
|
||||
resolveVisibilityFromModifiers(getter, propertyDescriptor.getVisibility()),
|
||||
@@ -1123,9 +1123,9 @@ public class DescriptorResolver {
|
||||
return getterDescriptor;
|
||||
}
|
||||
|
||||
public static PropertyGetterDescriptor createDefaultGetter(PropertyDescriptor propertyDescriptor) {
|
||||
PropertyGetterDescriptor getterDescriptor;
|
||||
getterDescriptor = new PropertyGetterDescriptor(
|
||||
public static PropertyGetterDescriptorImpl createDefaultGetter(PropertyDescriptor propertyDescriptor) {
|
||||
PropertyGetterDescriptorImpl getterDescriptor;
|
||||
getterDescriptor = new PropertyGetterDescriptorImpl(
|
||||
propertyDescriptor, Collections.<AnnotationDescriptor>emptyList(), propertyDescriptor.getModality(),
|
||||
propertyDescriptor.getVisibility(),
|
||||
false, true, CallableMemberDescriptor.Kind.DECLARATION);
|
||||
@@ -1208,7 +1208,7 @@ public class DescriptorResolver {
|
||||
propertyDescriptor.setType(type, Collections.<TypeParameterDescriptor>emptyList(),
|
||||
getExpectedThisObjectIfNeeded(classDescriptor), NO_RECEIVER_PARAMETER);
|
||||
|
||||
PropertyGetterDescriptor getter = createDefaultGetter(propertyDescriptor);
|
||||
PropertyGetterDescriptorImpl getter = createDefaultGetter(propertyDescriptor);
|
||||
PropertySetterDescriptor setter = propertyDescriptor.isVar() ? createDefaultSetter(propertyDescriptor) : null;
|
||||
|
||||
propertyDescriptor.initialize(getter, setter);
|
||||
|
||||
Reference in New Issue
Block a user