From 6483ecdf64581c62215bc721b417e52219cc7702 Mon Sep 17 00:00:00 2001 From: "Gregory.Shrago" Date: Fri, 3 Nov 2017 16:35:09 +0300 Subject: [PATCH] EA-110552 - NPE: PatternCompilerImpl$LazyPresentablePattern.appendNode --- .../patterns/compiler/PatternCompilerImpl.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/patterns/compiler/PatternCompilerImpl.java b/platform/platform-impl/src/com/intellij/patterns/compiler/PatternCompilerImpl.java index bdb283fb5ef2..f04c476ea5d6 100644 --- a/platform/platform-impl/src/com/intellij/patterns/compiler/PatternCompilerImpl.java +++ b/platform/platform-impl/src/com/intellij/patterns/compiler/PatternCompilerImpl.java @@ -538,7 +538,7 @@ public class PatternCompilerImpl implements PatternCompiler { final String method; final Object[] args; - private Node(final Node target, final String method, final Object[] args) { + Node(@Nullable Node target, @Nullable String method, @Nullable Object[] args) { this.target = target; this.method = method; this.args = args; @@ -620,6 +620,9 @@ public class PatternCompilerImpl implements PatternCompiler { @Override public String toString() { + if (myNode.target == ERROR_NODE && myNode.args == null) { + return myNode.method; + } StringBuilder sb = new StringBuilder(); appendNode(myNode, sb); return sb.toString(); @@ -628,14 +631,15 @@ public class PatternCompilerImpl implements PatternCompiler { private static void appendNode(Node node, StringBuilder sb) { if (node.target == ERROR_NODE) { sb.append(node.method); + return; } - if (node.target != null) { + else if (node.target != null) { appendNode(node.target, sb); sb.append('.'); } sb.append(node.method).append('('); boolean first = true; - for (Object arg : node.args) { + for (Object arg : (node.args == null ? ArrayUtil.EMPTY_OBJECT_ARRAY : node.args)) { if (first) first = false; else sb.append(',').append(' '); if (arg instanceof Node) {