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