@@ -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
0 commit comments