From b1ba730ebbc665228b09852fb0663683e4f7bfdb Mon Sep 17 00:00:00 2001 From: Evgeny Gerashchenko Date: Wed, 6 Jun 2012 16:16:31 +0400 Subject: [PATCH] Ignoring alternative signature annotation if it has syntax errors. --- .../resolve/java/JavaDescriptorResolver.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) 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 2c6c16da80f..35302c8a1c7 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 @@ -1622,13 +1622,19 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes String signature = method.getSignatureAnnotation().signature(); if (!signature.isEmpty()) { JetNamedFunction altFunDeclaration = JetPsiFactory.createFunction(project, signature); - valueParameterDescriptors = AlternativeSignatureParsing - .computeAlternativeValueParameters(valueParameterDescriptors, altFunDeclaration); - JetTypeReference returnTypeRef = altFunDeclaration.getReturnTypeRef(); - if (returnTypeRef != null) { - returnType = AlternativeSignatureParsing.computeAlternativeTypeFromAnnotation(returnTypeRef.getTypeElement(), returnType); + List syntaxErrors = AnalyzingUtils.getSyntaxErrorRanges(altFunDeclaration); + if (!syntaxErrors.isEmpty()) { + // TODO report syntax error as diagnostic when method is used + } + else { + valueParameterDescriptors = AlternativeSignatureParsing + .computeAlternativeValueParameters(valueParameterDescriptors, altFunDeclaration); + JetTypeReference returnTypeRef = altFunDeclaration.getReturnTypeRef(); + if (returnTypeRef != null) { + returnType = AlternativeSignatureParsing.computeAlternativeTypeFromAnnotation(returnTypeRef.getTypeElement(), returnType); + } + methodTypeParameters = AlternativeSignatureParsing.computeAlternativeTypeParameters(methodTypeParameters, altFunDeclaration); } - methodTypeParameters = AlternativeSignatureParsing.computeAlternativeTypeParameters(methodTypeParameters, altFunDeclaration); } functionDescriptorImpl.initialize(