diff --git a/AUTHORS b/AUTHORS index a8c9bcc459..992ac638e7 100755 --- a/AUTHORS +++ b/AUTHORS @@ -33,6 +33,7 @@ Mart Hagenaars Martin O'Connor <38929043+martinoconnor@users.noreply.github.com> Martin Panzer Mateusz Matela +Maxim Samoylych Michael Dardis Michael Ernst Michiel Verheul diff --git a/src/core/lombok/core/GuavaTypeMap.java b/src/core/lombok/core/GuavaTypeMap.java index 282d5d81f2..3f86166db3 100644 --- a/src/core/lombok/core/GuavaTypeMap.java +++ b/src/core/lombok/core/GuavaTypeMap.java @@ -37,7 +37,10 @@ public final class GuavaTypeMap { m.put("java.util.Map", "ImmutableMap"); m.put("java.util.Collection", "ImmutableList"); m.put("java.util.List", "ImmutableList"); - + m.put("java.util.SequencedSet", "ImmutableSortedSet"); + m.put("java.util.SequencedMap", "ImmutableSortedMap"); + m.put("java.util.SequencedCollection", "ImmutableList"); + m.put("com.google.common.collect.ImmutableSet", "ImmutableSet"); m.put("com.google.common.collect.ImmutableSortedSet", "ImmutableSortedSet"); m.put("com.google.common.collect.ImmutableMap", "ImmutableMap"); diff --git a/src/core/lombok/eclipse/handlers/singulars/EclipseJavaUtilListSingularizer.java b/src/core/lombok/eclipse/handlers/singulars/EclipseJavaUtilListSingularizer.java index 0d0f3130ed..7f1464f77b 100755 --- a/src/core/lombok/eclipse/handlers/singulars/EclipseJavaUtilListSingularizer.java +++ b/src/core/lombok/eclipse/handlers/singulars/EclipseJavaUtilListSingularizer.java @@ -50,7 +50,7 @@ @Provides(EclipseSingularizer.class) public class EclipseJavaUtilListSingularizer extends EclipseJavaUtilListSetSingularizer { @Override public LombokImmutableList getSupportedTypes() { - return LombokImmutableList.of("java.util.List", "java.util.Collection", "java.lang.Iterable"); + return LombokImmutableList.of("java.util.List", "java.util.Collection", "java.util.SequencedCollection", "java.lang.Iterable"); } private static final char[] EMPTY_LIST = {'e', 'm', 'p', 't', 'y', 'L', 'i', 's', 't'}; diff --git a/src/core/lombok/eclipse/handlers/singulars/EclipseJavaUtilMapSingularizer.java b/src/core/lombok/eclipse/handlers/singulars/EclipseJavaUtilMapSingularizer.java index 16ed2d44c5..62fc01c0f3 100755 --- a/src/core/lombok/eclipse/handlers/singulars/EclipseJavaUtilMapSingularizer.java +++ b/src/core/lombok/eclipse/handlers/singulars/EclipseJavaUtilMapSingularizer.java @@ -66,7 +66,7 @@ @Provides(EclipseSingularizer.class) public class EclipseJavaUtilMapSingularizer extends EclipseJavaUtilSingularizer { @Override public LombokImmutableList getSupportedTypes() { - return LombokImmutableList.of("java.util.Map", "java.util.SortedMap", "java.util.NavigableMap"); + return LombokImmutableList.of("java.util.Map", "java.util.SortedMap", "java.util.NavigableMap", "java.util.SequencedMap"); } private static final char[] EMPTY_SORTED_MAP = {'e', 'm', 'p', 't', 'y', 'S', 'o', 'r', 't', 'e', 'd', 'M', 'a', 'p'}; @@ -78,7 +78,7 @@ public class EclipseJavaUtilMapSingularizer extends EclipseJavaUtilSingularizer } @Override protected char[] getEmptyMakerSelector(String targetFqn) { - if (targetFqn.endsWith("SortedMap")) return EMPTY_SORTED_MAP; + if (targetFqn.endsWith("SortedMap") || targetFqn.endsWith("SequencedMap")) return EMPTY_SORTED_MAP; if (targetFqn.endsWith("NavigableMap")) return EMPTY_NAVIGABLE_MAP; return EMPTY_MAP; } @@ -348,6 +348,8 @@ private void generatePluralMethod(CheckerFrameworkVersion cfv, boolean deprecate if (data.getTargetFqn().equals("java.util.Map")) { statements.addAll(createJavaUtilSetMapInitialCapacitySwitchStatements(data, builderType, true, "emptyMap", "singletonMap", "LinkedHashMap", builderVariable)); + } else if (data.getTargetFqn().equals("java.util.SequencedMap")) { + statements.addAll(createJavaUtilSimpleCreationAndFillStatements(data, builderType, true, true, false, true, "LinkedHashMap", builderVariable)); } else { statements.addAll(createJavaUtilSimpleCreationAndFillStatements(data, builderType, true, true, false, true, "TreeMap", builderVariable)); } diff --git a/src/core/lombok/eclipse/handlers/singulars/EclipseJavaUtilSetSingularizer.java b/src/core/lombok/eclipse/handlers/singulars/EclipseJavaUtilSetSingularizer.java index a432f3fe7d..6c572b0785 100644 --- a/src/core/lombok/eclipse/handlers/singulars/EclipseJavaUtilSetSingularizer.java +++ b/src/core/lombok/eclipse/handlers/singulars/EclipseJavaUtilSetSingularizer.java @@ -34,7 +34,7 @@ @Provides(EclipseSingularizer.class) public class EclipseJavaUtilSetSingularizer extends EclipseJavaUtilListSetSingularizer { @Override public LombokImmutableList getSupportedTypes() { - return LombokImmutableList.of("java.util.Set", "java.util.SortedSet", "java.util.NavigableSet"); + return LombokImmutableList.of("java.util.Set", "java.util.SortedSet", "java.util.NavigableSet", "java.util.SequencedSet"); } private static final char[] EMPTY_SORTED_SET = {'e', 'm', 'p', 't', 'y', 'S', 'o', 'r', 't', 'e', 'd', 'S', 'e', 't'}; @@ -46,7 +46,7 @@ public class EclipseJavaUtilSetSingularizer extends EclipseJavaUtilListSetSingul } @Override protected char[] getEmptyMakerSelector(String targetFqn) { - if (targetFqn.endsWith("SortedSet")) return EMPTY_SORTED_SET; + if (targetFqn.endsWith("SortedSet") || targetFqn.endsWith("SequencedSet")) return EMPTY_SORTED_SET; if (targetFqn.endsWith("NavigableSet")) return EMPTY_NAVIGABLE_SET; return EMPTY_SET; } @@ -59,6 +59,8 @@ public class EclipseJavaUtilSetSingularizer extends EclipseJavaUtilListSetSingul if (data.getTargetFqn().equals("java.util.Set")) { statements.addAll(createJavaUtilSetMapInitialCapacitySwitchStatements(data, builderType, false, "emptySet", "singleton", "LinkedHashSet", builderVariable)); + } else if (data.getTargetFqn().equals("java.util.SequencedSet")) { + statements.addAll(createJavaUtilSimpleCreationAndFillStatements(data, builderType, false, true, false, true, "LinkedHashSet", builderVariable)); } else { statements.addAll(createJavaUtilSimpleCreationAndFillStatements(data, builderType, false, true, false, true, "TreeSet", builderVariable)); } diff --git a/src/core/lombok/javac/handlers/singulars/JavacJavaUtilListSingularizer.java b/src/core/lombok/javac/handlers/singulars/JavacJavaUtilListSingularizer.java index 10f1ddd1af..7ce5931838 100644 --- a/src/core/lombok/javac/handlers/singulars/JavacJavaUtilListSingularizer.java +++ b/src/core/lombok/javac/handlers/singulars/JavacJavaUtilListSingularizer.java @@ -41,7 +41,7 @@ @Provides(JavacSingularizer.class) public class JavacJavaUtilListSingularizer extends JavacJavaUtilListSetSingularizer { @Override public LombokImmutableList getSupportedTypes() { - return LombokImmutableList.of("java.util.List", "java.util.Collection", "java.lang.Iterable"); + return LombokImmutableList.of("java.util.List", "java.util.Collection", "java.util.SequencedCollection", "java.lang.Iterable"); } @Override protected String getEmptyMaker(String target) { diff --git a/src/core/lombok/javac/handlers/singulars/JavacJavaUtilMapSingularizer.java b/src/core/lombok/javac/handlers/singulars/JavacJavaUtilMapSingularizer.java index b8c931c750..19be43b033 100644 --- a/src/core/lombok/javac/handlers/singulars/JavacJavaUtilMapSingularizer.java +++ b/src/core/lombok/javac/handlers/singulars/JavacJavaUtilMapSingularizer.java @@ -50,12 +50,12 @@ @Provides(JavacSingularizer.class) public class JavacJavaUtilMapSingularizer extends JavacJavaUtilSingularizer { @Override public LombokImmutableList getSupportedTypes() { - return LombokImmutableList.of("java.util.Map", "java.util.SortedMap", "java.util.NavigableMap"); + return LombokImmutableList.of("java.util.Map", "java.util.SortedMap", "java.util.NavigableMap", "java.util.SequencedMap"); } @Override protected String getEmptyMaker(String target) { + if (target.endsWith("SortedMap") || target.endsWith("SequencedMap")) return "java.util.Collections.emptySortedMap"; if (target.endsWith("NavigableMap")) return "java.util.Collections.emptyNavigableMap"; - if (target.endsWith("SortedMap")) return "java.util.Collections.emptySortedMap"; return "java.util.Collections.emptyMap"; } @@ -171,6 +171,8 @@ protected JCStatement createConstructBuilderVarIfNeeded(JavacTreeMaker maker, Si if (data.getTargetFqn().equals("java.util.Map")) { statements.appendList(createJavaUtilSetMapInitialCapacitySwitchStatements(maker, data, builderType, true, "emptyMap", "singletonMap", "LinkedHashMap", source, builderVariable)); + } else if (data.getTargetFqn().equals("java.util.SequencedMap")) { + statements.appendList(createJavaUtilSimpleCreationAndFillStatements(maker, data, builderType, true, true, false, true, "LinkedHashMap", source, builderVariable)); } else { statements.appendList(createJavaUtilSimpleCreationAndFillStatements(maker, data, builderType, true, true, false, true, "TreeMap", source, builderVariable)); } diff --git a/src/core/lombok/javac/handlers/singulars/JavacJavaUtilSetSingularizer.java b/src/core/lombok/javac/handlers/singulars/JavacJavaUtilSetSingularizer.java index 6d2e0655a8..f09d710612 100644 --- a/src/core/lombok/javac/handlers/singulars/JavacJavaUtilSetSingularizer.java +++ b/src/core/lombok/javac/handlers/singulars/JavacJavaUtilSetSingularizer.java @@ -35,11 +35,11 @@ @Provides(JavacSingularizer.class) public class JavacJavaUtilSetSingularizer extends JavacJavaUtilListSetSingularizer { @Override public LombokImmutableList getSupportedTypes() { - return LombokImmutableList.of("java.util.Set", "java.util.SortedSet", "java.util.NavigableSet"); + return LombokImmutableList.of("java.util.Set", "java.util.SortedSet", "java.util.NavigableSet", "java.util.SequencedSet"); } @Override protected String getEmptyMaker(String target) { - if (target.endsWith("SortedSet")) return "java.util.Collections.emptySortedSet"; + if (target.endsWith("SortedSet") || target.endsWith("SequencedSet")) return "java.util.Collections.emptySortedSet"; if (target.endsWith("NavigableSet")) return "java.util.Collections.emptyNavigableSet"; return "java.util.Collections.emptySet"; } @@ -49,6 +49,8 @@ public class JavacJavaUtilSetSingularizer extends JavacJavaUtilListSetSingulariz if (data.getTargetFqn().equals("java.util.Set")) { statements.appendList(createJavaUtilSetMapInitialCapacitySwitchStatements(maker, data, builderType, false, "emptySet", "singleton", "LinkedHashSet", source, builderVariable)); + } else if (data.getTargetFqn().equals("java.util.SequencedSet")) { + statements.appendList(createJavaUtilSimpleCreationAndFillStatements(maker, data, builderType, false, true, false, true, "LinkedHashSet", source, builderVariable)); } else { statements.appendList(createJavaUtilSimpleCreationAndFillStatements(maker, data, builderType, false, true, false, true, "TreeSet", source, builderVariable)); } diff --git a/test/transform/resource/after-delombok/BuilderSingularSequencedCollections.java b/test/transform/resource/after-delombok/BuilderSingularSequencedCollections.java new file mode 100644 index 0000000000..04c182aff8 --- /dev/null +++ b/test/transform/resource/after-delombok/BuilderSingularSequencedCollections.java @@ -0,0 +1,151 @@ +// version 21: +import java.util.SequencedCollection; +import java.util.SequencedMap; +import java.util.SequencedSet; +class BuilderSingularSequencedCollections { + private SequencedCollection sequencedCollection; + private SequencedMap sequencedMap; + private SequencedSet sequencedSet; + @java.lang.SuppressWarnings("all") + @lombok.Generated + BuilderSingularSequencedCollections(final SequencedCollection sequencedCollection, final SequencedMap sequencedMap, final SequencedSet sequencedSet) { + this.sequencedCollection = sequencedCollection; + this.sequencedMap = sequencedMap; + this.sequencedSet = sequencedSet; + } + @java.lang.SuppressWarnings("all") + @lombok.Generated + public static class BuilderSingularSequencedCollectionsBuilder { + @java.lang.SuppressWarnings("all") + @lombok.Generated + private java.util.ArrayList sequencedCollection; + @java.lang.SuppressWarnings("all") + @lombok.Generated + private java.util.ArrayList sequencedMap$key; + @java.lang.SuppressWarnings("all") + @lombok.Generated + private java.util.ArrayList sequencedMap$value; + @java.lang.SuppressWarnings("all") + @lombok.Generated + private java.util.ArrayList sequencedSet; + @java.lang.SuppressWarnings("all") + @lombok.Generated + BuilderSingularSequencedCollectionsBuilder() { + } + @java.lang.SuppressWarnings("all") + @lombok.Generated + public BuilderSingularSequencedCollections.BuilderSingularSequencedCollectionsBuilder col(final T col) { + if (this.sequencedCollection == null) this.sequencedCollection = new java.util.ArrayList(); + this.sequencedCollection.add(col); + return this; + } + @java.lang.SuppressWarnings("all") + @lombok.Generated + public BuilderSingularSequencedCollections.BuilderSingularSequencedCollectionsBuilder sequencedCollection(final java.util.Collection sequencedCollection) { + if (sequencedCollection == null) { + throw new java.lang.NullPointerException("sequencedCollection cannot be null"); + } + if (this.sequencedCollection == null) this.sequencedCollection = new java.util.ArrayList(); + this.sequencedCollection.addAll(sequencedCollection); + return this; + } + @java.lang.SuppressWarnings("all") + @lombok.Generated + public BuilderSingularSequencedCollections.BuilderSingularSequencedCollectionsBuilder clearSequencedCollection() { + if (this.sequencedCollection != null) this.sequencedCollection.clear(); + return this; + } + @java.lang.SuppressWarnings("all") + @lombok.Generated + public BuilderSingularSequencedCollections.BuilderSingularSequencedCollectionsBuilder map(final K mapKey, final V mapValue) { + if (this.sequencedMap$key == null) { + this.sequencedMap$key = new java.util.ArrayList(); + this.sequencedMap$value = new java.util.ArrayList(); + } + this.sequencedMap$key.add(mapKey); + this.sequencedMap$value.add(mapValue); + return this; + } + @java.lang.SuppressWarnings("all") + @lombok.Generated + public BuilderSingularSequencedCollections.BuilderSingularSequencedCollectionsBuilder sequencedMap(final java.util.Map sequencedMap) { + if (sequencedMap == null) { + throw new java.lang.NullPointerException("sequencedMap cannot be null"); + } + if (this.sequencedMap$key == null) { + this.sequencedMap$key = new java.util.ArrayList(); + this.sequencedMap$value = new java.util.ArrayList(); + } + for (final java.util.Map.Entry $lombokEntry : sequencedMap.entrySet()) { + this.sequencedMap$key.add($lombokEntry.getKey()); + this.sequencedMap$value.add($lombokEntry.getValue()); + } + return this; + } + @java.lang.SuppressWarnings("all") + @lombok.Generated + public BuilderSingularSequencedCollections.BuilderSingularSequencedCollectionsBuilder clearSequencedMap() { + if (this.sequencedMap$key != null) { + this.sequencedMap$key.clear(); + this.sequencedMap$value.clear(); + } + return this; + } + @java.lang.SuppressWarnings("all") + @lombok.Generated + public BuilderSingularSequencedCollections.BuilderSingularSequencedCollectionsBuilder set(final T set) { + if (this.sequencedSet == null) this.sequencedSet = new java.util.ArrayList(); + this.sequencedSet.add(set); + return this; + } + @java.lang.SuppressWarnings("all") + @lombok.Generated + public BuilderSingularSequencedCollections.BuilderSingularSequencedCollectionsBuilder sequencedSet(final java.util.Collection sequencedSet) { + if (sequencedSet == null) { + throw new java.lang.NullPointerException("sequencedSet cannot be null"); + } + if (this.sequencedSet == null) this.sequencedSet = new java.util.ArrayList(); + this.sequencedSet.addAll(sequencedSet); + return this; + } + @java.lang.SuppressWarnings("all") + @lombok.Generated + public BuilderSingularSequencedCollections.BuilderSingularSequencedCollectionsBuilder clearSequencedSet() { + if (this.sequencedSet != null) this.sequencedSet.clear(); + return this; + } + @java.lang.SuppressWarnings("all") + @lombok.Generated + public BuilderSingularSequencedCollections build() { + java.util.SequencedCollection sequencedCollection; + switch (this.sequencedCollection == null ? 0 : this.sequencedCollection.size()) { + case 0: + sequencedCollection = java.util.Collections.emptyList(); + break; + case 1: + sequencedCollection = java.util.Collections.singletonList(this.sequencedCollection.get(0)); + break; + default: + sequencedCollection = java.util.Collections.unmodifiableList(new java.util.ArrayList(this.sequencedCollection)); + } + java.util.SequencedMap sequencedMap = new java.util.LinkedHashMap(); + if (this.sequencedMap$key != null) for (int $i = 0; $i < (this.sequencedMap$key == null ? 0 : this.sequencedMap$key.size()); $i++) sequencedMap.put(this.sequencedMap$key.get($i), (V) this.sequencedMap$value.get($i)); + sequencedMap = java.util.Collections.unmodifiableSequencedMap(sequencedMap); + java.util.SequencedSet sequencedSet = new java.util.LinkedHashSet(); + if (this.sequencedSet != null) sequencedSet.addAll(this.sequencedSet); + sequencedSet = java.util.Collections.unmodifiableSequencedSet(sequencedSet); + return new BuilderSingularSequencedCollections(sequencedCollection, sequencedMap, sequencedSet); + } + @java.lang.Override + @java.lang.SuppressWarnings("all") + @lombok.Generated + public java.lang.String toString() { + return "BuilderSingularSequencedCollections.BuilderSingularSequencedCollectionsBuilder(sequencedCollection=" + this.sequencedCollection + ", sequencedMap$key=" + this.sequencedMap$key + ", sequencedMap$value=" + this.sequencedMap$value + ", sequencedSet=" + this.sequencedSet + ")"; + } + } + @java.lang.SuppressWarnings("all") + @lombok.Generated + public static BuilderSingularSequencedCollections.BuilderSingularSequencedCollectionsBuilder builder() { + return new BuilderSingularSequencedCollections.BuilderSingularSequencedCollectionsBuilder(); + } +} diff --git a/test/transform/resource/after-ecj/BuilderSingularSequencedCollections.java b/test/transform/resource/after-ecj/BuilderSingularSequencedCollections.java new file mode 100644 index 0000000000..7bc1ee8d3c --- /dev/null +++ b/test/transform/resource/after-ecj/BuilderSingularSequencedCollections.java @@ -0,0 +1,132 @@ +// version 21: +import java.util.SequencedCollection; +import java.util.SequencedMap; +import java.util.SequencedSet; +import lombok.Builder; +import lombok.Singular; +@lombok.Builder class BuilderSingularSequencedCollections { + public static @java.lang.SuppressWarnings("all") @lombok.Generated class BuilderSingularSequencedCollectionsBuilder { + private @java.lang.SuppressWarnings("all") @lombok.Generated java.util.ArrayList sequencedCollection; + private @java.lang.SuppressWarnings("all") @lombok.Generated java.util.ArrayList sequencedMap$key; + private @java.lang.SuppressWarnings("all") @lombok.Generated java.util.ArrayList sequencedMap$value; + private @java.lang.SuppressWarnings("all") @lombok.Generated java.util.ArrayList sequencedSet; + @java.lang.SuppressWarnings("all") @lombok.Generated BuilderSingularSequencedCollectionsBuilder() { + super(); + } + public @java.lang.SuppressWarnings("all") @lombok.Generated BuilderSingularSequencedCollections.BuilderSingularSequencedCollectionsBuilder col(final T col) { + if ((this.sequencedCollection == null)) + this.sequencedCollection = new java.util.ArrayList(); + this.sequencedCollection.add(col); + return this; + } + public @java.lang.SuppressWarnings("all") @lombok.Generated BuilderSingularSequencedCollections.BuilderSingularSequencedCollectionsBuilder sequencedCollection(final java.util.Collection sequencedCollection) { + if ((sequencedCollection == null)) + { + throw new java.lang.NullPointerException("sequencedCollection cannot be null"); + } + if ((this.sequencedCollection == null)) + this.sequencedCollection = new java.util.ArrayList(); + this.sequencedCollection.addAll(sequencedCollection); + return this; + } + public @java.lang.SuppressWarnings("all") @lombok.Generated BuilderSingularSequencedCollections.BuilderSingularSequencedCollectionsBuilder clearSequencedCollection() { + if ((this.sequencedCollection != null)) + this.sequencedCollection.clear(); + return this; + } + public @java.lang.SuppressWarnings("all") @lombok.Generated BuilderSingularSequencedCollections.BuilderSingularSequencedCollectionsBuilder map(final K mapKey, final V mapValue) { + if ((this.sequencedMap$key == null)) + { + this.sequencedMap$key = new java.util.ArrayList(); + this.sequencedMap$value = new java.util.ArrayList(); + } + this.sequencedMap$key.add(mapKey); + this.sequencedMap$value.add(mapValue); + return this; + } + public @java.lang.SuppressWarnings("all") @lombok.Generated BuilderSingularSequencedCollections.BuilderSingularSequencedCollectionsBuilder sequencedMap(final java.util.Map sequencedMap) { + if ((sequencedMap == null)) + { + throw new java.lang.NullPointerException("sequencedMap cannot be null"); + } + if ((this.sequencedMap$key == null)) + { + this.sequencedMap$key = new java.util.ArrayList(); + this.sequencedMap$value = new java.util.ArrayList(); + } + for (java.util.Map.Entry $lombokEntry : sequencedMap.entrySet()) + { + this.sequencedMap$key.add($lombokEntry.getKey()); + this.sequencedMap$value.add($lombokEntry.getValue()); + } + return this; + } + public @java.lang.SuppressWarnings("all") @lombok.Generated BuilderSingularSequencedCollections.BuilderSingularSequencedCollectionsBuilder clearSequencedMap() { + if ((this.sequencedMap$key != null)) + { + this.sequencedMap$key.clear(); + this.sequencedMap$value.clear(); + } + return this; + } + public @java.lang.SuppressWarnings("all") @lombok.Generated BuilderSingularSequencedCollections.BuilderSingularSequencedCollectionsBuilder set(final T set) { + if ((this.sequencedSet == null)) + this.sequencedSet = new java.util.ArrayList(); + this.sequencedSet.add(set); + return this; + } + public @java.lang.SuppressWarnings("all") @lombok.Generated BuilderSingularSequencedCollections.BuilderSingularSequencedCollectionsBuilder sequencedSet(final java.util.Collection sequencedSet) { + if ((sequencedSet == null)) + { + throw new java.lang.NullPointerException("sequencedSet cannot be null"); + } + if ((this.sequencedSet == null)) + this.sequencedSet = new java.util.ArrayList(); + this.sequencedSet.addAll(sequencedSet); + return this; + } + public @java.lang.SuppressWarnings("all") @lombok.Generated BuilderSingularSequencedCollections.BuilderSingularSequencedCollectionsBuilder clearSequencedSet() { + if ((this.sequencedSet != null)) + this.sequencedSet.clear(); + return this; + } + public @java.lang.SuppressWarnings("all") @lombok.Generated BuilderSingularSequencedCollections build() { + java.util.SequencedCollection sequencedCollection; + switch (((this.sequencedCollection == null) ? 0 : this.sequencedCollection.size())) { + case 0 : + sequencedCollection = java.util.Collections.emptyList(); + break; + case 1 : + sequencedCollection = java.util.Collections.singletonList(this.sequencedCollection.get(0)); + break; + default : + sequencedCollection = java.util.Collections.unmodifiableList(new java.util.ArrayList(this.sequencedCollection)); + } + java.util.SequencedMap sequencedMap = new java.util.LinkedHashMap(); + if ((this.sequencedMap$key != null)) + for (int $i = 0;; ($i < ((this.sequencedMap$key == null) ? 0 : this.sequencedMap$key.size())); $i ++) + sequencedMap.put(this.sequencedMap$key.get($i), this.sequencedMap$value.get($i)); + sequencedMap = java.util.Collections.unmodifiableSequencedMap(sequencedMap); + java.util.SequencedSet sequencedSet = new java.util.LinkedHashSet(); + if ((this.sequencedSet != null)) + sequencedSet.addAll(this.sequencedSet); + sequencedSet = java.util.Collections.unmodifiableSequencedSet(sequencedSet); + return new BuilderSingularSequencedCollections(sequencedCollection, sequencedMap, sequencedSet); + } + public @java.lang.Override @java.lang.SuppressWarnings("all") @lombok.Generated java.lang.String toString() { + return (((((((("BuilderSingularSequencedCollections.BuilderSingularSequencedCollectionsBuilder(sequencedCollection=" + this.sequencedCollection) + ", sequencedMap$key=") + this.sequencedMap$key) + ", sequencedMap$value=") + this.sequencedMap$value) + ", sequencedSet=") + this.sequencedSet) + ")"); + } + } + private @Singular("col") SequencedCollection sequencedCollection; + private @Singular("map") SequencedMap sequencedMap; + private @Singular("set") SequencedSet sequencedSet; + @java.lang.SuppressWarnings("all") @lombok.Generated BuilderSingularSequencedCollections(final SequencedCollection sequencedCollection, final SequencedMap sequencedMap, final SequencedSet sequencedSet) { + super(); + this.sequencedCollection = sequencedCollection; + this.sequencedMap = sequencedMap; + this.sequencedSet = sequencedSet; + } + public static @java.lang.SuppressWarnings("all") @lombok.Generated BuilderSingularSequencedCollections.BuilderSingularSequencedCollectionsBuilder builder() { + return new BuilderSingularSequencedCollections.BuilderSingularSequencedCollectionsBuilder(); + } +} \ No newline at end of file diff --git a/test/transform/resource/before/BuilderSingularSequencedCollections.java b/test/transform/resource/before/BuilderSingularSequencedCollections.java new file mode 100644 index 0000000000..5f3ba2fcf5 --- /dev/null +++ b/test/transform/resource/before/BuilderSingularSequencedCollections.java @@ -0,0 +1,15 @@ +// version 21: + +import java.util.SequencedCollection; +import java.util.SequencedMap; +import java.util.SequencedSet; + +import lombok.Builder; +import lombok.Singular; + +@Builder +class BuilderSingularSequencedCollections { + @Singular("col") private SequencedCollection sequencedCollection; + @Singular("map") private SequencedMap sequencedMap; + @Singular("set") private SequencedSet sequencedSet; +} diff --git a/test/transform/resource/messages-ecj/BuilderSingularSequencedCollections.java.messages b/test/transform/resource/messages-ecj/BuilderSingularSequencedCollections.java.messages new file mode 100644 index 0000000000..915eaabf94 --- /dev/null +++ b/test/transform/resource/messages-ecj/BuilderSingularSequencedCollections.java.messages @@ -0,0 +1,12 @@ +3 The import java.util.SequencedCollection cannot be resolved +4 The import java.util.SequencedMap cannot be resolved +5 The import java.util.SequencedSet cannot be resolved +10 SequencedCollection cannot be resolved to a type +10 SequencedMap cannot be resolved to a type +10 SequencedSet cannot be resolved to a type +10 java.util.SequencedCollection cannot be resolved to a type +10 java.util.SequencedMap cannot be resolved to a type +10 java.util.SequencedSet cannot be resolved to a type +12 SequencedCollection cannot be resolved to a type +13 SequencedMap cannot be resolved to a type +14 SequencedSet cannot be resolved to a type \ No newline at end of file diff --git a/website/templates/features/Builder.html b/website/templates/features/Builder.html index 058810837b..2216708f28 100644 --- a/website/templates/features/Builder.html +++ b/website/templates/features/Builder.html @@ -126,11 +126,11 @@

@Singular

java.util:
  • - Iterable, Collection, and List (backed by a compacted unmodifiable ArrayList in the general case). + Iterable, Collection, SequencedCollection, and List (backed by a compacted unmodifiable ArrayList in the general case).
  • - Set, SortedSet, and NavigableSet (backed by a smartly sized unmodifiable HashSet or TreeSet in the general case). + Set, SortedSet, NavigableSet, and SequencedSet (backed by a smartly sized unmodifiable LinkedHashSet or TreeSet in the general case).
  • - Map, SortedMap, and NavigableMap (backed by a smartly sized unmodifiable HashMap or TreeMap in the general case). + Map, SortedMap, NavigableMap, and SequencedMap (backed by a smartly sized unmodifiable LinkedHashMap or TreeMap in the general case).