Load constructor descriptors with information from KotlinSignature annotations

#KT-2774 In Progress
This commit is contained in:
Nikolay Krasko
2012-10-02 18:47:12 +04:00
parent 3fb34c26ef
commit 14b7759a2a
2 changed files with 14 additions and 2 deletions
@@ -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();
@@ -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);