From ab58c59bc8949a1e7cb974c3a0c3999b23198e3a Mon Sep 17 00:00:00 2001 From: smklimenko Date: Sun, 2 Mar 2025 23:49:01 +0000 Subject: [PATCH] throwing exception fixed --- .../brains/lang/annotation/impl/QSpecAnnotator.java | 8 +++++--- .../lang/completion/qspec/BaseQSpecGenerateAction.java | 3 +++ .../java/org/kdb/inside/brains/lang/qspec/TestItem.java | 7 ++++--- .../inside/brains/psi/refs/QSpecReferenceProvider.java | 7 ++++++- 4 files changed, 18 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/kdb/inside/brains/lang/annotation/impl/QSpecAnnotator.java b/src/main/java/org/kdb/inside/brains/lang/annotation/impl/QSpecAnnotator.java index 7545731..dd4ca1f 100644 --- a/src/main/java/org/kdb/inside/brains/lang/annotation/impl/QSpecAnnotator.java +++ b/src/main/java/org/kdb/inside/brains/lang/annotation/impl/QSpecAnnotator.java @@ -258,9 +258,11 @@ public void invoke(@NotNull Project project, Editor editor, PsiFile file) throws final QExpressions existExpressions = exist.getExpressions(); if (existExpressions == null) { final QLambdaExpr lambda = exist.getLambda(); - final PsiElement lastChild = lambda.getLastChild(); - lambda.addBefore(expressions, lastChild); - lambda.addBefore(QPsiUtil.createWhitespace(project, "\n"), lastChild); + if (lambda != null) { + final PsiElement lastChild = lambda.getLastChild(); + lambda.addBefore(expressions, lastChild); + lambda.addBefore(QPsiUtil.createWhitespace(project, "\n"), lastChild); + } } else if (expressions.getChildren().length > 0) { existExpressions.add(QPsiUtil.createWhitespace(project, "\n\n")); final @NotNull PsiElement[] children = expressions.getChildren(); diff --git a/src/main/java/org/kdb/inside/brains/lang/completion/qspec/BaseQSpecGenerateAction.java b/src/main/java/org/kdb/inside/brains/lang/completion/qspec/BaseQSpecGenerateAction.java index 899b69a..178d3cb 100644 --- a/src/main/java/org/kdb/inside/brains/lang/completion/qspec/BaseQSpecGenerateAction.java +++ b/src/main/java/org/kdb/inside/brains/lang/completion/qspec/BaseQSpecGenerateAction.java @@ -55,6 +55,9 @@ protected void insertCode(@NotNull Project project, final TestItem root = descriptor.getLocalRoot(); final QLambdaExpr lambda = root.getLambda(); + if (lambda == null) { + return; + } final QExpressions expressions = lambda.getExpressions(); if (expressions == null) { PsiElement expr = ((QLambdaExpr) createCustomCode(project, "{`}")).getExpressions(); diff --git a/src/main/java/org/kdb/inside/brains/lang/qspec/TestItem.java b/src/main/java/org/kdb/inside/brains/lang/qspec/TestItem.java index 7253287..36c6bb6 100644 --- a/src/main/java/org/kdb/inside/brains/lang/qspec/TestItem.java +++ b/src/main/java/org/kdb/inside/brains/lang/qspec/TestItem.java @@ -56,14 +56,15 @@ public QInvokeFunction getInvoke() { return invoke; } - @NotNull + @Nullable public QLambdaExpr getLambda() { - return (QLambdaExpr) Objects.requireNonNull(invoke.getExpression()); + return invoke.getExpression() instanceof QLambdaExpr lambda ? lambda : null; } @Nullable public QExpressions getExpressions() { - return getLambda().getExpressions(); + final QLambdaExpr lambda = getLambda(); + return lambda == null ? null : lambda.getExpressions(); } public boolean is(String name) { diff --git a/src/main/java/org/kdb/inside/brains/psi/refs/QSpecReferenceProvider.java b/src/main/java/org/kdb/inside/brains/psi/refs/QSpecReferenceProvider.java index a062736..2281dcf 100644 --- a/src/main/java/org/kdb/inside/brains/psi/refs/QSpecReferenceProvider.java +++ b/src/main/java/org/kdb/inside/brains/psi/refs/QSpecReferenceProvider.java @@ -7,6 +7,7 @@ import com.intellij.psi.util.PsiTreeUtil; import com.intellij.util.ProcessingContext; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import org.kdb.inside.brains.lang.qspec.TestDescriptor; import org.kdb.inside.brains.lang.qspec.TestItem; import org.kdb.inside.brains.psi.*; @@ -116,7 +117,11 @@ protected ResolveResult[] resolveElement(QVariable element) { return symbols.stream().map(PsiElementResolveResult::new).toArray(ResolveResult[]::new); } - private void collectMockDeclarations(PsiElement el, String name, List symbols) { + private void collectMockDeclarations(@Nullable PsiElement el, String name, List symbols) { + if (el == null) { + return; + } + final Collection vars = PsiTreeUtil.findChildrenOfType(el, QVarReference.class); if (vars.isEmpty()) { return;