< prev index next >

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

Print this page

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

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

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




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

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

296      * Handles the {@code --release} option.
297      *
298      * @param additionalOptions a predicate to handle additional options implied by the
299      * {@code --release} option. The predicate should return true if all the additional
300      * options were processed successfully.
301      * @return true if successful, false otherwise
302      */
303     public boolean handleReleaseOptions(Predicate<Iterable<String>> additionalOptions) {
304         String platformString = options.get(Option.RELEASE);
305 
306         checkOptionAllowed(platformString == null,
307                 option -> reportDiag(Errors.ReleaseBootclasspathConflict(option)),
308                 Option.BOOT_CLASS_PATH, Option.XBOOTCLASSPATH, Option.XBOOTCLASSPATH_APPEND,
309                 Option.XBOOTCLASSPATH_PREPEND,
310                 Option.ENDORSEDDIRS, Option.DJAVA_ENDORSED_DIRS,
311                 Option.EXTDIRS, Option.DJAVA_EXT_DIRS,
312                 Option.SOURCE, Option.TARGET,
313                 Option.SYSTEM, Option.UPGRADE_MODULE_PATH);
314 
315         if (platformString != null) {
316             String platformAndOptions = platformString;
317             if (options.isSet(Option.PREVIEW)) {
318                 platformAndOptions += ":" + JDKPlatformProvider.PREVIEW_OPTION;
319             }
320             PlatformDescription platformDescription =
321                     PlatformUtils.lookupPlatformDescription(platformAndOptions);
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 
< prev index next >