Load constructor descriptors with information from KotlinSignature annotations
#KT-2774 In Progress
This commit is contained in:
+4
-2
@@ -61,7 +61,7 @@ class AlternativeSignatureData {
|
|||||||
AlternativeSignatureData(
|
AlternativeSignatureData(
|
||||||
@NotNull PsiMethodWrapper method,
|
@NotNull PsiMethodWrapper method,
|
||||||
@NotNull JavaDescriptorResolver.ValueParameterDescriptors valueParameterDescriptors,
|
@NotNull JavaDescriptorResolver.ValueParameterDescriptors valueParameterDescriptors,
|
||||||
@NotNull JetType returnType,
|
@Nullable JetType returnType,
|
||||||
@NotNull List<TypeParameterDescriptor> methodTypeParameters) {
|
@NotNull List<TypeParameterDescriptor> methodTypeParameters) {
|
||||||
String signature = method.getSignatureAnnotation().signature();
|
String signature = method.getSignatureAnnotation().signature();
|
||||||
if (signature.isEmpty()) {
|
if (signature.isEmpty()) {
|
||||||
@@ -87,7 +87,9 @@ class AlternativeSignatureData {
|
|||||||
|
|
||||||
computeTypeParameters(methodTypeParameters);
|
computeTypeParameters(methodTypeParameters);
|
||||||
computeValueParameters(valueParameterDescriptors);
|
computeValueParameters(valueParameterDescriptors);
|
||||||
computeReturnType(returnType);
|
if (returnType != null) {
|
||||||
|
computeReturnType(returnType);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (AlternativeSignatureMismatchException e) {
|
catch (AlternativeSignatureMismatchException e) {
|
||||||
error = e.getMessage();
|
error = e.getMessage();
|
||||||
|
|||||||
+10
@@ -427,6 +427,16 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
|
|||||||
if (valueParameterDescriptors.receiverType != null) {
|
if (valueParameterDescriptors.receiverType != null) {
|
||||||
throw new IllegalStateException();
|
throw new IllegalStateException();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AlternativeSignatureData alternativeSignatureData =
|
||||||
|
new AlternativeSignatureData(constructor, valueParameterDescriptors, null, Collections.<TypeParameterDescriptor>emptyList());
|
||||||
|
if (!alternativeSignatureData.isNone() && alternativeSignatureData.getError() == null) {
|
||||||
|
valueParameterDescriptors = alternativeSignatureData.getValueParameters();
|
||||||
|
}
|
||||||
|
else if (alternativeSignatureData.getError() != null) {
|
||||||
|
trace.record(BindingContext.ALTERNATIVE_SIGNATURE_DATA_ERROR, constructorDescriptor, alternativeSignatureData.getError());
|
||||||
|
}
|
||||||
|
|
||||||
constructorDescriptor.initialize(classData.getClassDescriptor().getTypeConstructor().getParameters(),
|
constructorDescriptor.initialize(classData.getClassDescriptor().getTypeConstructor().getParameters(),
|
||||||
valueParameterDescriptors.descriptors,
|
valueParameterDescriptors.descriptors,
|
||||||
resolveVisibility(psiConstructor, constructor.getJetConstructor()), aStatic);
|
resolveVisibility(psiConstructor, constructor.getJetConstructor()), aStatic);
|
||||||
|
|||||||
Reference in New Issue
Block a user