public AlternativeFieldSignatureData( @NotNull JavaAnnotationResolver annotationResolver, @NotNull JavaFieldImpl field, @NotNull JetType originalReturnType, boolean isVar) { String signature = SignaturesUtil.getKotlinSignature(annotationResolver, field); if (signature == null) { setAnnotated(false); return; } setAnnotated(true); Project project = field.getPsi().getProject(); JetProperty altPropertyDeclaration = JetPsiFactory.createProperty(project, signature); try { checkForSyntaxErrors(altPropertyDeclaration); checkFieldAnnotation(altPropertyDeclaration, field, isVar); altReturnType = computeReturnType( originalReturnType, altPropertyDeclaration.getTypeRef(), new HashMap<TypeParameterDescriptor, TypeParameterDescriptorImpl>()); } catch (AlternativeSignatureMismatchException e) { setError(e.getMessage()); } }
public AlternativeMethodSignatureData( @NotNull ExternalAnnotationResolver externalAnnotationResolver, @NotNull JavaMethod method, @Nullable JetType receiverType, @NotNull Project project, @NotNull List<ValueParameterDescriptor> valueParameters, @Nullable JetType originalReturnType, @NotNull List<TypeParameterDescriptor> methodTypeParameters, boolean hasSuperMethods) { String signature = SignaturesUtil.getKotlinSignature(externalAnnotationResolver, method); if (signature == null) { setAnnotated(false); altFunDeclaration = null; return; } if (receiverType != null) { throw new UnsupportedOperationException( "Alternative annotations for extension functions are not supported yet"); } setAnnotated(true); altFunDeclaration = JetPsiFactory.createFunction(project, signature); originalToAltTypeParameters = DescriptorResolverUtils.recreateTypeParametersAndReturnMapping(methodTypeParameters, null); try { checkForSyntaxErrors(altFunDeclaration); checkEqualFunctionNames(altFunDeclaration, method); computeTypeParameters(methodTypeParameters); computeValueParameters(valueParameters); if (originalReturnType != null) { altReturnType = computeReturnType( originalReturnType, altFunDeclaration.getReturnTypeRef(), originalToAltTypeParameters); } if (hasSuperMethods) { checkParameterAndReturnTypesForOverridingMethods( valueParameters, methodTypeParameters, originalReturnType); } } catch (AlternativeSignatureMismatchException e) { setError(e.getMessage()); } }