From 349a3955c2530b30023c11dad0cd7c2c24a42e1b Mon Sep 17 00:00:00 2001 From: Martin Lippert Date: Thu, 13 Jun 2024 09:30:47 +0200 Subject: [PATCH] GH-1271: check for non-existing expressions or non-resolvable types during precise bean type checking --- .../java/reconcilers/PreciseBeanTypeReconciler.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/reconcilers/PreciseBeanTypeReconciler.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/reconcilers/PreciseBeanTypeReconciler.java index 7858e1660..9b638df51 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/reconcilers/PreciseBeanTypeReconciler.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/reconcilers/PreciseBeanTypeReconciler.java @@ -20,6 +20,7 @@ import java.util.ListIterator; import org.eclipse.jdt.core.dom.ASTVisitor; import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jdt.core.dom.Expression; import org.eclipse.jdt.core.dom.IMethodBinding; import org.eclipse.jdt.core.dom.ITypeBinding; import org.eclipse.jdt.core.dom.MethodDeclaration; @@ -116,7 +117,16 @@ public class PreciseBeanTypeReconciler implements JdtAstReconciler { @Override public boolean visit(ReturnStatement node) { - ITypeBinding type = node.getExpression().resolveTypeBinding(); + Expression expression = node.getExpression(); + if (expression == null) { + return super.visit(node); + } + + ITypeBinding type = expression.resolveTypeBinding(); + if (type == null) { + return super.visit(node); + } + if (currentReturnTypes.isEmpty()) { currentReturnTypes.add(type); } else {