ExternalAnnotationResolver is enough to look for external annotations
This commit is contained in:
committed by
Alexander Udalov
parent
6c96d235ec
commit
ab3b8d63df
+3
-3
@@ -23,7 +23,7 @@ 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.psi.JetPsiFactory;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaAnnotationResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.ExternalAnnotationResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.structure.impl.JavaFieldImpl;
|
||||
import org.jetbrains.jet.lang.types.JetType;
|
||||
|
||||
@@ -33,12 +33,12 @@ public class AlternativeFieldSignatureData extends ElementAlternativeSignatureDa
|
||||
private JetType altReturnType;
|
||||
|
||||
public AlternativeFieldSignatureData(
|
||||
@NotNull JavaAnnotationResolver annotationResolver,
|
||||
@NotNull ExternalAnnotationResolver externalAnnotationResolver,
|
||||
@NotNull JavaFieldImpl field,
|
||||
@NotNull JetType originalReturnType,
|
||||
boolean isVar
|
||||
) {
|
||||
String signature = SignaturesUtil.getKotlinSignature(annotationResolver, field);
|
||||
String signature = SignaturesUtil.getKotlinSignature(externalAnnotationResolver, field);
|
||||
|
||||
if (signature == null) {
|
||||
setAnnotated(false);
|
||||
|
||||
+3
-3
@@ -27,7 +27,7 @@ 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.resolver.DescriptorResolverUtils;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaAnnotationResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.ExternalAnnotationResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.structure.JavaMethod;
|
||||
import org.jetbrains.jet.lang.resolve.java.structure.impl.JavaMethodImpl;
|
||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||
@@ -55,7 +55,7 @@ public class AlternativeMethodSignatureData extends ElementAlternativeSignatureD
|
||||
private Map<TypeParameterDescriptor, TypeParameterDescriptorImpl> originalToAltTypeParameters;
|
||||
|
||||
public AlternativeMethodSignatureData(
|
||||
@NotNull JavaAnnotationResolver annotationResolver,
|
||||
@NotNull ExternalAnnotationResolver externalAnnotationResolver,
|
||||
@NotNull JavaMethodImpl method,
|
||||
@Nullable JetType receiverType,
|
||||
@NotNull List<ValueParameterDescriptor> valueParameters,
|
||||
@@ -63,7 +63,7 @@ public class AlternativeMethodSignatureData extends ElementAlternativeSignatureD
|
||||
@NotNull List<TypeParameterDescriptor> methodTypeParameters,
|
||||
boolean hasSuperMethods
|
||||
) {
|
||||
String signature = SignaturesUtil.getKotlinSignature(annotationResolver, method);
|
||||
String signature = SignaturesUtil.getKotlinSignature(externalAnnotationResolver, method);
|
||||
|
||||
if (signature == null) {
|
||||
setAnnotated(false);
|
||||
|
||||
+15
-7
@@ -20,11 +20,8 @@ import com.intellij.openapi.util.text.StringUtil;
|
||||
import jet.runtime.typeinfo.KotlinSignature;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaAnnotationResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.structure.JavaAnnotation;
|
||||
import org.jetbrains.jet.lang.resolve.java.structure.JavaAnnotationArgument;
|
||||
import org.jetbrains.jet.lang.resolve.java.structure.JavaLiteralAnnotationArgument;
|
||||
import org.jetbrains.jet.lang.resolve.java.structure.JavaMember;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.ExternalAnnotationResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.structure.*;
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||
|
||||
@@ -38,8 +35,8 @@ public class SignaturesUtil {
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static String getKotlinSignature(@NotNull JavaAnnotationResolver annotationResolver, @NotNull JavaMember member) {
|
||||
JavaAnnotation annotation = annotationResolver.findAnnotationWithExternal(member, KOTLIN_SIGNATURE);
|
||||
public static String getKotlinSignature(@NotNull ExternalAnnotationResolver externalAnnotationResolver, @NotNull JavaMember member) {
|
||||
JavaAnnotation annotation = findAnnotationWithExternal(externalAnnotationResolver, member, KOTLIN_SIGNATURE);
|
||||
|
||||
if (annotation != null) {
|
||||
JavaAnnotationArgument argument = annotation.findArgument(KOTLIN_SIGNATURE_VALUE_FIELD_NAME);
|
||||
@@ -53,4 +50,15 @@ public class SignaturesUtil {
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static JavaAnnotation findAnnotationWithExternal(@NotNull ExternalAnnotationResolver externalAnnotationResolver, @NotNull JavaAnnotationOwner owner, @NotNull FqName name) {
|
||||
JavaAnnotation annotation = owner.findAnnotation(name);
|
||||
if (annotation != null) {
|
||||
return annotation;
|
||||
}
|
||||
|
||||
return externalAnnotationResolver.findExternalAnnotation(owner, name);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+4
-4
@@ -46,12 +46,12 @@ import static org.jetbrains.jet.lang.resolve.OverridingUtil.isReturnTypeOkForOve
|
||||
public class PsiBasedMethodSignatureChecker implements MethodSignatureChecker {
|
||||
private static final Logger LOG = Logger.getInstance(PsiBasedMethodSignatureChecker.class);
|
||||
|
||||
private JavaAnnotationResolver annotationResolver;
|
||||
private ExternalAnnotationResolver externalAnnotationResolver;
|
||||
private ExternalSignatureResolver externalSignatureResolver;
|
||||
|
||||
@Inject
|
||||
public void setAnnotationResolver(JavaAnnotationResolver annotationResolver) {
|
||||
this.annotationResolver = annotationResolver;
|
||||
public void setExternalAnnotationResolver(ExternalAnnotationResolver externalAnnotationResolver) {
|
||||
this.externalAnnotationResolver = externalAnnotationResolver;
|
||||
}
|
||||
|
||||
@Inject
|
||||
@@ -92,7 +92,7 @@ public class PsiBasedMethodSignatureChecker implements MethodSignatureChecker {
|
||||
+ "sub function = " + function + "\n"
|
||||
+ "sub class = " + function.getContainingDeclaration() + "\n"
|
||||
+ "sub method = " + JavaSignatureFormatter.getInstance().getExternalName(method) + "\n"
|
||||
+ "@KotlinSignature = " + SignaturesUtil.getKotlinSignature(annotationResolver, method));
|
||||
+ "@KotlinSignature = " + SignaturesUtil.getKotlinSignature(externalAnnotationResolver, method));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+5
-5
@@ -39,7 +39,7 @@ import java.util.List;
|
||||
|
||||
public class TraceBasedExternalSignatureResolver implements ExternalSignatureResolver {
|
||||
private BindingTrace trace;
|
||||
private JavaAnnotationResolver annotationResolver;
|
||||
private ExternalAnnotationResolver externalAnnotationResolver;
|
||||
|
||||
@Inject
|
||||
public void setTrace(BindingTrace trace) {
|
||||
@@ -47,8 +47,8 @@ public class TraceBasedExternalSignatureResolver implements ExternalSignatureRes
|
||||
}
|
||||
|
||||
@Inject
|
||||
public void setAnnotationResolver(JavaAnnotationResolver annotationResolver) {
|
||||
this.annotationResolver = annotationResolver;
|
||||
public void setExternalAnnotationResolver(ExternalAnnotationResolver externalAnnotationResolver) {
|
||||
this.externalAnnotationResolver = externalAnnotationResolver;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -80,7 +80,7 @@ public class TraceBasedExternalSignatureResolver implements ExternalSignatureRes
|
||||
@NotNull List<TypeParameterDescriptor> typeParameters
|
||||
) {
|
||||
AlternativeMethodSignatureData data =
|
||||
new AlternativeMethodSignatureData(annotationResolver, (JavaMethodImpl) method, receiverType, valueParameters, returnType,
|
||||
new AlternativeMethodSignatureData(externalAnnotationResolver, (JavaMethodImpl) method, receiverType, valueParameters, returnType,
|
||||
typeParameters, hasSuperMethods);
|
||||
|
||||
if (data.isAnnotated() && !data.hasErrors()) {
|
||||
@@ -100,7 +100,7 @@ public class TraceBasedExternalSignatureResolver implements ExternalSignatureRes
|
||||
boolean isVar
|
||||
) {
|
||||
AlternativeFieldSignatureData data =
|
||||
new AlternativeFieldSignatureData(annotationResolver, (JavaFieldImpl) field, returnType, isVar);
|
||||
new AlternativeFieldSignatureData(externalAnnotationResolver, (JavaFieldImpl) field, returnType, isVar);
|
||||
|
||||
if (data.isAnnotated() && !data.hasErrors()) {
|
||||
return new AlternativeFieldSignature(data.getReturnType(), null);
|
||||
|
||||
Reference in New Issue
Block a user