Skip alternative signatures in PLATFORM_TYPES mode, but use parameter names
This commit is contained in:
+1
-2
@@ -22,7 +22,6 @@ import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.lang.descriptors.TypeParameterDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.impl.TypeParameterDescriptorImpl;
|
||||
import org.jetbrains.jet.lang.psi.JetProperty;
|
||||
import org.jetbrains.jet.lang.resolve.java.JavaPackage;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.ExternalAnnotationResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.structure.JavaField;
|
||||
import org.jetbrains.jet.lang.types.JetType;
|
||||
@@ -41,7 +40,7 @@ public class AlternativeFieldSignatureData extends ElementAlternativeSignatureDa
|
||||
@NotNull Project project,
|
||||
boolean isVar
|
||||
) {
|
||||
String signature = JavaPackage.getPLATFORM_TYPES() ? null : SignaturesUtil.getKotlinSignature(externalAnnotationResolver, field);
|
||||
String signature = SignaturesUtil.getKotlinSignature(externalAnnotationResolver, field);
|
||||
|
||||
if (signature == null) {
|
||||
setAnnotated(false);
|
||||
|
||||
+14
-2
@@ -28,7 +28,6 @@ import org.jetbrains.jet.lang.descriptors.ValueParameterDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.impl.TypeParameterDescriptorImpl;
|
||||
import org.jetbrains.jet.lang.descriptors.impl.ValueParameterDescriptorImpl;
|
||||
import org.jetbrains.jet.lang.psi.*;
|
||||
import org.jetbrains.jet.lang.resolve.java.JavaPackage;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.DescriptorResolverUtils;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.ExternalAnnotationResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.structure.JavaMember;
|
||||
@@ -65,7 +64,7 @@ public class AlternativeMethodSignatureData extends ElementAlternativeSignatureD
|
||||
@NotNull List<TypeParameterDescriptor> methodTypeParameters,
|
||||
boolean hasSuperMethods
|
||||
) {
|
||||
String signature = JavaPackage.getPLATFORM_TYPES() ? null : SignaturesUtil.getKotlinSignature(externalAnnotationResolver, methodOrConstructor);
|
||||
String signature = SignaturesUtil.getKotlinSignature(externalAnnotationResolver, methodOrConstructor);
|
||||
|
||||
if (signature == null) {
|
||||
setAnnotated(false);
|
||||
@@ -102,6 +101,19 @@ public class AlternativeMethodSignatureData extends ElementAlternativeSignatureD
|
||||
}
|
||||
}
|
||||
|
||||
public static List<ValueParameterDescriptor> updateNames(
|
||||
List<ValueParameterDescriptor> originalValueParameters,
|
||||
List<ValueParameterDescriptor> altValueParameters
|
||||
) {
|
||||
List<ValueParameterDescriptor> result = new ArrayList<ValueParameterDescriptor>(originalValueParameters.size());
|
||||
for (int i = 0; i < originalValueParameters.size(); i++) {
|
||||
ValueParameterDescriptor originalValueParameter = originalValueParameters.get(i);
|
||||
ValueParameterDescriptor altValueParameter = altValueParameters.get(i);
|
||||
result.add(originalValueParameter.copy(originalValueParameter.getContainingDeclaration(), altValueParameter.getName()));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private void checkParameterAndReturnTypesForOverridingMethods(
|
||||
@NotNull List<ValueParameterDescriptor> valueParameters,
|
||||
@NotNull List<TypeParameterDescriptor> methodTypeParameters,
|
||||
|
||||
+10
@@ -25,6 +25,7 @@ import org.jetbrains.jet.lang.descriptors.TypeParameterDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.ValueParameterDescriptor;
|
||||
import org.jetbrains.jet.lang.resolve.BindingTrace;
|
||||
import org.jetbrains.jet.lang.resolve.java.JavaBindingContext;
|
||||
import org.jetbrains.jet.lang.resolve.java.JavaPackage;
|
||||
import org.jetbrains.jet.lang.resolve.java.kotlinSignature.AlternativeFieldSignatureData;
|
||||
import org.jetbrains.jet.lang.resolve.java.kotlinSignature.AlternativeMethodSignatureData;
|
||||
import org.jetbrains.jet.lang.resolve.java.kotlinSignature.SignaturesPropagationData;
|
||||
@@ -94,6 +95,12 @@ public class TraceBasedExternalSignatureResolver implements ExternalSignatureRes
|
||||
returnType, typeParameters, hasSuperMethods);
|
||||
|
||||
if (data.isAnnotated() && !data.hasErrors()) {
|
||||
if (JavaPackage.getPLATFORM_TYPES()) {
|
||||
// We only take parameter names from the @KotlinSignature
|
||||
return new AlternativeMethodSignature(returnType, receiverType,
|
||||
AlternativeMethodSignatureData.updateNames(valueParameters, data.getValueParameters()),
|
||||
typeParameters, Collections.<String>emptyList(), true);
|
||||
}
|
||||
return new AlternativeMethodSignature(data.getReturnType(), receiverType, data.getValueParameters(), data.getTypeParameters(),
|
||||
Collections.<String>emptyList(), true);
|
||||
}
|
||||
@@ -113,6 +120,9 @@ public class TraceBasedExternalSignatureResolver implements ExternalSignatureRes
|
||||
new AlternativeFieldSignatureData(externalAnnotationResolver, field, returnType, project, isVar);
|
||||
|
||||
if (data.isAnnotated() && !data.hasErrors()) {
|
||||
if (JavaPackage.getPLATFORM_TYPES()) {
|
||||
return new AlternativeFieldSignature(returnType, null);
|
||||
}
|
||||
return new AlternativeFieldSignature(data.getReturnType(), null);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user