From dbb19d73bef1142addba0bfb39c3ecccd81e3ace Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Thu, 1 Sep 2011 16:13:02 +0400 Subject: [PATCH] ManyMap renamed and moved --- .../codegen/ImplementationBodyCodegen.java | 2 +- .../jet/codegen/PropertyCodegen.java | 2 +- .../jet/lang/resolve/BindingContext.java | 56 +++++++++---------- .../jet/lang/resolve/BindingTrace.java | 4 +- .../jet/lang/resolve/BindingTraceAdapter.java | 4 +- .../jet/lang/resolve/BindingTraceContext.java | 11 ++-- .../lang/resolve/DelegatingBindingTrace.java | 10 ++-- .../jet/lang/resolve/TopDownAnalyzer.java | 6 +- .../jet/lang/types/DataFlowInfo.java | 14 ++--- .../jet/lang/types/JetTypeInferrer.java | 2 +- .../jet/plugin/annotations/JetPsiChecker.java | 2 +- .../jetbrains/jet/util/CommonSuppliers.java | 25 +++++++++ .../org/jetbrains/jet/util/ReadOnlySlice.java | 11 ---- .../{ => slicedmap}/BasicWritableSlice.java | 10 ++-- .../jet/util/{ => slicedmap}/MapSupplier.java | 2 +- .../MutableSlicedMap.java} | 4 +- .../jet/util/slicedmap/ReadOnlySlice.java | 11 ++++ .../util/{ => slicedmap}/RemovableSlice.java | 2 +- .../util/{ => slicedmap}/RewritePolicy.java | 2 +- .../SlicedMap.java} | 4 +- .../SlicedMapImpl.java} | 36 ++++++------ .../SlicedMapKey.java} | 8 +-- .../Slices.java} | 16 +++--- .../util/{ => slicedmap}/WritableSlice.java | 4 +- .../tests/org/jetbrains/jet/JetTestUtils.java | 4 +- 25 files changed, 136 insertions(+), 116 deletions(-) create mode 100644 idea/src/org/jetbrains/jet/util/CommonSuppliers.java delete mode 100644 idea/src/org/jetbrains/jet/util/ReadOnlySlice.java rename idea/src/org/jetbrains/jet/util/{ => slicedmap}/BasicWritableSlice.java (75%) rename idea/src/org/jetbrains/jet/util/{ => slicedmap}/MapSupplier.java (92%) rename idea/src/org/jetbrains/jet/util/{MutableManyMap.java => slicedmap/MutableSlicedMap.java} (61%) create mode 100644 idea/src/org/jetbrains/jet/util/slicedmap/ReadOnlySlice.java rename idea/src/org/jetbrains/jet/util/{ => slicedmap}/RemovableSlice.java (70%) rename idea/src/org/jetbrains/jet/util/{ => slicedmap}/RewritePolicy.java (93%) rename idea/src/org/jetbrains/jet/util/{ManyMap.java => slicedmap/SlicedMap.java} (60%) rename idea/src/org/jetbrains/jet/util/{ManyMapImpl.java => slicedmap/SlicedMapImpl.java} (54%) rename idea/src/org/jetbrains/jet/util/{ManyMapKey.java => slicedmap/SlicedMapKey.java} (82%) rename idea/src/org/jetbrains/jet/util/{ManyMapSlices.java => slicedmap/Slices.java} (91%) rename idea/src/org/jetbrains/jet/util/{ => slicedmap}/WritableSlice.java (67%) diff --git a/idea/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java b/idea/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java index 2d9caa35205..0c9e851d71c 100644 --- a/idea/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java +++ b/idea/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java @@ -411,7 +411,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen { for (JetDeclaration declaration : myClass.getDeclarations()) { if (declaration instanceof JetProperty) { final PropertyDescriptor propertyDescriptor = (PropertyDescriptor) state.getBindingContext().get(BindingContext.VARIABLE, (JetProperty) declaration); - if ((boolean) state.getBindingContext().get(BindingContext.BACKING_FIELD_REQUIRED, propertyDescriptor)) { + if (state.getBindingContext().get(BindingContext.BACKING_FIELD_REQUIRED, propertyDescriptor)) { final JetExpression initializer = ((JetProperty) declaration).getInitializer(); if (initializer != null) { iv.load(0, JetTypeMapper.TYPE_OBJECT); diff --git a/idea/src/org/jetbrains/jet/codegen/PropertyCodegen.java b/idea/src/org/jetbrains/jet/codegen/PropertyCodegen.java index 67a3da3e357..b808817e7c3 100644 --- a/idea/src/org/jetbrains/jet/codegen/PropertyCodegen.java +++ b/idea/src/org/jetbrains/jet/codegen/PropertyCodegen.java @@ -68,7 +68,7 @@ public class PropertyCodegen { } private void generateBackingField(JetProperty p, PropertyDescriptor propertyDescriptor) { - if ((boolean) state.getBindingContext().get(BindingContext.BACKING_FIELD_REQUIRED, propertyDescriptor)) { + if (state.getBindingContext().get(BindingContext.BACKING_FIELD_REQUIRED, propertyDescriptor)) { Object value = null; final JetExpression initializer = p.getInitializer(); if (initializer != null) { diff --git a/idea/src/org/jetbrains/jet/lang/resolve/BindingContext.java b/idea/src/org/jetbrains/jet/lang/resolve/BindingContext.java index ef21ee997f0..d85127b039f 100644 --- a/idea/src/org/jetbrains/jet/lang/resolve/BindingContext.java +++ b/idea/src/org/jetbrains/jet/lang/resolve/BindingContext.java @@ -7,7 +7,7 @@ import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor; import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.resolve.constants.CompileTimeConstant; import org.jetbrains.jet.lang.types.JetType; -import org.jetbrains.jet.util.*; +import org.jetbrains.jet.util.slicedmap.*; import java.util.Collection; @@ -15,21 +15,21 @@ import java.util.Collection; * @author abreslav */ public interface BindingContext { - WritableSlice ANNOTATION = ManyMapSlices.createSimpleSlice("ANNOTATION"); - WritableSlice> COMPILE_TIME_VALUE = ManyMapSlices.createSimpleSlice("COMPILE_TIME_VALUE"); - WritableSlice TYPE = ManyMapSlices.createSimpleSlice("TYPE"); + WritableSlice ANNOTATION = Slices.createSimpleSlice("ANNOTATION"); + WritableSlice> COMPILE_TIME_VALUE = Slices.createSimpleSlice("COMPILE_TIME_VALUE"); + WritableSlice TYPE = Slices.createSimpleSlice("TYPE"); WritableSlice EXPRESSION_TYPE = new BasicWritableSlice("EXPRESSION_TYPE", RewritePolicy.DO_NOTHING); WritableSlice REFERENCE_TARGET = new BasicWritableSlice("REFERENCE_TARGET", RewritePolicy.DO_NOTHING); - WritableSlice AUTOCAST = ManyMapSlices.createSimpleSlice("AUTOCAST"); - WritableSlice RESOLUTION_SCOPE = ManyMapSlices.createSimpleSlice("RESOLUTION_SCOPE"); + WritableSlice AUTOCAST = Slices.createSimpleSlice("AUTOCAST"); + WritableSlice RESOLUTION_SCOPE = Slices.createSimpleSlice("RESOLUTION_SCOPE"); - WritableSlice VARIABLE_REASSIGNMENT = ManyMapSlices.createSimpleSetSlice("VARIABLE_REASSIGNMENT"); - WritableSlice PROCESSED = ManyMapSlices.createSimpleSetSlice("PROCESSED"); - WritableSlice STATEMENT = ManyMapSlices.createRemovableSetSlice("STATEMENT"); + WritableSlice VARIABLE_REASSIGNMENT = Slices.createSimpleSetSlice("VARIABLE_REASSIGNMENT"); + WritableSlice PROCESSED = Slices.createSimpleSetSlice("PROCESSED"); + WritableSlice STATEMENT = Slices.createRemovableSetSlice("STATEMENT"); - WritableSlice BACKING_FIELD_REQUIRED = new ManyMapSlices.SetSlice("BACKING_FIELD_REQUIRED", RewritePolicy.DO_NOTHING) { + WritableSlice BACKING_FIELD_REQUIRED = new Slices.SetSlice("BACKING_FIELD_REQUIRED", RewritePolicy.DO_NOTHING) { @Override - public Boolean computeValue(ManyMap map, PropertyDescriptor propertyDescriptor, Boolean backingFieldRequired, boolean valueNotFound) { + public Boolean computeValue(SlicedMap map, PropertyDescriptor propertyDescriptor, Boolean backingFieldRequired, boolean valueNotFound) { backingFieldRequired = valueNotFound ? false : backingFieldRequired; assert backingFieldRequired != null; PsiElement declarationPsiElement = map.get(DESCRIPTOR_TO_DECLARATION, propertyDescriptor); @@ -57,16 +57,16 @@ public interface BindingContext { } }; - WritableSlice BLOCK = new ManyMapSlices.SetSlice("BLOCK", RewritePolicy.DO_NOTHING) { + WritableSlice BLOCK = new Slices.SetSlice("BLOCK", RewritePolicy.DO_NOTHING) { @Override - public Boolean computeValue(ManyMap map, JetFunctionLiteralExpression expression, Boolean isBlock, boolean valueNotFound) { + public Boolean computeValue(SlicedMap map, JetFunctionLiteralExpression expression, Boolean isBlock, boolean valueNotFound) { isBlock = valueNotFound ? false : isBlock; assert isBlock != null; return isBlock && !expression.getFunctionLiteral().hasParameterSpecification(); } }; - ManyMapSlices.KeyNormalizer DECLARATION_DESCRIPTOR_NORMALIZER = new ManyMapSlices.KeyNormalizer() { + Slices.KeyNormalizer DECLARATION_DESCRIPTOR_NORMALIZER = new Slices.KeyNormalizer() { @Override public DeclarationDescriptor normalize(DeclarationDescriptor declarationDescriptor) { if (declarationDescriptor instanceof VariableAsFunctionDescriptor) { @@ -76,30 +76,30 @@ public interface BindingContext { return declarationDescriptor.getOriginal(); } }; - ReadOnlySlice DESCRIPTOR_TO_DECLARATION = ManyMapSlices.sliceBuilder("DECLARATION_TO_DESCRIPTOR").setKeyNormalizer(DECLARATION_DESCRIPTOR_NORMALIZER).build(); + ReadOnlySlice DESCRIPTOR_TO_DECLARATION = Slices.sliceBuilder("DECLARATION_TO_DESCRIPTOR").setKeyNormalizer(DECLARATION_DESCRIPTOR_NORMALIZER).build(); - WritableSlice NAMESPACE = ManyMapSlices.sliceBuilder("DECLARATION").setOpposite((WritableSlice) DESCRIPTOR_TO_DECLARATION).build(); - WritableSlice CLASS = ManyMapSlices.sliceBuilder("CLASS").setOpposite((WritableSlice) DESCRIPTOR_TO_DECLARATION).build(); - WritableSlice TYPE_PARAMETER = ManyMapSlices.sliceBuilder("TYPE_PARAMETER").setOpposite((WritableSlice) DESCRIPTOR_TO_DECLARATION).build(); - WritableSlice FUNCTION = ManyMapSlices.sliceBuilder("FUNCTION").setOpposite((WritableSlice) DESCRIPTOR_TO_DECLARATION).build(); - WritableSlice CONSTRUCTOR = ManyMapSlices.sliceBuilder("CONSTRUCTOR").setOpposite((WritableSlice) DESCRIPTOR_TO_DECLARATION).build(); - WritableSlice VARIABLE = ManyMapSlices.sliceBuilder("VARIABLE").setOpposite((WritableSlice) DESCRIPTOR_TO_DECLARATION).build(); - WritableSlice VALUE_PARAMETER = ManyMapSlices.sliceBuilder("VALUE_PARAMETER").setOpposite((WritableSlice) DESCRIPTOR_TO_DECLARATION).build(); - WritableSlice PROPERTY_ACCESSOR = ManyMapSlices.sliceBuilder("PROPERTY_ACCESSOR").setOpposite((WritableSlice) DESCRIPTOR_TO_DECLARATION).build(); + WritableSlice NAMESPACE = Slices.sliceBuilder("DECLARATION").setOpposite((WritableSlice) DESCRIPTOR_TO_DECLARATION).build(); + WritableSlice CLASS = Slices.sliceBuilder("CLASS").setOpposite((WritableSlice) DESCRIPTOR_TO_DECLARATION).build(); + WritableSlice TYPE_PARAMETER = Slices.sliceBuilder("TYPE_PARAMETER").setOpposite((WritableSlice) DESCRIPTOR_TO_DECLARATION).build(); + WritableSlice FUNCTION = Slices.sliceBuilder("FUNCTION").setOpposite((WritableSlice) DESCRIPTOR_TO_DECLARATION).build(); + WritableSlice CONSTRUCTOR = Slices.sliceBuilder("CONSTRUCTOR").setOpposite((WritableSlice) DESCRIPTOR_TO_DECLARATION).build(); + WritableSlice VARIABLE = Slices.sliceBuilder("VARIABLE").setOpposite((WritableSlice) DESCRIPTOR_TO_DECLARATION).build(); + WritableSlice VALUE_PARAMETER = Slices.sliceBuilder("VALUE_PARAMETER").setOpposite((WritableSlice) DESCRIPTOR_TO_DECLARATION).build(); + WritableSlice PROPERTY_ACCESSOR = Slices.sliceBuilder("PROPERTY_ACCESSOR").setOpposite((WritableSlice) DESCRIPTOR_TO_DECLARATION).build(); // normalize value to getOriginal(value) - WritableSlice PRIMARY_CONSTRUCTOR_PARAMETER = ManyMapSlices.sliceBuilder("PRIMARY_CONSTRUCTOR_PARAMETER").setOpposite((WritableSlice) DESCRIPTOR_TO_DECLARATION).build(); - WritableSlice OBJECT_DECLARATION = ManyMapSlices.sliceBuilder("OBJECT_DECLARATION").setOpposite((WritableSlice) DESCRIPTOR_TO_DECLARATION).build(); + WritableSlice PRIMARY_CONSTRUCTOR_PARAMETER = Slices.sliceBuilder("PRIMARY_CONSTRUCTOR_PARAMETER").setOpposite((WritableSlice) DESCRIPTOR_TO_DECLARATION).build(); + WritableSlice OBJECT_DECLARATION = Slices.sliceBuilder("OBJECT_DECLARATION").setOpposite((WritableSlice) DESCRIPTOR_TO_DECLARATION).build(); WritableSlice[] DECLARATIONS_TO_DESCRIPTORS = new WritableSlice[] { NAMESPACE, CLASS, TYPE_PARAMETER, FUNCTION, CONSTRUCTOR, VARIABLE, VALUE_PARAMETER, PRIMARY_CONSTRUCTOR_PARAMETER, OBJECT_DECLARATION }; - ReadOnlySlice DECLARATION_TO_DESCRIPTOR = ManyMapSlices.sliceBuilder("DECLARATION_TO_DESCRIPTOR") + ReadOnlySlice DECLARATION_TO_DESCRIPTOR = Slices.sliceBuilder("DECLARATION_TO_DESCRIPTOR") .setFurtherLookupSlices(DECLARATIONS_TO_DESCRIPTORS).build(); - WritableSlice LABEL_TARGET = ManyMapSlices.sliceBuilder("LABEL_TARGET").build(); - WritableSlice VALUE_PARAMETER_AS_PROPERTY = ManyMapSlices.sliceBuilder("VALUE_PARAMETER_AS_PROPERTY").build(); + WritableSlice LABEL_TARGET = Slices.sliceBuilder("LABEL_TARGET").build(); + WritableSlice VALUE_PARAMETER_AS_PROPERTY = Slices.sliceBuilder("VALUE_PARAMETER_AS_PROPERTY").build(); Collection getDiagnostics(); diff --git a/idea/src/org/jetbrains/jet/lang/resolve/BindingTrace.java b/idea/src/org/jetbrains/jet/lang/resolve/BindingTrace.java index e8669968c8e..cf5f3b395fc 100644 --- a/idea/src/org/jetbrains/jet/lang/resolve/BindingTrace.java +++ b/idea/src/org/jetbrains/jet/lang/resolve/BindingTrace.java @@ -2,8 +2,8 @@ package org.jetbrains.jet.lang.resolve; import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.lang.ErrorHandler; -import org.jetbrains.jet.util.ReadOnlySlice; -import org.jetbrains.jet.util.WritableSlice; +import org.jetbrains.jet.util.slicedmap.ReadOnlySlice; +import org.jetbrains.jet.util.slicedmap.WritableSlice; /** * @author abreslav diff --git a/idea/src/org/jetbrains/jet/lang/resolve/BindingTraceAdapter.java b/idea/src/org/jetbrains/jet/lang/resolve/BindingTraceAdapter.java index a0c691ec476..6eba9f2e4bd 100644 --- a/idea/src/org/jetbrains/jet/lang/resolve/BindingTraceAdapter.java +++ b/idea/src/org/jetbrains/jet/lang/resolve/BindingTraceAdapter.java @@ -3,8 +3,8 @@ package org.jetbrains.jet.lang.resolve; import com.google.common.collect.Maps; import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.lang.ErrorHandler; -import org.jetbrains.jet.util.ReadOnlySlice; -import org.jetbrains.jet.util.WritableSlice; +import org.jetbrains.jet.util.slicedmap.ReadOnlySlice; +import org.jetbrains.jet.util.slicedmap.WritableSlice; import java.util.Map; diff --git a/idea/src/org/jetbrains/jet/lang/resolve/BindingTraceContext.java b/idea/src/org/jetbrains/jet/lang/resolve/BindingTraceContext.java index d919e31704f..d97f992aaaf 100644 --- a/idea/src/org/jetbrains/jet/lang/resolve/BindingTraceContext.java +++ b/idea/src/org/jetbrains/jet/lang/resolve/BindingTraceContext.java @@ -5,10 +5,10 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.lang.CollectingErrorHandler; import org.jetbrains.jet.lang.ErrorHandler; import org.jetbrains.jet.lang.JetDiagnostic; -import org.jetbrains.jet.util.ManyMapImpl; -import org.jetbrains.jet.util.MutableManyMap; -import org.jetbrains.jet.util.ReadOnlySlice; -import org.jetbrains.jet.util.WritableSlice; +import org.jetbrains.jet.util.slicedmap.MutableSlicedMap; +import org.jetbrains.jet.util.slicedmap.ReadOnlySlice; +import org.jetbrains.jet.util.slicedmap.SlicedMapImpl; +import org.jetbrains.jet.util.slicedmap.WritableSlice; import java.util.Collection; import java.util.List; @@ -19,7 +19,8 @@ import java.util.List; public class BindingTraceContext implements BindingTrace { private final List diagnostics = Lists.newArrayList(); private final ErrorHandler errorHandler = new CollectingErrorHandler(diagnostics); - private final MutableManyMap map = ManyMapImpl.create(); + + private final MutableSlicedMap map = SlicedMapImpl.create(); private final BindingContext bindingContext = new BindingContext() { @Override diff --git a/idea/src/org/jetbrains/jet/lang/resolve/DelegatingBindingTrace.java b/idea/src/org/jetbrains/jet/lang/resolve/DelegatingBindingTrace.java index 81399890394..cb1b8a2ca43 100644 --- a/idea/src/org/jetbrains/jet/lang/resolve/DelegatingBindingTrace.java +++ b/idea/src/org/jetbrains/jet/lang/resolve/DelegatingBindingTrace.java @@ -5,7 +5,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.lang.CollectingErrorHandler; import org.jetbrains.jet.lang.ErrorHandler; import org.jetbrains.jet.lang.JetDiagnostic; -import org.jetbrains.jet.util.*; +import org.jetbrains.jet.util.slicedmap.*; import java.util.Collection; import java.util.List; @@ -16,7 +16,7 @@ import java.util.Map; */ public class DelegatingBindingTrace implements BindingTrace { private final BindingContext parentContext; - private final MutableManyMap map = ManyMapImpl.create(); + private final MutableSlicedMap map = SlicedMapImpl.create(); private final List diagnostics = Lists.newArrayList(); private final ErrorHandler errorHandler = new CollectingErrorHandler(diagnostics); @@ -66,12 +66,12 @@ public class DelegatingBindingTrace implements BindingTrace { } public void addAllMyDataTo(BindingTrace trace) { - for (Map.Entry, ?> entry : map) { - ManyMapKey manyMapKey = entry.getKey(); + for (Map.Entry, ?> entry : map) { + SlicedMapKey slicedMapKey = entry.getKey(); Object value = entry.getValue(); //noinspection unchecked - trace.record(manyMapKey.getSlice(), manyMapKey.getKey(), value); + trace.record(slicedMapKey.getSlice(), slicedMapKey.getKey(), value); } AnalyzingUtils.applyHandler(trace.getErrorHandler(), diagnostics); diff --git a/idea/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java b/idea/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java index 2a4236d5769..379df66d949 100644 --- a/idea/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java +++ b/idea/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java @@ -13,7 +13,7 @@ import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor; import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.types.*; import org.jetbrains.jet.lexer.JetTokens; -import org.jetbrains.jet.util.WritableSlice; +import org.jetbrains.jet.util.slicedmap.WritableSlice; import java.util.*; @@ -449,7 +449,7 @@ public class TopDownAnalyzer { if (!klass.hasPrimaryConstructor()) return; // TODO : not all the parameters are real properties - JetScope memberScope = classDescriptor.getScopeForMemberResolution(); // TODO : this is REALLY questionable + JetScope memberScope = classDescriptor.getScopeForSupertypeResolution(); // TODO : this is REALLY questionable ConstructorDescriptor constructorDescriptor = classDescriptorResolver.resolvePrimaryConstructorDescriptor(memberScope, classDescriptor, klass); for (JetParameter parameter : klass.getPrimaryConstructorParameters()) { PropertyDescriptor propertyDescriptor = classDescriptorResolver.resolvePrimaryConstructorParameterToAProperty( @@ -530,7 +530,7 @@ public class TopDownAnalyzer { JetClass jetClass = entry.getKey(); if (classDescriptor.getUnsubstitutedPrimaryConstructor() == null) { for (PropertyDescriptor propertyDescriptor : classDescriptor.getProperties()) { - if ((boolean) trace.getBindingContext().get(BindingContext.BACKING_FIELD_REQUIRED, propertyDescriptor)) { + if (trace.getBindingContext().get(BindingContext.BACKING_FIELD_REQUIRED, propertyDescriptor)) { PsiElement nameIdentifier = jetClass.getNameIdentifier(); if (nameIdentifier != null) { trace.getErrorHandler().genericError(nameIdentifier.getNode(), diff --git a/idea/src/org/jetbrains/jet/lang/types/DataFlowInfo.java b/idea/src/org/jetbrains/jet/lang/types/DataFlowInfo.java index 0e38372f48d..04ac9f08f6b 100644 --- a/idea/src/org/jetbrains/jet/lang/types/DataFlowInfo.java +++ b/idea/src/org/jetbrains/jet/lang/types/DataFlowInfo.java @@ -1,10 +1,10 @@ package org.jetbrains.jet.lang.types; -import com.google.common.base.Supplier; import com.google.common.collect.*; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.descriptors.VariableDescriptor; +import org.jetbrains.jet.util.CommonSuppliers; import java.util.*; @@ -31,13 +31,7 @@ public class DataFlowInfo { } }; - public static final Supplier> ARRAY_LIST_SUPPLIER = new Supplier>() { - @Override - public List get() { - return Lists.newArrayList(); - } - }; - private static DataFlowInfo EMPTY = new DataFlowInfo(ImmutableMap.of(), Multimaps.newListMultimap(Collections.>emptyMap(), ARRAY_LIST_SUPPLIER)); + private static DataFlowInfo EMPTY = new DataFlowInfo(ImmutableMap.of(), Multimaps.newListMultimap(Collections.>emptyMap(), CommonSuppliers.getArrayListSupplier())); public static DataFlowInfo getEmpty() { return EMPTY; @@ -147,7 +141,7 @@ public class DataFlowInfo { } private ListMultimap copyTypeInfo() { - ListMultimap newTypeInfo = Multimaps.newListMultimap(Maps.>newHashMap(), ARRAY_LIST_SUPPLIER); + ListMultimap newTypeInfo = Multimaps.newListMultimap(Maps.>newHashMap(), CommonSuppliers.getArrayListSupplier()); newTypeInfo.putAll(typeInfo); return newTypeInfo; } @@ -163,7 +157,7 @@ public class DataFlowInfo { builder.put(variableDescriptor, thisFlags.or(otherFlags)); } - ListMultimap newTypeInfo = Multimaps.newListMultimap(Maps.>newHashMap(), ARRAY_LIST_SUPPLIER); + ListMultimap newTypeInfo = Multimaps.newListMultimap(Maps.>newHashMap(), CommonSuppliers.getArrayListSupplier()); Set keys = newTypeInfo.keySet(); keys.retainAll(other.typeInfo.keySet()); diff --git a/idea/src/org/jetbrains/jet/lang/types/JetTypeInferrer.java b/idea/src/org/jetbrains/jet/lang/types/JetTypeInferrer.java index 1d9fb452b2a..206a5fc812e 100644 --- a/idea/src/org/jetbrains/jet/lang/types/JetTypeInferrer.java +++ b/idea/src/org/jetbrains/jet/lang/types/JetTypeInferrer.java @@ -26,7 +26,7 @@ import org.jetbrains.jet.lang.resolve.constants.ErrorValue; import org.jetbrains.jet.lang.resolve.constants.StringValue; import org.jetbrains.jet.lexer.JetTokens; import org.jetbrains.jet.resolve.DescriptorRenderer; -import org.jetbrains.jet.util.WritableSlice; +import org.jetbrains.jet.util.slicedmap.WritableSlice; import java.util.*; diff --git a/idea/src/org/jetbrains/jet/plugin/annotations/JetPsiChecker.java b/idea/src/org/jetbrains/jet/plugin/annotations/JetPsiChecker.java index c8d61556144..7882ed2ec9d 100644 --- a/idea/src/org/jetbrains/jet/plugin/annotations/JetPsiChecker.java +++ b/idea/src/org/jetbrains/jet/plugin/annotations/JetPsiChecker.java @@ -137,7 +137,7 @@ public class JetPsiChecker implements Annotator { public void visitProperty(JetProperty property) { VariableDescriptor propertyDescriptor = bindingContext.get(BindingContext.VARIABLE, property); if (propertyDescriptor instanceof PropertyDescriptor) { - if ((boolean) bindingContext.get(BindingContext.BACKING_FIELD_REQUIRED, (PropertyDescriptor) propertyDescriptor)) { + if (bindingContext.get(BindingContext.BACKING_FIELD_REQUIRED, (PropertyDescriptor) propertyDescriptor)) { putBackingfieldAnnotation(holder, property); } } diff --git a/idea/src/org/jetbrains/jet/util/CommonSuppliers.java b/idea/src/org/jetbrains/jet/util/CommonSuppliers.java new file mode 100644 index 00000000000..a4185670309 --- /dev/null +++ b/idea/src/org/jetbrains/jet/util/CommonSuppliers.java @@ -0,0 +1,25 @@ +package org.jetbrains.jet.util; + +import com.google.common.base.Supplier; +import com.google.common.collect.Lists; + +import java.util.List; + +/** + * @author abreslav + */ +public class CommonSuppliers { + private CommonSuppliers() {} + + private static final Supplier ARRAY_LIST_SUPPLIER = new Supplier() { + @Override + public List get() { + return Lists.newArrayList(); + } + }; + + public static Supplier> getArrayListSupplier() { + //noinspection unchecked + return (Supplier>) ARRAY_LIST_SUPPLIER; + } +} diff --git a/idea/src/org/jetbrains/jet/util/ReadOnlySlice.java b/idea/src/org/jetbrains/jet/util/ReadOnlySlice.java deleted file mode 100644 index 55ea30e59fb..00000000000 --- a/idea/src/org/jetbrains/jet/util/ReadOnlySlice.java +++ /dev/null @@ -1,11 +0,0 @@ -package org.jetbrains.jet.util; - -/** - * @author abreslav - */ -public interface ReadOnlySlice { - ManyMapKey makeKey(K key); - - V computeValue(ManyMap map, K key, V value, boolean valueNotFound); - -} diff --git a/idea/src/org/jetbrains/jet/util/BasicWritableSlice.java b/idea/src/org/jetbrains/jet/util/slicedmap/BasicWritableSlice.java similarity index 75% rename from idea/src/org/jetbrains/jet/util/BasicWritableSlice.java rename to idea/src/org/jetbrains/jet/util/slicedmap/BasicWritableSlice.java index 1b2da3c773c..30eb264bf7e 100644 --- a/idea/src/org/jetbrains/jet/util/BasicWritableSlice.java +++ b/idea/src/org/jetbrains/jet/util/slicedmap/BasicWritableSlice.java @@ -1,4 +1,4 @@ -package org.jetbrains.jet.util; +package org.jetbrains.jet.util.slicedmap; /** * @author abreslav @@ -14,8 +14,8 @@ public class BasicWritableSlice implements WritableSlice { } @Override - public ManyMapKey makeKey(K key) { - return new ManyMapKey(this, key); + public SlicedMapKey makeKey(K key) { + return new SlicedMapKey(this, key); } // True to put, false to skip @@ -27,12 +27,12 @@ public class BasicWritableSlice implements WritableSlice { } @Override - public void afterPut(MutableManyMap manyMap, K key, V value) { + public void afterPut(MutableSlicedMap map, K key, V value) { // Do nothing } @Override - public V computeValue(ManyMap map, K key, V value, boolean valueNotFound) { + public V computeValue(SlicedMap map, K key, V value, boolean valueNotFound) { if (valueNotFound) assert value == null; return value; } diff --git a/idea/src/org/jetbrains/jet/util/MapSupplier.java b/idea/src/org/jetbrains/jet/util/slicedmap/MapSupplier.java similarity index 92% rename from idea/src/org/jetbrains/jet/util/MapSupplier.java rename to idea/src/org/jetbrains/jet/util/slicedmap/MapSupplier.java index 50b2a6c6483..30b6d52b7de 100644 --- a/idea/src/org/jetbrains/jet/util/MapSupplier.java +++ b/idea/src/org/jetbrains/jet/util/slicedmap/MapSupplier.java @@ -1,4 +1,4 @@ -package org.jetbrains.jet.util; +package org.jetbrains.jet.util.slicedmap; import com.google.common.collect.Maps; diff --git a/idea/src/org/jetbrains/jet/util/MutableManyMap.java b/idea/src/org/jetbrains/jet/util/slicedmap/MutableSlicedMap.java similarity index 61% rename from idea/src/org/jetbrains/jet/util/MutableManyMap.java rename to idea/src/org/jetbrains/jet/util/slicedmap/MutableSlicedMap.java index 8b9052e820e..a3706523fbf 100644 --- a/idea/src/org/jetbrains/jet/util/MutableManyMap.java +++ b/idea/src/org/jetbrains/jet/util/slicedmap/MutableSlicedMap.java @@ -1,9 +1,9 @@ -package org.jetbrains.jet.util; +package org.jetbrains.jet.util.slicedmap; /** * @author abreslav */ -public interface MutableManyMap extends ManyMap { +public interface MutableSlicedMap extends SlicedMap { void put(WritableSlice slice, K key, V value); diff --git a/idea/src/org/jetbrains/jet/util/slicedmap/ReadOnlySlice.java b/idea/src/org/jetbrains/jet/util/slicedmap/ReadOnlySlice.java new file mode 100644 index 00000000000..fdbbac2cce8 --- /dev/null +++ b/idea/src/org/jetbrains/jet/util/slicedmap/ReadOnlySlice.java @@ -0,0 +1,11 @@ +package org.jetbrains.jet.util.slicedmap; + +/** + * @author abreslav + */ +public interface ReadOnlySlice { + SlicedMapKey makeKey(K key); + + V computeValue(SlicedMap map, K key, V value, boolean valueNotFound); + +} diff --git a/idea/src/org/jetbrains/jet/util/RemovableSlice.java b/idea/src/org/jetbrains/jet/util/slicedmap/RemovableSlice.java similarity index 70% rename from idea/src/org/jetbrains/jet/util/RemovableSlice.java rename to idea/src/org/jetbrains/jet/util/slicedmap/RemovableSlice.java index 2dc1b3cfba4..ebc412b7e91 100644 --- a/idea/src/org/jetbrains/jet/util/RemovableSlice.java +++ b/idea/src/org/jetbrains/jet/util/slicedmap/RemovableSlice.java @@ -1,4 +1,4 @@ -package org.jetbrains.jet.util; +package org.jetbrains.jet.util.slicedmap; /** * @author abreslav diff --git a/idea/src/org/jetbrains/jet/util/RewritePolicy.java b/idea/src/org/jetbrains/jet/util/slicedmap/RewritePolicy.java similarity index 93% rename from idea/src/org/jetbrains/jet/util/RewritePolicy.java rename to idea/src/org/jetbrains/jet/util/slicedmap/RewritePolicy.java index 3a5ffca57a3..c021bc692d5 100644 --- a/idea/src/org/jetbrains/jet/util/RewritePolicy.java +++ b/idea/src/org/jetbrains/jet/util/slicedmap/RewritePolicy.java @@ -1,4 +1,4 @@ -package org.jetbrains.jet.util; +package org.jetbrains.jet.util.slicedmap; /** * @author abreslav diff --git a/idea/src/org/jetbrains/jet/util/ManyMap.java b/idea/src/org/jetbrains/jet/util/slicedmap/SlicedMap.java similarity index 60% rename from idea/src/org/jetbrains/jet/util/ManyMap.java rename to idea/src/org/jetbrains/jet/util/slicedmap/SlicedMap.java index e401c74d923..7626cb2ddbc 100644 --- a/idea/src/org/jetbrains/jet/util/ManyMap.java +++ b/idea/src/org/jetbrains/jet/util/slicedmap/SlicedMap.java @@ -1,11 +1,11 @@ -package org.jetbrains.jet.util; +package org.jetbrains.jet.util.slicedmap; import java.util.Map; /** * @author abreslav */ -public interface ManyMap extends Iterable, ?>> { +public interface SlicedMap extends Iterable, ?>> { V get(ReadOnlySlice slice, K key); boolean containsKey(ReadOnlySlice slice, K key); diff --git a/idea/src/org/jetbrains/jet/util/ManyMapImpl.java b/idea/src/org/jetbrains/jet/util/slicedmap/SlicedMapImpl.java similarity index 54% rename from idea/src/org/jetbrains/jet/util/ManyMapImpl.java rename to idea/src/org/jetbrains/jet/util/slicedmap/SlicedMapImpl.java index f4df65f2384..0aebe1aa744 100644 --- a/idea/src/org/jetbrains/jet/util/ManyMapImpl.java +++ b/idea/src/org/jetbrains/jet/util/slicedmap/SlicedMapImpl.java @@ -1,4 +1,4 @@ -package org.jetbrains.jet.util; +package org.jetbrains.jet.util.slicedmap; import com.google.common.collect.Maps; @@ -8,23 +8,23 @@ import java.util.Map; /** * @author abreslav */ -public class ManyMapImpl implements MutableManyMap { +public class SlicedMapImpl implements MutableSlicedMap { - public static ManyMapImpl create() { - return new ManyMapImpl(Maps., Object>newLinkedHashMap()); + public static SlicedMapImpl create() { + return new SlicedMapImpl(Maps., Object>newLinkedHashMap()); } - public static ManyMapImpl create(Map, Object> map) { - return new ManyMapImpl(map); + public static SlicedMapImpl create(Map, Object> map) { + return new SlicedMapImpl(map); } - public static ManyMapImpl create(MapSupplier mapSupplier) { - return new ManyMapImpl(mapSupplier., Object>get()); + public static SlicedMapImpl create(MapSupplier mapSupplier) { + return new SlicedMapImpl(mapSupplier., Object>get()); } - private final Map, Object> map; + private final Map, Object> map; - private ManyMapImpl(Map, Object> map) { + private SlicedMapImpl(Map, Object> map) { this.map = map; } @@ -33,25 +33,25 @@ public class ManyMapImpl implements MutableManyMap { if (!slice.check(key, value)) { return; } - ManyMapKey manyMapKey = slice.makeKey(key); + SlicedMapKey slicedMapKey = slice.makeKey(key); if (slice.getRewritePolicy().rewriteProcessingNeeded(key)) { - if (map.containsKey(manyMapKey)) { + if (map.containsKey(slicedMapKey)) { //noinspection unchecked - if (!slice.getRewritePolicy().processRewrite(slice, key, (V) map.get(manyMapKey), value)) { + if (!slice.getRewritePolicy().processRewrite(slice, key, (V) map.get(slicedMapKey), value)) { return; } } } - map.put(manyMapKey, value); + map.put(slicedMapKey, value); slice.afterPut(this, key, value); } @Override public V get(ReadOnlySlice slice, K key) { - ManyMapKey manyMapKey = slice.makeKey(key); + SlicedMapKey slicedMapKey = slice.makeKey(key); //noinspection unchecked - V value = (V) map.get(manyMapKey); - return slice.computeValue(this, key, value, value == null && !map.containsKey(manyMapKey)); + V value = (V) map.get(slicedMapKey); + return slice.computeValue(this, key, value, value == null && !map.containsKey(slicedMapKey)); } @Override @@ -66,7 +66,7 @@ public class ManyMapImpl implements MutableManyMap { } @Override - public Iterator, ?>> iterator() { + public Iterator, ?>> iterator() { //noinspection unchecked return (Iterator) map.entrySet().iterator(); } diff --git a/idea/src/org/jetbrains/jet/util/ManyMapKey.java b/idea/src/org/jetbrains/jet/util/slicedmap/SlicedMapKey.java similarity index 82% rename from idea/src/org/jetbrains/jet/util/ManyMapKey.java rename to idea/src/org/jetbrains/jet/util/slicedmap/SlicedMapKey.java index 48720061b5a..3931e533ce1 100644 --- a/idea/src/org/jetbrains/jet/util/ManyMapKey.java +++ b/idea/src/org/jetbrains/jet/util/slicedmap/SlicedMapKey.java @@ -1,16 +1,16 @@ -package org.jetbrains.jet.util; +package org.jetbrains.jet.util.slicedmap; import org.jetbrains.annotations.NotNull; /** * @author abreslav */ -public final class ManyMapKey { +public final class SlicedMapKey { private final WritableSlice slice; private final K key; - public ManyMapKey(@NotNull WritableSlice slice, K key) { + public SlicedMapKey(@NotNull WritableSlice slice, K key) { this.slice = slice; this.key = key; } @@ -28,7 +28,7 @@ public final class ManyMapKey { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; - ManyMapKey that = (ManyMapKey) o; + SlicedMapKey that = (SlicedMapKey) o; if (key != null ? !key.equals(that.key) : that.key != null) return false; if (!slice.equals(that.slice)) return false; diff --git a/idea/src/org/jetbrains/jet/util/ManyMapSlices.java b/idea/src/org/jetbrains/jet/util/slicedmap/Slices.java similarity index 91% rename from idea/src/org/jetbrains/jet/util/ManyMapSlices.java rename to idea/src/org/jetbrains/jet/util/slicedmap/Slices.java index 192bec9224a..9108f0a07f2 100644 --- a/idea/src/org/jetbrains/jet/util/ManyMapSlices.java +++ b/idea/src/org/jetbrains/jet/util/slicedmap/Slices.java @@ -1,4 +1,4 @@ -package org.jetbrains.jet.util; +package org.jetbrains.jet.util.slicedmap; import java.util.Arrays; import java.util.List; @@ -6,7 +6,7 @@ import java.util.List; /** * @author abreslav */ -public class ManyMapSlices { +public class Slices { public static final RewritePolicy ONLY_REWRITE_TO_EQUAL = new RewritePolicy() { @Override @@ -88,7 +88,7 @@ public class ManyMapSlices { if (defaultValue != null) { return new SliceWithOpposite(debugName, rewritePolicy, opposite, keyNormalizer) { @Override - public V computeValue(ManyMap map, K key, V value, boolean valueNotFound) { + public V computeValue(SlicedMap map, K key, V value, boolean valueNotFound) { if (valueNotFound) return defaultValue; return super.computeValue(map, key, value, valueNotFound); } @@ -97,7 +97,7 @@ public class ManyMapSlices { if (furtherLookupSlices != null) { return new SliceWithOpposite(debugName, rewritePolicy, opposite, keyNormalizer) { @Override - public V computeValue(ManyMap map, K key, V value, boolean valueNotFound) { + public V computeValue(SlicedMap map, K key, V value, boolean valueNotFound) { if (valueNotFound) { for (ReadOnlySlice slice : furtherLookupSlices) { if (map.containsKey(slice, key)) { @@ -143,13 +143,13 @@ public class ManyMapSlices { } @Override - public void afterPut(MutableManyMap manyMap, K key, V value) { + public void afterPut(MutableSlicedMap map, K key, V value) { if (opposite != null) { - manyMap.put(opposite, value, key); + map.put(opposite, value, key); } } @Override - public ManyMapKey makeKey(K key) { + public SlicedMapKey makeKey(K key) { if (keyNormalizer == null) { return super.makeKey(key); } @@ -165,7 +165,7 @@ public class ManyMapSlices { super(debugName, rewritePolicy); } @Override - public Boolean computeValue(ManyMap map, K key, Boolean value, boolean valueNotFound) { + public Boolean computeValue(SlicedMap map, K key, Boolean value, boolean valueNotFound) { if (valueNotFound) return false; return super.computeValue(map, key, value, valueNotFound); } diff --git a/idea/src/org/jetbrains/jet/util/WritableSlice.java b/idea/src/org/jetbrains/jet/util/slicedmap/WritableSlice.java similarity index 67% rename from idea/src/org/jetbrains/jet/util/WritableSlice.java rename to idea/src/org/jetbrains/jet/util/slicedmap/WritableSlice.java index 0551e8a662f..df173532564 100644 --- a/idea/src/org/jetbrains/jet/util/WritableSlice.java +++ b/idea/src/org/jetbrains/jet/util/slicedmap/WritableSlice.java @@ -1,4 +1,4 @@ -package org.jetbrains.jet.util; +package org.jetbrains.jet.util.slicedmap; /** * @author abreslav @@ -7,7 +7,7 @@ public interface WritableSlice extends ReadOnlySlice { // True to put, false to skip boolean check(K key, V value); - void afterPut(MutableManyMap manyMap, K key, V value); + void afterPut(MutableSlicedMap map, K key, V value); RewritePolicy getRewritePolicy(); } diff --git a/idea/tests/org/jetbrains/jet/JetTestUtils.java b/idea/tests/org/jetbrains/jet/JetTestUtils.java index 794ff6f564a..43900be94db 100644 --- a/idea/tests/org/jetbrains/jet/JetTestUtils.java +++ b/idea/tests/org/jetbrains/jet/JetTestUtils.java @@ -6,8 +6,8 @@ import org.jetbrains.jet.lang.JetDiagnostic; import org.jetbrains.jet.lang.psi.JetReferenceExpression; import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.resolve.BindingTrace; -import org.jetbrains.jet.util.ReadOnlySlice; -import org.jetbrains.jet.util.WritableSlice; +import org.jetbrains.jet.util.slicedmap.ReadOnlySlice; +import org.jetbrains.jet.util.slicedmap.WritableSlice; import java.util.Collection;