11/*******************************************************************************
2- * Copyright (c) 2000, 2013 IBM Corporation and others.
2+ * Copyright (c) 2000, 2009 IBM Corporation and others.
33 * All rights reserved. This program and the accompanying materials
44 * are made available under the terms of the Eclipse Public License v1.0
55 * which accompanies this distribution, and is available at
2525import org .eclipse .jdt .internal .compiler .util .SimpleSet ;
2626import org .eclipse .jdt .internal .compiler .util .SuffixConstants ;
2727import org .eclipse .jdt .internal .core .JavaModelManager ;
28- import org .eclipse .jdt .internal .core .PackageFragment ;
2928import org .eclipse .jdt .internal .core .util .Messages ;
3029import org .eclipse .jdt .internal .core .util .Util ;
3130
@@ -57,8 +56,7 @@ public abstract class AbstractImageBuilder implements ICompilerRequestor, ICompi
5756protected boolean keepStoringProblemMarkers ;
5857protected SimpleSet filesWithAnnotations = null ;
5958
60- //2000 is best compromise between space used and speed
61- public static int MAX_AT_ONCE = Integer .getInteger (JavaModelManager .MAX_COMPILED_UNITS_AT_ONCE , 2000 ).intValue ();
59+ public static int MAX_AT_ONCE = 2000 ; // best compromise between space used and speed
6260public final static String [] JAVA_PROBLEM_MARKER_ATTRIBUTE_NAMES = {
6361 IMarker .MESSAGE ,
6462 IMarker .SEVERITY ,
@@ -294,7 +292,7 @@ protected void compile(SourceFile[] units) {
294292 }
295293
296294 int unitsLength = units .length ;
297- this .compiledAllAtOnce = MAX_AT_ONCE == 0 || unitsLength <= MAX_AT_ONCE ;
295+ this .compiledAllAtOnce = unitsLength <= MAX_AT_ONCE ;
298296 if (this .compiledAllAtOnce ) {
299297 // do them all now
300298 if (JavaBuilder .DEBUG )
@@ -673,14 +671,12 @@ protected void storeProblemsFor(SourceFile sourceFile, CategorizedProblem[] prob
673671 // but still try to compile as many source files as possible to help the case when the base libraries are in source
674672 if (!this .keepStoringProblemMarkers ) return ; // only want the one error recorded on this source file
675673
674+ IResource resource = sourceFile .resource ;
676675 HashSet managedMarkerTypes = JavaModelManager .getJavaModelManager ().compilationParticipants .managedMarkerTypes ();
677- problems : for (int i = 0 , l = problems .length ; i < l ; i ++) {
676+ for (int i = 0 , l = problems .length ; i < l ; i ++) {
678677 CategorizedProblem problem = problems [i ];
679678 int id = problem .getID ();
680- // we may use a different resource for certain problems such as IProblem.MissingNonNullByDefaultAnnotationOnPackage
681- // but at the start of the next problem we should reset it to the source file's resource
682- IResource resource = sourceFile .resource ;
683-
679+
684680 // handle missing classfile situation
685681 if (id == IProblem .IsClassPathCorrect ) {
686682 String missingClassfileName = problem .getArguments ()[0 ];
@@ -710,38 +706,6 @@ protected void storeProblemsFor(SourceFile sourceFile, CategorizedProblem[] prob
710706 boolean managedProblem = false ;
711707 if (IJavaModelMarker .JAVA_MODEL_PROBLEM_MARKER .equals (markerType )
712708 || (managedProblem = managedMarkerTypes .contains (markerType ))) {
713- if (id == IProblem .MissingNonNullByDefaultAnnotationOnPackage && !(CharOperation .equals (sourceFile .getMainTypeName (), TypeConstants .PACKAGE_INFO_NAME ))) {
714- // for this kind of problem, marker needs to be created on the package instead of on the source file
715- // see bug 372012
716- char [] fileName = sourceFile .getFileName ();
717- int pkgEnd = CharOperation .lastIndexOf ('/' , fileName );
718- if (pkgEnd == -1 )
719- pkgEnd = CharOperation .lastIndexOf (File .separatorChar , fileName );
720- PackageFragment pkg = null ;
721- if (pkgEnd != -1 )
722- pkg = (PackageFragment ) Util .getPackageFragment (sourceFile .getFileName (), pkgEnd , -1 /*no jar separator for java files*/ );
723-
724- if (pkg != null ) {
725- try {
726- IMarker [] existingMarkers = pkg .resource ().findMarkers (IJavaModelMarker .JAVA_MODEL_PROBLEM_MARKER , false , IResource .DEPTH_ZERO );
727- int len = existingMarkers .length ;
728- for (int j =0 ; j < len ; j ++) {
729- if (((Integer )existingMarkers [j ].getAttribute (IJavaModelMarker .ID )).intValue () == IProblem .MissingNonNullByDefaultAnnotationOnPackage ) {
730- continue problems ; // marker already present
731- }
732- }
733- } catch (CoreException e ) {
734- // marker retrieval failed, cannot do much
735- if (JavaModelManager .VERBOSE ) {
736- e .printStackTrace ();
737- }
738- }
739- IResource tempRes = pkg .resource ();
740- if (tempRes != null ) {
741- resource = tempRes ;
742- }
743- }
744- }
745709 IMarker marker = resource .createMarker (markerType );
746710
747711 String [] attributeNames = JAVA_PROBLEM_MARKER_ATTRIBUTE_NAMES ;
@@ -765,7 +729,8 @@ protected void storeProblemsFor(SourceFile sourceFile, CategorizedProblem[] prob
765729 allValues [index ++] = problem .isError () ? S_ERROR : S_WARNING ; // severity
766730 allValues [index ++] = new Integer (id ); // ID
767731 allValues [index ++] = new Integer (problem .getSourceStart ()); // start
768- allValues [index ++] = new Integer (problem .getSourceEnd () + 1 ); // end
732+ int end = problem .getSourceEnd ();
733+ allValues [index ++] = new Integer (end > 0 ? end + 1 : end ); // end
769734 allValues [index ++] = new Integer (problem .getSourceLineNumber ()); // line
770735 allValues [index ++] = Util .getProblemArgumentsForMarker (problem .getArguments ()); // arguments
771736 allValues [index ++] = new Integer (problem .getCategoryID ()); // category ID
0 commit comments