aboutsummaryrefslogtreecommitdiff
path: root/guava/src/com/google/common/collect/RegularImmutableMap.java
diff options
context:
space:
mode:
Diffstat (limited to 'guava/src/com/google/common/collect/RegularImmutableMap.java')
-rw-r--r--guava/src/com/google/common/collect/RegularImmutableMap.java14
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;
}