@@ -194,14 +194,29 @@ static private boolean isIgnorableProblem(IProblem iproblem) {
194
194
195
195
196
196
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 , "" );
202
216
p .setPDEOffsets (0 , -1 );
203
217
return p ;
204
218
}
219
+
205
220
return null ;
206
221
}
207
222
0 commit comments