aboutsummaryrefslogtreecommitdiff
path: root/java/com/google/turbine/model/Const.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/com/google/turbine/model/Const.java')
-rw-r--r--java/com/google/turbine/model/Const.java354
1 files changed, 12 insertions, 342 deletions
diff --git a/java/com/google/turbine/model/Const.java b/java/com/google/turbine/model/Const.java
index ed4b072..bd90f59 100644
--- a/java/com/google/turbine/model/Const.java
+++ b/java/com/google/turbine/model/Const.java
@@ -21,6 +21,7 @@ import com.google.common.collect.ImmutableList;
import com.google.common.escape.SourceCodeEscapers;
import javax.lang.model.element.AnnotationValue;
import javax.lang.model.element.AnnotationValueVisitor;
+import org.jspecify.nullness.Nullable;
/**
* Compile-time constant expressions, including literals of primitive or String type, class
@@ -32,7 +33,7 @@ public abstract class Const {
public abstract int hashCode();
@Override
- public abstract boolean equals(Object obj);
+ public abstract boolean equals(@Nullable Object obj);
@Override
public abstract String toString();
@@ -64,42 +65,6 @@ public abstract class Const {
public Kind kind() {
return Kind.PRIMITIVE;
}
-
- public IntValue asInteger() {
- throw new ConstCastError(constantTypeKind(), TurbineConstantTypeKind.INT);
- }
-
- public FloatValue asFloat() {
- throw new ConstCastError(constantTypeKind(), TurbineConstantTypeKind.FLOAT);
- }
-
- public DoubleValue asDouble() {
- throw new ConstCastError(constantTypeKind(), TurbineConstantTypeKind.DOUBLE);
- }
-
- public LongValue asLong() {
- throw new ConstCastError(constantTypeKind(), TurbineConstantTypeKind.LONG);
- }
-
- public BooleanValue asBoolean() {
- throw new ConstCastError(constantTypeKind(), TurbineConstantTypeKind.BOOLEAN);
- }
-
- public StringValue asString() {
- throw new ConstCastError(constantTypeKind(), TurbineConstantTypeKind.STRING);
- }
-
- public CharValue asChar() {
- throw new ConstCastError(constantTypeKind(), TurbineConstantTypeKind.CHAR);
- }
-
- public ShortValue asShort() {
- throw new ConstCastError(constantTypeKind(), TurbineConstantTypeKind.SHORT);
- }
-
- public ByteValue asByte() {
- throw new ConstCastError(constantTypeKind(), TurbineConstantTypeKind.BYTE);
- }
}
/** A boolean literal value. */
@@ -135,22 +100,12 @@ public abstract class Const {
}
@Override
- public BooleanValue asBoolean() {
- return this;
- }
-
- @Override
- public StringValue asString() {
- return new StringValue(String.valueOf(value));
- }
-
- @Override
public int hashCode() {
return Boolean.hashCode(value);
}
@Override
- public boolean equals(Object obj) {
+ public boolean equals(@Nullable Object obj) {
return obj instanceof BooleanValue && value == ((BooleanValue) obj).value();
}
}
@@ -189,52 +144,12 @@ public abstract class Const {
}
@Override
- public IntValue asInteger() {
- return this;
- }
-
- @Override
- public ByteValue asByte() {
- return new ByteValue((byte) value);
- }
-
- @Override
- public LongValue asLong() {
- return new LongValue((long) value);
- }
-
- @Override
- public CharValue asChar() {
- return new CharValue((char) value);
- }
-
- @Override
- public ShortValue asShort() {
- return new ShortValue((short) value);
- }
-
- @Override
- public DoubleValue asDouble() {
- return new DoubleValue((double) value);
- }
-
- @Override
- public FloatValue asFloat() {
- return new FloatValue((float) value);
- }
-
- @Override
- public StringValue asString() {
- return new StringValue(String.valueOf(value));
- }
-
- @Override
public int hashCode() {
return Integer.hashCode(value);
}
@Override
- public boolean equals(Object obj) {
+ public boolean equals(@Nullable Object obj) {
return obj instanceof IntValue && value == ((IntValue) obj).value;
}
}
@@ -272,52 +187,12 @@ public abstract class Const {
}
@Override
- public IntValue asInteger() {
- return new IntValue((int) value);
- }
-
- @Override
- public ByteValue asByte() {
- return new ByteValue((byte) value);
- }
-
- @Override
- public LongValue asLong() {
- return this;
- }
-
- @Override
- public CharValue asChar() {
- return new CharValue((char) value);
- }
-
- @Override
- public ShortValue asShort() {
- return new ShortValue((short) value);
- }
-
- @Override
- public DoubleValue asDouble() {
- return new DoubleValue((double) value);
- }
-
- @Override
- public FloatValue asFloat() {
- return new FloatValue((float) value);
- }
-
- @Override
- public StringValue asString() {
- return new StringValue(String.valueOf(value));
- }
-
- @Override
public int hashCode() {
return Long.hashCode(value);
}
@Override
- public boolean equals(Object obj) {
+ public boolean equals(@Nullable Object obj) {
return obj instanceof LongValue && value == ((LongValue) obj).value;
}
}
@@ -355,52 +230,12 @@ public abstract class Const {
}
@Override
- public IntValue asInteger() {
- return new IntValue((int) value);
- }
-
- @Override
- public ByteValue asByte() {
- return new ByteValue((byte) value);
- }
-
- @Override
- public LongValue asLong() {
- return new LongValue((long) value);
- }
-
- @Override
- public CharValue asChar() {
- return this;
- }
-
- @Override
- public ShortValue asShort() {
- return new ShortValue((short) value);
- }
-
- @Override
- public DoubleValue asDouble() {
- return new DoubleValue((double) value);
- }
-
- @Override
- public FloatValue asFloat() {
- return new FloatValue((float) value);
- }
-
- @Override
- public StringValue asString() {
- return new StringValue(String.valueOf(value));
- }
-
- @Override
public int hashCode() {
return Character.hashCode(value);
}
@Override
- public boolean equals(Object obj) {
+ public boolean equals(@Nullable Object obj) {
return obj instanceof CharValue && value == ((CharValue) obj).value;
}
}
@@ -441,52 +276,12 @@ public abstract class Const {
}
@Override
- public IntValue asInteger() {
- return new IntValue((int) value);
- }
-
- @Override
- public ByteValue asByte() {
- return new ByteValue((byte) value);
- }
-
- @Override
- public LongValue asLong() {
- return new LongValue((long) value);
- }
-
- @Override
- public CharValue asChar() {
- return new CharValue((char) value);
- }
-
- @Override
- public ShortValue asShort() {
- return new ShortValue((short) value);
- }
-
- @Override
- public DoubleValue asDouble() {
- return new DoubleValue((double) value);
- }
-
- @Override
- public FloatValue asFloat() {
- return this;
- }
-
- @Override
- public StringValue asString() {
- return new StringValue(String.valueOf(value));
- }
-
- @Override
public int hashCode() {
return Float.hashCode(value);
}
@Override
- public boolean equals(Object obj) {
+ public boolean equals(@Nullable Object obj) {
return obj instanceof FloatValue && value == ((FloatValue) obj).value;
}
}
@@ -533,52 +328,12 @@ public abstract class Const {
}
@Override
- public IntValue asInteger() {
- return new IntValue((int) value);
- }
-
- @Override
- public ByteValue asByte() {
- return new ByteValue((byte) value);
- }
-
- @Override
- public LongValue asLong() {
- return new LongValue((long) value);
- }
-
- @Override
- public CharValue asChar() {
- return new CharValue((char) value);
- }
-
- @Override
- public ShortValue asShort() {
- return new ShortValue((short) value);
- }
-
- @Override
- public DoubleValue asDouble() {
- return this;
- }
-
- @Override
- public FloatValue asFloat() {
- return new FloatValue((float) value);
- }
-
- @Override
- public StringValue asString() {
- return new StringValue(String.valueOf(value));
- }
-
- @Override
public int hashCode() {
return Double.hashCode(value);
}
@Override
- public boolean equals(Object obj) {
+ public boolean equals(@Nullable Object obj) {
return obj instanceof DoubleValue && value == ((DoubleValue) obj).value;
}
}
@@ -616,17 +371,12 @@ public abstract class Const {
}
@Override
- public StringValue asString() {
- return this;
- }
-
- @Override
public int hashCode() {
return value.hashCode();
}
@Override
- public boolean equals(Object obj) {
+ public boolean equals(@Nullable Object obj) {
return obj instanceof StringValue && value.equals(((StringValue) obj).value);
}
}
@@ -664,52 +414,12 @@ public abstract class Const {
}
@Override
- public IntValue asInteger() {
- return new IntValue((int) value);
- }
-
- @Override
- public ByteValue asByte() {
- return new ByteValue((byte) value);
- }
-
- @Override
- public LongValue asLong() {
- return new LongValue((long) value);
- }
-
- @Override
- public CharValue asChar() {
- return new CharValue((char) value);
- }
-
- @Override
- public ShortValue asShort() {
- return this;
- }
-
- @Override
- public DoubleValue asDouble() {
- return new DoubleValue((double) value);
- }
-
- @Override
- public FloatValue asFloat() {
- return new FloatValue((float) value);
- }
-
- @Override
- public StringValue asString() {
- return new StringValue(String.valueOf(value));
- }
-
- @Override
public int hashCode() {
return Short.hashCode(value);
}
@Override
- public boolean equals(Object obj) {
+ public boolean equals(@Nullable Object obj) {
return obj instanceof ShortValue && value == ((ShortValue) obj).value;
}
}
@@ -738,52 +448,12 @@ public abstract class Const {
}
@Override
- public IntValue asInteger() {
- return new IntValue((int) value);
- }
-
- @Override
- public ByteValue asByte() {
- return this;
- }
-
- @Override
- public LongValue asLong() {
- return new LongValue((long) value);
- }
-
- @Override
- public CharValue asChar() {
- return new CharValue((char) value);
- }
-
- @Override
- public ShortValue asShort() {
- return new ShortValue((short) value);
- }
-
- @Override
- public DoubleValue asDouble() {
- return new DoubleValue((double) value);
- }
-
- @Override
- public FloatValue asFloat() {
- return new FloatValue((float) value);
- }
-
- @Override
- public StringValue asString() {
- return new StringValue(String.valueOf(value));
- }
-
- @Override
public int hashCode() {
return Byte.hashCode(value);
}
@Override
- public boolean equals(Object obj) {
+ public boolean equals(@Nullable Object obj) {
return obj instanceof ByteValue && value == ((ByteValue) obj).value;
}
@@ -822,7 +492,7 @@ public abstract class Const {
}
@Override
- public boolean equals(Object obj) {
+ public boolean equals(@Nullable Object obj) {
return obj instanceof ArrayInitValue && elements.equals(((ArrayInitValue) obj).elements);
}