diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java index feb5b6896aa..55480befad2 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java @@ -1039,7 +1039,7 @@ public class JavaDescriptorResolver { boolean isVar; if (members.getter == null && members.setter == null) { - isVar = true; + isVar = !members.field.isFinal(); } else { isVar = members.setter != null; } diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/PsiMemberWrapper.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/PsiMemberWrapper.java index 9e94bcd4169..065599d315b 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/PsiMemberWrapper.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/PsiMemberWrapper.java @@ -23,7 +23,11 @@ public class PsiMemberWrapper { public boolean isPrivate() { return psiMember.hasModifierProperty(PsiModifier.PRIVATE); } - + + public boolean isFinal() { + return psiMember.hasModifierProperty(PsiModifier.FINAL); + } + public String getName() { return psiMember.getName(); } diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/PsiMethodWrapper.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/PsiMethodWrapper.java index 911b3d6119b..0f67274a018 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/PsiMethodWrapper.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/PsiMethodWrapper.java @@ -37,10 +37,6 @@ public class PsiMethodWrapper extends PsiMemberWrapper { return getParameters().get(i); } - public boolean isFinal() { - return psiMember.hasModifierProperty(PsiModifier.FINAL); - } - private JetMethodAnnotation jetMethod; @NotNull public JetMethodAnnotation getJetMethod() { diff --git a/compiler/testData/readJavaBinaryClass/FinalFieldAsVal.java b/compiler/testData/readJavaBinaryClass/FinalFieldAsVal.java new file mode 100644 index 00000000000..69b7785869d --- /dev/null +++ b/compiler/testData/readJavaBinaryClass/FinalFieldAsVal.java @@ -0,0 +1,5 @@ +package test; + +final class FinalFieldAsVal { + public final int f = 1; +} diff --git a/compiler/testData/readJavaBinaryClass/FinalFieldAsVal.kt b/compiler/testData/readJavaBinaryClass/FinalFieldAsVal.kt new file mode 100644 index 00000000000..01c67630deb --- /dev/null +++ b/compiler/testData/readJavaBinaryClass/FinalFieldAsVal.kt @@ -0,0 +1,5 @@ +package test + +class FinalFieldAsVal() { + val f: Int = 1 +}