diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/ClassFileFactory.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/ClassFileFactory.java index aa58c6d3d61..cd0fe845cfd 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/ClassFileFactory.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/ClassFileFactory.java @@ -177,11 +177,7 @@ public class ClassFileFactory implements OutputFileCollection { private PackagePartRegistry buildNewPackagePartRegistry(@NotNull FqName packageFqName) { String packageFqNameAsString = packageFqName.asString(); return (partShortName, facadeShortName) -> { - PackageParts packageParts = partsGroupedByPackage.get(packageFqNameAsString); - if (packageParts == null) { - packageParts = new PackageParts(packageFqNameAsString); - partsGroupedByPackage.put(packageFqNameAsString, packageParts); - } + PackageParts packageParts = partsGroupedByPackage.computeIfAbsent(packageFqNameAsString, PackageParts::new); packageParts.addPart(partShortName, facadeShortName); }; } diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/context/FieldOwnerContext.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/context/FieldOwnerContext.java index 96ae369c60a..a4140565a92 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/context/FieldOwnerContext.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/context/FieldOwnerContext.java @@ -56,11 +56,8 @@ public abstract class FieldOwnerContext extends String defaultPropertyName = KotlinTypeMapper.mapDefaultFieldName(descriptor, isDelegated); - Map descriptor2Name = fieldNames.get(defaultPropertyName); - if (descriptor2Name == null) { - descriptor2Name = new HashMap(); - fieldNames.put(defaultPropertyName, descriptor2Name); - } + Map descriptor2Name = + fieldNames.computeIfAbsent(defaultPropertyName, unused -> new HashMap()); String actualName = descriptor2Name.get(descriptor); if (actualName != null) return actualName; diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/AnonymousObjectTransformer.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/AnonymousObjectTransformer.java index 0d57801c060..5221e9d5796 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/AnonymousObjectTransformer.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/AnonymousObjectTransformer.java @@ -524,11 +524,7 @@ public class AnonymousObjectTransformer extends ObjectTransformer existNames = fieldNames.get(name); - if (existNames == null) { - existNames = new LinkedList(); - fieldNames.put(name, existNames); - } + List existNames = fieldNames.computeIfAbsent(name, unused -> new LinkedList()); String suffix = existNames.isEmpty() ? "" : "$" + existNames.size(); String newName = name + suffix; existNames.add(newName); diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/NameGenerator.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/NameGenerator.java index 8f483cd3fa6..0be34e825cb 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/NameGenerator.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/NameGenerator.java @@ -48,12 +48,7 @@ public class NameGenerator { } public NameGenerator subGenerator(String inliningMethod) { - NameGenerator generator = subGenerators.get(inliningMethod); - if (generator == null) { - generator = new NameGenerator(generatorClass + "$" + inliningMethod); - subGenerators.put(inliningMethod, generator); - } - return generator; + return subGenerators.computeIfAbsent(inliningMethod, method -> new NameGenerator(generatorClass + "$" + method)); } @NotNull diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/AsmTypes.java b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/AsmTypes.java index 9a4b3b8d760..757fc6530a1 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/AsmTypes.java +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/AsmTypes.java @@ -120,12 +120,7 @@ public class AsmTypes { @NotNull public static Type getType(@NotNull Class javaClass) { - Type type = TYPES_MAP.get(javaClass); - if (type == null) { - type = Type.getType(javaClass); - TYPES_MAP.put(javaClass, type); - } - return type; + return TYPES_MAP.computeIfAbsent(javaClass, k -> Type.getType(javaClass)); } private AsmTypes() { diff --git a/compiler/frontend/src/org/jetbrains/kotlin/config/CompilerConfiguration.java b/compiler/frontend/src/org/jetbrains/kotlin/config/CompilerConfiguration.java index 01c1da673d4..0beffb455ae 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/config/CompilerConfiguration.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/config/CompilerConfiguration.java @@ -76,9 +76,7 @@ public class CompilerConfiguration { public void add(@NotNull CompilerConfigurationKey> key, @NotNull T value) { checkReadOnly(); Key> ideaKey = key.ideaKey; - if (map.get(ideaKey) == null) { - map.put(ideaKey, new ArrayList()); - } + map.computeIfAbsent(ideaKey, k -> new ArrayList()); List list = (List) map.get(ideaKey); list.add(value); } @@ -86,9 +84,7 @@ public class CompilerConfiguration { public void put(@NotNull CompilerConfigurationKey> configurationKey, @NotNull K key, @NotNull V value) { checkReadOnly(); Key> ideaKey = configurationKey.ideaKey; - if (map.get(ideaKey) == null) { - map.put(ideaKey, new HashMap()); - } + map.computeIfAbsent(ideaKey, k -> new HashMap()); Map data = (Map) map.get(ideaKey); data.put(key, value); } @@ -97,9 +93,7 @@ public class CompilerConfiguration { checkReadOnly(); checkForNullElements(values); Key> ideaKey = key.ideaKey; - if (map.get(ideaKey) == null) { - map.put(ideaKey, new ArrayList()); - } + map.computeIfAbsent(ideaKey, k -> new ArrayList()); List list = (List) map.get(ideaKey); list.addAll(values); } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/ValueArgumentsToParametersMapper.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/ValueArgumentsToParametersMapper.java index 41d7e5c988e..0bb73eb772f 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/ValueArgumentsToParametersMapper.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/ValueArgumentsToParametersMapper.java @@ -332,11 +332,7 @@ public class ValueArgumentsToParametersMapper { private void putVararg(ValueParameterDescriptor valueParameterDescriptor, ValueArgument valueArgument) { if (valueParameterDescriptor.getVarargElementType() != null) { - VarargValueArgument vararg = varargs.get(valueParameterDescriptor); - if (vararg == null) { - vararg = new VarargValueArgument(); - varargs.put(valueParameterDescriptor, vararg); - } + VarargValueArgument vararg = varargs.computeIfAbsent(valueParameterDescriptor, k -> new VarargValueArgument()); vararg.addArgument(valueArgument); } else { diff --git a/compiler/frontend/src/org/jetbrains/kotlin/types/CommonSupertypes.java b/compiler/frontend/src/org/jetbrains/kotlin/types/CommonSupertypes.java index 964700b67d6..b6f91326d8e 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/types/CommonSupertypes.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/types/CommonSupertypes.java @@ -348,13 +348,9 @@ public class CommonSupertypes { new DFS.NodeHandlerWithListResult() { @Override public boolean beforeChildren(SimpleType current) { - TypeConstructor constructor = current.getConstructor(); - - Set instances = constructorToAllInstances.get(constructor); - if (instances == null) { - instances = new HashSet(); - constructorToAllInstances.put(constructor, instances); - } + Set instances = constructorToAllInstances.computeIfAbsent( + current.getConstructor(), k -> new HashSet() + ); instances.add(current); return true; diff --git a/compiler/frontend/src/org/jetbrains/kotlin/util/slicedMap/TrackingSlicedMap.java b/compiler/frontend/src/org/jetbrains/kotlin/util/slicedMap/TrackingSlicedMap.java index ce78cbb2105..92d79c42ea8 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/util/slicedMap/TrackingSlicedMap.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/util/slicedMap/TrackingSlicedMap.java @@ -33,11 +33,7 @@ public class TrackingSlicedMap extends SlicedMapImpl { } private SliceWithStackTrace wrapSlice(ReadOnlySlice slice) { - SliceWithStackTrace translated = sliceTranslationMap.get(slice); - if (translated == null) { - translated = new SliceWithStackTrace(slice); - sliceTranslationMap.put(slice, translated); - } + SliceWithStackTrace translated = sliceTranslationMap.computeIfAbsent(slice, k -> new SliceWithStackTrace(slice)); //noinspection unchecked return (SliceWithStackTrace) translated; } diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/rhino/RhinoUtils.java b/js/js.tests/test/org/jetbrains/kotlin/js/test/rhino/RhinoUtils.java index 1bc43ed205a..d51ef0638a3 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/rhino/RhinoUtils.java +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/rhino/RhinoUtils.java @@ -179,12 +179,7 @@ public final class RhinoUtils { @NotNull private static Scriptable getParentScope(@NotNull EcmaVersion version, @NotNull Context context, @NotNull List jsLibraries) { - ScriptableObject parentScope = versionToScope.get(version); - if (parentScope == null) { - parentScope = initScope(version, context, jsLibraries); - versionToScope.put(version, parentScope); - } - return parentScope; + return versionToScope.computeIfAbsent(version, v -> initScope(v, context, jsLibraries)); } @NotNull diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/context/StaticContext.java b/js/js.translator/src/org/jetbrains/kotlin/js/translate/context/StaticContext.java index 0c74c11cc01..da8f98d90e0 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/context/StaticContext.java +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/context/StaticContext.java @@ -237,11 +237,7 @@ public final class StaticContext { @NotNull private JsExpression getQualifiedExpression(@NotNull DeclarationDescriptor descriptor) { - JsExpression fqn = fqnCache.get(descriptor); - if (fqn == null) { - fqn = buildQualifiedExpression(descriptor); - fqnCache.put(descriptor, fqn); - } + JsExpression fqn = fqnCache.computeIfAbsent(descriptor, this::buildQualifiedExpression); return fqn.deepCopy(); }