< prev index next >

src/jdk.compiler/share/classes/com/sun/tools/javac/main/Arguments.java

Print this page

 41 import java.util.function.Predicate;
 42 import java.util.regex.Matcher;
 43 import java.util.regex.Pattern;
 44 import java.util.stream.Stream;
 45 
 46 import javax.lang.model.SourceVersion;
 47 import javax.tools.JavaFileManager;
 48 import javax.tools.JavaFileManager.Location;
 49 import javax.tools.JavaFileObject;
 50 import javax.tools.JavaFileObject.Kind;
 51 import javax.tools.StandardJavaFileManager;
 52 import javax.tools.StandardLocation;
 53 
 54 import com.sun.tools.doclint.DocLint;
 55 import com.sun.tools.javac.code.Source;
 56 import com.sun.tools.javac.file.BaseFileManager;
 57 import com.sun.tools.javac.file.JavacFileManager;
 58 import com.sun.tools.javac.jvm.Profile;
 59 import com.sun.tools.javac.jvm.Target;
 60 import com.sun.tools.javac.main.OptionHelper.GrumpyHelper;

 61 import com.sun.tools.javac.platform.PlatformDescription;
 62 import com.sun.tools.javac.platform.PlatformUtils;
 63 import com.sun.tools.javac.resources.CompilerProperties.Errors;
 64 import com.sun.tools.javac.resources.CompilerProperties.Fragments;
 65 import com.sun.tools.javac.resources.CompilerProperties.LintWarnings;
 66 import com.sun.tools.javac.resources.CompilerProperties.Warnings;
 67 import com.sun.tools.javac.util.Context;
 68 import com.sun.tools.javac.util.JCDiagnostic;
 69 import com.sun.tools.javac.util.JCDiagnostic.DiagnosticInfo;
 70 import com.sun.tools.javac.util.JCDiagnostic.Fragment;
 71 import com.sun.tools.javac.util.List;
 72 import com.sun.tools.javac.util.ListBuffer;
 73 import com.sun.tools.javac.util.Log;
 74 import com.sun.tools.javac.util.Log.PrefixKind;
 75 import com.sun.tools.javac.util.Log.WriterKind;
 76 import com.sun.tools.javac.util.Options;
 77 import com.sun.tools.javac.util.PropagatedException;
 78 
 79 /**
 80  * Shared option and argument handling for command line and API usage of javac.

300      * Handles the {@code --release} option.
301      *
302      * @param additionalOptions a predicate to handle additional options implied by the
303      * {@code --release} option. The predicate should return true if all the additional
304      * options were processed successfully.
305      * @return true if successful, false otherwise
306      */
307     public boolean handleReleaseOptions(Predicate<Iterable<String>> additionalOptions) {
308         String platformString = options.get(Option.RELEASE);
309 
310         checkOptionAllowed(platformString == null,
311                 option -> reportDiag(Errors.ReleaseBootclasspathConflict(option)),
312                 Option.BOOT_CLASS_PATH, Option.XBOOTCLASSPATH, Option.XBOOTCLASSPATH_APPEND,
313                 Option.XBOOTCLASSPATH_PREPEND,
314                 Option.ENDORSEDDIRS, Option.DJAVA_ENDORSED_DIRS,
315                 Option.EXTDIRS, Option.DJAVA_EXT_DIRS,
316                 Option.SOURCE, Option.TARGET,
317                 Option.SYSTEM, Option.UPGRADE_MODULE_PATH);
318 
319         if (platformString != null) {




320             PlatformDescription platformDescription =
321                     PlatformUtils.lookupPlatformDescription(platformString);
322 
323             if (platformDescription == null) {
324                 reportDiag(Errors.UnsupportedReleaseVersion(platformString));
325                 return false;
326             }
327 
328             options.put(Option.SOURCE, platformDescription.getSourceVersion());
329             options.put(Option.TARGET, platformDescription.getTargetVersion());
330 
331             context.put(PlatformDescription.class, platformDescription);
332 
333             if (!additionalOptions.test(platformDescription.getAdditionalOptions()))
334                 return false;
335 
336             JavaFileManager platformFM = platformDescription.getFileManager();
337             DelegatingJavaFileManager.installReleaseFileManager(context,
338                                                                 platformFM,
339                                                                 getFileManager());
340         }
341 

 41 import java.util.function.Predicate;
 42 import java.util.regex.Matcher;
 43 import java.util.regex.Pattern;
 44 import java.util.stream.Stream;
 45 
 46 import javax.lang.model.SourceVersion;
 47 import javax.tools.JavaFileManager;
 48 import javax.tools.JavaFileManager.Location;
 49 import javax.tools.JavaFileObject;
 50 import javax.tools.JavaFileObject.Kind;
 51 import javax.tools.StandardJavaFileManager;
 52 import javax.tools.StandardLocation;
 53 
 54 import com.sun.tools.doclint.DocLint;
 55 import com.sun.tools.javac.code.Source;
 56 import com.sun.tools.javac.file.BaseFileManager;
 57 import com.sun.tools.javac.file.JavacFileManager;
 58 import com.sun.tools.javac.jvm.Profile;
 59 import com.sun.tools.javac.jvm.Target;
 60 import com.sun.tools.javac.main.OptionHelper.GrumpyHelper;
 61 import com.sun.tools.javac.platform.JDKPlatformProvider;
 62 import com.sun.tools.javac.platform.PlatformDescription;
 63 import com.sun.tools.javac.platform.PlatformUtils;
 64 import com.sun.tools.javac.resources.CompilerProperties.Errors;
 65 import com.sun.tools.javac.resources.CompilerProperties.Fragments;
 66 import com.sun.tools.javac.resources.CompilerProperties.LintWarnings;
 67 import com.sun.tools.javac.resources.CompilerProperties.Warnings;
 68 import com.sun.tools.javac.util.Context;
 69 import com.sun.tools.javac.util.JCDiagnostic;
 70 import com.sun.tools.javac.util.JCDiagnostic.DiagnosticInfo;
 71 import com.sun.tools.javac.util.JCDiagnostic.Fragment;
 72 import com.sun.tools.javac.util.List;
 73 import com.sun.tools.javac.util.ListBuffer;
 74 import com.sun.tools.javac.util.Log;
 75 import com.sun.tools.javac.util.Log.PrefixKind;
 76 import com.sun.tools.javac.util.Log.WriterKind;
 77 import com.sun.tools.javac.util.Options;
 78 import com.sun.tools.javac.util.PropagatedException;
 79 
 80 /**
 81  * Shared option and argument handling for command line and API usage of javac.

301      * Handles the {@code --release} option.
302      *
303      * @param additionalOptions a predicate to handle additional options implied by the
304      * {@code --release} option. The predicate should return true if all the additional
305      * options were processed successfully.
306      * @return true if successful, false otherwise
307      */
308     public boolean handleReleaseOptions(Predicate<Iterable<String>> additionalOptions) {
309         String platformString = options.get(Option.RELEASE);
310 
311         checkOptionAllowed(platformString == null,
312                 option -> reportDiag(Errors.ReleaseBootclasspathConflict(option)),
313                 Option.BOOT_CLASS_PATH, Option.XBOOTCLASSPATH, Option.XBOOTCLASSPATH_APPEND,
314                 Option.XBOOTCLASSPATH_PREPEND,
315                 Option.ENDORSEDDIRS, Option.DJAVA_ENDORSED_DIRS,
316                 Option.EXTDIRS, Option.DJAVA_EXT_DIRS,
317                 Option.SOURCE, Option.TARGET,
318                 Option.SYSTEM, Option.UPGRADE_MODULE_PATH);
319 
320         if (platformString != null) {
321             String platformAndOptions = platformString;
322             if (options.isSet(Option.PREVIEW)) {
323                 platformAndOptions += ":" + JDKPlatformProvider.PREVIEW_OPTION;
324             }
325             PlatformDescription platformDescription =
326                     PlatformUtils.lookupPlatformDescription(platformAndOptions);
327 
328             if (platformDescription == null) {
329                 reportDiag(Errors.UnsupportedReleaseVersion(platformString));
330                 return false;
331             }
332 
333             options.put(Option.SOURCE, platformDescription.getSourceVersion());
334             options.put(Option.TARGET, platformDescription.getTargetVersion());
335 
336             context.put(PlatformDescription.class, platformDescription);
337 
338             if (!additionalOptions.test(platformDescription.getAdditionalOptions()))
339                 return false;
340 
341             JavaFileManager platformFM = platformDescription.getFileManager();
342             DelegatingJavaFileManager.installReleaseFileManager(context,
343                                                                 platformFM,
344                                                                 getFileManager());
345         }
346 
< prev index next >