src/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java

changeset 310
7c154fdc3547
parent 308
03944ee4fac4
child 323
14b1a8ede954
     1.1 --- a/src/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java	Fri Jun 26 19:12:41 2009 -0700
     1.2 +++ b/src/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java	Fri Jun 26 19:47:12 2009 -0700
     1.3 @@ -50,6 +50,7 @@
     1.4  import javax.tools.JavaFileObject;
     1.5  import javax.tools.DiagnosticListener;
     1.6  
     1.7 +import com.sun.source.util.AbstractTypeProcessor;
     1.8  import com.sun.source.util.TaskEvent;
     1.9  import com.sun.source.util.TaskListener;
    1.10  import com.sun.tools.javac.api.JavacTaskImpl;
    1.11 @@ -58,6 +59,7 @@
    1.12  import com.sun.tools.javac.file.JavacFileManager;
    1.13  import com.sun.tools.javac.jvm.*;
    1.14  import com.sun.tools.javac.main.JavaCompiler;
    1.15 +import com.sun.tools.javac.main.JavaCompiler.CompileState;
    1.16  import com.sun.tools.javac.model.JavacElements;
    1.17  import com.sun.tools.javac.model.JavacTypes;
    1.18  import com.sun.tools.javac.parser.*;
    1.19 @@ -93,6 +95,7 @@
    1.20      private final boolean lint;
    1.21      private final boolean procOnly;
    1.22      private final boolean fatalErrors;
    1.23 +    private boolean foundTypeProcessors;
    1.24  
    1.25      private final JavacFiler filer;
    1.26      private final JavacMessager messager;
    1.27 @@ -153,6 +156,7 @@
    1.28              options.get("-Xprint") != null;
    1.29          fatalErrors = options.get("fatalEnterError") != null;
    1.30          platformAnnotations = initPlatformAnnotations();
    1.31 +        foundTypeProcessors = false;
    1.32  
    1.33          // Initialize services before any processors are initialzied
    1.34          // in case processors use them.
    1.35 @@ -670,6 +674,7 @@
    1.36              }
    1.37  
    1.38              if (matchedNames.size() > 0 || ps.contributed) {
    1.39 +                foundTypeProcessors = foundTypeProcessors || (ps.processor instanceof AbstractTypeProcessor);
    1.40                  boolean processingResult = callProcessor(ps.processor, typeElements, renv);
    1.41                  ps.contributed = true;
    1.42                  ps.removeSupportedOptions(unmatchedProcessorOptions);
    1.43 @@ -916,7 +921,7 @@
    1.44              compiler.log.nerrors += messager.errorCount();
    1.45              if (compiler.errorCount() == 0)
    1.46                  compiler.log.nerrors++;
    1.47 -        } else if (procOnly) {
    1.48 +        } else if (procOnly && !foundTypeProcessors) {
    1.49              compiler.todo.clear();
    1.50          } else { // Final compilation
    1.51              compiler.close(false);
    1.52 @@ -924,6 +929,8 @@
    1.53              this.context = currentContext;
    1.54              updateProcessingState(currentContext, true);
    1.55              compiler = JavaCompiler.instance(currentContext);
    1.56 +            if (procOnly && foundTypeProcessors)
    1.57 +                compiler.shouldStopPolicy = CompileState.FLOW;
    1.58  
    1.59              if (true) {
    1.60                  compiler.enterTrees(cleanTrees(roots));

mercurial