From 6dec704f3c1ef0d87bfdd77af0c475dad3f60887 Mon Sep 17 00:00:00 2001 From: Kris De Volder Date: Fri, 3 Mar 2017 14:56:54 -0800 Subject: [PATCH] Avoid crashing language server for 'strange' content assist contexts. When outside of a meaningful yaml document (i.e. somewhere before the document marker that starts the first yaml document), invoking content assist crashed the language server. Now it just produces no completions instead. --- .../yaml/completion/YamlCompletionEngine.java | 5 ++--- .../vscode/concourse/ConcourseEditorTest.java | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/completion/YamlCompletionEngine.java b/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/completion/YamlCompletionEngine.java index a86cc1045..20eb0fafe 100644 --- a/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/completion/YamlCompletionEngine.java +++ b/vscode-extensions/commons/commons-yaml/src/main/java/org/springframework/ide/vscode/commons/yaml/completion/YamlCompletionEngine.java @@ -36,7 +36,7 @@ import org.springframework.ide.vscode.commons.yaml.util.YamlIndentUtil; * @author Kris De Volder */ public class YamlCompletionEngine implements ICompletionEngine { - + final static Logger logger = LoggerFactory.getLogger(YamlCompletionEngine.class); @@ -142,9 +142,8 @@ public class YamlCompletionEngine implements ICompletionEngine { } } else if (node.getNodeType()==SNodeType.DOC) { return node; - } else { - throw new IllegalStateException("Missing case"); } + return null; } protected YamlPath getContextPath(YamlDocument doc, SNode node, int offset) throws Exception { diff --git a/vscode-extensions/vscode-concourse/src/test/java/org/springframework/ide/vscode/concourse/ConcourseEditorTest.java b/vscode-extensions/vscode-concourse/src/test/java/org/springframework/ide/vscode/concourse/ConcourseEditorTest.java index cebadc223..349de3e78 100644 --- a/vscode-extensions/vscode-concourse/src/test/java/org/springframework/ide/vscode/concourse/ConcourseEditorTest.java +++ b/vscode-extensions/vscode-concourse/src/test/java/org/springframework/ide/vscode/concourse/ConcourseEditorTest.java @@ -2474,6 +2474,22 @@ public class ConcourseEditorTest { ); } + @Test public void PT_141050891_language_server_crashes_on_CA_before_first_document_marker() throws Exception { + Editor editor = harness.newEditor( + "%Y<*>\n" + + "#leading comment\n" + + "---\n" + + "resources:\n" + + "- name: my-repo\n" + + " type: git\n" + + " source:\n" + + " uri: https://github.com/spring-projects/sts4.git\n" + + " <*>" + ); + //We don't expect completions, but this should at least not crash! + editor.assertCompletions(/*NONE*/); + } + ////////////////////////////////////////////////////////////////////////////// private void assertContextualCompletions(String conText, String textBefore, String... textAfter) throws Exception {