JDK 10 RFR of JDK-8146726: Refactor AbstractProcessor to use Set.of and related methods
Vicente Romero
vicente.romero at oracle.com
Fri Oct 27 00:31:42 UTC 2017
does it make sense to remove method arrayToSet() and inline the code in
its only client?
Thanks,
Vicente
On 10/26/2017 02:17 PM, joe darcy wrote:
> Hello,
>
> With JDK 9 APIs now available for use in java.compiler, please the
> patch below to address
>
> JDK-8146726: Refactor AbstractProcessor to use Set.of and related
> methods
>
> Thanks,
>
> -Joe
>
> diff -r fd458b0b7749
> src/java.compiler/share/classes/javax/annotation/processing/AbstractProcessor.java
> ---
> a/src/java.compiler/share/classes/javax/annotation/processing/AbstractProcessor.java
> Wed Oct 25 10:40:45 2017 -0700
> +++
> b/src/java.compiler/share/classes/javax/annotation/processing/AbstractProcessor.java
> Thu Oct 26 11:15:58 2017 -0700
> @@ -80,10 +80,7 @@
> */
> public Set<String> getSupportedOptions() {
> SupportedOptions so =
> this.getClass().getAnnotation(SupportedOptions.class);
> - if (so == null)
> - return Collections.emptySet();
> - else
> - return arrayToSet(so.value(), false);
> + return (so == null) ? Collections.emptySet() :
> Set.of(so.value());
> }
>
> /**
> @@ -198,15 +195,15 @@
> private static Set<String> arrayToSet(String[] array,
> boolean stripModulePrefixes) {
> assert array != null;
> - Set<String> set = new HashSet<>(array.length);
> - for (String s : array) {
> - if (stripModulePrefixes) {
> + if (stripModulePrefixes) {
> + array = array.clone();
> + for (int i = 0; i < array.length; i++) {
> + String s = array[i];
> int index = s.indexOf('/');
> if (index != -1)
> - s = s.substring(index + 1);
> + array[i] = s.substring(index + 1);
> }
> - set.add(s);
> }
> - return Collections.unmodifiableSet(set);
> + return Set.of(array);
> }
> }
>
>
More information about the compiler-dev
mailing list