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(
|
||||
@NotNull PsiMethodWrapper method,
|
||||
@NotNull JavaDescriptorResolver.ValueParameterDescriptors valueParameterDescriptors,
|
||||
@NotNull JetType returnType,
|
||||
@Nullable JetType returnType,
|
||||
@NotNull List<TypeParameterDescriptor> methodTypeParameters) {
|
||||
String signature = method.getSignatureAnnotation().signature();
|
||||
if (signature.isEmpty()) {
|
||||
@@ -87,7 +87,9 @@ class AlternativeSignatureData {
|
||||
|
||||
computeTypeParameters(methodTypeParameters);
|
||||
computeValueParameters(valueParameterDescriptors);
|
||||
computeReturnType(returnType);
|
||||
if (returnType != null) {
|
||||
computeReturnType(returnType);
|
||||
}
|
||||
}
|
||||
catch (AlternativeSignatureMismatchException e) {
|
||||
error = e.getMessage();
|
||||
|
||||
+10
@@ -427,6 +427,16 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
|
||||
if (valueParameterDescriptors.receiverType != null) {
|
||||
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(),
|
||||
valueParameterDescriptors.descriptors,
|
||||
resolveVisibility(psiConstructor, constructor.getJetConstructor()), aStatic);
|
||||
|
||||
Reference in New Issue
Block a user