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( 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();
@@ -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);