From ab3b8d63df6f7e2c15a718deb9981ddbd18e5c8a Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Wed, 5 Feb 2014 09:24:47 +0100 Subject: [PATCH] ExternalAnnotationResolver is enough to look for external annotations --- .../AlternativeFieldSignatureData.java | 6 ++--- .../AlternativeMethodSignatureData.java | 6 ++--- .../java/kotlinSignature/SignaturesUtil.java | 22 +++++++++++++------ .../PsiBasedMethodSignatureChecker.java | 8 +++---- .../TraceBasedExternalSignatureResolver.java | 10 ++++----- 5 files changed, 30 insertions(+), 22 deletions(-) diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/AlternativeFieldSignatureData.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/AlternativeFieldSignatureData.java index e7d07414283..5f5a8d61b2f 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/AlternativeFieldSignatureData.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/AlternativeFieldSignatureData.java @@ -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); diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/AlternativeMethodSignatureData.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/AlternativeMethodSignatureData.java index 2c2ffbb3a8c..9f41f2a2eb0 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/AlternativeMethodSignatureData.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/AlternativeMethodSignatureData.java @@ -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 originalToAltTypeParameters; public AlternativeMethodSignatureData( - @NotNull JavaAnnotationResolver annotationResolver, + @NotNull ExternalAnnotationResolver externalAnnotationResolver, @NotNull JavaMethodImpl method, @Nullable JetType receiverType, @NotNull List valueParameters, @@ -63,7 +63,7 @@ public class AlternativeMethodSignatureData extends ElementAlternativeSignatureD @NotNull List methodTypeParameters, boolean hasSuperMethods ) { - String signature = SignaturesUtil.getKotlinSignature(annotationResolver, method); + String signature = SignaturesUtil.getKotlinSignature(externalAnnotationResolver, method); if (signature == null) { setAnnotated(false); diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/SignaturesUtil.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/SignaturesUtil.java index a54baa1b5e3..5d747688409 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/SignaturesUtil.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/SignaturesUtil.java @@ -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); + } + } diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/PsiBasedMethodSignatureChecker.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/PsiBasedMethodSignatureChecker.java index c5abde20735..a5d5c9b2221 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/PsiBasedMethodSignatureChecker.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/PsiBasedMethodSignatureChecker.java @@ -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)); } } diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/TraceBasedExternalSignatureResolver.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/TraceBasedExternalSignatureResolver.java index 17fab3b88ea..1287251843b 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/TraceBasedExternalSignatureResolver.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/TraceBasedExternalSignatureResolver.java @@ -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 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);