Skip to content

Commit 7a1bbbc

Browse files
authored
Painless: Clean up PainlessCast (#32754)
Renames variables and methods in PainlessCast to go along with the new naming scheme. Mechanical change.
1 parent 1dcf807 commit 7a1bbbc

File tree

6 files changed

+273
-264
lines changed

6 files changed

+273
-264
lines changed

modules/lang-painless/src/main/java/org/elasticsearch/painless/AnalyzerCaster.java

Lines changed: 194 additions & 194 deletions
Large diffs are not rendered by default.

modules/lang-painless/src/main/java/org/elasticsearch/painless/MethodWriter.java

Lines changed: 33 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -135,52 +135,52 @@ public void writeLoopCounter(int slot, int count, Location location) {
135135

136136
public void writeCast(PainlessCast cast) {
137137
if (cast != null) {
138-
if (cast.from == char.class && cast.to == String.class) {
138+
if (cast.originalType == char.class && cast.targetType == String.class) {
139139
invokeStatic(UTILITY_TYPE, CHAR_TO_STRING);
140-
} else if (cast.from == String.class && cast.to == char.class) {
140+
} else if (cast.originalType == String.class && cast.targetType == char.class) {
141141
invokeStatic(UTILITY_TYPE, STRING_TO_CHAR);
142-
} else if (cast.unboxFrom != null) {
143-
unbox(getType(cast.unboxFrom));
144-
writeCast(cast.from, cast.to);
145-
} else if (cast.unboxTo != null) {
146-
if (cast.from == def.class) {
147-
if (cast.explicit) {
148-
if (cast.to == Boolean.class) invokeStatic(DEF_UTIL_TYPE, DEF_TO_BOOLEAN);
149-
else if (cast.to == Byte.class) invokeStatic(DEF_UTIL_TYPE, DEF_TO_BYTE_EXPLICIT);
150-
else if (cast.to == Short.class) invokeStatic(DEF_UTIL_TYPE, DEF_TO_SHORT_EXPLICIT);
151-
else if (cast.to == Character.class) invokeStatic(DEF_UTIL_TYPE, DEF_TO_CHAR_EXPLICIT);
152-
else if (cast.to == Integer.class) invokeStatic(DEF_UTIL_TYPE, DEF_TO_INT_EXPLICIT);
153-
else if (cast.to == Long.class) invokeStatic(DEF_UTIL_TYPE, DEF_TO_LONG_EXPLICIT);
154-
else if (cast.to == Float.class) invokeStatic(DEF_UTIL_TYPE, DEF_TO_FLOAT_EXPLICIT);
155-
else if (cast.to == Double.class) invokeStatic(DEF_UTIL_TYPE, DEF_TO_DOUBLE_EXPLICIT);
142+
} else if (cast.unboxOriginalType != null) {
143+
unbox(getType(cast.unboxOriginalType));
144+
writeCast(cast.originalType, cast.targetType);
145+
} else if (cast.unboxTargetType != null) {
146+
if (cast.originalType == def.class) {
147+
if (cast.explicitCast) {
148+
if (cast.targetType == Boolean.class) invokeStatic(DEF_UTIL_TYPE, DEF_TO_BOOLEAN);
149+
else if (cast.targetType == Byte.class) invokeStatic(DEF_UTIL_TYPE, DEF_TO_BYTE_EXPLICIT);
150+
else if (cast.targetType == Short.class) invokeStatic(DEF_UTIL_TYPE, DEF_TO_SHORT_EXPLICIT);
151+
else if (cast.targetType == Character.class) invokeStatic(DEF_UTIL_TYPE, DEF_TO_CHAR_EXPLICIT);
152+
else if (cast.targetType == Integer.class) invokeStatic(DEF_UTIL_TYPE, DEF_TO_INT_EXPLICIT);
153+
else if (cast.targetType == Long.class) invokeStatic(DEF_UTIL_TYPE, DEF_TO_LONG_EXPLICIT);
154+
else if (cast.targetType == Float.class) invokeStatic(DEF_UTIL_TYPE, DEF_TO_FLOAT_EXPLICIT);
155+
else if (cast.targetType == Double.class) invokeStatic(DEF_UTIL_TYPE, DEF_TO_DOUBLE_EXPLICIT);
156156
else {
157157
throw new IllegalStateException("Illegal tree structure.");
158158
}
159159
} else {
160-
if (cast.to == Boolean.class) invokeStatic(DEF_UTIL_TYPE, DEF_TO_BOOLEAN);
161-
else if (cast.to == Byte.class) invokeStatic(DEF_UTIL_TYPE, DEF_TO_BYTE_IMPLICIT);
162-
else if (cast.to == Short.class) invokeStatic(DEF_UTIL_TYPE, DEF_TO_SHORT_IMPLICIT);
163-
else if (cast.to == Character.class) invokeStatic(DEF_UTIL_TYPE, DEF_TO_CHAR_IMPLICIT);
164-
else if (cast.to == Integer.class) invokeStatic(DEF_UTIL_TYPE, DEF_TO_INT_IMPLICIT);
165-
else if (cast.to == Long.class) invokeStatic(DEF_UTIL_TYPE, DEF_TO_LONG_IMPLICIT);
166-
else if (cast.to == Float.class) invokeStatic(DEF_UTIL_TYPE, DEF_TO_FLOAT_IMPLICIT);
167-
else if (cast.to == Double.class) invokeStatic(DEF_UTIL_TYPE, DEF_TO_DOUBLE_IMPLICIT);
160+
if (cast.targetType == Boolean.class) invokeStatic(DEF_UTIL_TYPE, DEF_TO_BOOLEAN);
161+
else if (cast.targetType == Byte.class) invokeStatic(DEF_UTIL_TYPE, DEF_TO_BYTE_IMPLICIT);
162+
else if (cast.targetType == Short.class) invokeStatic(DEF_UTIL_TYPE, DEF_TO_SHORT_IMPLICIT);
163+
else if (cast.targetType == Character.class) invokeStatic(DEF_UTIL_TYPE, DEF_TO_CHAR_IMPLICIT);
164+
else if (cast.targetType == Integer.class) invokeStatic(DEF_UTIL_TYPE, DEF_TO_INT_IMPLICIT);
165+
else if (cast.targetType == Long.class) invokeStatic(DEF_UTIL_TYPE, DEF_TO_LONG_IMPLICIT);
166+
else if (cast.targetType == Float.class) invokeStatic(DEF_UTIL_TYPE, DEF_TO_FLOAT_IMPLICIT);
167+
else if (cast.targetType == Double.class) invokeStatic(DEF_UTIL_TYPE, DEF_TO_DOUBLE_IMPLICIT);
168168
else {
169169
throw new IllegalStateException("Illegal tree structure.");
170170
}
171171
}
172172
} else {
173-
writeCast(cast.from, cast.to);
174-
unbox(getType(cast.unboxTo));
173+
writeCast(cast.originalType, cast.targetType);
174+
unbox(getType(cast.unboxTargetType));
175175
}
176-
} else if (cast.boxFrom != null) {
177-
box(getType(cast.boxFrom));
178-
writeCast(cast.from, cast.to);
179-
} else if (cast.boxTo != null) {
180-
writeCast(cast.from, cast.to);
181-
box(getType(cast.boxTo));
176+
} else if (cast.boxOriginalType != null) {
177+
box(getType(cast.boxOriginalType));
178+
writeCast(cast.originalType, cast.targetType);
179+
} else if (cast.boxTargetType != null) {
180+
writeCast(cast.originalType, cast.targetType);
181+
box(getType(cast.boxTargetType));
182182
} else {
183-
writeCast(cast.from, cast.to);
183+
writeCast(cast.originalType, cast.targetType);
184184
}
185185
}
186186
}

modules/lang-painless/src/main/java/org/elasticsearch/painless/lookup/PainlessCast.java

Lines changed: 39 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -22,46 +22,55 @@
2222
public class PainlessCast {
2323

2424
/** Create a standard cast with no boxing/unboxing. */
25-
public static PainlessCast standard(Class<?> from, Class<?> to, boolean explicit) {
26-
return new PainlessCast(from, to, explicit, null, null, null, null);
25+
public static PainlessCast originalTypetoTargetType(Class<?> originalType, Class<?> targetType, boolean explicitCast) {
26+
return new PainlessCast(originalType, targetType, explicitCast, null, null, null, null);
2727
}
2828

29-
/** Create a cast where the from type will be unboxed, and then the cast will be performed. */
30-
public static PainlessCast unboxFrom(Class<?> from, Class<?> to, boolean explicit, Class<?> unboxFrom) {
31-
return new PainlessCast(from, to, explicit, unboxFrom, null, null, null);
29+
/** Create a cast where the original type will be unboxed, and then the cast will be performed. */
30+
public static PainlessCast unboxOriginalType(
31+
Class<?> originalType, Class<?> targetType, boolean explicitCast, Class<?> unboxOriginalType) {
32+
33+
return new PainlessCast(originalType, targetType, explicitCast, unboxOriginalType, null, null, null);
3234
}
3335

34-
/** Create a cast where the to type will be unboxed, and then the cast will be performed. */
35-
public static PainlessCast unboxTo(Class<?> from, Class<?> to, boolean explicit, Class<?> unboxTo) {
36-
return new PainlessCast(from, to, explicit, null, unboxTo, null, null);
36+
/** Create a cast where the target type will be unboxed, and then the cast will be performed. */
37+
public static PainlessCast unboxTargetType(
38+
Class<?> originalType, Class<?> targetType, boolean explicitCast, Class<?> unboxTargetType) {
39+
40+
return new PainlessCast(originalType, targetType, explicitCast, null, unboxTargetType, null, null);
3741
}
3842

39-
/** Create a cast where the from type will be boxed, and then the cast will be performed. */
40-
public static PainlessCast boxFrom(Class<?> from, Class<?> to, boolean explicit, Class<?> boxFrom) {
41-
return new PainlessCast(from, to, explicit, null, null, boxFrom, null);
43+
/** Create a cast where the original type will be boxed, and then the cast will be performed. */
44+
public static PainlessCast boxOriginalType(
45+
Class<?> originalType, Class<?> targetType, boolean explicitCast, Class<?> boxOriginalType) {
46+
47+
return new PainlessCast(originalType, targetType, explicitCast, null, null, boxOriginalType, null);
4248
}
4349

44-
/** Create a cast where the to type will be boxed, and then the cast will be performed. */
45-
public static PainlessCast boxTo(Class<?> from, Class<?> to, boolean explicit, Class<?> boxTo) {
46-
return new PainlessCast(from, to, explicit, null, null, null, boxTo);
50+
/** Create a cast where the target type will be boxed, and then the cast will be performed. */
51+
public static PainlessCast boxTargetType(
52+
Class<?> originalType, Class<?> targetType, boolean explicitCast, Class<?> boxTargetType) {
53+
54+
return new PainlessCast(originalType, targetType, explicitCast, null, null, null, boxTargetType);
4755
}
4856

49-
public final Class<?> from;
50-
public final Class<?> to;
51-
public final boolean explicit;
52-
public final Class<?> unboxFrom;
53-
public final Class<?> unboxTo;
54-
public final Class<?> boxFrom;
55-
public final Class<?> boxTo;
57+
public final Class<?> originalType;
58+
public final Class<?> targetType;
59+
public final boolean explicitCast;
60+
public final Class<?> unboxOriginalType;
61+
public final Class<?> unboxTargetType;
62+
public final Class<?> boxOriginalType;
63+
public final Class<?> boxTargetType;
64+
65+
private PainlessCast(Class<?> originalType, Class<?> targetType, boolean explicitCast,
66+
Class<?> unboxOriginalType, Class<?> unboxTargetType, Class<?> boxOriginalType, Class<?> boxTargetType) {
5667

57-
private PainlessCast(Class<?> from, Class<?> to, boolean explicit,
58-
Class<?> unboxFrom, Class<?> unboxTo, Class<?> boxFrom, Class<?> boxTo) {
59-
this.from = from;
60-
this.to = to;
61-
this.explicit = explicit;
62-
this.unboxFrom = unboxFrom;
63-
this.unboxTo = unboxTo;
64-
this.boxFrom = boxFrom;
65-
this.boxTo = boxTo;
68+
this.originalType = originalType;
69+
this.targetType = targetType;
70+
this.explicitCast = explicitCast;
71+
this.unboxOriginalType = unboxOriginalType;
72+
this.unboxTargetType = unboxTargetType;
73+
this.boxOriginalType = boxOriginalType;
74+
this.boxTargetType = boxTargetType;
6675
}
6776
}

modules/lang-painless/src/main/java/org/elasticsearch/painless/node/ECast.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,6 @@ void write(MethodWriter writer, Globals globals) {
6363

6464
@Override
6565
public String toString() {
66-
return singleLineToString(PainlessLookupUtility.typeToCanonicalTypeName(cast.to), child);
66+
return singleLineToString(PainlessLookupUtility.typeToCanonicalTypeName(cast.targetType), child);
6767
}
6868
}

modules/lang-painless/src/test/java/org/elasticsearch/painless/AnalyzerCasterTests.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,17 +35,17 @@ private static void assertCast(Class<?> actual, Class<?> expected, boolean mustB
3535
}
3636

3737
PainlessCast cast = AnalyzerCaster.getLegalCast(location, actual, expected, true, false);
38-
assertEquals(actual, cast.from);
39-
assertEquals(expected, cast.to);
38+
assertEquals(actual, cast.originalType);
39+
assertEquals(expected, cast.targetType);
4040

4141
if (mustBeExplicit) {
4242
ClassCastException error = expectThrows(ClassCastException.class,
4343
() -> AnalyzerCaster.getLegalCast(location, actual, expected, false, false));
4444
assertTrue(error.getMessage().startsWith("Cannot cast"));
4545
} else {
4646
cast = AnalyzerCaster.getLegalCast(location, actual, expected, false, false);
47-
assertEquals(actual, cast.from);
48-
assertEquals(expected, cast.to);
47+
assertEquals(actual, cast.originalType);
48+
assertEquals(expected, cast.targetType);
4949
}
5050
}
5151

modules/lang-painless/src/test/java/org/elasticsearch/painless/node/NodeToStringTests.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -162,12 +162,12 @@ public void testECapturingFunctionRef() {
162162
public void testECast() {
163163
Location l = new Location(getTestName(), 0);
164164
AExpression child = new EConstant(l, "test");
165-
PainlessCast cast = PainlessCast.standard(String.class, Integer.class, true);
165+
PainlessCast cast = PainlessCast.originalTypetoTargetType(String.class, Integer.class, true);
166166
assertEquals("(ECast java.lang.Integer (EConstant String 'test'))", new ECast(l, child, cast).toString());
167167

168168
l = new Location(getTestName(), 1);
169169
child = new EBinary(l, Operation.ADD, new EConstant(l, "test"), new EConstant(l, 12));
170-
cast = PainlessCast.standard(Integer.class, Boolean.class, true);
170+
cast = PainlessCast.originalTypetoTargetType(Integer.class, Boolean.class, true);
171171
assertEquals("(ECast java.lang.Boolean (EBinary (EConstant String 'test') + (EConstant Integer 12)))",
172172
new ECast(l, child, cast).toString());
173173
}

0 commit comments

Comments
 (0)