30 import java.io.PrintWriter; |
30 import java.io.PrintWriter; |
31 import java.util.Collections; |
31 import java.util.Collections; |
32 import java.util.EnumSet; |
32 import java.util.EnumSet; |
33 import java.util.LinkedHashMap; |
33 import java.util.LinkedHashMap; |
34 import java.util.Map; |
34 import java.util.Map; |
|
35 import java.util.ServiceLoader; |
35 import java.util.Set; |
36 import java.util.Set; |
|
37 import java.util.TreeSet; |
|
38 import java.util.stream.Collectors; |
|
39 import java.util.stream.StreamSupport; |
36 |
40 |
37 import javax.lang.model.SourceVersion; |
41 import javax.lang.model.SourceVersion; |
38 |
42 |
39 import com.sun.tools.doclint.DocLint; |
43 import com.sun.tools.doclint.DocLint; |
40 import com.sun.tools.javac.code.Lint; |
44 import com.sun.tools.javac.code.Lint; |
41 import com.sun.tools.javac.code.Lint.LintCategory; |
45 import com.sun.tools.javac.code.Lint.LintCategory; |
42 import com.sun.tools.javac.code.Source; |
46 import com.sun.tools.javac.code.Source; |
43 import com.sun.tools.javac.code.Type; |
47 import com.sun.tools.javac.code.Type; |
44 import com.sun.tools.javac.jvm.Profile; |
48 import com.sun.tools.javac.jvm.Profile; |
45 import com.sun.tools.javac.jvm.Target; |
49 import com.sun.tools.javac.jvm.Target; |
|
50 import com.sun.tools.javac.platform.PlatformProvider; |
46 import com.sun.tools.javac.processing.JavacProcessingEnvironment; |
51 import com.sun.tools.javac.processing.JavacProcessingEnvironment; |
47 import com.sun.tools.javac.util.Log; |
52 import com.sun.tools.javac.util.Log; |
48 import com.sun.tools.javac.util.Log.PrefixKind; |
53 import com.sun.tools.javac.util.Log.PrefixKind; |
49 import com.sun.tools.javac.util.Log.WriterKind; |
54 import com.sun.tools.javac.util.Log.WriterKind; |
50 import com.sun.tools.javac.util.Options; |
55 import com.sun.tools.javac.util.Options; |
51 import com.sun.tools.javac.util.StringUtils; |
56 import com.sun.tools.javac.util.StringUtils; |
|
57 |
52 import static com.sun.tools.javac.main.Option.ChoiceKind.*; |
58 import static com.sun.tools.javac.main.Option.ChoiceKind.*; |
53 import static com.sun.tools.javac.main.Option.OptionGroup.*; |
59 import static com.sun.tools.javac.main.Option.OptionGroup.*; |
54 import static com.sun.tools.javac.main.Option.OptionKind.*; |
60 import static com.sun.tools.javac.main.Option.OptionKind.*; |
55 |
61 |
56 /** |
62 /** |
259 if (target == null) { |
265 if (target == null) { |
260 helper.error("err.invalid.target", operand); |
266 helper.error("err.invalid.target", operand); |
261 return true; |
267 return true; |
262 } |
268 } |
263 return super.process(helper, option, operand); |
269 return super.process(helper, option, operand); |
|
270 } |
|
271 }, |
|
272 |
|
273 RELEASE("-release", "opt.arg.release", "opt.release", STANDARD, BASIC) { |
|
274 @Override |
|
275 void help(Log log, OptionKind kind) { |
|
276 if (this.kind != kind) |
|
277 return; |
|
278 |
|
279 Iterable<PlatformProvider> providers = |
|
280 ServiceLoader.load(PlatformProvider.class, Arguments.class.getClassLoader()); |
|
281 Set<String> platforms = StreamSupport.stream(providers.spliterator(), false) |
|
282 .flatMap(provider -> StreamSupport.stream(provider.getSupportedPlatformNames() |
|
283 .spliterator(), |
|
284 false)) |
|
285 .collect(Collectors.toCollection(TreeSet :: new)); |
|
286 |
|
287 StringBuilder targets = new StringBuilder(); |
|
288 String delim = ""; |
|
289 for (String platform : platforms) { |
|
290 targets.append(delim); |
|
291 targets.append(platform); |
|
292 delim = ", "; |
|
293 } |
|
294 |
|
295 log.printRawLines(WriterKind.NOTICE, |
|
296 String.format(HELP_LINE_FORMAT, |
|
297 super.helpSynopsis(log), |
|
298 log.localize(PrefixKind.JAVAC, descrKey, targets.toString()))); |
264 } |
299 } |
265 }, |
300 }, |
266 |
301 |
267 PROFILE("-profile", "opt.arg.profile", "opt.profile", STANDARD, BASIC) { |
302 PROFILE("-profile", "opt.arg.profile", "opt.profile", STANDARD, BASIC) { |
268 @Override |
303 @Override |