diff --git a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForJavaDescriptorResolver.java b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForJavaDescriptorResolver.java index a0a2a0e6ec3..743fbf7c51b 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForJavaDescriptorResolver.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForJavaDescriptorResolver.java @@ -95,6 +95,7 @@ public class InjectorForJavaDescriptorResolver { this.javaClassFinder.setProject(project); traceBasedExternalSignatureResolver.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver); + traceBasedExternalSignatureResolver.setProject(project); traceBasedExternalSignatureResolver.setTrace(bindingTrace); traceBasedJavaResolverCache.setTrace(bindingTrace); diff --git a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForLazyResolveWithJava.java b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForLazyResolveWithJava.java index 5e84e3f9d51..0059a0c0d6c 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForLazyResolveWithJava.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForLazyResolveWithJava.java @@ -172,6 +172,7 @@ public class InjectorForLazyResolveWithJava { javaClassFinder.setProject(project); traceBasedExternalSignatureResolver.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver); + traceBasedExternalSignatureResolver.setProject(project); traceBasedExternalSignatureResolver.setTrace(bindingTrace); lazyResolveBasedCache.setSession(resolveSession); diff --git a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java index 49cb7fb66da..ad6b0124f0b 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java @@ -201,6 +201,7 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly javaClassFinder.setProject(project); traceBasedExternalSignatureResolver.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver); + traceBasedExternalSignatureResolver.setProject(project); traceBasedExternalSignatureResolver.setTrace(bindingTrace); traceBasedJavaResolverCache.setTrace(bindingTrace); 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 5f5a8d61b2f..a67f336e671 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 @@ -24,7 +24,7 @@ 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.ExternalAnnotationResolver; -import org.jetbrains.jet.lang.resolve.java.structure.impl.JavaFieldImpl; +import org.jetbrains.jet.lang.resolve.java.structure.JavaField; import org.jetbrains.jet.lang.types.JetType; import java.util.HashMap; @@ -34,8 +34,9 @@ public class AlternativeFieldSignatureData extends ElementAlternativeSignatureDa public AlternativeFieldSignatureData( @NotNull ExternalAnnotationResolver externalAnnotationResolver, - @NotNull JavaFieldImpl field, + @NotNull JavaField field, @NotNull JetType originalReturnType, + @NotNull Project project, boolean isVar ) { String signature = SignaturesUtil.getKotlinSignature(externalAnnotationResolver, field); @@ -46,7 +47,6 @@ public class AlternativeFieldSignatureData extends ElementAlternativeSignatureDa } setAnnotated(true); - Project project = field.getPsi().getProject(); JetProperty altPropertyDeclaration = JetPsiFactory.createProperty(project, signature); try { @@ -66,7 +66,7 @@ public class AlternativeFieldSignatureData extends ElementAlternativeSignatureDa return altReturnType; } - private static void checkFieldAnnotation(@NotNull JetProperty altProperty, @NotNull JavaFieldImpl field, boolean isVar) { + private static void checkFieldAnnotation(@NotNull JetProperty altProperty, @NotNull JavaField field, boolean isVar) { if (!ComparatorUtil.equalsNullable(field.getName().asString(), altProperty.getName())) { throw new AlternativeSignatureMismatchException("Field name mismatch, original: %s, alternative: %s", field.getName().asString(), altProperty.getName()); 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 20bf03b02e3..3d311a7dc06 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 @@ -29,7 +29,6 @@ import org.jetbrains.jet.lang.psi.*; 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.JavaMethod; -import org.jetbrains.jet.lang.resolve.java.structure.impl.JavaMethodImpl; import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.lang.types.JetType; import org.jetbrains.jet.lang.types.TypeSubstitutor; @@ -56,8 +55,9 @@ public class AlternativeMethodSignatureData extends ElementAlternativeSignatureD public AlternativeMethodSignatureData( @NotNull ExternalAnnotationResolver externalAnnotationResolver, - @NotNull JavaMethodImpl method, + @NotNull JavaMethod method, @Nullable JetType receiverType, + @NotNull Project project, @NotNull List valueParameters, @Nullable JetType originalReturnType, @NotNull List methodTypeParameters, @@ -76,7 +76,6 @@ public class AlternativeMethodSignatureData extends ElementAlternativeSignatureD } setAnnotated(true); - Project project = method.getPsi().getProject(); altFunDeclaration = JetPsiFactory.createFunction(project, signature); originalToAltTypeParameters = DescriptorResolverUtils.recreateTypeParametersAndReturnMapping(methodTypeParameters, null); diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/SignaturesPropagationData.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/SignaturesPropagationData.java index e32fb71ed9c..5d53d1c101b 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/SignaturesPropagationData.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/SignaturesPropagationData.java @@ -75,7 +75,7 @@ public class SignaturesPropagationData { @Nullable JetType receiverType, @NotNull List autoValueParameters, // descriptors built by parameters resolver @NotNull List autoTypeParameters, // descriptors built by signature resolver - @NotNull JavaMethodImpl method, + @NotNull JavaMethod method, @NotNull BindingTrace trace ) { this.containingClass = containingClass; @@ -254,7 +254,7 @@ public class SignaturesPropagationData { } private static List getSuperFunctionsForMethod( - @NotNull JavaMethodImpl method, + @NotNull JavaMethod method, @NotNull BindingTrace trace, @NotNull ClassDescriptor containingClass ) { @@ -297,7 +297,7 @@ public class SignaturesPropagationData { // sorting for diagnostic stability Collections.sort(superFunctions, new Comparator() { @Override - public int compare(FunctionDescriptor fun1, FunctionDescriptor fun2) { + public int compare(@NotNull FunctionDescriptor fun1, @NotNull FunctionDescriptor fun2) { FqNameUnsafe fqName1 = getFqName(fun1.getContainingDeclaration()); FqNameUnsafe fqName2 = getFqName(fun2.getContainingDeclaration()); return fqName1.asString().compareTo(fqName2.asString()); 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 d73f209d764..f74916e7e63 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 @@ -16,6 +16,7 @@ package org.jetbrains.jet.lang.resolve.java.resolver; +import com.intellij.openapi.project.Project; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.descriptors.CallableMemberDescriptor; @@ -29,8 +30,6 @@ import org.jetbrains.jet.lang.resolve.java.kotlinSignature.AlternativeMethodSign import org.jetbrains.jet.lang.resolve.java.kotlinSignature.SignaturesPropagationData; import org.jetbrains.jet.lang.resolve.java.structure.JavaField; import org.jetbrains.jet.lang.resolve.java.structure.JavaMethod; -import org.jetbrains.jet.lang.resolve.java.structure.impl.JavaFieldImpl; -import org.jetbrains.jet.lang.resolve.java.structure.impl.JavaMethodImpl; import org.jetbrains.jet.lang.types.JetType; import javax.inject.Inject; @@ -40,6 +39,7 @@ import java.util.List; public class TraceBasedExternalSignatureResolver implements ExternalSignatureResolver { private BindingTrace trace; private ExternalAnnotationResolver externalAnnotationResolver; + private Project project; @Inject public void setTrace(BindingTrace trace) { @@ -51,6 +51,11 @@ public class TraceBasedExternalSignatureResolver implements ExternalSignatureRes this.externalAnnotationResolver = externalAnnotationResolver; } + @Inject + public void setProject(Project project) { + this.project = project; + } + @Override @NotNull public PropagatedMethodSignature resolvePropagatedSignature( @@ -62,7 +67,7 @@ public class TraceBasedExternalSignatureResolver implements ExternalSignatureRes @NotNull List typeParameters ) { SignaturesPropagationData data = - new SignaturesPropagationData(owner, returnType, receiverType, valueParameters, typeParameters, (JavaMethodImpl) method, + new SignaturesPropagationData(owner, returnType, receiverType, valueParameters, typeParameters, method, trace); return new PropagatedMethodSignature(data.getModifiedReturnType(), data.getModifiedReceiverType(), data.getModifiedValueParameters(), data.getModifiedTypeParameters(), data.getSignatureErrors(), @@ -81,7 +86,7 @@ public class TraceBasedExternalSignatureResolver implements ExternalSignatureRes boolean hasStableParameterNames ) { AlternativeMethodSignatureData data = - new AlternativeMethodSignatureData(externalAnnotationResolver, (JavaMethodImpl) method, receiverType, valueParameters, returnType, + new AlternativeMethodSignatureData(externalAnnotationResolver, method, receiverType, project, valueParameters, returnType, typeParameters, hasSuperMethods); if (data.isAnnotated() && !data.hasErrors()) { @@ -101,7 +106,7 @@ public class TraceBasedExternalSignatureResolver implements ExternalSignatureRes boolean isVar ) { AlternativeFieldSignatureData data = - new AlternativeFieldSignatureData(externalAnnotationResolver, (JavaFieldImpl) field, returnType, isVar); + new AlternativeFieldSignatureData(externalAnnotationResolver, field, returnType, project, isVar); if (data.isAnnotated() && !data.hasErrors()) { return new AlternativeFieldSignature(data.getReturnType(), null);