1
1
/*******************************************************************************
2
- * Copyright (c) 2000, 2013 IBM Corporation and others.
2
+ * Copyright (c) 2000, 2009 IBM Corporation and others.
3
3
* All rights reserved. This program and the accompanying materials
4
4
* are made available under the terms of the Eclipse Public License v1.0
5
5
* which accompanies this distribution, and is available at
25
25
import org .eclipse .jdt .internal .compiler .util .SimpleSet ;
26
26
import org .eclipse .jdt .internal .compiler .util .SuffixConstants ;
27
27
import org .eclipse .jdt .internal .core .JavaModelManager ;
28
- import org .eclipse .jdt .internal .core .PackageFragment ;
29
28
import org .eclipse .jdt .internal .core .util .Messages ;
30
29
import org .eclipse .jdt .internal .core .util .Util ;
31
30
@@ -57,8 +56,7 @@ public abstract class AbstractImageBuilder implements ICompilerRequestor, ICompi
57
56
protected boolean keepStoringProblemMarkers ;
58
57
protected SimpleSet filesWithAnnotations = null ;
59
58
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
62
60
public final static String [] JAVA_PROBLEM_MARKER_ATTRIBUTE_NAMES = {
63
61
IMarker .MESSAGE ,
64
62
IMarker .SEVERITY ,
@@ -294,7 +292,7 @@ protected void compile(SourceFile[] units) {
294
292
}
295
293
296
294
int unitsLength = units .length ;
297
- this .compiledAllAtOnce = MAX_AT_ONCE == 0 || unitsLength <= MAX_AT_ONCE ;
295
+ this .compiledAllAtOnce = unitsLength <= MAX_AT_ONCE ;
298
296
if (this .compiledAllAtOnce ) {
299
297
// do them all now
300
298
if (JavaBuilder .DEBUG )
@@ -673,14 +671,12 @@ protected void storeProblemsFor(SourceFile sourceFile, CategorizedProblem[] prob
673
671
// but still try to compile as many source files as possible to help the case when the base libraries are in source
674
672
if (!this .keepStoringProblemMarkers ) return ; // only want the one error recorded on this source file
675
673
674
+ IResource resource = sourceFile .resource ;
676
675
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 ++) {
678
677
CategorizedProblem problem = problems [i ];
679
678
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
+
684
680
// handle missing classfile situation
685
681
if (id == IProblem .IsClassPathCorrect ) {
686
682
String missingClassfileName = problem .getArguments ()[0 ];
@@ -710,38 +706,6 @@ protected void storeProblemsFor(SourceFile sourceFile, CategorizedProblem[] prob
710
706
boolean managedProblem = false ;
711
707
if (IJavaModelMarker .JAVA_MODEL_PROBLEM_MARKER .equals (markerType )
712
708
|| (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
- }
745
709
IMarker marker = resource .createMarker (markerType );
746
710
747
711
String [] attributeNames = JAVA_PROBLEM_MARKER_ATTRIBUTE_NAMES ;
@@ -765,7 +729,8 @@ protected void storeProblemsFor(SourceFile sourceFile, CategorizedProblem[] prob
765
729
allValues [index ++] = problem .isError () ? S_ERROR : S_WARNING ; // severity
766
730
allValues [index ++] = new Integer (id ); // ID
767
731
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
769
734
allValues [index ++] = new Integer (problem .getSourceLineNumber ()); // line
770
735
allValues [index ++] = Util .getProblemArgumentsForMarker (problem .getArguments ()); // arguments
771
736
allValues [index ++] = new Integer (problem .getCategoryID ()); // category ID
0 commit comments