Ignoring alternative signature annotation if it has syntax errors.

This commit is contained in:
Evgeny Gerashchenko
2012-06-06 16:16:31 +04:00
parent 0d47bf5472
commit b1ba730ebb
@@ -1622,13 +1622,19 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
String signature = method.getSignatureAnnotation().signature(); String signature = method.getSignatureAnnotation().signature();
if (!signature.isEmpty()) { if (!signature.isEmpty()) {
JetNamedFunction altFunDeclaration = JetPsiFactory.createFunction(project, signature); JetNamedFunction altFunDeclaration = JetPsiFactory.createFunction(project, signature);
valueParameterDescriptors = AlternativeSignatureParsing List<PsiErrorElement> syntaxErrors = AnalyzingUtils.getSyntaxErrorRanges(altFunDeclaration);
.computeAlternativeValueParameters(valueParameterDescriptors, altFunDeclaration); if (!syntaxErrors.isEmpty()) {
JetTypeReference returnTypeRef = altFunDeclaration.getReturnTypeRef(); // TODO report syntax error as diagnostic when method is used
if (returnTypeRef != null) { }
returnType = AlternativeSignatureParsing.computeAlternativeTypeFromAnnotation(returnTypeRef.getTypeElement(), returnType); 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( functionDescriptorImpl.initialize(