diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java index fef7378e181..9df9e2b7838 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java @@ -107,7 +107,7 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes private final ConstructorResolver constructorResolver = new ConstructorResolver(this); private final CompileTimeConstResolver compileTimeConstResolver = new CompileTimeConstResolver(this); private final AnnotationResolver annotationResolver = new AnnotationResolver(this); - private final FunctionResolver functionResolver = new FunctionResolver(this); + public final FunctionResolver functionResolver = new FunctionResolver(this); public final NamespaceResolver namespaceResolver = new NamespaceResolver(this); @Inject @@ -499,31 +499,6 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes } } - public JetType makeReturnType( - PsiType returnType, PsiMethodWrapper method, - @NotNull TypeVariableResolver typeVariableResolver - ) { - - String returnTypeFromAnnotation = method.getJetMethod().returnType(); - - JetType transformedType; - if (returnTypeFromAnnotation.length() > 0) { - transformedType = semanticServices.getTypeTransformer().transformToType(returnTypeFromAnnotation, typeVariableResolver); - } - else { - transformedType = semanticServices.getTypeTransformer().transformToType( - returnType, JavaTypeTransformer.TypeUsage.MEMBER_SIGNATURE_COVARIANT, typeVariableResolver); - } - - if (AnnotationResolver.findAnnotation(method.getPsiMethod(), JvmAbi.JETBRAINS_NOT_NULL_ANNOTATION.getFqName().getFqName()) != - null) { - return TypeUtils.makeNullableAsSpecified(transformedType, false); - } - else { - return transformedType; - } - } - public static Modality resolveModality(PsiMemberWrapper memberWrapper, boolean isFinal) { if (memberWrapper instanceof PsiMethodWrapper) { PsiMethodWrapper method = (PsiMethodWrapper) memberWrapper; diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/FunctionResolver.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/FunctionResolver.java index e078a1b1d55..2a23e1b938a 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/FunctionResolver.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/FunctionResolver.java @@ -100,7 +100,7 @@ public class FunctionResolver { JavaDescriptorResolver.ValueParameterDescriptors valueParameterDescriptors = javaDescriptorResolver .resolveParameterDescriptors(functionDescriptorImpl, method.getParameters(), methodTypeVariableResolver); - JetType returnType = javaDescriptorResolver.makeReturnType(returnPsiType, method, methodTypeVariableResolver); + JetType returnType = makeReturnType(returnPsiType, method, methodTypeVariableResolver); // TODO consider better place for this check AlternativeMethodSignatureData alternativeMethodSignatureData = @@ -208,6 +208,32 @@ public class FunctionResolver { } } + public JetType makeReturnType( + PsiType returnType, PsiMethodWrapper method, + @NotNull TypeVariableResolver typeVariableResolver + ) { + + String returnTypeFromAnnotation = method.getJetMethod().returnType(); + + JetType transformedType; + if (returnTypeFromAnnotation.length() > 0) { + transformedType = javaDescriptorResolver.getSemanticServices() + .getTypeTransformer().transformToType(returnTypeFromAnnotation, typeVariableResolver); + } + else { + transformedType = javaDescriptorResolver.getSemanticServices().getTypeTransformer().transformToType( + returnType, JavaTypeTransformer.TypeUsage.MEMBER_SIGNATURE_COVARIANT, typeVariableResolver); + } + + if (AnnotationResolver.findAnnotation(method.getPsiMethod(), JvmAbi.JETBRAINS_NOT_NULL_ANNOTATION.getFqName().getFqName()) != + null) { + return TypeUtils.makeNullableAsSpecified(transformedType, false); + } + else { + return transformedType; + } + } + public static Set getFunctionsFromSupertypes( JavaDescriptorResolveData.ResolverScopeData scopeData, Name methodName