Skip to content

Commit e53ff13

Browse files
authored
Merge pull request #937 from e1dem/fix825
Fix #825 - Showing wrong errors' line numbers for .java files
2 parents 4db8cfc + 826c206 commit e53ff13

File tree

2 files changed

+30
-5
lines changed

2 files changed

+30
-5
lines changed

Diff for: java/src/processing/mode/java/ErrorChecker.java

+20-5
Original file line numberDiff line numberDiff line change
@@ -194,14 +194,29 @@ static private boolean isIgnorableProblem(IProblem iproblem) {
194194

195195

196196
static private JavaProblem convertIProblem(IProblem iproblem, PreprocSketch ps) {
197-
SketchInterval in = ps.mapJavaToSketch(iproblem);
198-
if (in != SketchInterval.BEFORE_START) {
199-
String badCode = ps.getPdeCode(in);
200-
int line = ps.tabOffsetToTabLine(in.tabIndex, in.startTabOffset);
201-
JavaProblem p = JavaProblem.fromIProblem(iproblem, in.tabIndex, line, badCode);
197+
String originalFileName = new String(iproblem.getOriginatingFileName());
198+
boolean isJavaTab = ps.isJavaTab(originalFileName);
199+
200+
// Java tabs' content isn't stored in a sketch's combined source code file,
201+
// so they are processed differently
202+
if (!isJavaTab) {
203+
SketchInterval in = ps.mapJavaToSketch(iproblem);
204+
if (in != SketchInterval.BEFORE_START) {
205+
String badCode = ps.getPdeCode(in);
206+
int line = ps.tabOffsetToTabLine(in.tabIndex, in.startTabOffset);
207+
JavaProblem p = JavaProblem.fromIProblem(iproblem, in.tabIndex, line, badCode);
208+
p.setPDEOffsets(0, -1);
209+
return p;
210+
}
211+
} else {
212+
int tabIndex = ps.getJavaTabIndex(originalFileName);
213+
int line = iproblem.getSourceLineNumber() - 1;
214+
215+
JavaProblem p = JavaProblem.fromIProblem(iproblem, tabIndex, line, "");
202216
p.setPDEOffsets(0, -1);
203217
return p;
204218
}
219+
205220
return null;
206221
}
207222

Diff for: java/src/processing/mode/java/PreprocSketch.java

+10
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,16 @@ public SketchInterval mapJavaToSketch(ASTNode node) {
7272
}
7373

7474

75+
public boolean isJavaTab(String fileName) {
76+
return javaFileMapping.containsKey(fileName);
77+
}
78+
79+
80+
public int getJavaTabIndex(String fileName) {
81+
return javaFileMapping.get(fileName);
82+
}
83+
84+
7585
public SketchInterval mapJavaToSketch(IProblem iproblem) {
7686
String originalFile = new String(iproblem.getOriginatingFileName());
7787
boolean isJavaTab = javaFileMapping.containsKey(originalFile);

0 commit comments

Comments
 (0)