fix prop modality reading from class files

This commit is contained in:
Stepan Koltsov
2012-03-02 23:18:50 +04:00
parent 25ed7018a4
commit 16917dea4f
37 changed files with 66 additions and 37 deletions
@@ -1158,7 +1158,9 @@ public class JavaDescriptorResolver {
}
boolean isFinal;
if (members.setter == null && members.getter == null) {
if (!scopeData.kotlin) {
isFinal = true;
} else if (members.setter == null && members.getter == null) {
isFinal = false;
} else if (members.getter != null) {
isFinal = members.getter.getMember().isFinal();
@@ -1185,11 +1187,20 @@ public class JavaDescriptorResolver {
} else {
isVar = members.setter != null;
}
Modality modality;
if (isFinal) {
modality = Modality.FINAL;
}
else {
modality = anyMember.getMember().isAbstract() ? Modality.ABSTRACT : Modality.OPEN;
}
PropertyDescriptor propertyDescriptor = new PropertyDescriptor(
owner,
Collections.<AnnotationDescriptor>emptyList(),
isFinal && !staticMembers ? Modality.FINAL : Modality.OPEN, // TODO: abstract
modality,
resolveVisibilityFromPsiModifiers(anyMember.getMember().psiMember),
isVar,
false,
@@ -36,4 +36,9 @@ public class PsiFieldWrapper extends PsiMemberWrapper {
public PsiType getType() {
return getPsiField().getType();
}
@Override
public boolean isAbstract() {
return false;
}
}
@@ -49,6 +49,8 @@ public abstract class PsiMemberWrapper {
return psiMember.hasModifierProperty(PsiModifier.FINAL);
}
public abstract boolean isAbstract();
public String getName() {
return psiMember.getName();
}