src/share/classes/com/sun/tools/javac/main/JavaCompiler.java

changeset 700
7b413ac1a720
parent 695
3c9b64e55c5d
child 711
14a707f8ce84
equal deleted inserted replaced
699:d2aaaec153e8 700:7b413ac1a720
24 */ 24 */
25 25
26 package com.sun.tools.javac.main; 26 package com.sun.tools.javac.main;
27 27
28 import java.io.*; 28 import java.io.*;
29 import java.util.HashMap;
29 import java.util.HashSet; 30 import java.util.HashSet;
30 import java.util.LinkedHashSet; 31 import java.util.LinkedHashSet;
31 import java.util.LinkedHashMap; 32 import java.util.LinkedHashMap;
32 import java.util.Map; 33 import java.util.Map;
33 import java.util.MissingResourceException; 34 import java.util.MissingResourceException;
35 import java.util.Queue;
34 import java.util.ResourceBundle; 36 import java.util.ResourceBundle;
35 import java.util.Set; 37 import java.util.Set;
36 import java.util.logging.Handler; 38 import java.util.logging.Handler;
37 import java.util.logging.Level; 39 import java.util.logging.Level;
38 import java.util.logging.Logger; 40 import java.util.logging.Logger;
39 41
42 import javax.annotation.processing.Processor;
43 import javax.lang.model.SourceVersion;
40 import javax.tools.JavaFileManager; 44 import javax.tools.JavaFileManager;
41 import javax.tools.JavaFileObject; 45 import javax.tools.JavaFileObject;
42 import javax.tools.DiagnosticListener; 46 import javax.tools.DiagnosticListener;
43 47
44 import com.sun.tools.javac.file.JavacFileManager;
45 import com.sun.source.util.TaskEvent; 48 import com.sun.source.util.TaskEvent;
46 import com.sun.source.util.TaskListener; 49 import com.sun.source.util.TaskListener;
47 50
51 import com.sun.tools.javac.file.JavacFileManager;
48 import com.sun.tools.javac.util.*; 52 import com.sun.tools.javac.util.*;
49 import com.sun.tools.javac.code.*; 53 import com.sun.tools.javac.code.*;
54 import com.sun.tools.javac.code.Symbol.*;
50 import com.sun.tools.javac.tree.*; 55 import com.sun.tools.javac.tree.*;
56 import com.sun.tools.javac.tree.JCTree.*;
51 import com.sun.tools.javac.parser.*; 57 import com.sun.tools.javac.parser.*;
52 import com.sun.tools.javac.comp.*; 58 import com.sun.tools.javac.comp.*;
53 import com.sun.tools.javac.jvm.*; 59 import com.sun.tools.javac.jvm.*;
54
55 import com.sun.tools.javac.code.Symbol.*;
56 import com.sun.tools.javac.tree.JCTree.*;
57
58 import com.sun.tools.javac.processing.*; 60 import com.sun.tools.javac.processing.*;
59 import javax.annotation.processing.Processor;
60 61
61 import static javax.tools.StandardLocation.CLASS_OUTPUT; 62 import static javax.tools.StandardLocation.CLASS_OUTPUT;
63 import static com.sun.tools.javac.main.OptionName.*;
62 import static com.sun.tools.javac.util.JCDiagnostic.DiagnosticFlag.*; 64 import static com.sun.tools.javac.util.JCDiagnostic.DiagnosticFlag.*;
63 import static com.sun.tools.javac.util.ListBuffer.lb; 65 import static com.sun.tools.javac.util.ListBuffer.lb;
64 66
65 import java.util.HashMap;
66 import java.util.Queue;
67 import javax.lang.model.SourceVersion;
68 67
69 /** This class could be the main entry point for GJC when GJC is used as a 68 /** This class could be the main entry point for GJC when GJC is used as a
70 * component in a larger software system. It provides operations to 69 * component in a larger software system. It provides operations to
71 * construct a new compiler, and to run a new compiler on a set of source 70 * construct a new compiler, and to run a new compiler on a set of source
72 * files. 71 * files.
354 353
355 reader.sourceCompleter = this; 354 reader.sourceCompleter = this;
356 355
357 Options options = Options.instance(context); 356 Options options = Options.instance(context);
358 357
359 verbose = options.get("-verbose") != null; 358 verbose = options.isSet(VERBOSE);
360 sourceOutput = options.get("-printsource") != null; // used to be -s 359 sourceOutput = options.isSet(PRINTSOURCE); // used to be -s
361 stubOutput = options.get("-stubs") != null; 360 stubOutput = options.isSet("-stubs");
362 relax = options.get("-relax") != null; 361 relax = options.isSet("-relax");
363 printFlat = options.get("-printflat") != null; 362 printFlat = options.isSet("-printflat");
364 attrParseOnly = options.get("-attrparseonly") != null; 363 attrParseOnly = options.isSet("-attrparseonly");
365 encoding = options.get("-encoding"); 364 encoding = options.get(ENCODING);
366 lineDebugInfo = options.get("-g:") == null || 365 lineDebugInfo = options.isUnset(G_CUSTOM) ||
367 options.get("-g:lines") != null; 366 options.isSet(G_CUSTOM, "lines");
368 genEndPos = options.get("-Xjcov") != null || 367 genEndPos = options.isSet(XJCOV) ||
369 context.get(DiagnosticListener.class) != null; 368 context.get(DiagnosticListener.class) != null;
370 devVerbose = options.get("dev") != null; 369 devVerbose = options.isSet("dev");
371 processPcks = options.get("process.packages") != null; 370 processPcks = options.isSet("process.packages");
372 werror = options.get("-Werror") != null; 371 werror = options.isSet(WERROR);
373 372
374 verboseCompilePolicy = options.get("verboseCompilePolicy") != null; 373 verboseCompilePolicy = options.isSet("verboseCompilePolicy");
375 374
376 if (attrParseOnly) 375 if (attrParseOnly)
377 compilePolicy = CompilePolicy.ATTR_ONLY; 376 compilePolicy = CompilePolicy.ATTR_ONLY;
378 else 377 else
379 compilePolicy = CompilePolicy.decode(options.get("compilePolicy")); 378 compilePolicy = CompilePolicy.decode(options.get("compilePolicy"));
380 379
381 implicitSourcePolicy = ImplicitSourcePolicy.decode(options.get("-implicit")); 380 implicitSourcePolicy = ImplicitSourcePolicy.decode(options.get("-implicit"));
382 381
383 completionFailureName = 382 completionFailureName =
384 (options.get("failcomplete") != null) 383 options.isSet("failcomplete")
385 ? names.fromString(options.get("failcomplete")) 384 ? names.fromString(options.get("failcomplete"))
386 : null; 385 : null;
387 386
388 shouldStopPolicy = 387 shouldStopPolicy =
389 (options.get("shouldStopPolicy") != null) 388 options.isSet("shouldStopPolicy")
390 ? CompileState.valueOf(options.get("shouldStopPolicy")) 389 ? CompileState.valueOf(options.get("shouldStopPolicy"))
391 : null; 390 : null;
392 if (options.get("oldDiags") == null) 391 if (options.isUnset("oldDiags"))
393 log.setDiagnosticFormatter(RichDiagnosticFormatter.instance(context)); 392 log.setDiagnosticFormatter(RichDiagnosticFormatter.instance(context));
394 } 393 }
395 394
396 /* Switches: 395 /* Switches:
397 */ 396 */
952 */ 951 */
953 public void initProcessAnnotations(Iterable<? extends Processor> processors) { 952 public void initProcessAnnotations(Iterable<? extends Processor> processors) {
954 // Process annotations if processing is not disabled and there 953 // Process annotations if processing is not disabled and there
955 // is at least one Processor available. 954 // is at least one Processor available.
956 Options options = Options.instance(context); 955 Options options = Options.instance(context);
957 if (options.get("-proc:none") != null) { 956 if (options.isSet(PROC, "none")) {
958 processAnnotations = false; 957 processAnnotations = false;
959 } else if (procEnvImpl == null) { 958 } else if (procEnvImpl == null) {
960 procEnvImpl = new JavacProcessingEnvironment(context, processors); 959 procEnvImpl = new JavacProcessingEnvironment(context, processors);
961 processAnnotations = procEnvImpl.atLeastOneProcessor(); 960 processAnnotations = procEnvImpl.atLeastOneProcessor();
962 961
1011 if (!processAnnotations) { 1010 if (!processAnnotations) {
1012 // If there are no annotation processors present, and 1011 // If there are no annotation processors present, and
1013 // annotation processing is to occur with compilation, 1012 // annotation processing is to occur with compilation,
1014 // emit a warning. 1013 // emit a warning.
1015 Options options = Options.instance(context); 1014 Options options = Options.instance(context);
1016 if (options.get("-proc:only") != null) { 1015 if (options.isSet(PROC, "only")) {
1017 log.warning("proc.proc-only.requested.no.procs"); 1016 log.warning("proc.proc-only.requested.no.procs");
1018 todo.clear(); 1017 todo.clear();
1019 } 1018 }
1020 // If not processing annotations, classnames must be empty 1019 // If not processing annotations, classnames must be empty
1021 if (!classnames.isEmpty()) { 1020 if (!classnames.isEmpty()) {
1099 1098
1100 boolean explicitAnnotationProcessingRequested() { 1099 boolean explicitAnnotationProcessingRequested() {
1101 Options options = Options.instance(context); 1100 Options options = Options.instance(context);
1102 return 1101 return
1103 explicitAnnotationProcessingRequested || 1102 explicitAnnotationProcessingRequested ||
1104 options.get("-processor") != null || 1103 options.isSet(PROCESSOR) ||
1105 options.get("-processorpath") != null || 1104 options.isSet(PROCESSORPATH) ||
1106 options.get("-proc:only") != null || 1105 options.isSet(PROC, "only") ||
1107 options.get("-Xprint") != null; 1106 options.isSet(XPRINT);
1108 } 1107 }
1109 1108
1110 /** 1109 /**
1111 * Attribute a list of parse trees, such as found on the "todo" list. 1110 * Attribute a list of parse trees, such as found on the "todo" list.
1112 * Note that attributing classes may cause additional files to be 1111 * Note that attributing classes may cause additional files to be

mercurial