Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/arduino/Arduino.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCristian Maglie <c.maglie@arduino.cc>2017-10-12 13:45:49 +0300
committerMartino Facchin <m.facchin@arduino.cc>2020-04-07 15:09:06 +0300
commit77fd2b3919bbfd2ceee576b9733e619985757ac7 (patch)
treea13a054fc6af2f158c608e703a8dcb2a20253b7d
parent46641780bfbe77b213af1d90652bc99f52c683d7 (diff)
Increase debugging info in json parsing from autocomplete
-rw-r--r--app/src/cc/arduino/autocomplete/ClangCompletionProvider.java21
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")) {