diff options
author | Cristian Maglie <c.maglie@arduino.cc> | 2017-10-12 13:45:49 +0300 |
---|---|---|
committer | Martino Facchin <m.facchin@arduino.cc> | 2020-04-07 15:09:06 +0300 |
commit | 77fd2b3919bbfd2ceee576b9733e619985757ac7 (patch) | |
tree | a13a054fc6af2f158c608e703a8dcb2a20253b7d | |
parent | 46641780bfbe77b213af1d90652bc99f52c683d7 (diff) |
Increase debugging info in json parsing from autocomplete
-rw-r--r-- | app/src/cc/arduino/autocomplete/ClangCompletionProvider.java | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/app/src/cc/arduino/autocomplete/ClangCompletionProvider.java b/app/src/cc/arduino/autocomplete/ClangCompletionProvider.java index e392814e3..d86b2aa91 100644 --- a/app/src/cc/arduino/autocomplete/ClangCompletionProvider.java +++ b/app/src/cc/arduino/autocomplete/ClangCompletionProvider.java @@ -43,6 +43,7 @@ import org.fife.ui.autocomplete.LanguageAwareCompletionProvider; import org.fife.ui.autocomplete.ParameterizedCompletion.Parameter; import org.fife.ui.autocomplete.TemplateCompletion; +import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.databind.ObjectMapper; import processing.app.Editor; @@ -95,7 +96,25 @@ public class ClangCompletionProvider extends LanguageAwareCompletionProvider { // Parse engine output and build code completions ObjectMapper mapper = new ObjectMapper(); ArduinoCompletionsList allCc; - allCc = mapper.readValue(out, ArduinoCompletionsList.class); + try { + allCc = mapper.readValue(out, ArduinoCompletionsList.class); + } catch (JsonParseException e) { + System.err.println("Error parsing autocomplete output:"); + System.err.println(); + int begin = (int) e.getLocation().getCharOffset() - 100; + if (begin < 0) { + begin = 0; + } + int end = begin + 100; + if (end >= out.length()) { + System.err.println(out.substring(begin)); + } else { + System.err.println(out.substring(begin, end)); + } + System.err.println(); + e.printStackTrace(); + return res; + } for (ArduinoCompletion cc : allCc) { if (cc.type.equals("Function") || cc.type.equals("Macro")) { |