extract resolveConstructor method
This commit is contained in:
+27
-22
@@ -539,28 +539,7 @@ public class JavaDescriptorResolver {
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
for (PsiMethod psiConstructor : psiConstructors) {
|
for (PsiMethod psiConstructor : psiConstructors) {
|
||||||
PsiMethodWrapper constructor = new PsiMethodWrapper(psiConstructor);
|
resolveConstructor(psiClass, classData, isStatic, psiConstructor);
|
||||||
|
|
||||||
if (constructor.getJetConstructor().hidden()) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
ConstructorDescriptorImpl constructorDescriptor = new ConstructorDescriptorImpl(
|
|
||||||
classData.classDescriptor,
|
|
||||||
Collections.<AnnotationDescriptor>emptyList(), // TODO
|
|
||||||
false);
|
|
||||||
String context = "constructor of class " + psiClass.getQualifiedName();
|
|
||||||
ValueParameterDescriptors valueParameterDescriptors = resolveParameterDescriptors(constructorDescriptor,
|
|
||||||
constructor.getParameters(),
|
|
||||||
TypeVariableResolvers.classTypeVariableResolver(classData.classDescriptor, context));
|
|
||||||
if (valueParameterDescriptors.receiverType != null) {
|
|
||||||
throw new IllegalStateException();
|
|
||||||
}
|
|
||||||
constructorDescriptor.initialize(typeParameters, valueParameterDescriptors.descriptors,
|
|
||||||
resolveVisibilityFromPsiModifiers(psiConstructor), isStatic);
|
|
||||||
constructorDescriptor.setReturnType(classData.classDescriptor.getDefaultType());
|
|
||||||
classData.classDescriptor.addConstructor(constructorDescriptor, null);
|
|
||||||
trace.record(BindingContext.CONSTRUCTOR, psiConstructor, constructorDescriptor);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -574,6 +553,32 @@ public class JavaDescriptorResolver {
|
|||||||
return classData;
|
return classData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void resolveConstructor(PsiClass psiClass, ResolverBinaryClassData classData, boolean aStatic, PsiMethod psiConstructor) {
|
||||||
|
PsiMethodWrapper constructor = new PsiMethodWrapper(psiConstructor);
|
||||||
|
|
||||||
|
if (constructor.getJetConstructor().hidden()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ConstructorDescriptorImpl constructorDescriptor = new ConstructorDescriptorImpl(
|
||||||
|
classData.classDescriptor,
|
||||||
|
Collections.<AnnotationDescriptor>emptyList(), // TODO
|
||||||
|
false);
|
||||||
|
String context = "constructor of class " + psiClass.getQualifiedName();
|
||||||
|
ValueParameterDescriptors valueParameterDescriptors = resolveParameterDescriptors(constructorDescriptor,
|
||||||
|
constructor.getParameters(),
|
||||||
|
TypeVariableResolvers.classTypeVariableResolver(classData.classDescriptor, context));
|
||||||
|
if (valueParameterDescriptors.receiverType != null) {
|
||||||
|
throw new IllegalStateException();
|
||||||
|
}
|
||||||
|
constructorDescriptor.initialize(classData.classDescriptor.getTypeConstructor().getParameters(),
|
||||||
|
valueParameterDescriptors.descriptors,
|
||||||
|
resolveVisibilityFromPsiModifiers(psiConstructor), aStatic);
|
||||||
|
constructorDescriptor.setReturnType(classData.classDescriptor.getDefaultType());
|
||||||
|
classData.classDescriptor.addConstructor(constructorDescriptor, null);
|
||||||
|
trace.record(BindingContext.CONSTRUCTOR, psiConstructor, constructorDescriptor);
|
||||||
|
}
|
||||||
|
|
||||||
static void checkPsiClassIsNotJet(PsiClass psiClass) {
|
static void checkPsiClassIsNotJet(PsiClass psiClass) {
|
||||||
if (psiClass instanceof JetJavaMirrorMarker) {
|
if (psiClass instanceof JetJavaMirrorMarker) {
|
||||||
throw new IllegalStateException("trying to resolve fake jet PsiClass as regular PsiClass: " + psiClass.getQualifiedName());
|
throw new IllegalStateException("trying to resolve fake jet PsiClass as regular PsiClass: " + psiClass.getQualifiedName());
|
||||||
|
|||||||
Reference in New Issue
Block a user