Added reading constructor visibility from compiled code.
This commit is contained in:
+6
-3
@@ -426,7 +426,10 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
|
||||
if (classData.classDescriptor.getKind() == ClassKind.OBJECT) {
|
||||
// TODO: wrong: class objects do not need visible constructors
|
||||
ConstructorDescriptorImpl constructor = new ConstructorDescriptorImpl(classData.classDescriptor, new ArrayList<AnnotationDescriptor>(0), true);
|
||||
constructor.initialize(new ArrayList<TypeParameterDescriptor>(0), new ArrayList<ValueParameterDescriptor>(0), Visibilities.PUBLIC);
|
||||
Visibility visibility = psiConstructors.length != 0
|
||||
? resolveVisibility(psiConstructors[0], new PsiMethodWrapper(psiConstructors[0]).getJetConstructor())
|
||||
: Visibilities.PUBLIC;
|
||||
constructor.initialize(new ArrayList<TypeParameterDescriptor>(0), new ArrayList<ValueParameterDescriptor>(0), visibility);
|
||||
constructors.add(constructor);
|
||||
}
|
||||
else if (psiConstructors.length == 0) {
|
||||
@@ -521,7 +524,7 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
|
||||
}
|
||||
constructorDescriptor.initialize(classData.classDescriptor.getTypeConstructor().getParameters(),
|
||||
valueParameterDescriptors.descriptors,
|
||||
resolveVisibility(psiConstructor, constructor.getJetMethod()), aStatic);
|
||||
resolveVisibility(psiConstructor, constructor.getJetConstructor()), aStatic);
|
||||
trace.record(BindingContext.CONSTRUCTOR, psiConstructor, constructorDescriptor);
|
||||
return constructorDescriptor;
|
||||
}
|
||||
@@ -1314,7 +1317,7 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
|
||||
}
|
||||
|
||||
Visibility visibility = resolveVisibility(anyMember.getMember().psiMember, null);
|
||||
if (members.getter.getMember() instanceof PsiMethodWrapper) {
|
||||
if (members.getter != null && members.getter.getMember() instanceof PsiMethodWrapper) {
|
||||
visibility = resolveVisibility(anyMember.getMember().psiMember,
|
||||
((PsiMethodWrapper) members.getter.getMember()).getJetMethod());
|
||||
}
|
||||
|
||||
+15
-1
@@ -18,13 +18,17 @@ package org.jetbrains.jet.lang.resolve.java.kt;
|
||||
|
||||
import com.intellij.psi.PsiAnnotation;
|
||||
import com.intellij.psi.PsiMethod;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.lang.resolve.java.JvmStdlibNames;
|
||||
import org.jetbrains.jet.utils.BitSetUtils;
|
||||
|
||||
import java.util.BitSet;
|
||||
|
||||
/**
|
||||
* @author Stepan Koltsov
|
||||
*/
|
||||
public class JetConstructorAnnotation extends PsiAnnotationWrapper {
|
||||
public class JetConstructorAnnotation extends PsiAnnotationWithFlags {
|
||||
|
||||
public JetConstructorAnnotation(@Nullable PsiAnnotation psiAnnotation) {
|
||||
super(psiAnnotation);
|
||||
@@ -40,6 +44,16 @@ public class JetConstructorAnnotation extends PsiAnnotationWrapper {
|
||||
}
|
||||
return hidden;
|
||||
}
|
||||
|
||||
private BitSet flags;
|
||||
@NotNull
|
||||
@Override
|
||||
public BitSet flags() {
|
||||
if (flags == null) {
|
||||
flags = BitSetUtils.toBitSet(getIntAttribute(JvmStdlibNames.JET_CONSTRUCTOR_FLAGS_FIELD, JvmStdlibNames.FLAGS_DEFAULT_VALUE));
|
||||
}
|
||||
return flags;
|
||||
}
|
||||
|
||||
public static JetConstructorAnnotation get(PsiMethod constructor) {
|
||||
return new JetConstructorAnnotation(constructor.getModifierList().findAnnotation(JvmStdlibNames.JET_CONSTRUCTOR.getFqName().getFqName()));
|
||||
|
||||
Reference in New Issue
Block a user