From 5c88c8c58fa296046d386e4c1c22ed40b30856da Mon Sep 17 00:00:00 2001 From: Natalia Ukhorskaya Date: Tue, 24 Dec 2013 11:23:42 +0400 Subject: [PATCH] Make CompileTimeConstant abstract class --- .../evaluate/ConstantExpressionEvaluator.kt | 2 +- .../resolve/constants/AnnotationValue.java | 12 ++---------- .../jet/lang/resolve/constants/ArrayValue.java | 12 +++--------- .../lang/resolve/constants/BooleanValue.java | 11 ++--------- .../jet/lang/resolve/constants/ByteValue.java | 11 ++--------- .../jet/lang/resolve/constants/CharValue.java | 11 ++--------- .../resolve/constants/CompileTimeConstant.java | 18 ++++++++++++++---- .../lang/resolve/constants/DoubleValue.java | 10 ++-------- .../jet/lang/resolve/constants/EnumValue.java | 11 ++--------- .../jet/lang/resolve/constants/ErrorValue.java | 6 +++++- .../jet/lang/resolve/constants/FloatValue.java | 10 ++-------- .../jet/lang/resolve/constants/IntValue.java | 11 ++--------- .../constants/IntegerValueTypeConstant.java | 12 ++---------- .../lang/resolve/constants/JavaClassValue.java | 6 ++---- .../jet/lang/resolve/constants/LongValue.java | 11 ++--------- .../jet/lang/resolve/constants/NullValue.java | 8 ++------ .../jet/lang/resolve/constants/ShortValue.java | 11 ++--------- .../lang/resolve/constants/StringValue.java | 10 ++-------- 18 files changed, 51 insertions(+), 132 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/evaluate/ConstantExpressionEvaluator.kt b/compiler/frontend/src/org/jetbrains/jet/lang/evaluate/ConstantExpressionEvaluator.kt index 746a30a6071..19dde3a8dc2 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/evaluate/ConstantExpressionEvaluator.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/evaluate/ConstantExpressionEvaluator.kt @@ -533,7 +533,7 @@ private fun createUnconvertibleCompileTimeConstant(value: Any?): CompileTimeCons private fun createStringConstant(value: CompileTimeConstant<*>?): StringValue? { return when (value) { null -> null - is IntegerValueTypeConstant -> createStringConstant(value.getValue().getCompileTimeConstantForNumberType(TypeUtils.NO_EXPECTED_TYPE)) + is IntegerValueTypeConstant -> createStringConstant(value.getValue()!!.getCompileTimeConstantForNumberType(TypeUtils.NO_EXPECTED_TYPE)) is StringValue -> value is IntValue, is ByteValue, is ShortValue, is LongValue, is CharValue, diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/AnnotationValue.java b/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/AnnotationValue.java index 3804ae4a4f8..8e23712657f 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/AnnotationValue.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/AnnotationValue.java @@ -22,18 +22,10 @@ import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor; import org.jetbrains.jet.lang.types.JetType; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; -public class AnnotationValue implements CompileTimeConstant { +public class AnnotationValue extends CompileTimeConstant { - private final AnnotationDescriptor value; - public AnnotationValue(@NotNull AnnotationDescriptor value) { - this.value = value; - } - - @Override - @NotNull - public AnnotationDescriptor getValue() { - return value; + super(value); } @Override diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/ArrayValue.java b/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/ArrayValue.java index ef30c94076c..e3385923f68 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/ArrayValue.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/ArrayValue.java @@ -17,28 +17,22 @@ package org.jetbrains.jet.lang.resolve.constants; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.descriptors.annotations.AnnotationArgumentVisitor; import org.jetbrains.jet.lang.types.JetType; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import java.util.List; -public class ArrayValue implements CompileTimeConstant>> { +public class ArrayValue extends CompileTimeConstant>> { - private final List> value; private final JetType type; public ArrayValue(@NotNull List> value, @NotNull JetType type) { - this.value = value; + super(value); this.type = type; } - @Override - @NotNull - public List> getValue() { - return value; - } - @NotNull @Override public JetType getType(@NotNull KotlinBuiltIns kotlinBuiltIns) { diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/BooleanValue.java b/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/BooleanValue.java index 6de2eff88ae..fc7cd140871 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/BooleanValue.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/BooleanValue.java @@ -21,15 +21,13 @@ import org.jetbrains.jet.lang.descriptors.annotations.AnnotationArgumentVisitor; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.lang.types.JetType; -public class BooleanValue implements CompileTimeConstant { +public class BooleanValue extends CompileTimeConstant { public static final BooleanValue FALSE = new BooleanValue(false); public static final BooleanValue TRUE = new BooleanValue(true); - private final boolean value; - private BooleanValue(boolean value) { - this.value = value; + super(value); } @NotNull @@ -37,11 +35,6 @@ public class BooleanValue implements CompileTimeConstant { return value ? TRUE : FALSE; } - @Override - public Boolean getValue() { - return value; - } - @NotNull @Override public JetType getType(@NotNull KotlinBuiltIns kotlinBuiltIns) { diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/ByteValue.java b/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/ByteValue.java index 777b54c429e..6e53fa1d794 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/ByteValue.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/ByteValue.java @@ -23,7 +23,7 @@ import org.jetbrains.jet.lang.descriptors.annotations.AnnotationArgumentVisitor; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.lang.types.JetType; -public class ByteValue implements CompileTimeConstant { +public class ByteValue extends CompileTimeConstant { public static final Function CREATE = new Function() { @Override public ByteValue apply(@Nullable Long input) { @@ -32,15 +32,8 @@ public class ByteValue implements CompileTimeConstant { } }; - private final byte value; - public ByteValue(byte value) { - this.value = value; - } - - @Override - public Byte getValue() { - return value; + super(value); } @NotNull diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/CharValue.java b/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/CharValue.java index 753146e13bc..06379544f10 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/CharValue.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/CharValue.java @@ -21,17 +21,10 @@ import org.jetbrains.jet.lang.descriptors.annotations.AnnotationArgumentVisitor; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.lang.types.JetType; -public class CharValue implements CompileTimeConstant { - - private final char value; +public class CharValue extends CompileTimeConstant { public CharValue(char value) { - this.value = value; - } - - @Override - public Character getValue() { - return value; + super(value); } @NotNull diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/CompileTimeConstant.java b/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/CompileTimeConstant.java index 037a3ccef04..caf1672456d 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/CompileTimeConstant.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/CompileTimeConstant.java @@ -17,15 +17,25 @@ package org.jetbrains.jet.lang.resolve.constants; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.descriptors.annotations.AnnotationArgumentVisitor; import org.jetbrains.jet.lang.types.JetType; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; -public interface CompileTimeConstant { - T getValue(); +public abstract class CompileTimeConstant { + protected final T value; + + protected CompileTimeConstant(T value) { + this.value = value; + } + + @Nullable + public T getValue() { + return value; + } @NotNull - JetType getType(@NotNull KotlinBuiltIns kotlinBuiltIns); + public abstract JetType getType(@NotNull KotlinBuiltIns kotlinBuiltIns); - R accept(AnnotationArgumentVisitor visitor, D data); + public abstract R accept(AnnotationArgumentVisitor visitor, D data); } diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/DoubleValue.java b/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/DoubleValue.java index a2549e2653d..1b648f8d038 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/DoubleValue.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/DoubleValue.java @@ -21,16 +21,10 @@ import org.jetbrains.jet.lang.descriptors.annotations.AnnotationArgumentVisitor; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.lang.types.JetType; -public class DoubleValue implements CompileTimeConstant { - private final double value; +public class DoubleValue extends CompileTimeConstant { public DoubleValue(double value) { - this.value = value; - } - - @Override - public Double getValue() { - return value; + super(value); } @NotNull diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/EnumValue.java b/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/EnumValue.java index f135c876372..0fa92598d9b 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/EnumValue.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/EnumValue.java @@ -22,17 +22,10 @@ import org.jetbrains.jet.lang.descriptors.annotations.AnnotationArgumentVisitor; import org.jetbrains.jet.lang.types.JetType; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; -public class EnumValue implements CompileTimeConstant { - private final ClassDescriptor value; +public class EnumValue extends CompileTimeConstant { public EnumValue(@NotNull ClassDescriptor value) { - this.value = value; - } - - @Override - @NotNull - public ClassDescriptor getValue() { - return value; + super(value); } @NotNull diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/ErrorValue.java b/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/ErrorValue.java index e3eb182393b..f3771b930ec 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/ErrorValue.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/ErrorValue.java @@ -22,7 +22,11 @@ import org.jetbrains.jet.lang.types.ErrorUtils; import org.jetbrains.jet.lang.types.JetType; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; -public abstract class ErrorValue implements CompileTimeConstant { +public abstract class ErrorValue extends CompileTimeConstant { + + public ErrorValue() { + super(null); + } @Override @Deprecated // Should not be called, for this is not a real value, but a indication of an error diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/FloatValue.java b/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/FloatValue.java index bddd9a2c3ad..51c1746b9eb 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/FloatValue.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/FloatValue.java @@ -21,16 +21,10 @@ import org.jetbrains.jet.lang.descriptors.annotations.AnnotationArgumentVisitor; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.lang.types.JetType; -public class FloatValue implements CompileTimeConstant { - private final float value; +public class FloatValue extends CompileTimeConstant { public FloatValue(float value) { - this.value = value; - } - - @Override - public Float getValue() { - return value; + super(value); } @NotNull diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/IntValue.java b/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/IntValue.java index 61547f75fd6..c0ea41c7e21 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/IntValue.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/IntValue.java @@ -23,7 +23,7 @@ import org.jetbrains.jet.lang.descriptors.annotations.AnnotationArgumentVisitor; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.lang.types.JetType; -public class IntValue implements CompileTimeConstant { +public class IntValue extends CompileTimeConstant { public static final Function CREATE = new Function() { @Override public IntValue apply(@Nullable Long input) { @@ -32,15 +32,8 @@ public class IntValue implements CompileTimeConstant { } }; - private final int value; - public IntValue(int value) { - this.value = value; - } - - @Override - public Integer getValue() { - return value; + super(value); } @NotNull diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/IntegerValueTypeConstant.java b/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/IntegerValueTypeConstant.java index 50568c3cb6c..aacc8e0e45b 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/IntegerValueTypeConstant.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/IntegerValueTypeConstant.java @@ -27,12 +27,10 @@ import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import java.util.Collections; -public class IntegerValueTypeConstant implements CompileTimeConstant { - - private final IntegerValueTypeConstructor value; +public class IntegerValueTypeConstant extends CompileTimeConstant { public IntegerValueTypeConstant(long value) { - this.value = new IntegerValueTypeConstructor(value); + super(new IntegerValueTypeConstructor(value)); } @NotNull @@ -49,12 +47,6 @@ public class IntegerValueTypeConstant implements CompileTimeConstant { - - private final JetType value; +public class JavaClassValue extends CompileTimeConstant { public JavaClassValue(JetType value) { - this.value = value; + super(value); } @Override diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/LongValue.java b/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/LongValue.java index 82f806bc364..8ba029c012c 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/LongValue.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/LongValue.java @@ -23,7 +23,7 @@ import org.jetbrains.jet.lang.descriptors.annotations.AnnotationArgumentVisitor; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.lang.types.JetType; -public class LongValue implements CompileTimeConstant { +public class LongValue extends CompileTimeConstant { public static final Function CREATE = new Function() { @Override public LongValue apply(@Nullable Long input) { @@ -31,15 +31,8 @@ public class LongValue implements CompileTimeConstant { } }; - private final long value; - public LongValue(long value) { - this.value = value; - } - - @Override - public Long getValue() { - return value; + super(value); } @NotNull diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/NullValue.java b/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/NullValue.java index 51b93dcb363..67e903d1222 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/NullValue.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/NullValue.java @@ -21,16 +21,12 @@ import org.jetbrains.jet.lang.descriptors.annotations.AnnotationArgumentVisitor; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.lang.types.JetType; -public class NullValue implements CompileTimeConstant { +public class NullValue extends CompileTimeConstant { public static final NullValue NULL = new NullValue(); private NullValue() { - } - - @Override - public Void getValue() { - return null; + super(null); } @NotNull diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/ShortValue.java b/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/ShortValue.java index 256eed9cbdb..f8a8cf3eda8 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/ShortValue.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/ShortValue.java @@ -23,7 +23,7 @@ import org.jetbrains.jet.lang.descriptors.annotations.AnnotationArgumentVisitor; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.lang.types.JetType; -public class ShortValue implements CompileTimeConstant { +public class ShortValue extends CompileTimeConstant { public static final Function CREATE = new Function() { @Override public ShortValue apply(@Nullable Long input) { @@ -32,15 +32,8 @@ public class ShortValue implements CompileTimeConstant { } }; - private final short value; - public ShortValue(short value) { - this.value = value; - } - - @Override - public Short getValue() { - return value; + super(value); } @NotNull diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/StringValue.java b/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/StringValue.java index f564aa8f7d1..392d193f6f6 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/StringValue.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/constants/StringValue.java @@ -21,17 +21,11 @@ import org.jetbrains.jet.lang.descriptors.annotations.AnnotationArgumentVisitor; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.lang.types.JetType; -public class StringValue implements CompileTimeConstant { +public class StringValue extends CompileTimeConstant { - private final String value; public StringValue(String value) { - this.value = value; - } - - @Override - public String getValue() { - return value; + super(value); } @NotNull