read java bean properties as kotlin properties
This commit is contained in:
+7
-3
@@ -1069,9 +1069,13 @@ public class JavaDescriptorResolver {
|
||||
}
|
||||
|
||||
|
||||
Set<VariableDescriptor> r = new HashSet<VariableDescriptor>();
|
||||
|
||||
for (GroupingValue members : map.values()) {
|
||||
Set<VariableDescriptor> r = new HashSet<VariableDescriptor>(1);
|
||||
|
||||
// we cannot have more then one property with given name even if java code
|
||||
// has several fields, getters and setter of different types
|
||||
if (map.size() == 1) {
|
||||
GroupingValue members = map.values().iterator().next();
|
||||
|
||||
boolean isFinal;
|
||||
if (members.setter == null && members.getter == null) {
|
||||
isFinal = false;
|
||||
|
||||
+19
-6
@@ -20,6 +20,7 @@ import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.PsiField;
|
||||
import com.intellij.psi.PsiMember;
|
||||
import com.intellij.psi.PsiMethod;
|
||||
import com.intellij.psi.PsiParameter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -113,6 +114,9 @@ class JavaDescriptorResolverHelper {
|
||||
// TODO: remove getJavaClass
|
||||
if (method.getName().startsWith(JvmAbi.GETTER_PREFIX)) {
|
||||
|
||||
String propertyName = StringUtil.decapitalize(method.getName().substring(JvmAbi.GETTER_PREFIX.length()));
|
||||
NamedMembers members = getNamedMembers(propertyName);
|
||||
|
||||
// TODO: some java properties too
|
||||
if (method.getJetMethod().kind() == JvmStdlibNames.JET_METHOD_KIND_PROPERTY) {
|
||||
|
||||
@@ -137,16 +141,22 @@ class JavaDescriptorResolverHelper {
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
|
||||
String propertyName = StringUtil.decapitalize(method.getName().substring(JvmAbi.GETTER_PREFIX.length()));
|
||||
NamedMembers members = getNamedMembers(propertyName);
|
||||
|
||||
// TODO: what if returnType == null?
|
||||
TypeSource propertyType = new TypeSource(method.getJetMethod().propertyType(), method.getReturnType(), method.getPsiMethod());
|
||||
|
||||
members.addPropertyAccessor(new PropertyAccessorData(method, true, propertyType, receiverType));
|
||||
} else if (!kotlin) {
|
||||
if (method.getParameters().size() == 0) {
|
||||
TypeSource propertyType = new TypeSource("", method.getReturnType(), method.getPsiMethod());
|
||||
members.addPropertyAccessor(new PropertyAccessorData(method, true, propertyType, null));
|
||||
}
|
||||
}
|
||||
|
||||
} else if (method.getName().startsWith(JvmAbi.SETTER_PREFIX)) {
|
||||
|
||||
String propertyName = StringUtil.decapitalize(method.getName().substring(JvmAbi.SETTER_PREFIX.length()));
|
||||
NamedMembers members = getNamedMembers(propertyName);
|
||||
|
||||
if (method.getJetMethod().kind() == JvmStdlibNames.JET_METHOD_KIND_PROPERTY) {
|
||||
if (method.getParameters().size() == 0) {
|
||||
// TODO: report error properly
|
||||
@@ -173,10 +183,13 @@ class JavaDescriptorResolverHelper {
|
||||
PsiParameterWrapper propertyTypeParameter = method.getParameter(i);
|
||||
TypeSource propertyType = new TypeSource(method.getJetMethod().propertyType(), propertyTypeParameter.getPsiParameter().getType(), propertyTypeParameter.getPsiParameter());
|
||||
|
||||
String propertyName = StringUtil.decapitalize(method.getName().substring(JvmAbi.SETTER_PREFIX.length()));
|
||||
NamedMembers members = getNamedMembers(propertyName);
|
||||
|
||||
members.addPropertyAccessor(new PropertyAccessorData(method, false, propertyType, receiverType));
|
||||
} else if (!kotlin) {
|
||||
if (method.getParameters().size() == 1) {
|
||||
PsiParameter psiParameter = method.getParameters().get(0).getPsiParameter();
|
||||
TypeSource propertyType = new TypeSource("", psiParameter.getType(), psiParameter);
|
||||
members.addPropertyAccessor(new PropertyAccessorData(method, false, propertyType, null));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user