diff options
Diffstat (limited to 'guava/src/com/google/common/collect/RegularImmutableMap.java')
-rw-r--r-- | guava/src/com/google/common/collect/RegularImmutableMap.java | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/guava/src/com/google/common/collect/RegularImmutableMap.java b/guava/src/com/google/common/collect/RegularImmutableMap.java index f0f2031b9..42649109a 100644 --- a/guava/src/com/google/common/collect/RegularImmutableMap.java +++ b/guava/src/com/google/common/collect/RegularImmutableMap.java @@ -24,6 +24,7 @@ import static java.util.Objects.requireNonNull; import com.google.common.annotations.GwtCompatible; import com.google.common.annotations.GwtIncompatible; +import com.google.common.annotations.J2ktIncompatible; import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.ImmutableMapEntry.NonTerminalImmutableMapEntry; import com.google.errorprone.annotations.CanIgnoreReturnValue; @@ -149,7 +150,10 @@ final class RegularImmutableMap<K, V> extends ImmutableMap<K, V> { // Make sure we are not overwriting the original entries array, in case we later do // buildOrThrow(). We would want an exception to include two values for the duplicate key. if (entries == entryArray) { - entries = entries.clone(); + // Temporary variable is necessary to defeat bad smartcast (entries adopting the type of + // entryArray) in the Kotlin translation. + Entry<K, V>[] originalEntries = entries; + entries = originalEntries.clone(); } } entries[entryIndex] = effectiveEntry; @@ -228,7 +232,8 @@ final class RegularImmutableMap<K, V> extends ImmutableMap<K, V> { * flooding attack */ @CanIgnoreReturnValue - static <K, V> @Nullable ImmutableMapEntry<K, V> checkNoConflictInKeyBucket( + @CheckForNull + static <K, V> ImmutableMapEntry<K, V> checkNoConflictInKeyBucket( Object key, Object newValue, @CheckForNull ImmutableMapEntry<K, V> keyBucketHead, @@ -343,6 +348,7 @@ final class RegularImmutableMap<K, V> extends ImmutableMap<K, V> { // No longer used for new writes, but kept so that old data can still be read. @GwtIncompatible // serialization + @J2ktIncompatible @SuppressWarnings("unused") private static class SerializedForm<K> implements Serializable { final ImmutableMap<K, ?> map; @@ -355,6 +361,7 @@ final class RegularImmutableMap<K, V> extends ImmutableMap<K, V> { return map.keySet(); } + @J2ktIncompatible // serialization private static final long serialVersionUID = 0; } } @@ -389,6 +396,7 @@ final class RegularImmutableMap<K, V> extends ImmutableMap<K, V> { // No longer used for new writes, but kept so that old data can still be read. @GwtIncompatible // serialization + @J2ktIncompatible @SuppressWarnings("unused") private static class SerializedForm<V> implements Serializable { final ImmutableMap<?, V> map; @@ -401,11 +409,13 @@ final class RegularImmutableMap<K, V> extends ImmutableMap<K, V> { return map.values(); } + @J2ktIncompatible // serialization private static final long serialVersionUID = 0; } } // This class is never actually serialized directly, but we have to make the // warning go away (and suppressing would suppress for all nested classes too) + @J2ktIncompatible // serialization private static final long serialVersionUID = 0; } |